shithub: openh264

Download patch

ref: f9152e6f40962862b9a29aeef65c6d06a853f9f3
parent: dd5b9b89f6c0162cb8c47038d477cca35189096e
author: huili2 <huili2@cisco.com>
date: Thu Jun 19 21:37:05 EDT 2014

fix crash 1027692

--- a/codec/decoder/core/src/au_parser.cpp
+++ b/codec/decoder/core/src/au_parser.cpp
@@ -1013,6 +1013,9 @@
           pCtx->bAuReadyFlag = true;
           pCtx->pAccessUnitList->uiEndPos = pCtx->pAccessUnitList->uiAvailUnitsNum - 1;
           pCtx->iOverwriteFlags |= OVERWRITE_SUBSETSPS;
+        } else if ((pCtx->pSps != NULL) && (pCtx->pSps->iSpsId == pSubsetSps->sSps.iSpsId)) {
+          memcpy (&pCtx->sSubsetSpsBuffer[MAX_SPS_COUNT], pSubsetSps, sizeof (SSubsetSps));
+          pCtx->iOverwriteFlags |= OVERWRITE_SUBSETSPS;
         } else {
           memcpy (&pCtx->sSubsetSpsBuffer[iSpsId], pSubsetSps, sizeof (SSubsetSps));
         }
@@ -1024,6 +1027,9 @@
           pCtx->iOverwriteFlags |= OVERWRITE_SPS;
           pCtx->bAuReadyFlag = true;
           pCtx->pAccessUnitList->uiEndPos = pCtx->pAccessUnitList->uiAvailUnitsNum - 1;
+        } else if ((pCtx->pSps != NULL) && (pCtx->pSps->iSpsId == pSps->iSpsId)) {
+          memcpy (&pCtx->sSpsBuffer[MAX_SPS_COUNT], pSps, sizeof (SSps));
+          pCtx->iOverwriteFlags |= OVERWRITE_SPS;
         } else {
           memcpy (&pCtx->sSpsBuffer[iSpsId], pSps, sizeof (SSps));
         }