ref: 5c064ed27529e0a96b52edd84f8ce31ed49a8b90
parent: f5eb6d4fdc5716fb411515bb86cbd26938d929e5
author: huili2 <[email protected]>
date: Mon Apr 21 19:27:48 EDT 2014
prevent from return if slice decoding error for EC
--- a/codec/decoder/core/src/decoder_core.cpp
+++ b/codec/decoder/core/src/decoder_core.cpp
@@ -1856,7 +1856,9 @@
HandleReferenceLost (pCtx, pNalCur);
WelsLog (pCtx, WELS_LOG_WARNING, "reference picture introduced by this frame is lost during transmission! uiTId: %d\n",
pNalCur->sNalHeaderExt.uiTemporalId);
- return iRet;
+ if (pCtx->iErrorConMethod == ERROR_CON_DISABLE) {
+ return iRet;
+ }
}
}
@@ -1867,7 +1869,9 @@
WelsLog (pCtx, WELS_LOG_WARNING, "DecodeCurrentAccessUnit() failed (%d) in frame: %d uiDId: %d uiQId: %d\n",
iRet, pSh->iFrameNum, iCurrIdD, iCurrIdQ);
HandleReferenceLostL0 (pCtx, pNalCur);
- return iRet;
+ if (pCtx->iErrorConMethod == ERROR_CON_DISABLE) {
+ return iRet;
+ }
}
if (bReconstructSlice) {
if (WelsDecodeConstructSlice (pCtx, pNalCur)) {
@@ -1923,8 +1927,10 @@
if (uiNalRefIdc > 0) {
iRet = WelsMarkAsRef (pCtx);
if (iRet != ERR_NONE) {
- pCtx->pDec = NULL;
- return iRet;
+ if (pCtx->iErrorConMethod == ERROR_CON_DISABLE) {
+ pCtx->pDec = NULL;
+ return iRet;
+ }
}
ExpandReferencingPicture (pCtx->pDec, pCtx->sExpandPicFunc.pExpandLumaPicture,
pCtx->sExpandPicFunc.pExpandChromaPicture);