From 627e3d4f17a95795940d812af322ad654b080e70 Mon Sep 17 00:00:00 2001 From: Remy Foray <remy.foray@allegrodvt.com> Date: Thu, 18 Mar 2021 16:10:01 +0100 Subject: [PATCH] Fix non_ref_pic compliance check Picture Header data are not valid for reference pictures as they are overwritten when parsing each picture header. --- source/Lib/CommonLib/Picture.cpp | 1 + source/Lib/CommonLib/Slice.cpp | 4 +--- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/source/Lib/CommonLib/Picture.cpp b/source/Lib/CommonLib/Picture.cpp index 3fc433befd..1d4ff49097 100644 --- a/source/Lib/CommonLib/Picture.cpp +++ b/source/Lib/CommonLib/Picture.cpp @@ -243,6 +243,7 @@ void Picture::finalInit( const VPS* vps, const SPS& sps, const PPS& pps, PicHead m_conformanceWindow = pps.getConformanceWindow(); m_scalingWindow = pps.getScalingWindow(); mixedNaluTypesInPicFlag = pps.getMixedNaluTypesInPicFlag(); + nonReferencePictureFlag = picHeader->getNonReferencePictureFlag(); if (m_spliceIdx == NULL) { diff --git a/source/Lib/CommonLib/Slice.cpp b/source/Lib/CommonLib/Slice.cpp index 4b5c047421..5a4c3cd857 100644 --- a/source/Lib/CommonLib/Slice.cpp +++ b/source/Lib/CommonLib/Slice.cpp @@ -673,9 +673,7 @@ void Slice::checkRPL(const ReferencePictureList* pRPL0, const ReferencePictureLi } // Generated reference picture does not have picture header - const bool isGeneratedRefPic = pcRefPic->slices[0]->getPicHeader() ? false : true; - - const bool nonReferencePictureFlag = isGeneratedRefPic ? pcRefPic->nonReferencePictureFlag : pcRefPic->slices[0]->getPicHeader()->getNonReferencePictureFlag(); + const bool nonReferencePictureFlag = pcRefPic->nonReferencePictureFlag; CHECK( pcRefPic == m_pcPic || nonReferencePictureFlag, "The picture referred to by each entry in RefPicList[ 0 ] or RefPicList[ 1 ] shall not be the current picture and shall have ph_non_ref_pic_flag equal to 0" ); if( i < numActiveEntries[refPicList] ) -- GitLab