diff --git a/source/Lib/EncoderLib/EncGOP.cpp b/source/Lib/EncoderLib/EncGOP.cpp index 61e596116892fa689c206089eb3dfca495fc27d5..0248e21eebd15f0f300892e0d2bc84440556f24b 100644 --- a/source/Lib/EncoderLib/EncGOP.cpp +++ b/source/Lib/EncoderLib/EncGOP.cpp @@ -5426,7 +5426,7 @@ void EncGOP::xCreateExplicitReferencePictureSetFromReference( Slice* slice, PicL Picture* pic = slice->getPic(); const VPS* vps = slice->getPic()->cs->vps; int layerIdx = vps == nullptr ? 0 : vps->getGeneralLayerIdx( pic->layerId ); - bool isIntraLayerPredAllowed = vps->getIndependentLayerFlag(layerIdx) || (vps->getPredDirection(slice->getTLayer()) != 1); + bool isIntraLayerPredAllowed = (vps->getIndependentLayerFlag(layerIdx) || (vps->getPredDirection(slice->getTLayer()) != 1)) && !slice->isIRAP(); bool isInterLayerPredAllowed = !vps->getIndependentLayerFlag(layerIdx) && (vps->getPredDirection(slice->getTLayer()) != 2); ReferencePictureList* pLocalRPL0 = slice->getLocalRPL0(); *pLocalRPL0 = ReferencePictureList( slice->getSPS()->getInterLayerPresentFlag() );