ref: f742970055bd48405a4ef7bd6949bf6d16325d98
parent: c511746e0b8b186bb9ea7b1a933c5f36eb268570
author: xiaotiansf <xiaotianshimail@gmail.com>
date: Wed Jan 23 10:51:18 EST 2019
Fix new Bugzilla reported bug 1522183
--- a/codec/decoder/core/src/parse_mb_syn_cabac.cpp
+++ b/codec/decoder/core/src/parse_mb_syn_cabac.cpp
@@ -882,6 +882,11 @@
uint32_t uiSubMbType;
//sub_mb_type, partition
int16_t pMvDirect[LIST_A][2] = { {0, 0}, {0, 0} };
+ if (pCtx->sRefPic.pRefList[LIST_1][0] == NULL) {
+ SLogContext* pLogCtx = & (pCtx->sLogCtx);
+ WelsLog (pLogCtx, WELS_LOG_ERROR, "Colocated Ref Picture for B-Slice is lost, B-Slice decoding cannot be continued!");
+ return GENERATE_ERROR_NO (ERR_LEVEL_SLICE_DATA, ERR_INFO_REFERENCE_PIC_LOST);
+ }
bool bIsLongRef = pCtx->sRefPic.pRefList[LIST_1][0]->bIsLongRef;
const int32_t ref0Count = WELS_MIN (pSliceHeader->uiRefCount[LIST_0], pCtx->sRefPic.uiRefCount[LIST_0]);
bool has_direct_called = false;
--- a/codec/decoder/core/src/parse_mb_syn_cavlc.cpp
+++ b/codec/decoder/core/src/parse_mb_syn_cavlc.cpp
@@ -1528,6 +1528,11 @@
uint32_t uiSubMbType;
//sub_mb_type, partition
int16_t pMvDirect[LIST_A][2] = { { 0, 0 }, { 0, 0 } };
+ if (pCtx->sRefPic.pRefList[LIST_1][0] == NULL) {
+ SLogContext* pLogCtx = & (pCtx->sLogCtx);
+ WelsLog (pLogCtx, WELS_LOG_ERROR, "Colocated Ref Picture for B-Slice is lost, B-Slice decoding cannot be continued!");
+ return GENERATE_ERROR_NO (ERR_LEVEL_SLICE_DATA, ERR_INFO_REFERENCE_PIC_LOST);
+ }
bool bIsLongRef = pCtx->sRefPic.pRefList[LIST_1][0]->bIsLongRef;
const int32_t ref0Count = WELS_MIN (pSliceHeader->uiRefCount[LIST_0], pCtx->sRefPic.uiRefCount[LIST_0]);
bool has_direct_called = false;