History

Add subSPS pre-active check in CheckActiveSPS

Haibo Zhu committed 11 years ago

Commit e47a3631 parent e041bc61 file · +18 −8Browse files

Showing the changes to codec/decoder/core/src/au_parser.cpp (1 of 1 file). Show all

Unified · Split

codec/decoder/core/src/au_parser.cpp+18−8
@@ -786,18 +786,28 @@ const SLevelLimits* GetLevelLimits (int32_t iLevelIdx, bool bConstraint3) { · 785 unmodified lines
786 return NULL;786 return NULL;
787}787}
788 788
789bool CheckSpsActive (PWelsDecoderContext pCtx, PSps pSps) {789bool CheckSpsActive (PWelsDecoderContext pCtx, PSps pSps, bool bUseSubsetFlag) {
790 for (int i = 0; i < MAX_LAYER_NUM; i++) {790 for (int i = 0; i < MAX_LAYER_NUM; i++) {
791 if (pCtx->pActiveLayerSps[i] == pSps)791 if (pCtx->pActiveLayerSps[i] == pSps)
792 return true;792 return true;
793 }793 }
794 // Pre-active, will be used soon794 // Pre-active, will be used soon
795 if (pSps->iMbWidth > 0 && pSps->iMbHeight > 0 && pCtx->bSpsAvailFlags[pSps->iSpsId]795 if (bUseSubsetFlag) {
796 && pCtx->pAccessUnitList->uiAvailUnitsNum > 0) {796 if (pSps->iMbWidth > 0 && pSps->iMbHeight > 0 && pCtx->bSubspsAvailFlags[pSps->iSpsId]
797 PSps pNextUsedSps =797 && pCtx->pAccessUnitList->uiAvailUnitsNum > 0) {
798 pCtx->pAccessUnitList->pNalUnitsList[pCtx->pAccessUnitList->uiStartPos]->sNalData.sVclNal.sSliceHeaderExt.sSliceHeader.pSps;798 PSps pNextUsedSps =
799 if (pNextUsedSps->iSpsId == pSps->iSpsId)799 pCtx->pAccessUnitList->pNalUnitsList[pCtx->pAccessUnitList->uiStartPos]->sNalData.sVclNal.sSliceHeaderExt.sSliceHeader.pSps;
800 return true;800 if (pNextUsedSps->iSpsId == pSps->iSpsId)
801 return true;
802 }
803 } else {
804 if (pSps->iMbWidth > 0 && pSps->iMbHeight > 0 && pCtx->bSpsAvailFlags[pSps->iSpsId]
805 && pCtx->pAccessUnitList->uiAvailUnitsNum > 0) {
806 PSps pNextUsedSps =
807 pCtx->pAccessUnitList->pNalUnitsList[pCtx->pAccessUnitList->uiStartPos]->sNalData.sVclNal.sSliceHeaderExt.sSliceHeader.pSps;
808 if (pNextUsedSps->iSpsId == pSps->iSpsId)
809 return true;
810 }
801 }811 }
802 return false;812 return false;
803}813}
@@ -1127,7 +1137,7 @@ int32_t ParseSps (PWelsDecoderContext pCtx, PBitStringAux pBsAux, int32_t* pPicW · 323 unmodified lines
1127 } else {1137 } else {
1128 pTmpSps = &pCtx->sSpsBuffer[iSpsId];1138 pTmpSps = &pCtx->sSpsBuffer[iSpsId];
1129 }1139 }
1130 if (CheckSpsActive (pCtx, pTmpSps)) {1140 if (CheckSpsActive (pCtx, pTmpSps, kbUseSubsetFlag)) {
1131 // we are overwriting the active sps, copy a temp buffer1141 // we are overwriting the active sps, copy a temp buffer
1132 if (kbUseSubsetFlag) {1142 if (kbUseSubsetFlag) {
1133 if (memcmp (&pCtx->sSubsetSpsBuffer[iSpsId], pSubsetSps, sizeof (SSubsetSps)) != 0) {1143 if (memcmp (&pCtx->sSubsetSpsBuffer[iSpsId], pSubsetSps, sizeof (SSubsetSps)) != 0) {

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t