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