diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h index 2fbf1eff450236da1de3d5727de4e2483e52a5e1..d0b337c0b2579f56fc06904909283000c24004fd 100644 --- a/source/Lib/CommonLib/TypeDef.h +++ b/source/Lib/CommonLib/TypeDef.h @@ -50,6 +50,8 @@ #include <assert.h> #include <cassert> +#define JVET_Q0237_STSA_TID_ZERO_DEPLAYER 1 // JVET-Q0237: STSA picture with TemporalId equal to 0 in a dependent layer + #define JVET_Q0798_SPS_NUMBER_MERGE_CANDIDATE 1 // JVET-Q0798: signal the number of merge candidates in SPS #define JVET_Q0157_SUBPICTURE_REORDERING_CONSTRAINT 1 //JVET-Q0157: subpicture reordering constraint diff --git a/source/Lib/DecoderLib/DecLib.cpp b/source/Lib/DecoderLib/DecLib.cpp index bcc6ada10fc8faf30fee5c6f279b2be8bd601b6f..45df9c97752a133d44047e145e18b2c6070b55d6 100644 --- a/source/Lib/DecoderLib/DecLib.cpp +++ b/source/Lib/DecoderLib/DecLib.cpp @@ -1763,6 +1763,16 @@ bool DecLib::xDecodeSlice(InputNALUnit &nalu, int &iSkipFrame, int iPOCLastDispl CHECK(sps == 0, "No SPS present"); VPS *vps = m_parameterSetManager.getVPS(sps->getVPSId()); #endif + +#if JVET_Q0237_STSA_TID_ZERO_DEPLAYER + + if (nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_STSA && vps != nullptr && (vps->getIndependentLayerFlag(nalu.m_nuhLayerId) == 1)) + { + CHECK(nalu.m_temporalId == 0, "TemporalID of STSA picture shall not be zero in independent layers"); + } + +#endif + #if JVET_Q0044_SLICE_IDX_WITH_SUBPICS int currSubPicIdx = pps->getSubPicIdxFromSubPicId( m_apcSlicePilot->getSliceSubPicId() ); int currSliceAddr = m_apcSlicePilot->getSliceID();