diff --git a/codec/decoder/core/src/decoder.cpp b/codec/decoder/core/src/decoder.cpp index 64d4be176..f296e9211 100644 --- a/codec/decoder/core/src/decoder.cpp +++ b/codec/decoder/core/src/decoder.cpp @@ -621,6 +621,7 @@ int32_t WelsOpenDecoder (PWelsDecoderContext pCtx, SLogContext* pLogCtx) { pCtx->bPrintFrameErrorTraceFlag = true; pCtx->iIgnoredErrorInfoPacketCount = 0; pCtx->bFrameFinish = true; + pCtx->iSeqNum = 0; return iRet; } diff --git a/codec/decoder/core/src/decoder_core.cpp b/codec/decoder/core/src/decoder_core.cpp index f16929b89..9d8f5eaa2 100644 --- a/codec/decoder/core/src/decoder_core.cpp +++ b/codec/decoder/core/src/decoder_core.cpp @@ -2261,10 +2261,15 @@ int32_t WelsDecodeInitAccessUnitStart (PWelsDecoderContext pCtx, SBufferInfo* pD pCtx->bAuReadyFlag = false; pCtx->pLastDecPicInfo->bLastHasMmco5 = false; bool bTmpNewSeqBegin = CheckNewSeqBeginAndUpdateActiveLayerSps (pCtx); - if (bTmpNewSeqBegin) - (*pCtx->pStreamSeqNum)++; + if (bTmpNewSeqBegin) { + if (pCtx->pStreamSeqNum) + (*pCtx->pStreamSeqNum)++; + else + pCtx->iSeqNum++; + } pCtx->bNewSeqBegin = pCtx->bNewSeqBegin || bTmpNewSeqBegin; - pCtx->iSeqNum = *pCtx->pStreamSeqNum; + if (pCtx->pStreamSeqNum) + pCtx->iSeqNum = *pCtx->pStreamSeqNum; iErr = WelsDecodeAccessUnitStart (pCtx); GetVclNalTemporalId (pCtx);