shithub: openh264

Download patch

ref: cc7535ee52157520770edabda7534dccebda3757
parent: 41ddc536d6e82c4b86f521d5ed864f986198fe28
parent: eb1276013b8c83e38e1da8d044e45dc03275db44
author: dongzha <[email protected]>
date: Tue May 13 11:25:42 EDT 2014

Merge pull request #826 from huili2/clear_active_ps

clear active PS when only IDR meets

--- a/codec/decoder/core/src/au_parser.cpp
+++ b/codec/decoder/core/src/au_parser.cpp
@@ -322,6 +322,10 @@
       return NULL;
     }
 
+    if ((uiAvailNalNum == 1) && ((NAL_UNIT_CODED_SLICE_IDR == pNalUnitHeader->eNalUnitType)
+                                 || (pCurNal->sNalHeaderExt.bIdrFlag))) {
+      ResetActiveSPSForEachLayer (pCtx);
+    }
     if ((uiAvailNalNum > 1) &&
         CheckAccessUnitBoundary (pCtx, pCurAu->pNalUnitsList[uiAvailNalNum - 1], pCurAu->pNalUnitsList[uiAvailNalNum - 2],
                                  pCurAu->pNalUnitsList[uiAvailNalNum - 1]->sNalData.sVclNal.sSliceHeaderExt.sSliceHeader.pSps)) {
@@ -410,7 +414,7 @@
     pCtx->bNextNewSeqBegin = true;
     return true; // the active sps changed, new sequence begins, so the current au is ready
   }
- 
+
   //Sub-clause 7.1.4.1.1 temporal_id
   if (kpLastNalHeaderExt->uiTemporalId != kpCurNalHeaderExt->uiTemporalId) {
     return true;