History

Prevent decoded pictures of Scalable Baseline Profile (83) (no b-frame) stream from being buffered for reordering. fix "dec crash for spec bitstream (gop2.h264) cisco#3110".

The crash is caused by trying to flush out previous removed (decoded) picture. Decoder has no idea needs to keep this frame.

xiaotiansf committed 7 years ago

Commit 1bf04b11 parent 3bf69ad1 file · +17 −8Browse files

Showing the changes to codec/decoder/plus/src/welsDecoderExt.cpp (1 of 1 file). Show all

Unified · Split

codec/decoder/plus/src/welsDecoderExt.cpp+17−8
@@ -754,14 +754,23 @@ void CWelsDecoder::OutputStatisticsLog (SDecoderStatistics& sDecoderStatistics) · 753 unmodified lines
754754
755755 DECODING_STATE CWelsDecoder::ReorderPicturesInDisplay (unsigned char** ppDst, SBufferInfo* pDstInfo) {
756756 DECODING_STATE iRet = dsErrorFree;
757− if (pDstInfo->iBufferStatus == 1 && m_pDecContext->pSps->uiProfileIdc != 66) {
758− if (m_pDecContext->pSliceHeader->iPicOrderCntLsb == 0) {
759− if (m_iNumOfPicts > 0) {
760− m_iLastGOPRemainPicts = m_iNumOfPicts;
761− for (int32_t i = 0; i <= m_iLargestBufferedPicIndex; ++i) {
762− if (m_sPictInfoList[i].iPOC > sIMinInt32) {
763− m_sPictInfoList[i].bLastGOP = true;
764− }
757+ if (pDstInfo->iBufferStatus == 1 && m_pDecContext->pSps->uiProfileIdc != 66
758+ && m_pDecContext->pSps->uiProfileIdc != 83) {
759+ /*if (m_pDecContext->pSliceHeader->iPicOrderCntLsb == 0) {
760+ m_LastWrittenPOC = 0;
761+ return dsErrorFree;
762+ }
763+ if (m_iNumOfPicts == 0 && m_pDecContext->pPreviousDecodedPictureInDpb->bNewSeqBegin
764+ && m_pDecContext->eSliceType != I_SLICE) {
765+ m_LastWrittenPOC = m_pDecContext->pSliceHeader->iPicOrderCntLsb;
766+ return dsErrorFree;
767+ }*/
768+ if (m_iNumOfPicts && m_pDecContext->pPreviousDecodedPictureInDpb
769+ && m_pDecContext->pPreviousDecodedPictureInDpb->bNewSeqBegin) {
770+ m_iLastGOPRemainPicts = m_iNumOfPicts;
771+ for (int32_t i = 0; i <= m_iLargestBufferedPicIndex; ++i) {
772+ if (m_sPictInfoList[i].iPOC > sIMinInt32) {
773+ m_sPictInfoList[i].bLastGOP = true;
765774 }
766775 }
767776 } else {

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t