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
754 754
755DECODING_STATE CWelsDecoder::ReorderPicturesInDisplay (unsigned char** ppDst, SBufferInfo* pDstInfo) {755DECODING_STATE CWelsDecoder::ReorderPicturesInDisplay (unsigned char** ppDst, SBufferInfo* pDstInfo) {
756 DECODING_STATE iRet = dsErrorFree;756 DECODING_STATE iRet = dsErrorFree;
757 if (pDstInfo->iBufferStatus == 1 && m_pDecContext->pSps->uiProfileIdc != 66) {757 if (pDstInfo->iBufferStatus == 1 && m_pDecContext->pSps->uiProfileIdc != 66
758 if (m_pDecContext->pSliceHeader->iPicOrderCntLsb == 0) {758 && m_pDecContext->pSps->uiProfileIdc != 83) {
759 if (m_iNumOfPicts > 0) {759 /*if (m_pDecContext->pSliceHeader->iPicOrderCntLsb == 0) {
760 m_iLastGOPRemainPicts = m_iNumOfPicts;760 m_LastWrittenPOC = 0;
761 for (int32_t i = 0; i <= m_iLargestBufferedPicIndex; ++i) {761 return dsErrorFree;
762 if (m_sPictInfoList[i].iPOC > sIMinInt32) {762 }
763 m_sPictInfoList[i].bLastGOP = true;763 if (m_iNumOfPicts == 0 && m_pDecContext->pPreviousDecodedPictureInDpb->bNewSeqBegin
764 }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;
765 }774 }
766 }775 }
767 } else {776 } 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