shithub: openh264

Download patch

ref: 69a62ea58ec64c5e2d6c7f3d8f8ed4659a45cb85
parent: 12d50ad5651cdaa8a95186aa74ce756d4df39876
parent: 28d7d303e3a010689a8c9656c2cf8eb7dc50b7a5
author: huili2 <[email protected]>
date: Fri Sep 11 06:17:40 EDT 2015

Merge pull request #2108 from HaiboZhu/Bugfix_ResetDecoder

Bug fix with add DecoderConfigParam in ResetDecoder

--- a/codec/decoder/plus/src/welsDecoderExt.cpp
+++ b/codec/decoder/plus/src/welsDecoderExt.cpp
@@ -264,7 +264,14 @@
   if (m_pDecContext != NULL && m_pWelsTrace != NULL) {
     WelsLog (&m_pWelsTrace->m_sLogCtx, WELS_LOG_INFO, "ResetDecoder(), context error code is %d",
              m_pDecContext->iErrorCode);
-    return InitDecoder (m_pDecContext->bParseOnly);
+    SDecodingParam sPrevParam;
+    memcpy (&sPrevParam, m_pDecContext->pParam, sizeof (SDecodingParam));
+
+    int32_t iRet = InitDecoder (m_pDecContext->bParseOnly);
+    if (iRet)
+      return iRet;
+
+    return DecoderConfigParam (m_pDecContext, &sPrevParam);
   } else if (m_pWelsTrace != NULL) {
     WelsLog (&m_pWelsTrace->m_sLogCtx, WELS_LOG_ERROR, "ResetDecoder() failed as decoder context null");
   }
@@ -308,7 +315,7 @@
 
     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;
+    m_pDecContext->pParam->eEcActiveIdc = 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);