Index: /branches/HTM-DEV-2.0-dev3-Zhejiang/source/Lib/TLibCommon/ContextTables.h
===================================================================
--- /branches/HTM-DEV-2.0-dev3-Zhejiang/source/Lib/TLibCommon/ContextTables.h	(revision 560)
+++ /branches/HTM-DEV-2.0-dev3-Zhejiang/source/Lib/TLibCommon/ContextTables.h	(revision 561)
@@ -384,4 +384,13 @@
 #endif
 #if H_3D_DIM
+#if ZJU_DEPTH_INTRA_MODE_E0204
+static const UChar
+INIT_DEPTH_INTRA_MODE[3][NUM_DEPTH_INTRA_MODE_CTX] =
+{
+    {0,  0,  64, 168, 168, 124, CNU, 0},
+    {0, 64,   0, 183, CNU, 108,   0, 0},
+    {64, 0, CNU, CNU, 168, 109,   0, 0}
+};
+#else
 static const UChar 
 INIT_DEPTH_INTRA_MODE[3][NUM_DEPTH_INTRA_MODE_CTX] =
@@ -391,4 +400,5 @@
   {64, 0, CNU,   0, CNU,   0,   0, 0}
 };
+#endif
 static const UChar 
 INIT_DDC_FLAG[3][NUM_DDC_FLAG_CTX] =
Index: /branches/HTM-DEV-2.0-dev3-Zhejiang/source/Lib/TLibCommon/TypeDef.h
===================================================================
--- /branches/HTM-DEV-2.0-dev3-Zhejiang/source/Lib/TLibCommon/TypeDef.h	(revision 560)
+++ /branches/HTM-DEV-2.0-dev3-Zhejiang/source/Lib/TLibCommon/TypeDef.h	(revision 561)
@@ -172,4 +172,5 @@
 #if H_3D_DIM
 #define SEC_DMM2_E0146                    1   // Removal of DMM2 from DMMs
+#define ZJU_DEPTH_INTRA_MODE_E0204        1   // Simplified Binarization for depth_intra_mode
 #endif
 #define H_3D_DIM_RBC                      1   // Region Boundary Chain mode
Index: /branches/HTM-DEV-2.0-dev3-Zhejiang/source/Lib/TLibDecoder/TDecSbac.cpp
===================================================================
--- /branches/HTM-DEV-2.0-dev3-Zhejiang/source/Lib/TLibDecoder/TDecSbac.cpp	(revision 560)
+++ /branches/HTM-DEV-2.0-dev3-Zhejiang/source/Lib/TLibDecoder/TDecSbac.cpp	(revision 561)
@@ -1255,4 +1255,37 @@
   else
   {
+#if ZJU_DEPTH_INTRA_MODE_E0204
+      UInt maxBinNum = 0;
+      m_pcTDecBinIf->decodeBinEP(symbol);
+      if( symbol == 1 )
+      {
+          maxBinNum = 3;
+      }
+      else
+      {
+          maxBinNum = 2;
+          symbol = 1;
+      }
+      while( binNum<maxBinNum && symbol )
+      {
+          ctxDepthMode = puIdx*3 + ( binNum >= 2 ? 2 : binNum );
+          m_pcTDecBinIf->decodeBin(symbol,m_cDepthIntraModeSCModel.get(0,0,ctxDepthMode));
+          modeCode = (modeCode<<1)+symbol;
+          binNum++;
+      }
+      if( maxBinNum == 3 )
+      {
+          if ( modeCode == 0 )       { dir =  PLANAR_IDX;             sdcFlag = 1;}
+          else if ( modeCode == 2 )  { dir = (2* RBC_IDX+DIM_OFFSET); sdcFlag = 0;}
+          else if ( modeCode == 6 )  { dir = (2*DMM3_IDX+DIM_OFFSET); sdcFlag = 0;}
+          else if ( modeCode == 7 )  { dir = (2*DMM1_IDX+DIM_OFFSET); sdcFlag = 0;}
+      }
+      else
+      {
+          if ( modeCode == 0 )       { dir = 5;                       sdcFlag = 0;}
+          else if ( modeCode == 2 )  { dir = (2*DMM1_IDX+DIM_OFFSET); sdcFlag = 1;}
+          else if ( modeCode == 3 )  { dir = (2*DMM4_IDX+DIM_OFFSET); sdcFlag = 0;}
+      }
+#else
     ctxDepthMode = puIdx*3 ;
     m_pcTDecBinIf->decodeBin( symbol, m_cDepthIntraModeSCModel.get(0,0,ctxDepthMode) );
@@ -1323,4 +1356,5 @@
     else if( modeCode == 30 ) { dir = (2* RBC_IDX+DIM_OFFSET); sdcFlag = 0;}
     else if( modeCode == 31 ) { dir = (2*DMM2_IDX+DIM_OFFSET); sdcFlag = 0;}
+#endif
 #endif
 #endif
Index: /branches/HTM-DEV-2.0-dev3-Zhejiang/source/Lib/TLibEncoder/TEncSbac.cpp
===================================================================
--- /branches/HTM-DEV-2.0-dev3-Zhejiang/source/Lib/TLibEncoder/TEncSbac.cpp	(revision 560)
+++ /branches/HTM-DEV-2.0-dev3-Zhejiang/source/Lib/TLibEncoder/TEncSbac.cpp	(revision 561)
@@ -1261,4 +1261,8 @@
 Void TEncSbac::codeIntraDepthMode( TComDataCU* pcCU, UInt absPartIdx )
 {
+#if ZJU_DEPTH_INTRA_MODE_E0204
+    UInt codeWordTable[3][7] =    {{0, 0, 0, 2, 0,6, 7},{0, 0, 2, 7, 3, 6, 2},{0, 1, 0, 0, 0, 0, 0}};
+    UInt codeWordLenTable[3][7] = {{0, 1, 0, 2, 0,3, 3},{1, 1, 2, 3, 2, 3, 2},{1, 1, 0, 0, 0, 0, 0}};
+#else
 #if LGE_SDC_REMOVE_DC_E0158
 #if SEC_DMM2_E0146
@@ -1276,4 +1280,5 @@
   UInt codeWordTable[3][9] =    {{0, 0, 0, 2, 0,6, 0, 0, 7},{0, 2, 3, 4, 5, 6, 14, 31, 30},{0, 2, 0, 0, 0, 0, 3, 0, 0}};
   UInt codeWordLenTable[3][9] = {{0, 1, 0, 2, 0,3, 0, 0, 3},{2, 3, 3, 3, 3, 3,  4,  5,  5},{1, 2, 0, 0, 0, 0, 2, 0, 0}};
+#endif
 #endif
 #endif
@@ -1323,4 +1328,17 @@
       default:          codeIdx = 2; break;
     }
+  }
+#endif
+#if ZJU_DEPTH_INTRA_MODE_E0204
+  if( puIdx==1 )
+  {
+      if( codeIdx==1 || codeIdx==2 || codeIdx==4 )
+      {
+          m_pcBinIf->encodeBinEP( 0 );
+      }
+      else
+      {
+          m_pcBinIf->encodeBinEP( 1 );
+      }
   }
 #endif
