Index: /branches/HTM-9.3-dev2-MediaTek/source/Lib/TLibCommon/ContextTables.h
===================================================================
--- /branches/HTM-9.3-dev2-MediaTek/source/Lib/TLibCommon/ContextTables.h	(revision 805)
+++ /branches/HTM-9.3-dev2-MediaTek/source/Lib/TLibCommon/ContextTables.h	(revision 806)
@@ -97,5 +97,9 @@
 
 #if H_3D_ARP
+#if MTK_ARP_FLAG_CABAC_SIMP_G0061
+#define NUM_ARPW_CTX                  3       ///< number of context models for weighting factor index used by advanced residual prediction
+#else
 #define NUM_ARPW_CTX                  4       ///< number of context models for weighting factor index used by advanced residual prediction
+#endif
 #endif
 
@@ -368,4 +372,13 @@
 
 #if H_3D_ARP
+#if MTK_ARP_FLAG_CABAC_SIMP_G0061
+static const UChar 
+INIT_ARPW[3][NUM_ARPW_CTX] = 
+{
+    { 162, 153, 162 },
+    { 162, 153, 162 },
+    { 162, 153, 162 },
+};
+#else
 static const UChar 
 INIT_ARPW[3][NUM_ARPW_CTX] = 
@@ -376,5 +389,5 @@
 };
 #endif
-
+#endif
 #if H_3D_IC
 #if MTK_IC_FLAG_CABAC_SIMP_G0061
Index: /branches/HTM-9.3-dev2-MediaTek/source/Lib/TLibCommon/TComDataCU.cpp
===================================================================
--- /branches/HTM-9.3-dev2-MediaTek/source/Lib/TLibCommon/TComDataCU.cpp	(revision 805)
+++ /branches/HTM-9.3-dev2-MediaTek/source/Lib/TLibCommon/TComDataCU.cpp	(revision 806)
@@ -2266,8 +2266,8 @@
   pcTempCU = getPULeft( uiTempPartIdx, m_uiAbsIdxInLCU + uiAbsPartIdx );
   uiCtx    = ( pcTempCU ) ? ((pcTempCU->getARPW( uiTempPartIdx )==0)?0:1) : 0;
-  
+#if !MTK_ARP_FLAG_CABAC_SIMP_G0061        
   pcTempCU = getPUAbove( uiTempPartIdx, m_uiAbsIdxInLCU + uiAbsPartIdx );
   uiCtx   += ( pcTempCU ) ? ((pcTempCU->getARPW( uiTempPartIdx )==0)?0:1): 0;
-  
+#endif
   return uiCtx;
 }
Index: /branches/HTM-9.3-dev2-MediaTek/source/Lib/TLibCommon/TypeDef.h
===================================================================
--- /branches/HTM-9.3-dev2-MediaTek/source/Lib/TLibCommon/TypeDef.h	(revision 805)
+++ /branches/HTM-9.3-dev2-MediaTek/source/Lib/TLibCommon/TypeDef.h	(revision 806)
@@ -105,4 +105,5 @@
                                               // LGE_ARP_CTX_F0161                JCT3V-F0161
 #define MTK_ARP_REF_SELECTION_G0053       1   // ARP Reference picture selection in JCT3V-G0053 
+#define MTK_ARP_FLAG_CABAC_SIMP_G0061     1   // Use 2 context for ARP flag referring to only left neighbor block in JCT3V-G0061
 #define H_3D_IC                           1   // Illumination Compensation, JCT3V-B0045, JCT3V-C0046, JCT3V-D0060
                                               // Unifying rounding offset, for IC part, JCT3V-D0135
Index: /branches/HTM-9.3-dev2-MediaTek/source/Lib/TLibDecoder/TDecSbac.cpp
===================================================================
--- /branches/HTM-9.3-dev2-MediaTek/source/Lib/TLibDecoder/TDecSbac.cpp	(revision 805)
+++ /branches/HTM-9.3-dev2-MediaTek/source/Lib/TLibDecoder/TDecSbac.cpp	(revision 806)
@@ -2141,5 +2141,9 @@
   if( 1 == uiW )   
   {
+#if MTK_ARP_FLAG_CABAC_SIMP_G0061
+    m_pcTDecBinIf->decodeBin( uiCode , m_cCUPUARPWSCModel.get( 0, 0, 2 ) );
+#else
     m_pcTDecBinIf->decodeBin( uiCode , m_cCUPUARPWSCModel.get( 0, 0, 3 ) );
+#endif
     uiW += ( 1 == uiCode ? 1 : 0 );
   }
Index: /branches/HTM-9.3-dev2-MediaTek/source/Lib/TLibEncoder/TEncSbac.cpp
===================================================================
--- /branches/HTM-9.3-dev2-MediaTek/source/Lib/TLibEncoder/TEncSbac.cpp	(revision 805)
+++ /branches/HTM-9.3-dev2-MediaTek/source/Lib/TLibEncoder/TEncSbac.cpp	(revision 806)
@@ -1000,5 +1000,9 @@
   if( nBinNum > 1 )
   {
+#if MTK_ARP_FLAG_CABAC_SIMP_G0061
+     m_pcBinIf->encodeBin( ( iW == iMaxW ) ? 1 : 0, m_cCUPUARPWSCModel.get( 0, 0, 2 ) );
+#else
      m_pcBinIf->encodeBin( ( iW == iMaxW ) ? 1 : 0, m_cCUPUARPWSCModel.get( 0, 0, 3 ) );
+#endif
   }
 #if H_MV_ENC_DEC_TRAC
