diff --git a/source/Lib/CommonLib/Slice.cpp b/source/Lib/CommonLib/Slice.cpp index a2772a271f7c4303ba446d6192dfceac5d7ef8ad..ea6b4162c9a9c4d66d599a1f3b04bd984dd8984d 100644 --- a/source/Lib/CommonLib/Slice.cpp +++ b/source/Lib/CommonLib/Slice.cpp @@ -712,7 +712,8 @@ void Slice::checkRPL(const ReferencePictureList* pRPL0, const ReferencePictureLi bool cond3 = (pcRefPic->cs->slice->isIRAP()); const VPS *vps = pcRefPic->cs->vps; - const int maxTidILRefPicsPlus1 = vps->getMaxTidIlRefPicsPlus1(layerIdx, pcRefPic->layerId); + const int maxTidILRefPicsPlus1 = + vps->getMaxTidIlRefPicsPlus1(layerIdx, vps->getGeneralLayerIdx(pcRefPic->layerId)); bool cond4 = (pcRefPic->temporalId < maxTidILRefPicsPlus1); CHECK(!((cond1 && cond2) || cond3 || cond4), diff --git a/source/Lib/CommonLib/Slice.h b/source/Lib/CommonLib/Slice.h index 448a5d605532c9c18a6ca9663110d7ef50b6caf5..70f19466f394a147aab2520dc27199beff193789 100644 --- a/source/Lib/CommonLib/Slice.h +++ b/source/Lib/CommonLib/Slice.h @@ -1046,8 +1046,18 @@ public: bool getIndependentLayerFlag(uint32_t layerIdx) const { return m_vpsIndependentLayerFlag[layerIdx]; } void setIndependentLayerFlag(uint32_t layerIdx, bool t) { m_vpsIndependentLayerFlag[layerIdx] = t; } #if JVET_R0193 - uint32_t getMaxTidIlRefPicsPlus1(uint32_t layerIdx, uint32_t refLayerIdx) const { return m_vpsMaxTidIlRefPicsPlus1[layerIdx][refLayerIdx]; } - void setMaxTidIlRefPicsPlus1(uint32_t layerIdx, uint32_t refLayerIdx, uint32_t i) { m_vpsMaxTidIlRefPicsPlus1[layerIdx][refLayerIdx] = i; } + uint32_t getMaxTidIlRefPicsPlus1(const uint32_t layerIdx, const uint32_t refLayerIdx) const + { + CHECK(layerIdx >= m_vpsMaxTidIlRefPicsPlus1.size(), "layerIdx out of bounds"); + CHECK(refLayerIdx >= m_vpsMaxTidIlRefPicsPlus1[layerIdx].size(), "refLayerIdx out of bounds"); + return m_vpsMaxTidIlRefPicsPlus1[layerIdx][refLayerIdx]; + } + void setMaxTidIlRefPicsPlus1(const uint32_t layerIdx, const uint32_t refLayerIdx, const uint32_t i) + { + CHECK(layerIdx >= m_vpsMaxTidIlRefPicsPlus1.size(), "layerIdx out of bounds"); + CHECK(refLayerIdx >= m_vpsMaxTidIlRefPicsPlus1[layerIdx].size(), "refLayerIdx out of bounds"); + m_vpsMaxTidIlRefPicsPlus1[layerIdx][refLayerIdx] = i; + } void setMaxTidIlRefPicsPlus1(std::vector<std::vector<uint32_t>> i) { m_vpsMaxTidIlRefPicsPlus1 = i; } #else uint32_t getMaxTidIlRefPicsPlus1(uint32_t layerIdx) const { return m_vpsMaxTidIlRefPicsPlus1[layerIdx]; }