Showing the changes to codec/decoder (2 of 2 files). Show all
Unified · Split
| @@ -96,6 +96,8 @@ bool CheckAccessUnitBoundary (PWelsDecoderContext pCtx, const PNalUnit kpCurNal, · 95 unmodified lines | ||
| 96 | 96 | const PSps kpSps); |
| 97 | 97 | bool CheckAccessUnitBoundaryExt (PNalUnitHeaderExt pLastNalHdrExt, PNalUnitHeaderExt pCurNalHeaderExt, |
| 98 | 98 | PSliceHeader pLastSliceHeader, PSliceHeader pCurSliceHeader); |
| 99 | +bool CheckNextAuNewSeq (PWelsDecoderContext pCtx, const PNalUnit kpCurNal, const PSps kpSps); | |
| 100 | + | |
| 99 | 101 | /*! |
| 100 | 102 | ************************************************************************************* |
| 101 | 103 | * \brief to parse Sequence Parameter Set (SPS) |
| @@ -331,7 +331,7 @@ uint8_t* ParseNalHeader (PWelsDecoderContext pCtx, SNalUnitHeader* pNalUnitHeade · 330 unmodified lines | ||
| 331 | 331 | pCurAu->pNalUnitsList[uiAvailNalNum - 1]->sNalData.sVclNal.sSliceHeaderExt.sSliceHeader.pSps)) { |
| 332 | 332 | pCurAu->uiEndPos = uiAvailNalNum - 2; |
| 333 | 333 | pCtx->bAuReadyFlag = true; |
| 334 | − | |
| 334 | + pCtx->bNextNewSeqBegin = CheckNextAuNewSeq (pCtx, pCurNal, pCurNal->sNalData.sVclNal.sSliceHeaderExt.sSliceHeader.pSps); | |
| 335 | 335 | |
| 336 | 336 | } |
| 337 | 337 | } |
| @@ -411,7 +411,6 @@ bool CheckAccessUnitBoundary (PWelsDecoderContext pCtx, const PNalUnit kpCurNal, · 73 unmodified lines | ||
| 411 | 411 | const SSliceHeader* kpCurSliceHeader = &kpCurNal->sNalData.sVclNal.sSliceHeaderExt.sSliceHeader; |
| 412 | 412 | if (pCtx->pActiveLayerSps[kpCurNalHeaderExt->uiDependencyId] != NULL |
| 413 | 413 | && pCtx->pActiveLayerSps[kpCurNalHeaderExt->uiDependencyId] != kpSps) { |
| 414 | − pCtx->bNextNewSeqBegin = true; | |
| 415 | 414 | return true; // the active sps changed, new sequence begins, so the current au is ready |
| 416 | 415 | } |
| 417 | 416 | |
| @@ -460,6 +459,17 @@ bool CheckAccessUnitBoundary (PWelsDecoderContext pCtx, const PNalUnit kpCurNal, · 42 unmodified lines | ||
| 460 | 459 | return false; |
| 461 | 460 | } |
| 462 | 461 | |
| 462 | +bool CheckNextAuNewSeq (PWelsDecoderContext pCtx, const PNalUnit kpCurNal, const PSps kpSps) { | |
| 463 | + const PNalUnitHeaderExt kpCurNalHeaderExt = &kpCurNal->sNalHeaderExt; | |
| 464 | + if (pCtx->pActiveLayerSps[kpCurNalHeaderExt->uiDependencyId] != NULL | |
| 465 | + && pCtx->pActiveLayerSps[kpCurNalHeaderExt->uiDependencyId] != kpSps) | |
| 466 | + return true; | |
| 467 | + if (kpCurNalHeaderExt->bIdrFlag) | |
| 468 | + return true; | |
| 469 | + | |
| 470 | + return false; | |
| 471 | +} | |
| 472 | + | |
| 463 | 473 | /*! |
| 464 | 474 | ************************************************************************************* |
| 465 | 475 | * \brief to parse NON VCL NAL Units |