History

Fix the pps update logic error

Haibo Zhu committed 11 years ago

Commit bc8dfcd1 parent 11e0fc81 file · +4 −9Browse 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+4−9
@@ -1395,18 +1395,13 @@ int32_t ParsePps (PWelsDecoderContext pCtx, PPps pPpsList, PBitStringAux pBsAux, · 1394 unmodified lines
13951395 ERR_INFO_INVALID_CHROMA_QP_INDEX_OFFSET));
13961396 }
13971397
1398− if (pCtx->pAccessUnitList->uiAvailUnitsNum > 0) {
1399− PNalUnit pLastNalUnit = pCtx->pAccessUnitList->pNalUnitsList[pCtx->pAccessUnitList->uiAvailUnitsNum - 1];
1400− PPps pLastPps = pLastNalUnit->sNalData.sVclNal.sSliceHeaderExt.sSliceHeader.pPps;
1401− // the active pps is overwrite, write to a temp place
1402− if (pLastPps == &pCtx->sPpsBuffer[uiPpsId] && memcmp (&pCtx->sPpsBuffer[uiPpsId], pPps, sizeof (*pPps)) != 0) {
1398+ if (pCtx->pPps != NULL && pCtx->pPps->iPpsId == pPps->iPpsId) {
1399+ if (memcmp (pCtx->pPps, pPps, sizeof (*pPps)) != 0) {
14031400 memcpy (&pCtx->sPpsBuffer[MAX_PPS_COUNT], pPps, sizeof (SPps));
14041401 pCtx->iOverwriteFlags |= OVERWRITE_PPS;
14051402 pCtx->bAuReadyFlag = true;
1406− pCtx->pAccessUnitList->uiEndPos = pCtx->pAccessUnitList->uiAvailUnitsNum - 1;
1407− } else {
1408− memcpy (&pCtx->sPpsBuffer[uiPpsId], pPps, sizeof (SPps));
1409− pCtx->bPpsAvailFlags[uiPpsId] = true;
1403+ pCtx->pAccessUnitList->uiEndPos = (pCtx->pAccessUnitList->uiAvailUnitsNum > 0 ? (pCtx->pAccessUnitList->uiAvailUnitsNum
1404+ - 1) : 0);
14101405 }
14111406 } else {
14121407 memcpy (&pCtx->sPpsBuffer[uiPpsId], pPps, sizeof (SPps));

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