shithub: openh264

Download patch

ref: a8ab4afe5badef3fe336c9ad2abf181113bc92f9
parent: c441f6f390badb14e1e4e1d66ca5d9033be1dc83
parent: 43f767d06ed79d9950178622f52cd9e64adec5bd
author: HaiboZhu <haibozhu@cisco.com>
date: Thu Mar 17 11:46:25 EDT 2016

Merge pull request #2410 from HaiboZhu/Add_disable_assert_in_release

Diable assert in release with -DNDEBUG macro

--- a/Makefile
+++ b/Makefile
@@ -51,6 +51,7 @@
 # Configurations
 ifeq ($(BUILDTYPE), Release)
 CFLAGS += $(CFLAGS_OPT)
+CFLAGS += -DNDEBUG
 USE_ASM = Yes
 ifeq ($(DEBUGSYMBOLS), True)
 CFLAGS += -g
--- a/codec/encoder/core/src/ref_list_mgr_svc.cpp
+++ b/codec/encoder/core/src/ref_list_mgr_svc.cpp
@@ -155,7 +155,7 @@
   SLTRState* pLtr = &pCtx->pLtr[pCtx->uiDependencyId];
   int32_t iMaxFrameNumPlus1 = (1 << pCtx->pSps->uiLog2MaxFrameNum);
   int32_t i;
-  SSpatialLayerInternal *pParamInternal = &pCtx->pSvcParam->sDependencyLayers[pCtx->uiDependencyId];
+  SSpatialLayerInternal* pParamInternal = &pCtx->pSvcParam->sDependencyLayers[pCtx->uiDependencyId];
   SLogContext* pLogCtx = & (pCtx->sLogCtx);
 
   for (i = 0; i < LONG_TERM_REF_NUM; i++) {
@@ -196,7 +196,7 @@
   SRefList* pRefList            = pCtx->ppRefPicListExt[pCtx->uiDependencyId];
   SPicture** pLongRefList       = pRefList->pLongRefList;
   SLTRState* pLtr = &pCtx->pLtr[pCtx->uiDependencyId];
-  SSpatialLayerInternal *pParamInternal = &pCtx->pSvcParam->sDependencyLayers[pCtx->uiDependencyId];
+  SSpatialLayerInternal* pParamInternal = &pCtx->pSvcParam->sDependencyLayers[pCtx->uiDependencyId];
   int32_t i, j;
 
   if (pLtr->uiLtrMarkState == LTR_MARKING_SUCCESS) {
@@ -258,7 +258,7 @@
   int32_t i = 0;
   int32_t j = 0;
   bool bMoveLtrFromShortToLong = false;
-  SSpatialLayerInternal *pParamInternal = &pCtx->pSvcParam->sDependencyLayers[pCtx->uiDependencyId];
+  SSpatialLayerInternal* pParamInternal = &pCtx->pSvcParam->sDependencyLayers[pCtx->uiDependencyId];
 
   if (pCtx->eSliceType == I_SLICE) {
     i = 0;
@@ -436,7 +436,7 @@
   SPicture** pLongRefList = pRefList->pLongRefList;
   int32_t iGoPFrameNumInterval = ((pCtx->pSvcParam->uiGopSize >> 1) > 1) ? (pCtx->pSvcParam->uiGopSize >> 1) : (1);
   int32_t iMaxFrameNumPlus1 = (1 << pCtx->pSps->uiLog2MaxFrameNum);
-  SSpatialLayerInternal *pParamInternal = &pCtx->pSvcParam->sDependencyLayers[pCtx->uiDependencyId];
+  SSpatialLayerInternal* pParamInternal = &pCtx->pSvcParam->sDependencyLayers[pCtx->uiDependencyId];
   int32_t i;
 
   for (i = 0; i < pRefList->uiLongRefCount; i++) {
@@ -449,8 +449,8 @@
 
   return true;
 }
-void WlesMarkMMCORefInfo(sWelsEncCtx* pCtx, SLTRState* pLtr,
-                         SSlice* pSliceList, const int32_t kiCountSliceNum) {
+void WlesMarkMMCORefInfo (sWelsEncCtx* pCtx, SLTRState* pLtr,
+                          SSlice* pSliceList, const int32_t kiCountSliceNum) {
   int32_t iSliceIdx = 0;
   int32_t iGoPFrameNumInterval = ((pCtx->pSvcParam->uiGopSize >> 1) > 1) ? (pCtx->pSvcParam->uiGopSize >> 1) : (1);
 
@@ -459,7 +459,7 @@
     SSliceHeader*       pSliceHdr = &pSliceHdrExt->sSliceHeader;
     SRefPicMarking*     pRefPicMark = &pSliceHdr->sRefMarking;
 
-    memset(pRefPicMark, 0, sizeof(SRefPicMarking));
+    memset (pRefPicMark, 0, sizeof (SRefPicMarking));
 
     if (pCtx->pSvcParam->bEnableLongTermReference && pLtr->bLTRMarkingFlag) {
       if (pLtr->iLTRMarkMode == LTR_DIRECT_MARK) {
@@ -471,8 +471,7 @@
 
         pRefPicMark->SMmcoRef[pRefPicMark->uiMmcoCount].iLongTermFrameIdx = pLtr->iCurLtrIdx;
         pRefPicMark->SMmcoRef[pRefPicMark->uiMmcoCount++].iMmcoType = MMCO_LONG;
-      }
-      else if (pLtr->iLTRMarkMode == LTR_DELAY_MARK) {
+      } else if (pLtr->iLTRMarkMode == LTR_DELAY_MARK) {
         pRefPicMark->SMmcoRef[pRefPicMark->uiMmcoCount].iDiffOfPicNum = iGoPFrameNumInterval;
         pRefPicMark->SMmcoRef[pRefPicMark->uiMmcoCount].iLongTermFrameIdx = pLtr->iCurLtrIdx;
         pRefPicMark->SMmcoRef[pRefPicMark->uiMmcoCount++].iMmcoType = MMCO_SHORT2LONG;
@@ -505,11 +504,10 @@
   if (pCtx->iActiveThreadsNum > 1) {
     //will replace with thread-base pslice buffer later
     pSliceList = pCtx->pCurDqLayer->sLayerInfo.pSliceInLayer;
-    WlesMarkMMCORefInfo(pCtx, pLtr, pSliceList, kiCountSliceNum);
-  }
-  else {
+    WlesMarkMMCORefInfo (pCtx, pLtr, pSliceList, kiCountSliceNum);
+  } else {
     pSliceList = pCtx->pCurDqLayer->sLayerInfo.pSliceInLayer;
-    WlesMarkMMCORefInfo(pCtx, pLtr, pSliceList, kiCountSliceNum);
+    WlesMarkMMCORefInfo (pCtx, pLtr, pSliceList, kiCountSliceNum);
   }
 }
 
@@ -643,13 +641,13 @@
   }
 }
 
-void WelsUpdateSliceHeaderSyntax(sWelsEncCtx* pCtx,  const int32_t iAbsDiffPicNumMinus1,
-                                 SSlice* pSliceList, const int32_t uiFrameType) {
-  const int32_t kiCountSliceNum = GetCurrentSliceNum(pCtx->pCurDqLayer);
+void WelsUpdateSliceHeaderSyntax (sWelsEncCtx* pCtx,  const int32_t iAbsDiffPicNumMinus1,
+                                  SSlice* pSliceList, const int32_t uiFrameType) {
+  const int32_t kiCountSliceNum = GetCurrentSliceNum (pCtx->pCurDqLayer);
   SLTRState* pLtr               = &pCtx->pLtr[pCtx->uiDependencyId];
   int32_t iIdx = 0;
 
-  assert(kiCountSliceNum > 0);
+  assert (kiCountSliceNum > 0);
 
   for (iIdx = 0; iIdx < kiCountSliceNum; iIdx++) {
     SSliceHeaderExt*    pSliceHdrExt = &pSliceList[iIdx].sSliceHeaderExt;
@@ -664,8 +662,7 @@
         pRefReorder->SReorderingSyntax[0].uiReorderingOfPicNumsIdc = 0;
         pRefReorder->SReorderingSyntax[0].uiAbsDiffPicNumMinus1 = iAbsDiffPicNumMinus1;
         pRefReorder->SReorderingSyntax[1].uiReorderingOfPicNumsIdc = 3;
-      }
-      else {
+      } else {
         pRefReorder->SReorderingSyntax[0].uiReorderingOfPicNumsIdc = 2;
         pRefReorder->SReorderingSyntax[0].iLongTermPicNum = pCtx->pRefList0[0]->iLongTermPicNum;
         pRefReorder->SReorderingSyntax[1].uiReorderingOfPicNumsIdc = 3;
@@ -676,13 +673,12 @@
     if (videoFrameTypeIDR == uiFrameType) {
       pRefPicMark->bNoOutputOfPriorPicsFlag = false;
       pRefPicMark->bLongTermRefFlag = pCtx->pSvcParam->bEnableLongTermReference;
-    }
-    else {
+    } else {
       if (pCtx->pSvcParam->iUsageType == SCREEN_CONTENT_REAL_TIME)
         pRefPicMark->bAdaptiveRefPicMarkingModeFlag = pCtx->pSvcParam->bEnableLongTermReference;
       else
         pRefPicMark->bAdaptiveRefPicMarkingModeFlag = (pCtx->pSvcParam->bEnableLongTermReference
-                                                       && pLtr->bLTRMarkingFlag) ? (true) : (false);
+            && pLtr->bLTRMarkingFlag) ? (true) : (false);
     }
   }
 }
@@ -696,18 +692,18 @@
   SSlice* pSliceList = NULL;
   SSpatialLayerInternal* pParamD    = &pCtx->pSvcParam->sDependencyLayers[pCtx->uiDependencyId];
   /*syntax for ref_pic_list_reordering()*/
-    if (pCtx->iNumRef0 > 0){
+  if (pCtx->iNumRef0 > 0) {
     iAbsDiffPicNumMinus1 = pParamD->iFrameNum - (pCtx->pRefList0[0]->iFrameNum) - 1;
 
     if (iAbsDiffPicNumMinus1 < 0) {
-    WelsLog(&(pCtx->sLogCtx), WELS_LOG_INFO, "WelsUpdateRefSyntax():::uiAbsDiffPicNumMinus1:%d", iAbsDiffPicNumMinus1);
-    iAbsDiffPicNumMinus1 += (1 << (pCtx->pSps->uiLog2MaxFrameNum));
-    WelsLog(&(pCtx->sLogCtx), WELS_LOG_INFO, "WelsUpdateRefSyntax():::uiAbsDiffPicNumMinus1< 0, update as:%d",
-             iAbsDiffPicNumMinus1);
-  }
+      WelsLog (& (pCtx->sLogCtx), WELS_LOG_INFO, "WelsUpdateRefSyntax():::uiAbsDiffPicNumMinus1:%d", iAbsDiffPicNumMinus1);
+      iAbsDiffPicNumMinus1 += (1 << (pCtx->pSps->uiLog2MaxFrameNum));
+      WelsLog (& (pCtx->sLogCtx), WELS_LOG_INFO, "WelsUpdateRefSyntax():::uiAbsDiffPicNumMinus1< 0, update as:%d",
+               iAbsDiffPicNumMinus1);
     }
+  }
 
-  if (pCtx->iActiveThreadsNum >0) {
+  if (pCtx->iActiveThreadsNum > 0) {
     // to do: will replace with thread based buffer later
     pSliceList = pCtx->pCurDqLayer->sLayerInfo.pSliceInLayer;
   } else {
@@ -714,7 +710,7 @@
     pSliceList = pCtx->pCurDqLayer->sLayerInfo.pSliceInLayer;
   }
 
-  WelsUpdateSliceHeaderSyntax(pCtx, iAbsDiffPicNumMinus1,pSliceList, uiFrameType);
+  WelsUpdateSliceHeaderSyntax (pCtx, iAbsDiffPicNumMinus1, pSliceList, uiFrameType);
 
 }
 
@@ -882,8 +878,8 @@
   return (kiFrameNum < (1 << 30)); // TODO: use the original judge first, may be improved
 }
 
-void WlesMarkMMCORefInfoScreen(sWelsEncCtx* pCtx, SLTRState* pLtr,
-                               SSlice* pSliceList, const int32_t kiCountSliceNum) {
+void WlesMarkMMCORefInfoScreen (sWelsEncCtx* pCtx, SLTRState* pLtr,
+                                SSlice* pSliceList, const int32_t kiCountSliceNum) {
   const int32_t iMaxLtrIdx = pCtx->pSvcParam->iNumRefFrame - STR_ROOM - 1;
 
   for (int32_t iSliceIdx = 0; iSliceIdx < kiCountSliceNum; iSliceIdx++) {
@@ -891,7 +887,7 @@
     SSliceHeader*       pSliceHdr = &pSliceHdrExt->sSliceHeader;
     SRefPicMarking*     pRefPicMark = &pSliceHdr->sRefMarking;
 
-    memset(pRefPicMark, 0, sizeof(SRefPicMarking));
+    memset (pRefPicMark, 0, sizeof (SRefPicMarking));
     if (pCtx->pSvcParam->bEnableLongTermReference) {
       pRefPicMark->SMmcoRef[pRefPicMark->uiMmcoCount].iMaxLongTermFrameIdx = iMaxLtrIdx;
       pRefPicMark->SMmcoRef[pRefPicMark->uiMmcoCount++].iMmcoType = MMCO_SET_MAX_LONG;
@@ -957,7 +953,10 @@
         for (i = 0 ; i < pRefList->uiLongRefCount ; ++i) {
           if (ppLongRefList[i]->bUsedAsRef && ppLongRefList[i]->bIsLongRef && (!ppLongRefList[i]->bIsSceneLTR)
               && iMaxMultiRefTid == ppLongRefList[i]->uiTemporalId) {
-            assert (IsValidFrameNum (ppLongRefList[i]->iFrameNum)); // pLtr->iCurLtrIdx must have a value
+            if (!IsValidFrameNum (ppLongRefList[i]->iFrameNum)) {  // pLtr->iCurLtrIdx must have a value
+              WelsLog (& (pCtx->sLogCtx), WELS_LOG_ERROR, "WelsMarkPicScreen, Invalid Frame Number");
+              return;
+            }
             int32_t iDeltaFrameNum = (pParamD->iFrameNum >= ppLongRefList[i]->iFrameNum)
                                      ? (pParamD->iFrameNum - ppLongRefList[i]->iFrameNum)
                                      : (pParamD->iFrameNum + iMaxFrameNum - ppLongRefList[i]->iFrameNum);
@@ -978,16 +977,15 @@
     }
   }
 
-  const int32_t iSliceNum = GetCurrentSliceNum(pCtx->pCurDqLayer);
+  const int32_t iSliceNum = GetCurrentSliceNum (pCtx->pCurDqLayer);
 
   if (pCtx->iActiveThreadsNum > 1) {
     // to do: will replace with thread based buffer later
     pSliceList = pCtx->pCurDqLayer->sLayerInfo.pSliceInLayer;
-  }
-  else {
+  } else {
     pSliceList = pCtx->pCurDqLayer->sLayerInfo.pSliceInLayer;
   }
-  WlesMarkMMCORefInfoScreen(pCtx, pLtr, pSliceList, iSliceNum);
+  WlesMarkMMCORefInfoScreen (pCtx, pLtr, pSliceList, iSliceNum);
 
   return;
 }