ref: c87672974d41b43454395f07f3d229b9a5c78ad7
parent: be9c467974ec8368a3885aad1b83f60858b0e8f6
parent: 18c3c096c62b7fef244330da57401ec365de5a1b
author: sijchen <[email protected]>
date: Thu Feb 7 03:30:02 EST 2019
Merge pull request #3093 from xiaotiansf/NewBugzilla Fix Bugzilla reported bug-1525097.
--- a/codec/decoder/core/src/decoder_core.cpp
+++ b/codec/decoder/core/src/decoder_core.cpp
@@ -2652,7 +2652,7 @@
pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (int8_t) * MB_BLOCK4x4_NUM);
for (int32_t listIdx = LIST_0; listIdx < LIST_A; ++listIdx) {
uint32_t i = 0;
- while (pCtx->sRefPic.pRefList[listIdx][i]) {
+ while (pCtx->sRefPic.pRefList[listIdx][i] && i < MAX_DPB_COUNT) {
pCtx->pDec->pRefPic[listIdx][i] = pCtx->sRefPic.pRefList[listIdx][i];
++i;
}
--- a/codec/decoder/core/src/manage_dec_ref.cpp
+++ b/codec/decoder/core/src/manage_dec_ref.cpp
@@ -79,6 +79,10 @@
pRef->uiSpatialId = -1;
pRef->iSpsId = -1;
pRef->bIsComplete = false;
+ for (int32_t i = 0; i < MAX_DPB_COUNT; ++i) {
+ pRef->pRefPic[LIST_0][i] = NULL;
+ pRef->pRefPic[LIST_1][i] = NULL;
+ }
}
}
--- a/codec/decoder/plus/src/welsDecoderExt.cpp
+++ b/codec/decoder/plus/src/welsDecoderExt.cpp
@@ -581,10 +581,16 @@
eNalType = m_pDecContext->sCurNalHead.eNalUnitType;
+ if ((m_pDecContext->iErrorCode & dsRefLost) && m_pDecContext->eSliceType == B_SLICE) {
+ if (ResetDecoder()) {
+ return dsRefLost;
+ }
+ return dsErrorFree;
+ }
if (m_pDecContext->iErrorCode & dsOutOfMemory) {
- if (ResetDecoder())
+ if (ResetDecoder()) {
return dsOutOfMemory;
-
+ }
return dsErrorFree;
}
//for AVC bitstream (excluding AVC with temporal scalability, including TP), as long as error occur, SHOULD notify upper layer key frame loss.