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/core/src (1 of 2 files). Show all

Unified · Split

codec/decoder/core/src/au_parser.cpp+10−17
@@ -316,7 +316,7 @@ uint8_t* ParseNalHeader (PWelsDecoderContext pCtx, SNalUnitHeader* pNalUnitHeade · 315 unmodified lines
316316 }
317317
318318 if ((uiAvailNalNum > 1) &&
319− CheckAccessUnitBoundary (pCurAu->pNalUnitsList[uiAvailNalNum - 1], pCurAu->pNalUnitsList[uiAvailNalNum - 2],
319+ CheckAccessUnitBoundary (pCtx, pCurAu->pNalUnitsList[uiAvailNalNum - 1], pCurAu->pNalUnitsList[uiAvailNalNum - 2],
320320 pCurAu->pNalUnitsList[uiAvailNalNum - 1]->sNalData.sVclNal.sSliceHeaderExt.sSliceHeader.pSps)) {
321321 pCurAu->uiEndPos = uiAvailNalNum - 2;
322322 pCtx->bAuReadyFlag = true;
@@ -392,7 +392,7 @@ bool CheckAccessUnitBoundaryExt (PNalUnitHeaderExt pLastNalHdrExt, PNalUnitHeade · 69 unmodified lines
392392 }
393393
394394
395−bool CheckAccessUnitBoundary (const PNalUnit kpCurNal, const PNalUnit kpLastNal, const PSps kpSps) {
395+bool CheckAccessUnitBoundary (const PWelsDecoderContext pCtx, const PNalUnit kpCurNal, const PNalUnit kpLastNal, const PSps kpSps) {
396396 const PNalUnitHeaderExt kpLastNalHeaderExt = &kpLastNal->sNalHeaderExt;
397397 const PNalUnitHeaderExt kpCurNalHeaderExt = &kpCurNal->sNalHeaderExt;
398398 const SSliceHeader* kpLastSliceHeader = &kpLastNal->sNalData.sVclNal.sSliceHeaderExt.sSliceHeader;
@@ -402,27 +402,20 @@ bool CheckAccessUnitBoundary (const PNalUnit kpCurNal, const PNalUnit kpLastNal, · 3 unmodified lines
402402 if (kpLastNalHeaderExt->uiTemporalId != kpCurNalHeaderExt->uiTemporalId) {
403403 return true;
404404 }
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+ }
406410 // Subclause 7.4.1.2.5
407− if (kpLastSliceHeader->iRedundantPicCnt < kpCurSliceHeader->iRedundantPicCnt)
408− return false;
409− else if (kpLastSliceHeader->iRedundantPicCnt > kpCurSliceHeader->iRedundantPicCnt)
411+ if (kpLastSliceHeader->iRedundantPicCnt > kpCurSliceHeader->iRedundantPicCnt)
410412 return true;
411413
412414 // Subclause G7.4.1.2.4
413− if (kpLastNalHeaderExt->uiDependencyId < kpCurNalHeaderExt->uiDependencyId)
414− return false;
415− else if (kpLastNalHeaderExt->uiDependencyId > kpCurNalHeaderExt->uiDependencyId)
415+ if (kpLastNalHeaderExt->uiDependencyId > kpCurNalHeaderExt->uiDependencyId)
416416 return true;
417− if (kpLastNalHeaderExt->uiQualityId < kpCurNalHeaderExt->uiQualityId)
418− return false;
419− else if (kpLastNalHeaderExt->uiQualityId > kpCurNalHeaderExt->uiQualityId)
420− return true;
421−
422417 // Subclause 7.4.1.2.4
423− if (kpLastSliceHeader->iFrameNum != kpCurSliceHeader->iFrameNum)
424− return true;
425− if (kpLastSliceHeader->iPpsId != kpCurSliceHeader->iPpsId)
418+ if (kpLastNalHeaderExt->uiDependencyId == kpCurNalHeaderExt->uiDependencyId && kpLastSliceHeader->iPpsId != kpCurSliceHeader->iPpsId)
426419 return true;
427420 if (kpLastSliceHeader->bFieldPicFlag != kpCurSliceHeader->bFieldPicFlag)
428421 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