ref: 933c4777173271fb81b81fd86921fea403b0e802
parent: 470246c20f2cf487f5d7cf691eb5c438bde3ca40
author: huili2 <huili2@cisco.com>
date: Tue Jul 22 22:33:00 EDT 2014
modify EC API name and remove useless flag
--- a/codec/api/svc/codec_app_def.h
+++ b/codec/api/svc/codec_app_def.h
@@ -359,7 +359,7 @@
unsigned int uiCpuLoad; // CPU load
unsigned char uiTargetDqLayer; // Setting target dq layer id
- unsigned char uiEcActiveFlag; // Whether active error concealment feature in decoder
+ ERROR_CON_IDC eEcActiveIdc; // Whether active error concealment feature in decoder
SVideoProperty sVideoProperty;
} SDecodingParam, *PDecodingParam;
--- a/codec/console/dec/src/h264dec.cpp
+++ b/codec/console/dec/src/h264dec.cpp
@@ -198,7 +198,7 @@
pDecoder->GetOption (DECODER_OPTION_VCL_NAL, &iFeedbackVclNalInAu);
int32_t iFeedbackTidInAu;
pDecoder->GetOption (DECODER_OPTION_TEMPORAL_ID, &iFeedbackTidInAu);
- int32_t iErrorConMethod = ERROR_CON_SLICE_COPY;
+ int32_t iErrorConMethod = (int32_t) ERROR_CON_SLICE_COPY;
pDecoder->SetOption (DECODER_OPTION_ERROR_CON_IDC, &iErrorConMethod);
//~end for
@@ -350,8 +350,8 @@
sDecParam.uiTargetDqLayer = (uint8_t)atol (strTag[1].c_str());
} else if (strTag[0].compare ("OutColorFormat") == 0) {
sDecParam.iOutputColorFormat = atoi (strTag[1].c_str());
- } else if (strTag[0].compare ("ErrorConcealmentFlag") == 0) {
- sDecParam.uiEcActiveFlag = (uint8_t)atol (strTag[1].c_str());
+ } else if (strTag[0].compare ("ErrorConcealmentIdc") == 0) {
+ sDecParam.eEcActiveIdc = (ERROR_CON_IDC)atol (strTag[1].c_str());
} else if (strTag[0].compare ("CPULoad") == 0) {
sDecParam.uiCpuLoad = (uint32_t)atol (strTag[1].c_str());
} else if (strTag[0].compare ("VideoBitstreamType") == 0) {
@@ -368,7 +368,7 @@
strInputFile = pArgV[1];
sDecParam.iOutputColorFormat = videoFormatI420;
sDecParam.uiTargetDqLayer = (uint8_t) - 1;
- sDecParam.uiEcActiveFlag = 1;
+ sDecParam.eEcActiveIdc = ERROR_CON_SLICE_COPY;
sDecParam.sVideoProperty.eVideoBsType = VIDEO_BITSTREAM_DEFAULT;
}
} else { //iArgC > 2
@@ -376,7 +376,7 @@
strOutputFile = pArgV[2];
sDecParam.iOutputColorFormat = videoFormatI420;
sDecParam.uiTargetDqLayer = (uint8_t) - 1;
- sDecParam.uiEcActiveFlag = 1;
+ sDecParam.eEcActiveIdc = ERROR_CON_SLICE_COPY;
sDecParam.sVideoProperty.eVideoBsType = VIDEO_BITSTREAM_DEFAULT;
if (iArgC > 3) {
for (int i = 3; i < iArgC; i++) {
--- a/codec/decoder/core/inc/decoder_context.h
+++ b/codec/decoder/core/inc/decoder_context.h
@@ -176,7 +176,6 @@
int32_t iOutputColorFormat; // color space format to be outputed
VIDEO_BITSTREAM_TYPE eVideoType; //indicate the type of video to decide whether or not to do qp_delta error detection.
-bool bErrorResilienceFlag; // error resilience flag
bool bHaveGotMemory; // global memory for decoder context related ever requested?
int32_t iImgWidthInPixel; // width of image in pixel reconstruction picture to be output
@@ -287,7 +286,7 @@
bool bNewSeqBegin;
bool bNextNewSeqBegin;
int iOverwriteFlags;
-int32_t iErrorConMethod; //
+ERROR_CON_IDC eErrorConMethod; //
PPicture pPreviousDecodedPictureInDpb; //pointer to previously decoded picture in DPB for error concealment
PGetIntraPredFunc pGetI16x16LumaPredFunc[7]; //h264_predict_copy_16x16;
PGetIntraPredFunc pGetI4x4LumaPredFunc[14]; // h264_predict_4x4_t
--- a/codec/decoder/core/src/au_parser.cpp
+++ b/codec/decoder/core/src/au_parser.cpp
@@ -192,7 +192,7 @@
if (uiAvailNalNum > 0) {
pCurAu->uiEndPos = uiAvailNalNum - 1;
- if (pCtx->iErrorConMethod == ERROR_CON_DISABLE) {
+ if (pCtx->eErrorConMethod == ERROR_CON_DISABLE) {
pCtx->bAuReadyFlag = true;
}
}
@@ -211,7 +211,7 @@
if (uiAvailNalNum > 0) {
pCurAu->uiEndPos = uiAvailNalNum - 1;
- if (pCtx->iErrorConMethod == ERROR_CON_DISABLE) {
+ if (pCtx->eErrorConMethod == ERROR_CON_DISABLE) {
pCtx->bAuReadyFlag = true;
}
}
@@ -327,7 +327,8 @@
return NULL;
}
- if ((uiAvailNalNum == 1) && CheckNextAuNewSeq (pCtx, pCurNal, pCurNal->sNalData.sVclNal.sSliceHeaderExt.sSliceHeader.pSps)) {
+ if ((uiAvailNalNum == 1)
+ && CheckNextAuNewSeq (pCtx, pCurNal, pCurNal->sNalData.sVclNal.sSliceHeaderExt.sSliceHeader.pSps)) {
ResetActiveSPSForEachLayer (pCtx);
}
if ((uiAvailNalNum > 1) &&
@@ -508,7 +509,7 @@
InitBits (pBs, pRbsp, iBitSize);
iErr = ParseSps (pCtx, pBs, &iPicWidth, &iPicHeight);
if (ERR_NONE != iErr) { // modified for pSps/pSubsetSps invalid, 12/1/2009
- if (pCtx->iErrorConMethod == ERROR_CON_DISABLE)
+ if (pCtx->eErrorConMethod == ERROR_CON_DISABLE)
pCtx->iErrorCode |= dsNoParamSets;
else
pCtx->iErrorCode |= dsBitstreamError;
@@ -522,7 +523,7 @@
InitBits (pBs, pRbsp, iBitSize);
iErr = ParsePps (pCtx, &pCtx->sPpsBuffer[0], pBs);
if (ERR_NONE != iErr) { // modified for pps invalid, 12/1/2009
- if (pCtx->iErrorConMethod == ERROR_CON_DISABLE)
+ if (pCtx->eErrorConMethod == ERROR_CON_DISABLE)
pCtx->iErrorCode |= dsNoParamSets;
else
pCtx->iErrorCode |= dsBitstreamError;
--- a/codec/decoder/core/src/decoder.cpp
+++ b/codec/decoder/core/src/decoder.cpp
@@ -160,7 +160,7 @@
pCtx->pPicBuff[LIST_1] = NULL;
pCtx->bAvcBasedFlag = true;
- pCtx->iErrorConMethod = ERROR_CON_SLICE_COPY;
+ pCtx->eErrorConMethod = ERROR_CON_SLICE_COPY;
pCtx->pPreviousDecodedPictureInDpb = NULL;
}
@@ -332,7 +332,7 @@
memcpy (pCtx->pParam, kpParam, sizeof (SDecodingParam));
pCtx->iOutputColorFormat = pCtx->pParam->iOutputColorFormat;
- pCtx->bErrorResilienceFlag = pCtx->pParam->uiEcActiveFlag ? true : false;
+ pCtx->eErrorConMethod = pCtx->pParam->eEcActiveIdc;
if (VIDEO_BITSTREAM_SVC == pCtx->pParam->sVideoProperty.eVideoBsType ||
VIDEO_BITSTREAM_AVC == pCtx->pParam->sVideoProperty.eVideoBsType) {
@@ -462,7 +462,7 @@
iConsumedBytes = 0;
pNalPayload = ParseNalHeader (pCtx, &pCtx->sCurNalHead, pDstNal, iDstIdx, pSrcNal - 3, iSrcIdx + 3, &iConsumedBytes);
- if ((pCtx->iErrorConMethod != ERROR_CON_DISABLE) && (IS_VCL_NAL (pCtx->sCurNalHead.eNalUnitType, 1))) {
+ if ((pCtx->eErrorConMethod != ERROR_CON_DISABLE) && (IS_VCL_NAL (pCtx->sCurNalHead.eNalUnitType, 1))) {
CheckAndDoEC (pCtx, ppDst, pDstBufInfo);
}
if (IS_PARAM_SETS_NALS (pCtx->sCurNalHead.eNalUnitType) && pNalPayload) {
@@ -477,7 +477,7 @@
#else
pCtx->bReferenceLostAtT0Flag = true;
#endif
- if ((pCtx->iErrorConMethod == ERROR_CON_DISABLE) || (dsOutOfMemory & pCtx->iErrorCode))
+ if ((pCtx->eErrorConMethod == ERROR_CON_DISABLE) || (dsOutOfMemory & pCtx->iErrorCode))
ResetParameterSetsState (pCtx);
if (dsOutOfMemory & pCtx->iErrorCode) {
@@ -493,7 +493,7 @@
#else
pCtx->bReferenceLostAtT0Flag = true;
#endif
- if ((pCtx->iErrorConMethod == ERROR_CON_DISABLE) || (dsOutOfMemory & pCtx->iErrorCode))
+ if ((pCtx->eErrorConMethod == ERROR_CON_DISABLE) || (dsOutOfMemory & pCtx->iErrorCode))
ResetParameterSetsState (pCtx);
}
return pCtx->iErrorCode;
@@ -522,7 +522,7 @@
iConsumedBytes = 0;
pNalPayload = ParseNalHeader (pCtx, &pCtx->sCurNalHead, pDstNal, iDstIdx, pSrcNal - 3, iSrcIdx + 3, &iConsumedBytes);
- if ((pCtx->iErrorConMethod != ERROR_CON_DISABLE) && (IS_VCL_NAL (pCtx->sCurNalHead.eNalUnitType, 1))) {
+ if ((pCtx->eErrorConMethod != ERROR_CON_DISABLE) && (IS_VCL_NAL (pCtx->sCurNalHead.eNalUnitType, 1))) {
CheckAndDoEC (pCtx, ppDst, pDstBufInfo);
}
if (IS_PARAM_SETS_NALS (pCtx->sCurNalHead.eNalUnitType) && pNalPayload) {
@@ -537,7 +537,7 @@
#else
pCtx->bReferenceLostAtT0Flag = true;
#endif
- if ((pCtx->iErrorConMethod == ERROR_CON_DISABLE) || (dsOutOfMemory & pCtx->iErrorCode))
+ if ((pCtx->eErrorConMethod == ERROR_CON_DISABLE) || (dsOutOfMemory & pCtx->iErrorCode))
ResetParameterSetsState (pCtx);
return pCtx->iErrorCode;
}
@@ -573,7 +573,7 @@
#else
pCtx->bReferenceLostAtT0Flag = true;
#endif
- if ((pCtx->iErrorConMethod == ERROR_CON_DISABLE) || (dsOutOfMemory & pCtx->iErrorCode))
+ if ((pCtx->eErrorConMethod == ERROR_CON_DISABLE) || (dsOutOfMemory & pCtx->iErrorCode))
ResetParameterSetsState (pCtx);
return pCtx->iErrorCode;
}
--- a/codec/decoder/core/src/decoder_core.cpp
+++ b/codec/decoder/core/src/decoder_core.cpp
@@ -103,7 +103,7 @@
ppDst[2] = ppDst[2] + pCtx->sFrameCrop.iTopOffset * pPic->iLinesize[1] + pCtx->sFrameCrop.iLeftOffset;
pDstInfo->iBufferStatus = 1;
- if (pCtx->iErrorConMethod == ERROR_CON_DISABLE) //no buffer output if EC is disabled and frame incomplete
+ if (pCtx->eErrorConMethod == ERROR_CON_DISABLE) //no buffer output if EC is disabled and frame incomplete
pDstInfo->iBufferStatus = (int32_t) bFrameCompleteFlag;
if (!bFrameCompleteFlag) {
@@ -129,7 +129,7 @@
if (0 == pCurNal->sNalHeaderExt.uiTemporalId) {
pCtx->bReferenceLostAtT0Flag = true;
}
- if (pCtx->iErrorConMethod == ERROR_CON_DISABLE) {
+ if (pCtx->eErrorConMethod == ERROR_CON_DISABLE) {
#ifndef LONG_TERM_REF
if (pCtx->bReferenceLostAtT0Flag) {
ResetParameterSetsState (pCtx);
@@ -143,7 +143,7 @@
if ((0 == pCurNal->sNalHeaderExt.uiTemporalId) || (1 == pCurNal->sNalHeaderExt.uiTemporalId)) {
pCtx->bReferenceLostAtT0Flag = true;
}
- if (pCtx->iErrorConMethod == ERROR_CON_DISABLE) {
+ if (pCtx->eErrorConMethod == ERROR_CON_DISABLE) {
#ifndef LONG_TERM_REF
if (pCtx->bReferenceLostAtT0Flag) {
ResetParameterSetsState (pCtx);
@@ -959,7 +959,7 @@
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING,
"UpdateAccessUnit():::::Key frame lost.....CAN NOT find IDR from current AU.\n");
pCtx->iErrorCode |= dsRefLost;
- if (pCtx->iErrorConMethod == ERROR_CON_DISABLE) {
+ if (pCtx->eErrorConMethod == ERROR_CON_DISABLE) {
#ifdef LONG_TERM_REF
pCtx->iErrorCode |= dsNoParamSets;
return dsNoParamSets;
@@ -1887,7 +1887,7 @@
pSh->iFrameNum);
pCtx->iErrorCode |= dsRefLost;
- if (pCtx->iErrorConMethod == ERROR_CON_DISABLE) {
+ if (pCtx->eErrorConMethod == ERROR_CON_DISABLE) {
#ifdef LONG_TERM_REF
pCtx->bParamSetsLostFlag = true;
#else
@@ -1906,7 +1906,7 @@
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING,
"reference picture introduced by this frame is lost during transmission! uiTId: %d\n",
pNalCur->sNalHeaderExt.uiTemporalId);
- if (pCtx->iErrorConMethod == ERROR_CON_DISABLE) {
+ if (pCtx->eErrorConMethod == ERROR_CON_DISABLE) {
return iRet;
}
}
@@ -1920,7 +1920,7 @@
"DecodeCurrentAccessUnit() failed (%d) in frame: %d uiDId: %d uiQId: %d\n",
iRet, pSh->iFrameNum, iCurrIdD, iCurrIdQ);
HandleReferenceLostL0 (pCtx, pNalCur);
- if (pCtx->iErrorConMethod == ERROR_CON_DISABLE) {
+ if (pCtx->eErrorConMethod == ERROR_CON_DISABLE) {
return iRet;
}
}
@@ -1976,7 +1976,7 @@
pCtx->pPreviousDecodedPictureInDpb = pCtx->pDec; //store latest decoded picture for EC
iRet = WelsMarkAsRef (pCtx);
if (iRet != ERR_NONE) {
- if (pCtx->iErrorConMethod == ERROR_CON_DISABLE) {
+ if (pCtx->eErrorConMethod == ERROR_CON_DISABLE) {
pCtx->pDec = NULL;
return iRet;
}
--- a/codec/decoder/core/src/error_concealment.cpp
+++ b/codec/decoder/core/src/error_concealment.cpp
@@ -41,7 +41,7 @@
namespace WelsDec {
//Init
void InitErrorCon (PWelsDecoderContext pCtx) {
- if (pCtx->iErrorConMethod == ERROR_CON_SLICE_COPY) {
+ if (pCtx->eErrorConMethod == ERROR_CON_SLICE_COPY) {
pCtx->sCopyFunc.pCopyLumaFunc = WelsCopy16x16_c;
pCtx->sCopyFunc.pCopyChromaFunc = WelsCopy8x8_c;
@@ -64,8 +64,8 @@
#if defined(HAVE_NEON_AARCH64)
if (pCtx->uiCpuFlag & WELS_CPU_NEON) {
- pCtx->sCopyFunc.pCopyLumaFunc = WelsCopy16x16_AArch64_neon; //aligned
- pCtx->sCopyFunc.pCopyChromaFunc = WelsCopy8x8_AArch64_neon; //aligned
+ pCtx->sCopyFunc.pCopyLumaFunc = WelsCopy16x16_AArch64_neon; //aligned
+ pCtx->sCopyFunc.pCopyChromaFunc = WelsCopy8x8_AArch64_neon; //aligned
}
#endif //HAVE_NEON_AARCH64
} //TODO add more methods here
@@ -180,12 +180,12 @@
// ImplementErrorConceal
// Do actual error concealment
void ImplementErrorCon (PWelsDecoderContext pCtx) {
- if (ERROR_CON_DISABLE == pCtx->iErrorConMethod) {
+ if (ERROR_CON_DISABLE == pCtx->eErrorConMethod) {
pCtx->iErrorCode |= dsBitstreamError;
return;
- } else if (ERROR_CON_FRAME_COPY == pCtx->iErrorConMethod) {
+ } else if (ERROR_CON_FRAME_COPY == pCtx->eErrorConMethod) {
DoErrorConFrameCopy (pCtx);
- } else if (ERROR_CON_SLICE_COPY == pCtx->iErrorConMethod) {
+ } else if (ERROR_CON_SLICE_COPY == pCtx->eErrorConMethod) {
DoErrorConSliceCopy (pCtx);
} //TODO add other EC methods here in the future
pCtx->iErrorCode |= dsDataErrorConcealed;
--- a/codec/decoder/core/src/manage_dec_ref.cpp
+++ b/codec/decoder/core/src/manage_dec_ref.cpp
@@ -112,7 +112,7 @@
if ((pCtx->sRefPic.uiShortRefCount[LIST_0] + pCtx->sRefPic.uiLongRefCount[LIST_0] <= 0) && (pCtx->eSliceType != I_SLICE
&& pCtx->eSliceType != SI_SLICE)) {
- if (pCtx->iErrorConMethod != ERROR_CON_DISABLE) { //IDR lost!, recover it for future decoding with data all set to 0
+ if (pCtx->eErrorConMethod != ERROR_CON_DISABLE) { //IDR lost!, recover it for future decoding with data all set to 0
PPicture pRef = PrefetchPic (pCtx->pPicBuff[0]);
if (pRef != NULL) {
memset (pRef->pData[0], 128, pRef->iLinesize[0] * pRef->iHeightInPixel);
@@ -259,7 +259,7 @@
if (pRefPicMarking->bAdaptiveRefPicMarkingModeFlag) {
iRet = MMCO (pCtx, pRefPicMarking);
if (iRet != ERR_NONE) {
- if (pCtx->iErrorConMethod != ERROR_CON_DISABLE) {
+ if (pCtx->eErrorConMethod != ERROR_CON_DISABLE) {
iRet = RemainOneBufferInDpbForEC (pCtx);
} else {
return iRet;
@@ -274,7 +274,7 @@
} else {
iRet = SlidingWindow (pCtx);
if (iRet != ERR_NONE) {
- if (pCtx->iErrorConMethod != ERROR_CON_DISABLE) {
+ if (pCtx->eErrorConMethod != ERROR_CON_DISABLE) {
iRet = RemainOneBufferInDpbForEC (pCtx);
} else {
return iRet;
@@ -285,7 +285,7 @@
if (!pCtx->pDec->bIsLongRef) {
if (pRefPic->uiLongRefCount[LIST_0] + pRefPic->uiShortRefCount[LIST_0] >= WELS_MAX (1, pCtx->pSps->iNumRefFrames)) {
- if (pCtx->iErrorConMethod != ERROR_CON_DISABLE) {
+ if (pCtx->eErrorConMethod != ERROR_CON_DISABLE) {
iRet = RemainOneBufferInDpbForEC (pCtx);
} else {
return ERR_INFO_INVALID_MMCO_REF_NUM_OVERFLOW;
--- a/codec/decoder/core/src/parse_mb_syn_cavlc.cpp
+++ b/codec/decoder/core/src/parse_mb_syn_cavlc.cpp
@@ -1003,7 +1003,7 @@
// Security check: iRefIdx should be in range 0 to num_ref_idx_l0_active_minus1, includsive
// ref to standard section 7.4.5.1. iRefCount[0] is 1 + num_ref_idx_l0_active_minus1.
if ((iRefIdx < 0) || (iRefIdx >= iRefCount[0]) || (ppRefPic[iRefIdx] == NULL)) { //error ref_idx
- if (pCtx->iErrorConMethod != ERROR_CON_DISABLE) {
+ if (pCtx->eErrorConMethod != ERROR_CON_DISABLE) {
iRefIdx = 0;
pCtx->iErrorCode |= dsBitstreamError;
} else {
@@ -1041,7 +1041,7 @@
WELS_READ_VERIFY (BsGetTe0 (pBs, iRefCount[0], &uiCode)); //ref_idx_l0[ mbPartIdx ]
iRefIdx[i] = uiCode;
if ((iRefIdx[i] < 0) || (iRefIdx[i] >= iRefCount[0]) || (ppRefPic[iRefIdx[i]] == NULL)) { //error ref_idx
- if (pCtx->iErrorConMethod != ERROR_CON_DISABLE) {
+ if (pCtx->eErrorConMethod != ERROR_CON_DISABLE) {
iRefIdx[i] = 0;
pCtx->iErrorCode |= dsBitstreamError;
} else {
@@ -1075,7 +1075,7 @@
WELS_READ_VERIFY (BsGetTe0 (pBs, iRefCount[0], &uiCode)); //ref_idx_l0[ mbPartIdx ]
iRefIdx[i] = uiCode;
if ((iRefIdx[i] < 0) || (iRefIdx[i] >= iRefCount[0]) || (ppRefPic[iRefIdx[i]] == NULL)) { //error ref_idx
- if (pCtx->iErrorConMethod != ERROR_CON_DISABLE) {
+ if (pCtx->eErrorConMethod != ERROR_CON_DISABLE) {
iRefIdx[i] = 0;
pCtx->iErrorCode |= dsBitstreamError;
} else {
@@ -1141,7 +1141,7 @@
WELS_READ_VERIFY (BsGetTe0 (pBs, iRefCount[0], &uiCode)); //ref_idx_l0[ mbPartIdx ]
iRefIdx[i] = uiCode;
if ((iRefIdx[i] < 0) || (iRefIdx[i] >= iRefCount[0]) || (ppRefPic[iRefIdx[i]] == NULL)) { //error ref_idx
- if (pCtx->iErrorConMethod != ERROR_CON_DISABLE) {
+ if (pCtx->eErrorConMethod != ERROR_CON_DISABLE) {
iRefIdx[i] = 0;
pCtx->iErrorCode |= dsBitstreamError;
} else {
--- a/codec/decoder/plus/src/welsDecoderExt.cpp
+++ b/codec/decoder/plus/src/welsDecoderExt.cpp
@@ -211,7 +211,8 @@
if (NULL == m_pDecContext)
return;
- WelsLog (&m_pWelsTrace->m_sLogCtx, WELS_LOG_INFO, "CWelsDecoder::uninit_decoder(), openh264 codec version = %s.", VERSION_NUMBER);
+ WelsLog (&m_pWelsTrace->m_sLogCtx, WELS_LOG_INFO, "CWelsDecoder::uninit_decoder(), openh264 codec version = %s.",
+ VERSION_NUMBER);
WelsEndDecoder (m_pDecContext);
@@ -265,7 +266,7 @@
iVal = ERROR_CON_SLICE_COPY;
else
iVal = * ((int*)pOption); //EC method
- m_pDecContext->iErrorConMethod = iVal;
+ m_pDecContext->eErrorConMethod = (ERROR_CON_IDC) iVal;
return cmResultSuccess;
} else if (eOptID == DECODER_OPTION_TRACE_LEVEL) {
if (m_pWelsTrace) {
@@ -339,7 +340,7 @@
* ((int*)pOption) = iVal;
return cmResultSuccess;
} else if (DECODER_OPTION_ERROR_CON_IDC == eOptID) {
- iVal = m_pDecContext->iErrorConMethod;
+ iVal = (int) m_pDecContext->eErrorConMethod;
* ((int*)pOption) = iVal;
return cmResultSuccess;
}
@@ -399,7 +400,7 @@
//for AVC bitstream (excluding AVC with temporal scalability, including TP), as long as error occur, SHOULD notify upper layer key frame loss.
if ((IS_PARAM_SETS_NALS (eNalType) || NAL_UNIT_CODED_SLICE_IDR == eNalType) ||
(VIDEO_BITSTREAM_AVC == m_pDecContext->eVideoType)) {
- if (m_pDecContext->iErrorConMethod == ERROR_CON_DISABLE) {
+ if (m_pDecContext->eErrorConMethod == ERROR_CON_DISABLE) {
#ifdef LONG_TERM_REF
m_pDecContext->bParamSetsLostFlag = true;
#else
--- a/module/gmp-openh264.cpp
+++ b/module/gmp-openh264.cpp
@@ -560,7 +560,7 @@
memset (¶m, 0, sizeof (param));
param.iOutputColorFormat = videoFormatI420;
param.uiTargetDqLayer = UCHAR_MAX; // Default value
- param.uiEcActiveFlag = 1; // Error concealment on.
+ param.eEcActiveIdc = ERROR_CON_SLICE_COPY; // Error concealment on.
param.sVideoProperty.eVideoBsType = VIDEO_BITSTREAM_DEFAULT;
if (decoder_->Initialize (¶m)) {
--- a/test/api/BaseDecoderTest.cpp
+++ b/test/api/BaseDecoderTest.cpp
@@ -55,7 +55,7 @@
memset (&decParam, 0, sizeof (SDecodingParam));
decParam.iOutputColorFormat = videoFormatI420;
decParam.uiTargetDqLayer = UCHAR_MAX;
- decParam.uiEcActiveFlag = 1;
+ decParam.eEcActiveIdc = ERROR_CON_SLICE_COPY;
decParam.sVideoProperty.eVideoBsType = VIDEO_BITSTREAM_DEFAULT;
rv = decoder_->Initialize (&decParam);
--- a/test/decoder/DecUT_ErrorConcealment.cpp
+++ b/test/decoder/DecUT_ErrorConcealment.cpp
@@ -231,7 +231,7 @@
return;
}
- pECCtx->pCtx->iErrorConMethod = ERROR_CON_FRAME_COPY;
+ pECCtx->pCtx->eErrorConMethod = ERROR_CON_FRAME_COPY;
InitECCopyData (pECCtx);
//case 1: no reference picture
pECCtx->pCtx->pPreviousDecodedPictureInDpb = NULL;
@@ -263,7 +263,7 @@
FreeInputData (pECCtx);
return;
}
- pECCtx->pCtx->iErrorConMethod = ERROR_CON_SLICE_COPY;
+ pECCtx->pCtx->eErrorConMethod = ERROR_CON_SLICE_COPY;
InitECCopyData (pECCtx);
//case 1: no reference picture
pECCtx->pCtx->pPreviousDecodedPictureInDpb = NULL;