From 7f65310f18e3879ea7088c8627d78e286a097ba3 Mon Sep 17 00:00:00 2001 From: Huanbang Chen <chenhuanbang@huawei.com> Date: Mon, 29 Oct 2018 16:42:54 +0800 Subject: [PATCH] harmonize with MMVD --- source/Lib/DecoderLib/CABACReader.cpp | 7 +++++++ source/Lib/EncoderLib/CABACWriter.cpp | 7 +++++++ source/Lib/EncoderLib/EncCu.cpp | 3 +++ 3 files changed, 17 insertions(+) diff --git a/source/Lib/DecoderLib/CABACReader.cpp b/source/Lib/DecoderLib/CABACReader.cpp index 64b7daad1f..75e5e1fe58 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 75e7adee51..f1ee87113b 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 7eb01c0c6c..46339b2ad8 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; -- GitLab