MCPcopy Create free account
hub / github.com/cisco/openh264 / CheckAccessUnitBoundaryExt

Function CheckAccessUnitBoundaryExt

codec/decoder/core/src/au_parser.cpp:437–492  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

435
436
437bool CheckAccessUnitBoundaryExt (PNalUnitHeaderExt pLastNalHdrExt, PNalUnitHeaderExt pCurNalHeaderExt,
438 PSliceHeader pLastSliceHeader, PSliceHeader pCurSliceHeader) {
439 const PSps kpSps = pCurSliceHeader->pSps;
440
441 //Sub-clause 7.1.4.1.1 temporal_id
442 if (pLastNalHdrExt->uiTemporalId != pCurNalHeaderExt->uiTemporalId) {
443 return true;
444 }
445
446 // Subclause 7.4.1.2.5
447 if (pLastSliceHeader->iRedundantPicCnt > pCurSliceHeader->iRedundantPicCnt)
448 return true;
449
450 // Subclause G7.4.1.2.4
451 if (pLastNalHdrExt->uiDependencyId > pCurNalHeaderExt->uiDependencyId)
452 return true;
453 if (pLastNalHdrExt->uiQualityId > pCurNalHeaderExt->uiQualityId)
454 return true;
455
456 // Subclause 7.4.1.2.4
457 if (pLastSliceHeader->iFrameNum != pCurSliceHeader->iFrameNum)
458 return true;
459 if (pLastSliceHeader->iPpsId != pCurSliceHeader->iPpsId)
460 return true;
461 if (pLastSliceHeader->pSps->iSpsId != pCurSliceHeader->pSps->iSpsId)
462 return true;
463 if (pLastSliceHeader->bFieldPicFlag != pCurSliceHeader->bFieldPicFlag)
464 return true;
465 if (pLastSliceHeader->bBottomFiledFlag != pCurSliceHeader->bBottomFiledFlag)
466 return true;
467 if ((pLastNalHdrExt->sNalUnitHeader.uiNalRefIdc != NRI_PRI_LOWEST) != (pCurNalHeaderExt->sNalUnitHeader.uiNalRefIdc !=
468 NRI_PRI_LOWEST))
469 return true;
470 if (pLastNalHdrExt->bIdrFlag != pCurNalHeaderExt->bIdrFlag)
471 return true;
472 if (pCurNalHeaderExt->bIdrFlag) {
473 if (pLastSliceHeader->uiIdrPicId != pCurSliceHeader->uiIdrPicId)
474 return true;
475 }
476 if (kpSps->uiPocType == 0) {
477 if (pLastSliceHeader->iPicOrderCntLsb != pCurSliceHeader->iPicOrderCntLsb)
478 return true;
479 if (pLastSliceHeader->iDeltaPicOrderCntBottom != pCurSliceHeader->iDeltaPicOrderCntBottom)
480 return true;
481 } else if (kpSps->uiPocType == 1) {
482 if (pLastSliceHeader->iDeltaPicOrderCnt[0] != pCurSliceHeader->iDeltaPicOrderCnt[0])
483 return true;
484 if (pLastSliceHeader->iDeltaPicOrderCnt[1] != pCurSliceHeader->iDeltaPicOrderCnt[1])
485 return true;
486 }
487 if (memcmp (pLastSliceHeader->pPps, pCurSliceHeader->pPps, sizeof (SPps)) != 0
488 || memcmp (pLastSliceHeader->pSps, pCurSliceHeader->pSps, sizeof (SSps)) != 0) {
489 return true;
490 }
491 return false;
492}
493
494

Callers 1

CheckAndFinishLastPicFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected