History

Merge pull request #726 from licaiguo/refine-auready

refine Check AU boundary

huili2 committed 12 years ago

Commit afe8a442 parents f5eb6d4 97c65b32 files · +11 −18Browse files

Showing the changes to codec/decoder (2 of 2 files). Show all

Unified · Split

2 files
  1. codec/decoder/core/inc/au_parser.h +1 −1
  2. codec/decoder/core/src/au_parser.cpp +10 −17
codec/decoder/core/inc/au_parser.h+1−1
@@ -92,7 +92,7 @@ int32_t ParseRefBasePicMarking (PBitStringAux pBs, PRefBasePicMarking pRefBasePi · 91 unmodified lines
92 92
93int32_t ParsePrefixNalUnit (PWelsDecoderContext pCtx, PBitStringAux pBs);93int32_t ParsePrefixNalUnit (PWelsDecoderContext pCtx, PBitStringAux pBs);
94 94
95bool CheckAccessUnitBoundary (const PNalUnit kpCurNal, const PNalUnit kpLastNal, const PSps kpSps);95bool CheckAccessUnitBoundary (const PWelsDecoderContext pCtx, const PNalUnit kpCurNal, const PNalUnit kpLastNal, const PSps kpSps);
96bool CheckAccessUnitBoundaryExt (PNalUnitHeaderExt pLastNalHdrExt, PNalUnitHeaderExt pCurNalHeaderExt,96bool CheckAccessUnitBoundaryExt (PNalUnitHeaderExt pLastNalHdrExt, PNalUnitHeaderExt pCurNalHeaderExt,
97 PSliceHeader pLastSliceHeader, PSliceHeader pCurSliceHeader);97 PSliceHeader pLastSliceHeader, PSliceHeader pCurSliceHeader);
98/*!98/*!
codec/decoder/core/src/au_parser.cpp+10−17
@@ -316,7 +316,7 @@ uint8_t* ParseNalHeader (PWelsDecoderContext pCtx, SNalUnitHeader* pNalUnitHeade · 315 unmodified lines
316 }316 }
317 317
318 if ((uiAvailNalNum > 1) &&318 if ((uiAvailNalNum > 1) &&
319 CheckAccessUnitBoundary (pCurAu->pNalUnitsList[uiAvailNalNum - 1], pCurAu->pNalUnitsList[uiAvailNalNum - 2],319 CheckAccessUnitBoundary (pCtx, pCurAu->pNalUnitsList[uiAvailNalNum - 1], pCurAu->pNalUnitsList[uiAvailNalNum - 2],
320 pCurAu->pNalUnitsList[uiAvailNalNum - 1]->sNalData.sVclNal.sSliceHeaderExt.sSliceHeader.pSps)) {320 pCurAu->pNalUnitsList[uiAvailNalNum - 1]->sNalData.sVclNal.sSliceHeaderExt.sSliceHeader.pSps)) {
321 pCurAu->uiEndPos = uiAvailNalNum - 2;321 pCurAu->uiEndPos = uiAvailNalNum - 2;
322 pCtx->bAuReadyFlag = true;322 pCtx->bAuReadyFlag = true;
@@ -392,7 +392,7 @@ bool CheckAccessUnitBoundaryExt (PNalUnitHeaderExt pLastNalHdrExt, PNalUnitHeade · 69 unmodified lines
392}392}
393 393
394 394
395bool CheckAccessUnitBoundary (const PNalUnit kpCurNal, const PNalUnit kpLastNal, const PSps kpSps) {395bool CheckAccessUnitBoundary (const PWelsDecoderContext pCtx, const PNalUnit kpCurNal, const PNalUnit kpLastNal, const PSps kpSps) {
396 const PNalUnitHeaderExt kpLastNalHeaderExt = &kpLastNal->sNalHeaderExt;396 const PNalUnitHeaderExt kpLastNalHeaderExt = &kpLastNal->sNalHeaderExt;
397 const PNalUnitHeaderExt kpCurNalHeaderExt = &kpCurNal->sNalHeaderExt;397 const PNalUnitHeaderExt kpCurNalHeaderExt = &kpCurNal->sNalHeaderExt;
398 const SSliceHeader* kpLastSliceHeader = &kpLastNal->sNalData.sVclNal.sSliceHeaderExt.sSliceHeader;398 const SSliceHeader* kpLastSliceHeader = &kpLastNal->sNalData.sVclNal.sSliceHeaderExt.sSliceHeader;
@@ -402,27 +402,20 @@ bool CheckAccessUnitBoundary (const PNalUnit kpCurNal, const PNalUnit kpLastNal, · 3 unmodified lines
402 if (kpLastNalHeaderExt->uiTemporalId != kpCurNalHeaderExt->uiTemporalId) {402 if (kpLastNalHeaderExt->uiTemporalId != kpCurNalHeaderExt->uiTemporalId) {
403 return true;403 return true;
404 }404 }
405 405 if (kpLastSliceHeader->iFrameNum != kpCurSliceHeader->iFrameNum)
406 return true;
407 if (pCtx->pActiveLayerSps[kpCurNalHeaderExt->uiDependencyId] != NULL && pCtx->pActiveLayerSps[kpCurNalHeaderExt->uiDependencyId] != kpSps) {
408 return true; // the active sps changed, new sequence begins, so the current au is ready
409 }
406 // Subclause 7.4.1.2.5410 // Subclause 7.4.1.2.5
407 if (kpLastSliceHeader->iRedundantPicCnt < kpCurSliceHeader->iRedundantPicCnt)411 if (kpLastSliceHeader->iRedundantPicCnt > kpCurSliceHeader->iRedundantPicCnt)
408 return false;
409 else if (kpLastSliceHeader->iRedundantPicCnt > kpCurSliceHeader->iRedundantPicCnt)
410 return true;412 return true;
411 413
412 // Subclause G7.4.1.2.4414 // Subclause G7.4.1.2.4
413 if (kpLastNalHeaderExt->uiDependencyId < kpCurNalHeaderExt->uiDependencyId)415 if (kpLastNalHeaderExt->uiDependencyId > kpCurNalHeaderExt->uiDependencyId)
414 return false;
415 else if (kpLastNalHeaderExt->uiDependencyId > kpCurNalHeaderExt->uiDependencyId)
416 return true;416 return true;
417 if (kpLastNalHeaderExt->uiQualityId < kpCurNalHeaderExt->uiQualityId)
418 return false;
419 else if (kpLastNalHeaderExt->uiQualityId > kpCurNalHeaderExt->uiQualityId)
420 return true;
421
422 // Subclause 7.4.1.2.4417 // Subclause 7.4.1.2.4
423 if (kpLastSliceHeader->iFrameNum != kpCurSliceHeader->iFrameNum)418 if (kpLastNalHeaderExt->uiDependencyId == kpCurNalHeaderExt->uiDependencyId && kpLastSliceHeader->iPpsId != kpCurSliceHeader->iPpsId)
424 return true;
425 if (kpLastSliceHeader->iPpsId != kpCurSliceHeader->iPpsId)
426 return true;419 return true;
427 if (kpLastSliceHeader->bFieldPicFlag != kpCurSliceHeader->bFieldPicFlag)420 if (kpLastSliceHeader->bFieldPicFlag != kpCurSliceHeader->bFieldPicFlag)
428 return true;421 return true;

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