diff --git a/source/Lib/EncoderLib/EncLib.cpp b/source/Lib/EncoderLib/EncLib.cpp index 32234ff19509eebc2f745b6c0bbf7114bb80ad9b..e43a00146fd6581ba4b73622f1e71319e1a6434d 100644 --- a/source/Lib/EncoderLib/EncLib.cpp +++ b/source/Lib/EncoderLib/EncLib.cpp @@ -2234,8 +2234,9 @@ void EncLib::getActiveRefPicListNumForPOC(const SPS *sps, int POCCurr, int GOPid { if (POCCurr < (2 * m_iGOPSize + 2)) { - rpl0Idx = POCCurr + m_iGOPSize - 1; - rpl1Idx = POCCurr + m_iGOPSize - 1; + int candidateIdx = (POCCurr + m_iGOPSize - 1 >= fullListNum + partialListNum) ? GOPid : POCCurr + m_iGOPSize - 1; + rpl0Idx = candidateIdx; + rpl1Idx = candidateIdx; } else { @@ -2296,8 +2297,9 @@ void EncLib::selectReferencePictureList(Slice* slice, int POCCurr, int GOPid, in { if (POCCurr < (2 * m_iGOPSize + 2)) { - slice->setRPL0idx(POCCurr + m_iGOPSize - 1); - slice->setRPL1idx(POCCurr + m_iGOPSize - 1); + int candidateIdx = (POCCurr + m_iGOPSize - 1 >= fullListNum + partialListNum) ? GOPid : POCCurr + m_iGOPSize - 1; + slice->setRPL0idx(candidateIdx); + slice->setRPL1idx(candidateIdx); } else {