diff --git a/source/Lib/CommonLib/Contexts.cpp b/source/Lib/CommonLib/Contexts.cpp
index c735ab2d932ef6917a7797c16786d6b45400e7c4..2abec74d950cf58c06c8c82db72515aa996255ca 100644
--- a/source/Lib/CommonLib/Contexts.cpp
+++ b/source/Lib/CommonLib/Contexts.cpp
@@ -290,9 +290,15 @@ const CtxSet ContextSetCfg::MergeFlag = ContextSetCfg::addCtxSet
 
 const CtxSet ContextSetCfg::MergeIdx = ContextSetCfg::addCtxSet
 ({
+#if JVET_L0194_ONE_CTX_FOR_MRG_IDX
+  { 137,},
+  { 122,},
+  { CNU,},
+#else
   {  137, CNU, CNU, CNU, CNU,},
   {  122, CNU, CNU, CNU, CNU,},
   {  CNU, CNU, CNU, CNU, CNU,},
+#endif
 });
 
 const CtxSet ContextSetCfg::PartSize = ContextSetCfg::addCtxSet
diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h
index 3ef736ae4442374b74280f6aa6d676a46b62d62c..15a73e4464bb420c8eae37106d208344a0b7fc37 100644
--- a/source/Lib/CommonLib/TypeDef.h
+++ b/source/Lib/CommonLib/TypeDef.h
@@ -50,6 +50,8 @@
 #include <assert.h>
 #include <cassert>
 
+#define JVET_L0194_ONE_CTX_FOR_MRG_IDX                    1 // one context for full-block Merge index
+
 #define REUSE_CU_RESULTS                                  1
 
 #define REMOVE_MV_ADAPT_PREC                              1 // remove the high precision flag in the MV class
diff --git a/source/Lib/DecoderLib/CABACReader.cpp b/source/Lib/DecoderLib/CABACReader.cpp
index 8d7ebb8d0b6104ca610c040e3f2709e9bbadc0d0..7886c7b18388dcb8b36159dd59c71fd1db760539 100644
--- a/source/Lib/DecoderLib/CABACReader.cpp
+++ b/source/Lib/DecoderLib/CABACReader.cpp
@@ -1227,10 +1227,13 @@ void CABACReader::merge_idx( PredictionUnit& pu )
   {
     if( m_BinDecoder.decodeBin( Ctx::MergeIdx() ) )
     {
+#if !JVET_L0194_ONE_CTX_FOR_MRG_IDX
       bool useExtCtx = pu.cs->sps->getSpsNext().getUseSubPuMvp();
+#endif
       pu.mergeIdx++;
       for( ; pu.mergeIdx < numCandminus1; pu.mergeIdx++ )
       {
+#if !JVET_L0194_ONE_CTX_FOR_MRG_IDX
         if( useExtCtx )
         {
           if( !m_BinDecoder.decodeBin( Ctx::MergeIdx( std::min<int>( pu.mergeIdx, NUM_MERGE_IDX_EXT_CTX - 1 ) ) ) )
@@ -1240,11 +1243,14 @@ void CABACReader::merge_idx( PredictionUnit& pu )
         }
         else
         {
+#endif
           if( !m_BinDecoder.decodeBinEP() )
           {
             break;
           }
+#if !JVET_L0194_ONE_CTX_FOR_MRG_IDX
         }
+#endif
       }
     }
   }
diff --git a/source/Lib/EncoderLib/CABACWriter.cpp b/source/Lib/EncoderLib/CABACWriter.cpp
index c46fc745e2604d26a310858acd373faa5256f81e..c2fe809d75e5e358b5e3d26008f2d7cb906b751a 100644
--- a/source/Lib/EncoderLib/CABACWriter.cpp
+++ b/source/Lib/EncoderLib/CABACWriter.cpp
@@ -1196,18 +1196,24 @@ void CABACWriter::merge_idx( const PredictionUnit& pu )
     }
     else
     {
+#if !JVET_L0194_ONE_CTX_FOR_MRG_IDX
       bool useExtCtx = pu.cs->sps->getSpsNext().getUseSubPuMvp();
+#endif
       m_BinEncoder.encodeBin( 1, Ctx::MergeIdx() );
       for( unsigned idx = 1; idx < numCandminus1; idx++ )
       {
+#if !JVET_L0194_ONE_CTX_FOR_MRG_IDX
         if( useExtCtx )
         {
           m_BinEncoder.encodeBin( pu.mergeIdx == idx ? 0 : 1, Ctx::MergeIdx( std::min<int>( idx, NUM_MERGE_IDX_EXT_CTX - 1 ) ) );
         }
         else
         {
+#endif
           m_BinEncoder.encodeBinEP( pu.mergeIdx == idx ? 0 : 1 );
+#if !JVET_L0194_ONE_CTX_FOR_MRG_IDX
         }
+#endif
         if( pu.mergeIdx == idx )
         {
           break;