From 87a44fe97d5ec8defa4488eaa4413924fb83ee04 Mon Sep 17 00:00:00 2001
From: Yu Han <yuhan@qti.qualcomm.com>
Date: Wed, 30 Jan 2019 11:30:20 -0800
Subject: [PATCH] MER_SHARE_LIST_FIX

---
 source/Lib/CommonLib/TypeDef.h     |  1 +
 source/Lib/CommonLib/UnitTools.cpp | 11 +++++++----
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h
index 6db76d61d..8b2bbac70 100644
--- a/source/Lib/CommonLib/TypeDef.h
+++ b/source/Lib/CommonLib/TypeDef.h
@@ -62,6 +62,7 @@
 #define CLEAN_fillMvpCand                                 1
 #define MODIFY_for_vtm4                      1
 #define IBC_SEPERATE_MODE_AND_MER                         1
+#define IBC_MER_FIX                                       1
 #define DEBUG_M0483                                       1
 #endif
 
diff --git a/source/Lib/CommonLib/UnitTools.cpp b/source/Lib/CommonLib/UnitTools.cpp
index a093910d4..c64b8754f 100644
--- a/source/Lib/CommonLib/UnitTools.cpp
+++ b/source/Lib/CommonLib/UnitTools.cpp
@@ -747,7 +747,7 @@ bool PU::addMergeHMVPCand(const Slice &slice, MergeCtx& mrgCtx, bool isCandInter
   }
 #if JVET_M0170_MRG_SHARELIST
 #if IBC_SEPERATE_MODE_AND_MER && IBC_SEPERATE_MODE_REDUCTION==0 // Todo: remove
-  int num_avai_candInLUT = (isShared ? slice.getAvailableLUTBkupMrgNum() : slice.getAvailableLUTMrgNum());
+  int num_avai_candInLUT = ibc_flag ? slice.getAvailableLUTIBCMrgNum() : (isShared ? slice.getAvailableLUTBkupMrgNum() : slice.getAvailableLUTMrgNum());
   int offset = ibc_flag ? MAX_NUM_HMVP_CANDS : 0;
 #else
   int num_avai_candInLUT = (isShared ? slice.getAvailableLUTBkupMrgNum() : slice.getAvailableLUTMrgNum());
@@ -765,7 +765,8 @@ bool PU::addMergeHMVPCand(const Slice &slice, MergeCtx& mrgCtx, bool isCandInter
   {
 #if JVET_M0170_MRG_SHARELIST
 #if IBC_SEPERATE_MODE_AND_MER && IBC_SEPERATE_MODE_REDUCTION==0//Todo: remove
-    miNeighbor = isShared ? slice.getMotionInfoFromLUTBkup(num_avai_candInLUT - mrgIdx) : slice.getMotionInfoFromLUTs(num_avai_candInLUT - mrgIdx);
+    miNeighbor = ibc_flag ? slice.getMotionInfoFromLUTs(num_avai_candInLUT - mrgIdx + offset)
+                          : (isShared ? slice.getMotionInfoFromLUTBkup(num_avai_candInLUT - mrgIdx) : slice.getMotionInfoFromLUTs(num_avai_candInLUT - mrgIdx));
 #else
     miNeighbor = isShared ? slice.getMotionInfoFromLUTBkup(num_avai_candInLUT - mrgIdx) : slice.getMotionInfoFromLUTs(num_avai_candInLUT - mrgIdx);
 #endif
@@ -998,7 +999,7 @@ void PU::getIBCMergeCandidates(const PredictionUnit &pu, MergeCtx& mrgCtx, const
     unsigned subPuMvpPos = 0;
 
 #if JVET_L0090_PAIR_AVG
-#if MODIFY_for_vtm4
+#if IBC_MER_FIX==0
 #if JVET_M0170_MRG_SHARELIST
     bool  isShared = ((pu.Y().lumaSize().width != pu.shareParentSize.width) || (pu.Y().lumaSize().height != pu.shareParentSize.height));
 #endif
@@ -1009,7 +1010,9 @@ void PU::getIBCMergeCandidates(const PredictionUnit &pu, MergeCtx& mrgCtx, const
 #if IBC_SEPERATE_MODE && IBC_SEPERATE_MODE_REDUCTION==0
       , true
 #endif
-#if MODIFY_for_vtm4
+#if IBC_MER_FIX
+      , false
+#else
 #if JVET_M0170_MRG_SHARELIST
       , isShared
 #endif
-- 
GitLab