diff --git a/codec/decoder/plus/src/welsDecoderExt.cpp b/codec/decoder/plus/src/welsDecoderExt.cpp index edbf058d..bc61a950 100644 --- a/codec/decoder/plus/src/welsDecoderExt.cpp +++ b/codec/decoder/plus/src/welsDecoderExt.cpp @@ -285,6 +285,12 @@ long CWelsDecoder::SetOption (DECODER_OPTION eOptID, void* pOption) { iVal = * ((int*)pOption); // int value for error concealment idc iVal = WELS_CLIP3 (iVal, (int32_t) ERROR_CON_DISABLE, (int32_t) ERROR_CON_SLICE_MV_COPY_CROSS_IDR_FREEZE_RES_CHANGE); m_pDecContext->eErrorConMethod = (ERROR_CON_IDC) iVal; + if ((m_pDecContext->bParseOnly) && (m_pDecContext->eErrorConMethod != ERROR_CON_DISABLE)) { + WelsLog (&m_pWelsTrace->m_sLogCtx, WELS_LOG_INFO, + "CWelsDecoder::SetOption for ERROR_CON_IDC = %d not allowd for parse only!.", iVal); + return cmInitParaError; + } + InitErrorCon (m_pDecContext); WelsLog (&m_pWelsTrace->m_sLogCtx, WELS_LOG_INFO, "CWelsDecoder::SetOption for ERROR_CON_IDC = %d.", iVal); @@ -551,6 +557,7 @@ DECODING_STATE CWelsDecoder::DecodeParser (const unsigned char* kpSrc, } m_pDecContext->iErrorCode = dsErrorFree; //initialize at the starting of AU decoding. + m_pDecContext->eErrorConMethod = ERROR_CON_DISABLE; //add protection to disable EC here. m_pDecContext->pParserBsInfo = pDstInfo; pDstInfo->iNalNum = 0; pDstInfo->iSpsWidthInPixel = pDstInfo->iSpsHeightInPixel = 0;