The crash is caused by trying to flush out previous removed (decoded) picture. Decoder has no idea needs to keep this frame.
Showing the changes to codec/decoder/plus/src/welsDecoderExt.cpp (1 of 1 file). Show all
Unified · Split
| @@ -754,14 +754,23 @@ void CWelsDecoder::OutputStatisticsLog (SDecoderStatistics& sDecoderStatistics) · 753 unmodified lines | |||
| 754 | 754 | ||
| 755 | DECODING_STATE CWelsDecoder::ReorderPicturesInDisplay (unsigned char** ppDst, SBufferInfo* pDstInfo) { | 755 | DECODING_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 { |