diff --git a/source/Lib/DecoderLib/CABACReader.cpp b/source/Lib/DecoderLib/CABACReader.cpp index 64b7daad1fa412d867d770a7ff26c70ea12b6f15..75e5e1fe58943132f7d4ddfcc27127debdc785aa 100644 --- a/source/Lib/DecoderLib/CABACReader.cpp +++ b/source/Lib/DecoderLib/CABACReader.cpp @@ -1239,6 +1239,13 @@ void CABACReader::prediction_unit( PredictionUnit& pu, MergeCtx& mrgCtx ) #if JVET_L0369_SUBBLOCK_MERGE void CABACReader::subblock_merge_flag( CodingUnit& cu ) { +#if JVET_L0054_MMVD + if ( cu.firstPU->mergeFlag && (cu.firstPU->mmvdMergeFlag || cu.mmvdSkip) ) + { + return; + } +#endif + if ( !cu.cs->slice->isIntra() && (cu.cs->sps->getSpsNext().getUseAffine() || cu.cs->sps->getSpsNext().getUseSubPuMvp()) && cu.lumaSize().width >= 8 && cu.lumaSize().height >= 8 ) { RExt__DECODER_DEBUG_BIT_STATISTICS_CREATE_SET( STATS__CABAC_BITS__AFFINE_FLAG ); diff --git a/source/Lib/EncoderLib/CABACWriter.cpp b/source/Lib/EncoderLib/CABACWriter.cpp index 75e7adee519fccdd13419ece0852754213b97585..f1ee87113b6f365abd283ee072dec1dd2cfe96ed 100644 --- a/source/Lib/EncoderLib/CABACWriter.cpp +++ b/source/Lib/EncoderLib/CABACWriter.cpp @@ -1183,6 +1183,13 @@ void CABACWriter::prediction_unit( const PredictionUnit& pu ) #if JVET_L0369_SUBBLOCK_MERGE void CABACWriter::subblock_merge_flag( const CodingUnit& cu ) { +#if JVET_L0054_MMVD + if ( cu.firstPU->mergeFlag && (cu.firstPU->mmvdMergeFlag || cu.mmvdSkip) ) + { + return; + } +#endif + if ( !cu.cs->slice->isIntra() && (cu.cs->sps->getSpsNext().getUseAffine() || cu.cs->sps->getSpsNext().getUseATMVP()) && cu.lumaSize().width >= 8 && cu.lumaSize().height >= 8 ) { unsigned ctxId = DeriveCtx::CtxAffineFlag( cu ); diff --git a/source/Lib/EncoderLib/EncCu.cpp b/source/Lib/EncoderLib/EncCu.cpp index 7eb01c0c6c56f396987b922b30ea387c498073a2..46339b2ad841762db1aca46b9889b01c0f42ddf1 100644 --- a/source/Lib/EncoderLib/EncCu.cpp +++ b/source/Lib/EncoderLib/EncCu.cpp @@ -2055,6 +2055,9 @@ void EncCu::xCheckRDCostAffineMerge2Nx2N( CodingStructure *&tempCS, CodingStruct #if HEVC_TILES_WPP cu.tileIdx = tempCS->picture->tileMap->getTileIdxMap( tempCS->area.lumaPos() ); #endif +#if JVET_L0054_MMVD + cu.mmvdSkip = false; +#endif PredictionUnit pu( tempCS->area ); pu.cu = &cu;