diff --git a/source/Lib/DecoderLib/VLCReader.cpp b/source/Lib/DecoderLib/VLCReader.cpp index 18f314c470bd93dcf9e71057dac12ff1d2cbc913..56cd2438e39e5b16feda2b20e969a73c71a6702e 100644 --- a/source/Lib/DecoderLib/VLCReader.cpp +++ b/source/Lib/DecoderLib/VLCReader.cpp @@ -2920,14 +2920,23 @@ void HLSyntaxReader::parsePictureHeader( PicHeader* picHeader, ParameterSetManag { picHeader->setEnableTMVPFlag(false); } -#if R0324_PH_SYNTAX_CONDITION_MODIFY - if (picHeader->getEnableTMVPFlag() && pps->getRplInfoInPhFlag() && picHeader->getRPL(1)->getNumRefEntries() > 0) -#else + if (picHeader->getEnableTMVPFlag() && pps->getRplInfoInPhFlag()) -#endif { +#if R0324_PH_SYNTAX_CONDITION_MODIFY + if (picHeader->getRPL(1)->getNumRefEntries() > 0) + { + READ_CODE(1, uiCode, "ph_collocated_from_l0_flag"); + picHeader->setPicColFromL0Flag(uiCode); + } + else + { + picHeader->setPicColFromL0Flag(1); + } +#else READ_CODE( 1, uiCode, "ph_collocated_from_l0_flag"); picHeader->setPicColFromL0Flag(uiCode); +#endif if ((picHeader->getPicColFromL0Flag() == 1 && picHeader->getRPL(0)->getNumRefEntries() > 1) || (picHeader->getPicColFromL0Flag() == 0 && picHeader->getRPL(1)->getNumRefEntries() > 1)) { @@ -2939,20 +2948,13 @@ void HLSyntaxReader::parsePictureHeader( PicHeader* picHeader, ParameterSetManag picHeader->setColRefIdx(0); } } -#if R0324_PH_SYNTAX_CONDITION_MODIFY - else if (picHeader->getEnableTMVPFlag() && pps->getRplInfoInPhFlag() && picHeader->getRPL(1)->getNumRefEntries() == 0) - { - picHeader->setPicColFromL0Flag(1); - } -#else else { picHeader->setPicColFromL0Flag(0); } -#endif // mvd L1 zero flag - #if R0324_PH_SYNTAX_CONDITION_MODIFY +#if R0324_PH_SYNTAX_CONDITION_MODIFY if (!pps->getRplInfoInPhFlag() || picHeader->getRPL(1)->getNumRefEntries() > 0) { READ_FLAG(uiCode, "pic_mvd_l1_zero_flag"); diff --git a/source/Lib/EncoderLib/VLCWriter.cpp b/source/Lib/EncoderLib/VLCWriter.cpp index 76a6a1bc695e3b05b2efec27035edcd67cb00468..fd3581ebe37f3f92c2095d9362e9669a275fd4d8 100644 --- a/source/Lib/EncoderLib/VLCWriter.cpp +++ b/source/Lib/EncoderLib/VLCWriter.cpp @@ -1868,13 +1868,16 @@ void HLSWriter::codePictureHeader( PicHeader* picHeader, bool writeRbspTrailingB if (sps->getSPSTemporalMVPEnabledFlag()) { WRITE_FLAG( picHeader->getEnableTMVPFlag(), "ph_temporal_mvp_enabled_flag" ); -#if R0324_PH_SYNTAX_CONDITION_MODIFY - if (picHeader->getEnableTMVPFlag() && pps->getRplInfoInPhFlag() && picHeader->getRPL(1)->getNumRefEntries() > 0) -#else if (picHeader->getEnableTMVPFlag() && pps->getRplInfoInPhFlag()) -#endif { +#if R0324_PH_SYNTAX_CONDITION_MODIFY + if (picHeader->getRPL(1)->getNumRefEntries() > 0) + { + WRITE_CODE(picHeader->getPicColFromL0Flag(), 1, "ph_collocated_from_l0_flag"); + } +#else WRITE_CODE(picHeader->getPicColFromL0Flag(), 1, "ph_collocated_from_l0_flag"); +#endif if ((picHeader->getPicColFromL0Flag() && picHeader->getRPL(0)->getNumRefEntries() > 1) || (!picHeader->getPicColFromL0Flag() && picHeader->getRPL(1)->getNumRefEntries() > 1)) {