Index: /branches/HTM-13.1-dev1-Samsung/cfg/3D-HEVC/NonCTC/allintra/baseCfg_2view+depth_AllIntra.cfg
===================================================================
--- /branches/HTM-13.1-dev1-Samsung/cfg/3D-HEVC/NonCTC/allintra/baseCfg_2view+depth_AllIntra.cfg	(revision 1144)
+++ /branches/HTM-13.1-dev1-Samsung/cfg/3D-HEVC/NonCTC/allintra/baseCfg_2view+depth_AllIntra.cfg	(revision 1145)
@@ -194,5 +194,6 @@
 InterSdcFlag                        : 1                             # use of inter sdc
 MpiFlag                             : 1
-IntraSingleFlag                     : 1                 # use of single depth mode
+DepthIntraSkip                      : 1     
+
 #========== view synthesis optimization (VSO) ==========
 
Index: /branches/HTM-13.1-dev1-Samsung/cfg/3D-HEVC/NonCTC/allintra/baseCfg_3view+depth_AllIntra.cfg
===================================================================
--- /branches/HTM-13.1-dev1-Samsung/cfg/3D-HEVC/NonCTC/allintra/baseCfg_3view+depth_AllIntra.cfg	(revision 1144)
+++ /branches/HTM-13.1-dev1-Samsung/cfg/3D-HEVC/NonCTC/allintra/baseCfg_3view+depth_AllIntra.cfg	(revision 1145)
@@ -212,5 +212,6 @@
 InterSdcFlag                        : 1                             # use of inter sdc
 MpiFlag                             : 1
-IntraSingleFlag                     : 1                 # use of single depth mode
+DepthIntraSkip                      : 1     
+
 #========== view synthesis optimization (VSO) ==========
 VSOConfig                 : [cx0 B(cc1) I(s0.25 s0.5 s0.75)][cx1 B(oo0) B(oo2) I(s0.25 s0.5 s0.75 s1.25 s1.5 s1.75)][cx2 B(cc1) I(s1.25 s1.5 s1.75)] # VSO configuration string
Index: /branches/HTM-13.1-dev1-Samsung/cfg/3D-HEVC/NonCTC/fco/baseCfg_3view+depth.cfg
===================================================================
--- /branches/HTM-13.1-dev1-Samsung/cfg/3D-HEVC/NonCTC/fco/baseCfg_3view+depth.cfg	(revision 1144)
+++ /branches/HTM-13.1-dev1-Samsung/cfg/3D-HEVC/NonCTC/fco/baseCfg_3view+depth.cfg	(revision 1145)
@@ -260,4 +260,5 @@
 InterSdcFlag                        : 1                             # use of inter sdc
 MpiFlag                             : 1
+DepthIntraSkip                      : 1  
 
 #========== view synthesis optimization (VSO) ==========
Index: /branches/HTM-13.1-dev1-Samsung/cfg/3D-HEVC/NonCTC/rc/baseCfg_3view+depth_rate_control.cfg
===================================================================
--- /branches/HTM-13.1-dev1-Samsung/cfg/3D-HEVC/NonCTC/rc/baseCfg_3view+depth_rate_control.cfg	(revision 1144)
+++ /branches/HTM-13.1-dev1-Samsung/cfg/3D-HEVC/NonCTC/rc/baseCfg_3view+depth_rate_control.cfg	(revision 1145)
@@ -273,5 +273,6 @@
 InterSdcFlag                        : 1                             # use of inter sdc
 MpiFlag                             : 1
-IntraSingleFlag                     : 1                 # use of single depth mode
+DepthIntraSkip                      : 1     
+
 #========== view synthesis optimization (VSO) ==========
 VSOConfig                 : [cx0 B(cc1) I(s0.25 s0.5 s0.75)][cx1 B(oo0) B(oo2) I(s0.25 s0.5 s0.75 s1.25 s1.5 s1.75)][cx2 B(cc1) I(s1.25 s1.5 s1.75)] # VSO configuration string
Index: /branches/HTM-13.1-dev1-Samsung/cfg/3D-HEVC/baseCfg_2view+depth.cfg
===================================================================
--- /branches/HTM-13.1-dev1-Samsung/cfg/3D-HEVC/baseCfg_2view+depth.cfg	(revision 1144)
+++ /branches/HTM-13.1-dev1-Samsung/cfg/3D-HEVC/baseCfg_2view+depth.cfg	(revision 1145)
@@ -228,5 +228,6 @@
 InterSdcFlag                        : 1                             # use of inter sdc
 MpiFlag                             : 1
-IntraSingleFlag                     : 1                 # use of single depth mode
+DepthIntraSkip                      : 1     
+
 #========== view synthesis optimization (VSO) ==========
 
Index: /branches/HTM-13.1-dev1-Samsung/cfg/3D-HEVC/baseCfg_3view+depth.cfg
===================================================================
--- /branches/HTM-13.1-dev1-Samsung/cfg/3D-HEVC/baseCfg_3view+depth.cfg	(revision 1144)
+++ /branches/HTM-13.1-dev1-Samsung/cfg/3D-HEVC/baseCfg_3view+depth.cfg	(revision 1145)
@@ -261,5 +261,6 @@
 InterSdcFlag                        : 1                             # use of inter sdc
 MpiFlag                             : 1
-IntraSingleFlag                     : 1                 # use of single depth mode
+DepthIntraSkip                      : 1     
+
 #========== view synthesis optimization (VSO) ==========
 VSOConfig                 : [cx0 B(cc1) I(s0.25 s0.5 s0.75)][cx1 B(oo0) B(oo2) I(s0.25 s0.5 s0.75 s1.25 s1.5 s1.75)][cx2 B(cc1) I(s1.25 s1.5 s1.75)] # VSO configuration string
Index: /branches/HTM-13.1-dev1-Samsung/cfg/3D-HEVC/fullCfg.cfg
===================================================================
--- /branches/HTM-13.1-dev1-Samsung/cfg/3D-HEVC/fullCfg.cfg	(revision 1144)
+++ /branches/HTM-13.1-dev1-Samsung/cfg/3D-HEVC/fullCfg.cfg	(revision 1145)
@@ -337,5 +337,6 @@
 InterSdcFlag                        : 1                             # use of inter sdc
 MpiFlag                             : 1
-IntraSingleFlag                     : 1                 # use of single depth mode
+DepthIntraSkip                      : 1     
+
 #========== view synthesis optimization (VSO) ==========
 VSOConfig                 : [cx0 B(cc1) I(s0.25 s0.5 s0.75)][cx1 B(oo0) B(oo2) I(s0.25 s0.5 s0.75 s1.25 s1.5 s1.75)][cx2 B(cc1) I(s1.25 s1.5 s1.75)] # VSO configuration string
Index: /branches/HTM-13.1-dev1-Samsung/source/App/TAppEncoder/TAppEncCfg.cpp
===================================================================
--- /branches/HTM-13.1-dev1-Samsung/source/App/TAppEncoder/TAppEncCfg.cpp	(revision 1144)
+++ /branches/HTM-13.1-dev1-Samsung/source/App/TAppEncoder/TAppEncCfg.cpp	(revision 1145)
@@ -785,5 +785,9 @@
   ("QtPredFlag"            , m_qtPredFlag            , true                                           , "Quad tree prediction from texture to depth")
   ("InterSdcFlag"          , m_interSdcFlag          , true                                           , "Inter depth DCs"                           )
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  ("DepthIntraSkip"        , m_depthIntraSkipFlag    , true                                           , "Depth intra skip mode"                     )
+#else
   ("IntraSingleFlag"       , m_intraSingleFlag       , true                                           , "Intra single mode"                         )
+#endif
 #endif //H_3D
   ;
@@ -2604,5 +2608,9 @@
   printf( "QtPred:%d "                 , m_qtPredFlag             ? 1 : 0 );
   printf( "InterSdc:%d "               , m_interSdcFlag           ? 1 : 0 );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  printf( "DepthIntraSkip:%d "         , m_depthIntraSkipFlag     ? 1 : 0 );
+#else
   printf( "IntraSingle:%d "            , m_intraSingleFlag        ? 1 : 0 );
+#endif
 #endif
 
Index: /branches/HTM-13.1-dev1-Samsung/source/App/TAppEncoder/TAppEncCfg.h
===================================================================
--- /branches/HTM-13.1-dev1-Samsung/source/App/TAppEncoder/TAppEncCfg.h	(revision 1144)
+++ /branches/HTM-13.1-dev1-Samsung/source/App/TAppEncoder/TAppEncCfg.h	(revision 1145)
@@ -484,6 +484,9 @@
   Bool                   m_qtPredFlag;
   Bool                   m_interSdcFlag;
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  Bool                   m_depthIntraSkipFlag; 
+#else
   Bool                   m_intraSingleFlag;
-
+#endif
 #endif
   // internal member functions
Index: /branches/HTM-13.1-dev1-Samsung/source/App/TAppEncoder/TAppEncTop.cpp
===================================================================
--- /branches/HTM-13.1-dev1-Samsung/source/App/TAppEncoder/TAppEncTop.cpp	(revision 1144)
+++ /branches/HTM-13.1-dev1-Samsung/source/App/TAppEncoder/TAppEncTop.cpp	(revision 1145)
@@ -196,5 +196,9 @@
       m_sps3dExtension.setQtPredFlag            ( d, m_qtPredFlag            );
       m_sps3dExtension.setInterSdcFlag          ( d, m_interSdcFlag          );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+      m_sps3dExtension.setDepthIntraSkipFlag    ( d, m_depthIntraSkipFlag    );  
+#else
       m_sps3dExtension.setIntraSingleFlag       ( d, m_intraSingleFlag       );  
+#endif
     }
   }
Index: /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibCommon/ContextTables.h
===================================================================
--- /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibCommon/ContextTables.h	(revision 1144)
+++ /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibCommon/ContextTables.h	(revision 1145)
@@ -51,7 +51,12 @@
 #define NUM_SPLIT_FLAG_CTX            3       ///< number of context models for split flag
 #define NUM_SKIP_FLAG_CTX             3       ///< number of context models for skip flag
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+#define NUM_DIS_FLAG_CTX              1
+#define NUM_DIS_TYPE_CTX              1       
+#else
 #if H_3D_SINGLE_DEPTH
 #define NUM_SINGLEDEPTH_FLAG_CTX                     1
 #define NUM_SINGLE_DEPTH_VALUE_DATA_CTX              1       
+#endif
 #endif
 #define NUM_MERGE_FLAG_EXT_CTX        1       ///< number of context models for merge flag of merge extended
@@ -153,4 +158,20 @@
   { CNU,  CNU,  CNU, }, 
 };
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+static const UChar 
+INIT_DIS_FLAG[3][NUM_DIS_FLAG_CTX] =  
+{
+    { 185 }, 
+    { 185 }, 
+    { 185 },
+};
+static const UChar
+INIT_DIS_TYPE[3][NUM_DIS_TYPE_CTX] = 
+{
+    { 137 }, 
+    { 137 }, 
+    { 137 }, 
+};
+#else
 #if H_3D_SINGLE_DEPTH
 static const UChar 
@@ -169,4 +190,5 @@
 };
 #endif
+#endif
 static const UChar
 INIT_MERGE_FLAG_EXT[3][NUM_MERGE_FLAG_EXT_CTX] = 
Index: /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibCommon/TComDataCU.cpp
===================================================================
--- /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibCommon/TComDataCU.cpp	(revision 1144)
+++ /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibCommon/TComDataCU.cpp	(revision 1145)
@@ -60,8 +60,13 @@
   
   m_skipFlag           = NULL;
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  m_bDISFlag           = NULL;
+  m_uiDISType          = NULL;
+#else
 #if H_3D_SINGLE_DEPTH
   m_singleDepthFlag     = NULL;
   m_apSingleDepthValue  = NULL;
-#endif  
+#endif
+#endif
   m_pePartSize         = NULL;
   m_pePredMode         = NULL;
@@ -181,7 +186,12 @@
 
     m_skipFlag           = new Bool[ uiNumPartition ];
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+    m_bDISFlag           = new Bool[ uiNumPartition ];
+    m_uiDISType          = (UInt*)xMalloc(UInt, uiNumPartition);
+#else
 #if H_3D_SINGLE_DEPTH
     m_singleDepthFlag     = new Bool[ uiNumPartition ];
     m_apSingleDepthValue  = (Pel*)xMalloc(Pel, uiNumPartition);
+#endif
 #endif
     m_pePartSize         = new Char[ uiNumPartition ];
@@ -327,7 +337,12 @@
 
     if ( m_skipFlag           ) { delete[] m_skipFlag;          m_skipFlag          = NULL; }
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+    if ( m_bDISFlag           ) { delete[] m_bDISFlag;   m_bDISFlag     = NULL; }
+    if ( m_uiDISType         ) { xFree(m_uiDISType);  m_uiDISType    = NULL; }
+#else
 #if H_3D_SINGLE_DEPTH
     if ( m_singleDepthFlag    ) { delete[] m_singleDepthFlag;   m_singleDepthFlag     = NULL; }
     if ( m_apSingleDepthValue ) { xFree(m_apSingleDepthValue);  m_apSingleDepthValue  = NULL; }
+#endif
 #endif
     if ( m_pePartSize         ) { delete[] m_pePartSize;        m_pePartSize        = NULL; }
@@ -491,7 +506,12 @@
     TComDataCU * pcFrom = pcPic->getCU(getAddr());
     m_skipFlag[ui]   = pcFrom->getSkipFlag(ui);
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+    m_bDISFlag[ui]   = pcFrom->getDISFlag(ui);
+    m_uiDISType[ui]  = pcFrom->getDISType(ui);
+#else
 #if H_3D_SINGLE_DEPTH
     m_singleDepthFlag[ui]    = pcFrom->getSingleDepthFlag(ui);
     m_apSingleDepthValue[ui] = pcFrom->getSingleDepthValue(ui);
+#endif
 #endif
     m_pePartSize[ui] = pcFrom->getPartitionSize(ui);
@@ -546,7 +566,12 @@
   {
     memset( m_skipFlag          + firstElement, false,                    numElements * sizeof( *m_skipFlag ) );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+    memset( m_bDISFlag          + firstElement, false,                    numElements * sizeof( *m_bDISFlag ) );
+    memset( m_uiDISType         + firstElement,     0,                    numElements * sizeof( *m_uiDISType) );
+#else
 #if H_3D_SINGLE_DEPTH
     memset( m_singleDepthFlag     + firstElement, false,                  numElements * sizeof( *m_singleDepthFlag ) );
     memset( m_apSingleDepthValue  + firstElement,     0,                  numElements * sizeof( *m_apSingleDepthValue ) );
+#endif
 #endif
     memset( m_pePartSize        + firstElement, SIZE_NONE,                numElements * sizeof( *m_pePartSize ) );
@@ -733,7 +758,12 @@
       m_puhTransformSkip[2][ui] = 0;
       m_skipFlag[ui]   = false;
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+      m_bDISFlag[ui]   = false;
+      m_uiDISType[ui]  = 0;
+#else
 #if H_3D_SINGLE_DEPTH
       m_singleDepthFlag[ui]     = false;
       m_apSingleDepthValue[ui]  = 0;
+#endif
 #endif
       m_pePartSize[ui] = SIZE_NONE;
@@ -904,7 +934,12 @@
   {
     m_skipFlag[ui]   = false;
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+    m_bDISFlag[ui]   = false;
+    m_uiDISType[ui]  = 0;
+#else
 #if H_3D_SINGLE_DEPTH
     m_singleDepthFlag[ui]   = false;
     m_apSingleDepthValue[ui]= 0;
+#endif
 #endif
     m_pePartSize[ui] = SIZE_NONE;
@@ -929,7 +964,12 @@
       m_puhTransformSkip[2][ui] = pcCU->getTransformSkip(uiPartOffset+ui,TEXT_CHROMA_V);
       m_skipFlag[ui]   = pcCU->getSkipFlag(uiPartOffset+ui);
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+      m_bDISFlag[ui]    = pcCU->getDISFlag(uiPartOffset+ui);
+      m_uiDISType[ui]   = pcCU->getDISType(uiPartOffset+ui);
+#else
 #if H_3D_SINGLE_DEPTH
       m_singleDepthFlag[ui]    = pcCU->getSingleDepthFlag(uiPartOffset+ui);
       m_apSingleDepthValue[ui] = pcCU->getSingleDepthValue(uiPartOffset+ui);
+#endif
 #endif
       m_pePartSize[ui] = pcCU->getPartitionSize(uiPartOffset+ui);
@@ -1078,8 +1118,13 @@
   
   m_skipFlag=pcCU->getSkipFlag()          + uiPart;
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  m_bDISFlag     = pcCU->getDISFlag()     + uiPart;
+  m_uiDISType    = pcCU->getDISType()     + uiPart;
+#else
 #if H_3D_SINGLE_DEPTH
   m_singleDepthFlag     = pcCU->getSingleDepthFlag()   + uiPart;
   m_apSingleDepthValue  = pcCU->getSingleDepthValue()  + uiPart;
-#endif  
+#endif
+#endif
   m_phQP=pcCU->getQP()                    + uiPart;
   m_pePartSize = pcCU->getPartitionSize() + uiPart;
@@ -1215,8 +1260,13 @@
   
   m_skipFlag           = pcCU->getSkipFlag ()             + uiAbsPartIdx;
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  m_bDISFlag           = pcCU->getDISFlag ()              + uiAbsPartIdx;
+  m_uiDISType          = pcCU->getDISType()               + uiAbsPartIdx;
+#else
 #if H_3D_SINGLE_DEPTH
   m_singleDepthFlag     = pcCU->getSingleDepthFlag ()             + uiAbsPartIdx;
   m_apSingleDepthValue  = pcCU->getSingleDepthValue ()            + uiAbsPartIdx;
-#endif  
+#endif
+#endif
   m_pePartSize         = pcCU->getPartitionSize ()        + uiAbsPartIdx;
 #if H_3D_NBDV
@@ -1290,7 +1340,12 @@
   Int sizeInChar  = sizeof( Char ) * uiNumPartition;
   memcpy( m_skipFlag   + uiOffset, pcCU->getSkipFlag(),       sizeof( *m_skipFlag )   * uiNumPartition );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  memcpy( m_bDISFlag   + uiOffset, pcCU->getDISFlag(),       sizeof( *m_bDISFlag )   * uiNumPartition );
+  memcpy( m_uiDISType  + uiOffset, pcCU->getDISType(),       sizeof( *m_uiDISType )  * uiNumPartition);
+#else
 #if H_3D_SINGLE_DEPTH
   memcpy( m_singleDepthFlag     + uiOffset, pcCU->getSingleDepthFlag(),       sizeof( *m_singleDepthFlag )   * uiNumPartition );
   memcpy( m_apSingleDepthValue  + uiOffset, pcCU->getSingleDepthValue(),      sizeof( *m_apSingleDepthValue ) * uiNumPartition);
+#endif
 #endif
   memcpy( m_phQP       + uiOffset, pcCU->getQP(),             sizeInChar                        );
@@ -1410,7 +1465,12 @@
 
   memcpy( rpcCU->getSkipFlag() + m_uiAbsIdxInLCU, m_skipFlag, sizeof( *m_skipFlag ) * m_uiNumPartition );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  memcpy( rpcCU->getDISFlag()  + m_uiAbsIdxInLCU, m_bDISFlag,    sizeof( *m_bDISFlag )  * m_uiNumPartition );
+  memcpy( rpcCU->getDISType()  + m_uiAbsIdxInLCU, m_uiDISType,   sizeof( *m_uiDISType ) * m_uiNumPartition );
+#else
 #if H_3D_SINGLE_DEPTH
   memcpy( rpcCU->getSingleDepthFlag()  + m_uiAbsIdxInLCU, m_singleDepthFlag,    sizeof( *m_singleDepthFlag ) * m_uiNumPartition );
   memcpy( rpcCU->getSingleDepthValue() + m_uiAbsIdxInLCU, m_apSingleDepthValue, sizeof( *m_apSingleDepthValue ) * m_uiNumPartition);
+#endif
 #endif
   memcpy( rpcCU->getQP() + m_uiAbsIdxInLCU, m_phQP, sizeInChar  );
@@ -1525,7 +1585,12 @@
   Int sizeInChar  = sizeof( Char ) * uiQNumPart;
   memcpy( rpcCU->getSkipFlag()       + uiPartOffset, m_skipFlag,   sizeof( *m_skipFlag )   * uiQNumPart );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  memcpy( rpcCU->getDISFlag()  + uiPartOffset, m_bDISFlag,    sizeof( *m_bDISFlag )   * uiQNumPart );
+  memcpy( rpcCU->getDISType()  + uiPartOffset, m_uiDISType,   sizeof( *m_uiDISType )  * uiQNumPart );
+#else
 #if H_3D_SINGLE_DEPTH
   memcpy( rpcCU->getSingleDepthFlag()  + uiPartOffset, m_singleDepthFlag,    sizeof( *m_singleDepthFlag )   * uiQNumPart );
   memcpy( rpcCU->getSingleDepthValue() + uiPartOffset, m_apSingleDepthValue, sizeof( *m_apSingleDepthValue ) * uiQNumPart);
+#endif
 #endif
   memcpy( rpcCU->getQP() + uiPartOffset, m_phQP, sizeInChar );
@@ -2427,4 +2492,17 @@
   memset( m_skipFlag + absPartIdx, skip, m_pcPic->getNumPartInCU() >> ( 2 * depth ) );
 }
+
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+Void TComDataCU::setDISFlagSubParts( Bool bDIS, UInt absPartIdx, UInt depth )
+{
+    assert( sizeof( *m_bDISFlag) == 1 );
+    memset( m_bDISFlag + absPartIdx, bDIS, m_pcPic->getNumPartInCU() >> ( 2 * depth ) );
+}
+
+Void TComDataCU::setDISTypeSubParts(UInt uiDISType, UInt uiAbsPartIdx, UInt uiPUIdx, UInt uiDepth )
+{
+    setSubPartT( uiDISType, m_uiDISType, uiAbsPartIdx, uiDepth, uiPUIdx );
+}
+#else
 #if H_3D_SINGLE_DEPTH
 Void TComDataCU::setSingleDepthFlagSubParts( Bool singleDepth, UInt absPartIdx, UInt depth )
@@ -2439,4 +2517,6 @@
 }
 #endif
+#endif
+
 Void TComDataCU::setPredModeSubParts( PredMode eMode, UInt uiAbsPartIdx, UInt uiDepth )
 {
@@ -5883,6 +5963,6 @@
 #endif
 
-#if H_3D_SINGLE_DEPTH
-Bool TComDataCU::getNeighDepth (UInt uiPartIdx, UInt uiPartAddr, Pel* pNeighDepth, Int index)
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+Bool TComDataCU::getNeighDepth ( UInt uiPartIdx, UInt uiPartAddr, Pel* pNeighDepth, Int index )
 {
 
@@ -5912,10 +5992,45 @@
     break;
   default:
+    break;
+  }
+  return bDepAvail;
+}
+#else
+#if H_3D_SINGLE_DEPTH
+Bool TComDataCU::getNeighDepth (UInt uiPartIdx, UInt uiPartAddr, Pel* pNeighDepth, Int index)
+{
+
+  Bool bDepAvail = false;
+  Pel *pDepth  = this->getPic()->getPicYuvRec()->getLumaAddr();
+  Int iDepStride =  this->getPic()->getPicYuvRec()->getStride();
+
+  Int xP, yP, nPSW, nPSH;
+  this->getPartPosition(uiPartIdx, xP, yP, nPSW, nPSH);
+  UInt PicHeight=this->getPic()->getPicYuvRec()->getHeight();
+  UInt PicWidth=this->getPic()->getPicYuvRec()->getWidth();
+  switch(index)
+  {
+  case 0: // Mid Left
+    if( ( xP != 0 ) && ( ( yP + ( nPSH >> 1 ) ) < PicHeight ) )
+    {
+      *pNeighDepth = pDepth[ (yP+(nPSH>>1)) * iDepStride + (xP-1) ];
+      bDepAvail = true;
+    }
+    break;
+  case 1: // Mid Above
+    if( ( yP != 0 ) && ( ( xP + ( nPSW >> 1 ) ) < PicWidth ) )
+    {
+      *pNeighDepth = pDepth[ (yP-1) * iDepStride + (xP + (nPSW>>1)) ];
+      bDepAvail = true;
+    }
+    break;
+  default:
       break;
   }
   return bDepAvail;
 }
-
-#endif
+#endif
+#endif
+
 #if H_3D_NBDV 
 //Notes from QC:
Index: /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibCommon/TComDataCU.h
===================================================================
--- /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibCommon/TComDataCU.h	(revision 1144)
+++ /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibCommon/TComDataCU.h	(revision 1145)
@@ -110,7 +110,12 @@
   // -------------------------------------------------------------------------------------------------------------------
   Bool*         m_skipFlag;           ///< array of skip flags
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  Bool*         m_bDISFlag;         
+  UInt*         m_uiDISType;
+#else
 #if H_3D_SINGLE_DEPTH
   Bool*         m_singleDepthFlag;           ///< array of single depth flags
   Pel*          m_apSingleDepthValue;
+#endif
 #endif
   Char*         m_pePartSize;         ///< array of partition sizes
@@ -342,4 +347,15 @@
   Void         setSkipFlag           ( UInt idx, Bool skip)     { m_skipFlag[idx] = skip;   }
   Void         setSkipFlagSubParts   ( Bool skip, UInt absPartIdx, UInt depth );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  Bool*        getDISFlag            ()                         { return m_bDISFlag;          }
+  Bool         getDISFlag            ( UInt idx)                { return m_bDISFlag[idx];     }
+  Void         setDISFlag            ( UInt idx, Bool bDIS)     { m_bDISFlag[idx] = bDIS;   }
+  Void         setDISFlagSubParts    ( Bool bDIS, UInt absPartIdx, UInt depth );
+
+  UInt*        getDISType            ()                         { return m_uiDISType; }
+  UInt         getDISType            ( UInt idx)                { return m_uiDISType[idx];     }
+  Void         getDISType            ( UInt idx, UInt uiDISType)     { m_uiDISType[idx] = uiDISType;   }
+  Void         setDISTypeSubParts    ( UInt uiDISType, UInt uiAbsPartIdx, UInt uiPUIdx, UInt uiDepth );
+#else
 #if H_3D_SINGLE_DEPTH
   Bool*        getSingleDepthFlag            ()                        { return m_singleDepthFlag;          }
@@ -353,4 +369,5 @@
   Void         setSingleDepthValueSubParts   (Pel singleDepthValue, UInt uiAbsPartIdx, UInt uiPUIdx, UInt uiDepth );
 #endif  
+#endif
   Char*         getPredictionMode     ()                        { return m_pePredMode;        }
   PredMode      getPredictionMode     ( UInt uiIdx )            { return static_cast<PredMode>( m_pePredMode[uiIdx] ); }
@@ -494,6 +511,10 @@
   Bool          getDispMvPredCan(UInt uiPartIdx, RefPicList eRefPicList, Int iRefIdx, Int* paiPdmRefIdx, TComMv* pacPdmMv, DisInfo* pDis, Int* iPdm );
 #endif
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+   Bool          getNeighDepth (UInt uiPartIdx, UInt uiPartAddr, Pel* pNeighDepth, Int index);
+#else
 #if H_3D_SINGLE_DEPTH
    Bool          getNeighDepth (UInt uiPartIdx, UInt uiPartAddr, Pel* pNeighDepth, Int index);
+#endif
 #endif
 #if H_3D_NBDV_REF
Index: /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibCommon/TComSlice.cpp
===================================================================
--- /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibCommon/TComSlice.cpp	(revision 1144)
+++ /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibCommon/TComSlice.cpp	(revision 1145)
@@ -140,6 +140,10 @@
 , m_depthToDisparityF             ( NULL )
 #endif
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+, m_bApplyDIS                     (false)
+#else
 #if H_3D_SINGLE_DEPTH
 , m_bApplySingleDepthMode         (false)
+#endif
 #endif
 #endif
@@ -1099,6 +1103,10 @@
   }
 #endif
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  m_bApplyDIS = pSrc->m_bApplyDIS;
+#else
 #if H_3D_SINGLE_DEPTH
   m_bApplySingleDepthMode = pSrc->m_bApplySingleDepthMode;
+#endif
 #endif
 #if H_3D_IC
@@ -4088,6 +4096,10 @@
   m_intraSdcWedgeFlag      = sps3dExt->getIntraSdcWedgeFlag    ( depthFlag ) && lidG0                                     ;                          
   m_qtPredFlag             = sps3dExt->getQtPredFlag           ( depthFlag ) && lidG0           &&   textOfCurViewAvailFlag;
-  m_interSdcFlag           = sps3dExt->getInterSdcFlag         ( depthFlag ) && lidG0                                    ;                               
+  m_interSdcFlag           = sps3dExt->getInterSdcFlag         ( depthFlag ) && lidG0                                    ;  
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  m_depthIntraSkipFlag     = sps3dExt->getDepthIntraSkipFlag   ( depthFlag ) && lidG0                                    ;                          
+#else
   m_intraSingleFlag        = sps3dExt->getIntraSingleFlag      ( depthFlag ) && lidG0                                    ;                          
+#endif
 
   m_subPbSize              = lidG0 ? ( 1 << ( sps3dExt->getLog2SubPbSizeMinus3   ( depthFlag ) + 3 ) ) : getSPS()->getMaxCUWidth();  
@@ -4112,5 +4124,9 @@
   std::cout << "qtPredFlag              :" << m_qtPredFlag             << std::endl;
   std::cout << "interSdcFlag            :" << m_interSdcFlag           << std::endl;
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  std::cout << "depthIntraSkipFlag      :" << m_depthIntraSkipFlag     << std::endl;    
+#else
   std::cout << "intraSingleFlag         :" << m_intraSingleFlag        << std::endl;    
+#endif
   std::cout << "subPbSize               :" << m_subPbSize              << std::endl;
   std::cout << "mpiSubPbSize            :" << m_mpiSubPbSize           << std::endl;
Index: /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibCommon/TComSlice.h
===================================================================
--- /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibCommon/TComSlice.h	(revision 1144)
+++ /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibCommon/TComSlice.h	(revision 1145)
@@ -1574,5 +1574,9 @@
       m_qtPredFlag            [d] = false; 
       m_interSdcFlag          [d] = false; 
-      m_intraSingleFlag       [d] = false;   
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+      m_depthIntraSkipFlag    [d] = false;   
+#else
+      m_intraSingleFlag       [d] = false; 
+#endif
     }
   }
@@ -1617,6 +1621,11 @@
   Bool getInterSdcFlag( Int d ) { return m_interSdcFlag[d]; } 
 
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  Void setDepthIntraSkipFlag( Int d, Bool flag ) { m_depthIntraSkipFlag[d] = flag; } 
+  Bool getDepthIntraSkipFlag( Int d ) { return m_depthIntraSkipFlag[d]; } 
+#else
   Void setIntraSingleFlag( Int d, Bool flag ) { m_intraSingleFlag[d] = flag; } 
   Bool getIntraSingleFlag( Int d ) { return m_intraSingleFlag[d]; } 
+#endif
 
 private:
@@ -1635,5 +1644,9 @@
   Bool        m_qtPredFlag            [2];
   Bool        m_interSdcFlag          [2];
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  Bool        m_depthIntraSkipFlag    [2];  
+#else
   Bool        m_intraSingleFlag       [2];  
+#endif
 };
 
@@ -2377,6 +2390,10 @@
 #endif
 #endif
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  Bool      m_bApplyDIS;
+#else
 #if H_3D_SINGLE_DEPTH
   Bool      m_bApplySingleDepthMode;
+#endif
 #endif
 #if H_3D_IC
@@ -2398,6 +2415,9 @@
   Bool m_qtPredFlag           ;
   Bool m_interSdcFlag         ;
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  Bool m_depthIntraSkipFlag   ;
+#else
   Bool m_intraSingleFlag      ;
-
+#endif
   Int  m_mpiSubPbSize         ; 
   Int  m_subPbSize            ; 
@@ -2822,5 +2842,9 @@
   Bool getQtPredFlag             ( ) { return m_qtPredFlag             ; };
   Bool getInterSdcFlag           ( ) { return m_interSdcFlag           ; };
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  Bool getDepthIntraSkipFlag     ( ) { return m_depthIntraSkipFlag     ; };
+#else
   Bool getIntraSingleFlag        ( ) { return m_intraSingleFlag        ; };
+#endif
 
   Int  getMpiSubPbSize           ( ) { return m_mpiSubPbSize           ; }; 
Index: /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibCommon/TypeDef.h
===================================================================
--- /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibCommon/TypeDef.h	(revision 1144)
+++ /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibCommon/TypeDef.h	(revision 1145)
@@ -78,4 +78,6 @@
 
 #if H_3D
+#define SEC_DEPTH_INTRA_SKIP_MODE_K0033   1   // Depth intra skip mode
+
 #define H_3D_QTLPC                        1   // OL_QTLIMIT_PREDCODING_B0068 //JCT3V-B0068
                                               // HHI_QTLPC_RAU_OFF_C0160 JCT3V-C0160 change 2: quadtree limitation and predictive coding switched off in random access units 
@@ -239,8 +241,10 @@
                                               // SHARP_DLT_SIMP_J0029              1   // DLT(DepthValue2Idx[]) table derivation cleanup
 
+#if !SEC_DEPTH_INTRA_SKIP_MODE_K0033
 #define H_3D_SINGLE_DEPTH                 1   // Single depth mode proposed in JCT3V-I0095
                                               // HS_SP_SIMP_J0066
                                               // SINGLE_DEPTH_SIMP_J0115           1 
                                               // MTK_SINGLE_DEPTH_VPS_FLAG_J0060   1   // Add VPS control flags and remove slice header control flag for single depth, JCT3V-J0060
+#endif
 
 #define H_3D_INTER_SDC                    1   // INTER SDC, Inter simplified depth coding
@@ -313,8 +317,10 @@
 #define H_3D_OUTPUT_ACTIVE_TOOLS               0
 
+#if !SEC_DEPTH_INTRA_SKIP_MODE_K0033
 ///// ***** SINGLE DEPTH MODE *********
 #if H_3D_SINGLE_DEPTH
 #define SINGLE_DEPTH_MODE_CAND_LIST_SIZE            2 // size of the sample candidate list
 
+#endif
 #endif
 
Index: /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibDecoder/TDecCAVLC.cpp
===================================================================
--- /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibDecoder/TDecCAVLC.cpp	(revision 1144)
+++ /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibDecoder/TDecCAVLC.cpp	(revision 1145)
@@ -1040,5 +1040,9 @@
       READ_FLAG( uiCode, "qt_pred_flag" ); sps3dExt->setQtPredFlag( d, uiCode == 1 );
       READ_FLAG( uiCode, "inter_sdc_flag" ); sps3dExt->setInterSdcFlag( d, uiCode == 1 );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+      READ_FLAG( uiCode, "intra_skip_flag" ); sps3dExt->setDepthIntraSkipFlag( d, uiCode == 1 );
+#else
       READ_FLAG( uiCode, "intra_single_flag" ); sps3dExt->setIntraSingleFlag( d, uiCode == 1 );
+#endif
     }
   }
@@ -2984,4 +2988,11 @@
   assert(0);
 }
+
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+Void TDecCavlc::parseDIS( TComDataCU* /*pcCU*/, UInt /*uiAbsPartIdx*/, UInt /*uiDepth*/ )
+{
+  assert(0);
+}
+#else
 #if H_3D_SINGLE_DEPTH
 Void TDecCavlc::parseSingleDepthMode( TComDataCU* /*pcCU*/, UInt /*uiAbsPartIdx*/, UInt /*uiDepth*/ )
@@ -2990,4 +3001,6 @@
 }
 #endif
+#endif
+
 Void TDecCavlc::parseCUTransquantBypassFlag( TComDataCU* /*pcCU*/, UInt /*uiAbsPartIdx*/, UInt /*uiDepth*/ )
 {
Index: /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibDecoder/TDecCAVLC.h
===================================================================
--- /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibDecoder/TDecCAVLC.h	(revision 1144)
+++ /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibDecoder/TDecCAVLC.h	(revision 1145)
@@ -124,7 +124,11 @@
   
   Void  parseSkipFlag       ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  Void  parseDIS            ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
+#else
 #if H_3D_SINGLE_DEPTH
   Void  parseSingleDepthMode        ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
-#endif  
+#endif
+#endif
   Void  parseCUTransquantBypassFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
   Void parseMergeFlag       ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt uiPUIdx );
Index: /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibDecoder/TDecCu.cpp
===================================================================
--- /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibDecoder/TDecCu.cpp	(revision 1144)
+++ /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibDecoder/TDecCu.cpp	(revision 1145)
@@ -520,8 +520,14 @@
     return;
   }
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  m_pcEntropyDecoder->decodeDIS( pcCU, uiAbsPartIdx, uiDepth );
+  if(!pcCU->getDISFlag(uiAbsPartIdx))
+  {
+#else
 #if H_3D_SINGLE_DEPTH
   m_pcEntropyDecoder->decodeSingleDepthMode( pcCU, uiAbsPartIdx, uiDepth );
   if(!pcCU->getSingleDepthFlag(uiAbsPartIdx))
   {
+#endif
 #endif
   m_pcEntropyDecoder->decodePredMode( pcCU, uiAbsPartIdx, uiDepth );
@@ -554,6 +560,10 @@
   m_pcEntropyDecoder->decodeCoeff( pcCU, uiAbsPartIdx, uiDepth, uiCurrWidth, uiCurrHeight, bCodeDQP );
   setdQPFlag( bCodeDQP );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  }
+#else
 #if H_3D_SINGLE_DEPTH
   }
+#endif
 #endif
   xFinishDecodeCU( pcCU, uiAbsPartIdx, uiDepth, ruiIsLast );
@@ -656,4 +666,17 @@
       break;
     case MODE_INTRA:
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+      if( m_ppcCU[uiDepth]->getDISFlag(0) )
+      {
+        xReconDIS( m_ppcCU[uiDepth], 0, uiDepth );
+      }
+#if H_3D_DIM_SDC
+      else if( m_ppcCU[uiDepth]->getSDCFlag(0) )
+      {
+        xReconIntraSDC( m_ppcCU[uiDepth], 0, uiDepth );
+      }
+#endif
+      else
+#else
 #if H_3D_SINGLE_DEPTH
       if( m_ppcCU[uiDepth]->getSingleDepthFlag(0) )
@@ -671,4 +694,5 @@
 #endif
 #endif
+#endif
       xReconIntraQT( m_ppcCU[uiDepth], uiDepth );
       break;
@@ -704,4 +728,83 @@
   }
 }
+
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+Void TDecCu::xReconDIS( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
+{
+  UInt uiWidth        = pcCU->getWidth  ( 0 );
+  UInt uiHeight       = pcCU->getHeight ( 0 );
+
+  TComYuv* pcRecoYuv  = m_ppcYuvReco[uiDepth];
+
+  UInt    uiStride    = pcRecoYuv->getStride  ();
+  Pel*    piReco      = pcRecoYuv->getLumaAddr( uiAbsPartIdx );
+
+
+  AOF( uiWidth == uiHeight );
+  AOF( uiAbsPartIdx == 0 );
+
+  Bool  bAboveAvail = false;
+  Bool  bLeftAvail  = false;
+  pcCU->getPattern()->initPattern   ( pcCU, 0, uiAbsPartIdx );
+  pcCU->getPattern()->initAdiPattern( pcCU, uiAbsPartIdx, 0, 
+    m_pcPrediction->getPredicBuf       (),
+    m_pcPrediction->getPredicBufWidth  (),
+    m_pcPrediction->getPredicBufHeight (),
+    bAboveAvail, bLeftAvail
+    );
+
+  if ( pcCU->getDISType(uiAbsPartIdx) == 0 )
+  {
+    m_pcPrediction->predIntraLumaAng( pcCU->getPattern(), VER_IDX, piReco, uiStride, uiWidth, uiHeight, bAboveAvail, bLeftAvail );
+  }
+  else if ( pcCU->getDISType(uiAbsPartIdx) == 1 )
+  {
+    m_pcPrediction->predIntraLumaAng( pcCU->getPattern(), HOR_IDX, piReco, uiStride, uiWidth, uiHeight, bAboveAvail, bLeftAvail );
+  }
+  else if ( pcCU->getDISType(uiAbsPartIdx) == 2 )
+  {
+    Pel pSingleDepth = 1 << ( g_bitDepthY - 1 );
+    pcCU->getNeighDepth ( 0, 0, &pSingleDepth, 0 );
+    for( UInt uiY = 0; uiY < uiHeight; uiY++ )
+    {
+      for( UInt uiX = 0; uiX < uiWidth; uiX++ )
+      {
+        piReco[ uiX ] = pSingleDepth;
+      }
+      piReco+= uiStride;
+    }
+  }
+  else if ( pcCU->getDISType(uiAbsPartIdx) == 3 )
+  {
+    Pel pSingleDepth = 1 << ( g_bitDepthY - 1 );
+    pcCU->getNeighDepth ( 0, 0, &pSingleDepth, 1 );
+    for( UInt uiY = 0; uiY < uiHeight; uiY++ )
+    {
+      for( UInt uiX = 0; uiX < uiWidth; uiX++ )
+      {
+        piReco[ uiX ] = pSingleDepth;
+      }
+      piReco+= uiStride;
+    }
+  }
+
+  // clear UV
+  UInt  uiStrideC     = pcRecoYuv->getCStride();
+  Pel   *pRecCb       = pcRecoYuv->getCbAddr();
+  Pel   *pRecCr       = pcRecoYuv->getCrAddr();
+
+  for (Int y=0; y<uiHeight/2; y++)
+  {
+    for (Int x=0; x<uiWidth/2; x++)
+    {
+      pRecCb[x] = 1<<(g_bitDepthC-1);
+      pRecCr[x] = 1<<(g_bitDepthC-1);
+    }
+
+    pRecCb += uiStrideC;
+    pRecCr += uiStrideC;
+  }
+}
+#else
 #if H_3D_SINGLE_DEPTH
 Void TDecCu::xReconIntraSingleDepth( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
@@ -772,4 +875,6 @@
 }
 #endif
+#endif
+
 #if H_3D_INTER_SDC
 Void TDecCu::xReconInterSDC( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
Index: /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibDecoder/TDecCu.h
===================================================================
--- /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibDecoder/TDecCu.h	(revision 1144)
+++ /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibDecoder/TDecCu.h	(revision 1145)
@@ -123,6 +123,10 @@
   Void setdQPFlag               ( Bool b )                { m_bDecodeDQP = b;           }
   Void xFillPCMBuffer           (TComDataCU* pCU, UInt depth);
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  Void xReconDIS               ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
+#else
 #if H_3D_SINGLE_DEPTH
   Void xReconIntraSingleDepth( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
+#endif
 #endif
 #if H_3D_DIM_SDC
Index: /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibDecoder/TDecEntropy.cpp
===================================================================
--- /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibDecoder/TDecEntropy.cpp	(revision 1144)
+++ /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibDecoder/TDecEntropy.cpp	(revision 1145)
@@ -52,4 +52,16 @@
   m_pcEntropyDecoderIf->parseSkipFlag( pcCU, uiAbsPartIdx, uiDepth );
 }
+
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+Void TDecEntropy::decodeDIS( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
+{
+  if( !pcCU->getSlice()->getDepthIntraSkipFlag() )
+  {
+    return;
+  }  
+
+  m_pcEntropyDecoderIf->parseDIS( pcCU, uiAbsPartIdx, uiDepth );
+}
+#else
 #if H_3D_SINGLE_DEPTH
 Void TDecEntropy::decodeSingleDepthMode( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
@@ -63,4 +75,6 @@
 }
 #endif
+#endif
+
 Void TDecEntropy::decodeCUTransquantBypassFlag(TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
 {
Index: /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibDecoder/TDecEntropy.h
===================================================================
--- /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibDecoder/TDecEntropy.h	(revision 1144)
+++ /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibDecoder/TDecEntropy.h	(revision 1145)
@@ -85,6 +85,10 @@
 public:
   virtual Void parseSkipFlag      ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) = 0;
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  virtual Void parseDIS           ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) = 0;
+#else
 #if H_3D_SINGLE_DEPTH
   virtual Void parseSingleDepthMode       ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) = 0;
+#endif
 #endif
   virtual Void parseCUTransquantBypassFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) = 0;
@@ -171,6 +175,10 @@
   Void decodeSplitFlag         ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
   Void decodeSkipFlag          ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  Void decodeDIS               ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) ;
+#else
 #if H_3D_SINGLE_DEPTH
   Void decodeSingleDepthMode ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) ;
+#endif
 #endif
   Void decodeCUTransquantBypassFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
Index: /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibDecoder/TDecSbac.cpp
===================================================================
--- /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibDecoder/TDecSbac.cpp	(revision 1144)
+++ /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibDecoder/TDecSbac.cpp	(revision 1145)
@@ -52,7 +52,12 @@
 , m_cCUSplitFlagSCModel       ( 1,             1,               NUM_SPLIT_FLAG_CTX            , m_contextModels + m_numContextModels, m_numContextModels )
 , m_cCUSkipFlagSCModel        ( 1,             1,               NUM_SKIP_FLAG_CTX             , m_contextModels + m_numContextModels, m_numContextModels)
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+, m_cCUDISFlagSCModel         ( 1,             1,               NUM_DIS_FLAG_CTX             , m_contextModels + m_numContextModels, m_numContextModels)
+, m_cCUDISTypeSCModel         ( 1,             1,               NUM_DIS_TYPE_CTX             , m_contextModels + m_numContextModels, m_numContextModels)
+#else
 #if H_3D_SINGLE_DEPTH
 , m_cCUSingleDepthFlagSCModel        ( 1,             1,               NUM_SINGLEDEPTH_FLAG_CTX             , m_contextModels + m_numContextModels, m_numContextModels)
 , m_cSingleDepthValueSCModel         ( 1,             1,               NUM_SINGLE_DEPTH_VALUE_DATA_CTX      , m_contextModels + m_numContextModels, m_numContextModels)
+#endif
 #endif
 , m_cCUMergeFlagExtSCModel    ( 1,             1,               NUM_MERGE_FLAG_EXT_CTX        , m_contextModels + m_numContextModels, m_numContextModels)
@@ -136,7 +141,12 @@
   m_cCUSplitFlagSCModel.initBuffer       ( sliceType, qp, (UChar*)INIT_SPLIT_FLAG );
   m_cCUSkipFlagSCModel.initBuffer        ( sliceType, qp, (UChar*)INIT_SKIP_FLAG );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  m_cCUDISFlagSCModel.initBuffer         ( sliceType, qp, (UChar*)INIT_DIS_FLAG );
+  m_cCUDISTypeSCModel.initBuffer         ( sliceType, qp, (UChar*)INIT_DIS_TYPE );
+#else
 #if H_3D_SINGLE_DEPTH
   m_cCUSingleDepthFlagSCModel.initBuffer        ( sliceType, qp, (UChar*)INIT_SINGLEDEPTH_FLAG );
   m_cSingleDepthValueSCModel.initBuffer         ( sliceType, qp, (UChar*)INIT_SINGLE_DEPTH_VALUE_DATA );
+#endif
 #endif
   m_cCUMergeFlagExtSCModel.initBuffer    ( sliceType, qp, (UChar*)INIT_MERGE_FLAG_EXT );
@@ -207,7 +217,12 @@
   m_cCUSplitFlagSCModel.initBuffer       ( eSliceType, iQp, (UChar*)INIT_SPLIT_FLAG );
   m_cCUSkipFlagSCModel.initBuffer        ( eSliceType, iQp, (UChar*)INIT_SKIP_FLAG );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  m_cCUDISFlagSCModel.initBuffer         ( eSliceType, iQp, (UChar*)INIT_DIS_FLAG );
+  m_cCUDISTypeSCModel.initBuffer         ( eSliceType, iQp, (UChar*)INIT_DIS_TYPE );
+#else
 #if H_3D_SINGLE_DEPTH
   m_cCUSingleDepthFlagSCModel.initBuffer        ( eSliceType, iQp, (UChar*)INIT_SINGLEDEPTH_FLAG );
   m_cSingleDepthValueSCModel.initBuffer         ( eSliceType, iQp, (UChar*)INIT_SINGLE_DEPTH_VALUE_DATA );
+#endif
 #endif
   m_cCUMergeFlagExtSCModel.initBuffer    ( eSliceType, iQp, (UChar*)INIT_MERGE_FLAG_EXT );
@@ -570,4 +585,50 @@
 #endif
 }
+
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+Void TDecSbac::parseDIS( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
+{
+  pcCU->setDISFlagSubParts( false,        uiAbsPartIdx, uiDepth );
+  UInt uiSymbol = 0;
+  m_pcTDecBinIf->decodeBin( uiSymbol, m_cCUDISFlagSCModel.get( 0, 0, 0 ) );
+  if( uiSymbol )
+  {
+    pcCU->setDISFlagSubParts( true,        uiAbsPartIdx, uiDepth );
+    pcCU->setSkipFlagSubParts( false,        uiAbsPartIdx, uiDepth );
+    pcCU->setSDCFlagSubParts( false,        uiAbsPartIdx, uiDepth );
+    pcCU->setPredModeSubParts( MODE_INTRA,  uiAbsPartIdx, uiDepth );
+    pcCU->setPartSizeSubParts( SIZE_2Nx2N, uiAbsPartIdx, uiDepth );
+    pcCU->setLumaIntraDirSubParts (DC_IDX, uiAbsPartIdx, uiDepth );
+    pcCU->setSizeSubParts( g_uiMaxCUWidth>>uiDepth, g_uiMaxCUHeight>>uiDepth, uiAbsPartIdx, uiDepth );
+    pcCU->setMergeFlagSubParts( false , uiAbsPartIdx, 0, uiDepth );
+    pcCU->setTrIdxSubParts(0, uiAbsPartIdx, uiDepth);
+    pcCU->setCbfSubParts(0, 1, 1, uiAbsPartIdx, uiDepth);
+
+    UInt uiUnaryIdx = 0;
+    UInt uiNumCand  = 4;
+
+    if ( uiNumCand > 1 )
+    {
+      for( ; uiUnaryIdx < uiNumCand - 1; ++uiUnaryIdx )
+      {
+        UInt uiSymbol2 = 0;
+        if ( uiUnaryIdx==0 )
+        {
+          m_pcTDecBinIf->decodeBin( uiSymbol2, m_cCUDISTypeSCModel.get( 0, 0, 0 ) );
+        }
+        else
+        {
+          m_pcTDecBinIf->decodeBinEP( uiSymbol2);
+        }
+        if( uiSymbol2 == 0 )
+        {
+          break;
+        }
+      }
+    }
+    pcCU->setDISTypeSubParts(uiUnaryIdx, uiAbsPartIdx, 0, uiDepth);
+  }
+}
+#else
 #if H_3D_SINGLE_DEPTH
 Void TDecSbac::parseSingleDepthMode( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
@@ -616,6 +677,7 @@
   }
 }
-
-#endif
+#endif
+#endif
+
 /** parse merge flag
  * \param pcCU
Index: /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibDecoder/TDecSbac.h
===================================================================
--- /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibDecoder/TDecSbac.h	(revision 1144)
+++ /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibDecoder/TDecSbac.h	(revision 1145)
@@ -125,7 +125,11 @@
   
   Void parseSkipFlag      ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  Void parseDIS          ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
+#else
 #if H_3D_SINGLE_DEPTH  
   Void parseSingleDepthMode      ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
-#endif  
+#endif
+#endif
   Void parseCUTransquantBypassFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
   Void parseSplitFlag     ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
@@ -178,7 +182,12 @@
   ContextModel3DBuffer m_cCUSplitFlagSCModel;
   ContextModel3DBuffer m_cCUSkipFlagSCModel;
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  ContextModel3DBuffer m_cCUDISFlagSCModel;
+  ContextModel3DBuffer m_cCUDISTypeSCModel;
+#else
 #if H_3D_SINGLE_DEPTH
   ContextModel3DBuffer m_cCUSingleDepthFlagSCModel;
   ContextModel3DBuffer m_cSingleDepthValueSCModel;
+#endif
 #endif
   ContextModel3DBuffer m_cCUMergeFlagExtSCModel;
Index: /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibEncoder/TEncCavlc.cpp
===================================================================
--- /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibEncoder/TEncCavlc.cpp	(revision 1144)
+++ /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibEncoder/TEncCavlc.cpp	(revision 1145)
@@ -889,5 +889,9 @@
       WRITE_FLAG( sps3dExt->getQtPredFlag( d ) ? 1 : 0 , "qt_pred_flag" );
       WRITE_FLAG( sps3dExt->getInterSdcFlag( d ) ? 1 : 0 , "inter_sdc_flag" );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+      WRITE_FLAG( sps3dExt->getDepthIntraSkipFlag( d ) ? 1 : 0 , "depth_intra_skip_flag" );
+#else
       WRITE_FLAG( sps3dExt->getIntraSingleFlag( d ) ? 1 : 0 , "intra_single_flag" );
+#endif
     }
   }
@@ -2435,4 +2439,11 @@
   assert(0);
 }
+
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+Void TEncCavlc::codeDIS( TComDataCU* pcCU, UInt uiAbsPartIdx )
+{
+  assert(0);
+}
+#else
 #if H_3D_SINGLE_DEPTH
 Void TEncCavlc::codeSingleDepthMode( TComDataCU* pcCU, UInt uiAbsPartIdx )
@@ -2441,4 +2452,6 @@
 }
 #endif
+#endif
+
 Void TEncCavlc::codeSplitFlag   ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
 {
Index: /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibEncoder/TEncCavlc.h
===================================================================
--- /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibEncoder/TEncCavlc.h	(revision 1144)
+++ /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibEncoder/TEncCavlc.h	(revision 1145)
@@ -127,6 +127,10 @@
   Void codeCUTransquantBypassFlag( TComDataCU* pcCU, UInt uiAbsPartIdx );
   Void codeSkipFlag      ( TComDataCU* pcCU, UInt uiAbsPartIdx );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  Void codeDIS           ( TComDataCU* pcCU, UInt uiAbsPartIdx );
+#else
 #if H_3D_SINGLE_DEPTH
   Void codeSingleDepthMode( TComDataCU* pcCU, UInt uiAbsPartIdx );
+#endif
 #endif
   Void codeMergeFlag     ( TComDataCU* pcCU, UInt uiAbsPartIdx );
Index: /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibEncoder/TEncCu.cpp
===================================================================
--- /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibEncoder/TEncCu.cpp	(revision 1144)
+++ /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibEncoder/TEncCu.cpp	(revision 1145)
@@ -712,4 +712,12 @@
     }
 #endif
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+    rpcTempCU->initEstData( uiDepth, iMinQP, isAddLowestQP  );
+    if( rpcBestCU->getSlice()->getDepthIntraSkipFlag() )
+    {
+      xCheckRDCostDIS( rpcBestCU, rpcTempCU, SIZE_2Nx2N );
+      rpcTempCU->initEstData( uiDepth, iMinQP, isAddLowestQP  );
+    }
+#else
 #if H_3D_SINGLE_DEPTH
     rpcTempCU->initEstData( uiDepth, iMinQP, isAddLowestQP  );
@@ -719,4 +727,5 @@
       rpcTempCU->initEstData( uiDepth, iMinQP, isAddLowestQP  );
     }
+#endif
 #endif
     if(!earlyDetectionSkipMode)
@@ -1577,8 +1586,14 @@
     return;
   }
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  m_pcEntropyCoder->encodeDIS( pcCU, uiAbsPartIdx );
+  if(!pcCU->getDISFlag(uiAbsPartIdx))
+  {
+#else
 #if H_3D_SINGLE_DEPTH
   m_pcEntropyCoder->encodeSingleDepthMode( pcCU, uiAbsPartIdx );
   if(!pcCU->getSingleDepthFlag(uiAbsPartIdx))
   {
+#endif
 #endif
   m_pcEntropyCoder->encodePredMode( pcCU, uiAbsPartIdx );
@@ -1614,6 +1629,10 @@
   m_pcEntropyCoder->encodeCoeff( pcCU, uiAbsPartIdx, uiDepth, pcCU->getWidth (uiAbsPartIdx), pcCU->getHeight(uiAbsPartIdx), bCodeDQP );
   setdQPFlag( bCodeDQP );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  }
+#else
 #if H_3D_SINGLE_DEPTH
   }
+#endif
 #endif
   // --- write terminating bit ---
@@ -2000,6 +2019,10 @@
 
           rpcTempCU->setSkipFlagSubParts( rpcTempCU->getQtRootCbf(0) == 0, 0, uhDepth );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+          rpcTempCU->setDISFlagSubParts( false, 0, uhDepth );
+#else
 #if H_3D_SINGLE_DEPTH
           rpcTempCU->setSingleDepthFlagSubParts( false, 0, uhDepth );
+#endif
 #endif
 #if H_3D_VSP // possible bug fix
@@ -2042,6 +2065,10 @@
               }
               rpcTempCU->setSkipFlagSubParts( false, 0, uhDepth );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+              rpcTempCU->setDISFlagSubParts( false, 0, uhDepth );
+#else
 #if H_3D_SINGLE_DEPTH
               rpcTempCU->setSingleDepthFlagSubParts( false, 0, uhDepth );
+#endif
 #endif
               rpcTempCU->setTrIdxSubParts( 0, 0, uhDepth );
@@ -2193,6 +2220,10 @@
   
   rpcTempCU->setSkipFlagSubParts( false, 0, uhDepth );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  rpcTempCU->setDISFlagSubParts( false, 0, uhDepth );
+#else
 #if H_3D_SINGLE_DEPTH
   rpcTempCU->setSingleDepthFlagSubParts( false, 0, uhDepth );
+#endif
 #endif
   rpcTempCU->setPartSizeSubParts  ( ePartSize,  0, uhDepth );
@@ -2303,6 +2334,10 @@
       }
       rpcTempCU->setSkipFlagSubParts( false, 0, uhDepth );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+      rpcTempCU->setDISFlagSubParts( false, 0, uhDepth );
+#else
 #if H_3D_SINGLE_DEPTH
       rpcTempCU->setSingleDepthFlagSubParts( false, 0, uhDepth );
+#endif
 #endif
       rpcTempCU->setTrIdxSubParts( 0, 0, uhDepth );
@@ -2413,4 +2448,72 @@
   }
 }
+
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+Void TEncCu::xCheckRDCostDIS( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize eSize )
+{
+  UInt uiDepth = rpcTempCU->getDepth( 0 );
+  if( !rpcBestCU->getSlice()->getIsDepth() || (eSize != SIZE_2Nx2N))
+  {
+    return;
+  }
+
+#if H_3D_VSO // M5
+  if( m_pcRdCost->getUseRenModel() )
+  {
+    UInt  uiWidth     = m_ppcOrigYuv[uiDepth]->getWidth   ();
+    UInt  uiHeight    = m_ppcOrigYuv[uiDepth]->getHeight  ();
+    Pel*  piSrc       = m_ppcOrigYuv[uiDepth]->getLumaAddr();
+    UInt  uiSrcStride = m_ppcOrigYuv[uiDepth]->getStride  ();
+    m_pcRdCost->setRenModelData( rpcTempCU, 0, piSrc, uiSrcStride, uiWidth, uiHeight );
+  }
+#endif
+
+  rpcTempCU->setSkipFlagSubParts( false, 0, uiDepth );
+  rpcTempCU->setPartSizeSubParts( SIZE_2Nx2N, 0, uiDepth );
+  rpcTempCU->setPredModeSubParts( MODE_INTRA, 0, uiDepth );
+  rpcTempCU->setCUTransquantBypassSubParts( rpcTempCU->getCUTransquantBypass(0), 0, uiDepth );
+
+  rpcTempCU->setTrIdxSubParts(0, 0, uiDepth);
+  rpcTempCU->setCbfSubParts(0, 1, 1, 0, uiDepth);
+  rpcTempCU->setDISFlagSubParts(true, 0, uiDepth);
+  rpcTempCU->setLumaIntraDirSubParts (DC_IDX, 0, uiDepth);
+#if H_3D_DIM_SDC
+  rpcTempCU->setSDCFlagSubParts( false, 0, uiDepth);
+#endif
+
+  UInt uiPreCalcDistC;
+  m_pcPredSearch  ->estIntraPredDIS      ( rpcTempCU, m_ppcOrigYuv[uiDepth], m_ppcPredYuvTemp[uiDepth], m_ppcResiYuvTemp[uiDepth], m_ppcRecoYuvTemp[uiDepth], uiPreCalcDistC, false );
+
+
+  m_ppcRecoYuvTemp[uiDepth]->copyToPicLuma(rpcTempCU->getPic()->getPicYuvRec(), rpcTempCU->getAddr(), rpcTempCU->getZorderIdxInCU() );
+
+
+  m_pcEntropyCoder->resetBits();
+  if ( rpcTempCU->getSlice()->getPPS()->getTransquantBypassEnableFlag())
+  {
+    m_pcEntropyCoder->encodeCUTransquantBypassFlag( rpcTempCU, 0,          true );
+  }
+  m_pcEntropyCoder->encodeSkipFlag ( rpcTempCU, 0,          true );
+  m_pcEntropyCoder->encodeDIS( rpcTempCU, 0,          true );
+
+
+  m_pcRDGoOnSbacCoder->store(m_pppcRDSbacCoder[uiDepth][CI_TEMP_BEST]);
+
+  rpcTempCU->getTotalBits() = m_pcEntropyCoder->getNumberOfWrittenBits();
+  rpcTempCU->getTotalBins() = ((TEncBinCABAC *)((TEncSbac*)m_pcEntropyCoder->m_pcEntropyCoderIf)->getEncBinIf())->getBinsCoded();
+
+
+#if H_3D_VSO // M6
+  if( m_pcRdCost->getUseLambdaScaleVSO())  
+    rpcTempCU->getTotalCost() = m_pcRdCost->calcRdCostVSO( rpcTempCU->getTotalBits(), rpcTempCU->getTotalDistortion() );  
+  else
+#endif
+    rpcTempCU->getTotalCost() = m_pcRdCost->calcRdCost( rpcTempCU->getTotalBits(), rpcTempCU->getTotalDistortion() );
+
+
+  xCheckDQP( rpcTempCU );
+  xCheckBestMode(rpcBestCU, rpcTempCU, uiDepth);
+}
+#else
 #if H_3D_SINGLE_DEPTH
 Void TEncCu::xCheckRDCostSingleDepth( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize eSize )
@@ -2479,4 +2582,5 @@
   xCheckBestMode(rpcBestCU, rpcTempCU, uiDepth);
 }
+#endif
 #endif
 
@@ -2636,6 +2740,10 @@
 
   rpcTempCU->setSkipFlagSubParts( false, 0, uiDepth );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  rpcTempCU->setDISFlagSubParts( false, 0, uiDepth );
+#else
 #if H_3D_SINGLE_DEPTH
   rpcTempCU->setSingleDepthFlagSubParts( false, 0, uiDepth );
+#endif
 #endif
   rpcTempCU->setPartSizeSubParts( eSize, 0, uiDepth );
@@ -2666,8 +2774,14 @@
   }
   m_pcEntropyCoder->encodeSkipFlag ( rpcTempCU, 0,          true );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  m_pcEntropyCoder->encodeDIS( rpcTempCU, 0,          true );
+  if(!rpcTempCU->getDISFlag(0))
+  {
+#else
 #if H_3D_SINGLE_DEPTH
   m_pcEntropyCoder->encodeSingleDepthMode( rpcTempCU, 0,          true );
   if(!rpcTempCU->getSingleDepthFlag(0))
   {
+#endif
 #endif
   m_pcEntropyCoder->encodePredMode( rpcTempCU, 0,          true );
@@ -2683,7 +2797,11 @@
   m_pcEntropyCoder->encodeCoeff( rpcTempCU, 0, uiDepth, rpcTempCU->getWidth (0), rpcTempCU->getHeight(0), bCodeDQP );
   setdQPFlag( bCodeDQP );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  }
+#else
 #if H_3D_SINGLE_DEPTH
   }
-#endif        
+#endif
+#endif
   m_pcRDGoOnSbacCoder->store(m_pppcRDSbacCoder[uiDepth][CI_TEMP_BEST]);
   
@@ -2713,6 +2831,10 @@
 
   rpcTempCU->setSkipFlagSubParts( false, 0, uiDepth );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  rpcTempCU->setDISFlagSubParts( false, 0, uiDepth );
+#else
 #if H_3D_SINGLE_DEPTH
   rpcTempCU->setSingleDepthFlagSubParts( false, 0, uiDepth );
+#endif
 #endif
   rpcTempCU->setIPCMFlag(0, true);
@@ -2732,6 +2854,10 @@
   }
   m_pcEntropyCoder->encodeSkipFlag ( rpcTempCU, 0,          true );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  m_pcEntropyCoder->encodeDIS( rpcTempCU, 0,          true );
+#else
 #if H_3D_SINGLE_DEPTH
   m_pcEntropyCoder->encodeSingleDepthMode( rpcTempCU, 0,          true );
+#endif
 #endif
   m_pcEntropyCoder->encodePredMode ( rpcTempCU, 0,          true );
Index: /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibEncoder/TEncCu.h
===================================================================
--- /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibEncoder/TEncCu.h	(revision 1144)
+++ /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibEncoder/TEncCu.h	(revision 1145)
@@ -159,6 +159,10 @@
   Void  xCheckRDCostInterDBBP( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, Bool bUseMRG = false );
 #endif
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  Void  xCheckRDCostDIS   ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize ePartSize  );
+#else
 #if H_3D_SINGLE_DEPTH
   Void  xCheckRDCostSingleDepth   ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize ePartSize  );
+#endif
 #endif
 #if H_3D_DIM
Index: /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibEncoder/TEncEntropy.cpp
===================================================================
--- /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibEncoder/TEncEntropy.cpp	(revision 1144)
+++ /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibEncoder/TEncEntropy.cpp	(revision 1145)
@@ -111,4 +111,19 @@
   m_pcEntropyCoderIf->codeSkipFlag( pcCU, uiAbsPartIdx );
 }
+
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+Void TEncEntropy::encodeDIS( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD )
+{
+  if ( !pcCU->getSlice()->getIsDepth() )
+  {
+    return;
+  }
+  if( bRD )
+  {
+    uiAbsPartIdx = 0;
+  }
+  m_pcEntropyCoderIf->codeDIS( pcCU, uiAbsPartIdx );
+}
+#else
 #if H_3D_SINGLE_DEPTH
 Void TEncEntropy::encodeSingleDepthMode( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD )
@@ -125,4 +140,6 @@
 }
 #endif
+#endif
+
 /** encode merge flag
  * \param pcCU
Index: /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibEncoder/TEncEntropy.h
===================================================================
--- /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibEncoder/TEncEntropy.h	(revision 1144)
+++ /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibEncoder/TEncEntropy.h	(revision 1145)
@@ -82,6 +82,10 @@
   virtual Void codeCUTransquantBypassFlag( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0;
   virtual Void codeSkipFlag      ( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0;
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  virtual Void codeDIS          ( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0;
+#else
 #if H_3D_SINGLE_DEPTH
   virtual Void codeSingleDepthMode      ( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0;
+#endif
 #endif
   virtual Void codeMergeFlag     ( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0;
@@ -166,6 +170,10 @@
   Void encodeCUTransquantBypassFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD = false );
   Void encodeSkipFlag          ( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD = false );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  Void encodeDIS               ( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD=false );
+#else
 #if H_3D_SINGLE_DEPTH
   Void encodeSingleDepthMode( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD=false );
+#endif
 #endif
   Void encodePUWise       ( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD = false );
Index: /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibEncoder/TEncSbac.cpp
===================================================================
--- /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibEncoder/TEncSbac.cpp	(revision 1144)
+++ /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibEncoder/TEncSbac.cpp	(revision 1145)
@@ -58,7 +58,12 @@
 , m_cCUSplitFlagSCModel       ( 1,             1,               NUM_SPLIT_FLAG_CTX            , m_contextModels + m_numContextModels, m_numContextModels )
 , m_cCUSkipFlagSCModel        ( 1,             1,               NUM_SKIP_FLAG_CTX             , m_contextModels + m_numContextModels, m_numContextModels)
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+, m_cCUDISFlagSCModel         ( 1,             1,               NUM_DIS_FLAG_CTX              , m_contextModels + m_numContextModels, m_numContextModels)
+, m_cCUDISTypeSCModel         ( 1,             1,               NUM_DIS_TYPE_CTX              , m_contextModels + m_numContextModels, m_numContextModels)
+#else
 #if H_3D_SINGLE_DEPTH
 , m_cCUSingleDepthFlagSCModel        ( 1,             1,               NUM_SINGLEDEPTH_FLAG_CTX             , m_contextModels + m_numContextModels, m_numContextModels)
 , m_cSingleDepthValueSCModel         ( 1,             1,               NUM_SINGLE_DEPTH_VALUE_DATA_CTX      , m_contextModels + m_numContextModels, m_numContextModels)
+#endif
 #endif
 , m_cCUMergeFlagExtSCModel    ( 1,             1,               NUM_MERGE_FLAG_EXT_CTX        , m_contextModels + m_numContextModels, m_numContextModels)
@@ -134,7 +139,12 @@
   
   m_cCUSkipFlagSCModel.initBuffer        ( eSliceType, iQp, (UChar*)INIT_SKIP_FLAG );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  m_cCUDISFlagSCModel.initBuffer         ( eSliceType, iQp, (UChar*)INIT_DIS_FLAG );
+  m_cCUDISTypeSCModel.initBuffer         ( eSliceType, iQp, (UChar*)INIT_DIS_TYPE );
+#else
 #if H_3D_SINGLE_DEPTH
   m_cCUSingleDepthFlagSCModel.initBuffer        ( eSliceType, iQp, (UChar*)INIT_SINGLEDEPTH_FLAG );
   m_cSingleDepthValueSCModel.initBuffer         ( eSliceType, iQp, (UChar*)INIT_SINGLE_DEPTH_VALUE_DATA );
+#endif
 #endif
   m_cCUMergeFlagExtSCModel.initBuffer    ( eSliceType, iQp, (UChar*)INIT_MERGE_FLAG_EXT);
@@ -214,7 +224,12 @@
       curCost  = m_cCUSplitFlagSCModel.calcCost       ( curSliceType, qp, (UChar*)INIT_SPLIT_FLAG );
       curCost += m_cCUSkipFlagSCModel.calcCost        ( curSliceType, qp, (UChar*)INIT_SKIP_FLAG );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+      curCost += m_cCUDISFlagSCModel.calcCost         ( curSliceType, qp, (UChar*)INIT_DIS_FLAG );
+      curCost += m_cCUDISTypeSCModel.calcCost         ( curSliceType, qp, (UChar*)INIT_DIS_TYPE );
+#else
 #if H_3D_SINGLE_DEPTH
       curCost += m_cCUSingleDepthFlagSCModel.calcCost        ( curSliceType, qp, (UChar*)INIT_SINGLEDEPTH_FLAG );
       curCost += m_cSingleDepthValueSCModel.calcCost         ( curSliceType, qp, (UChar*)INIT_SINGLE_DEPTH_VALUE_DATA );
+#endif
 #endif
       curCost += m_cCUMergeFlagExtSCModel.calcCost    ( curSliceType, qp, (UChar*)INIT_MERGE_FLAG_EXT);
@@ -287,8 +302,13 @@
   
   m_cCUSkipFlagSCModel.initBuffer        ( eSliceType, iQp, (UChar*)INIT_SKIP_FLAG );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  m_cCUDISFlagSCModel.initBuffer         ( eSliceType, iQp, (UChar*)INIT_DIS_FLAG );
+  m_cCUDISTypeSCModel.initBuffer         ( eSliceType, iQp, (UChar*)INIT_DIS_TYPE );
+#else
 #if H_3D_SINGLE_DEPTH
   m_cCUSingleDepthFlagSCModel.initBuffer        ( eSliceType, iQp, (UChar*)INIT_SINGLEDEPTH_FLAG );
   m_cSingleDepthValueSCModel.initBuffer         ( eSliceType, iQp, (UChar*)INIT_SINGLE_DEPTH_VALUE_DATA );
-#endif  
+#endif
+#endif
   m_cCUMergeFlagExtSCModel.initBuffer    ( eSliceType, iQp, (UChar*)INIT_MERGE_FLAG_EXT);
   m_cCUMergeIdxExtSCModel.initBuffer     ( eSliceType, iQp, (UChar*)INIT_MERGE_IDX_EXT);
@@ -446,4 +466,37 @@
   m_pcBinIf->encodeBinsEP( bins, numBins );
 }
+
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+Void TEncSbac::codeDIS( TComDataCU* pcCU, UInt uiAbsPartIdx )
+{
+  UInt uiSymbol = pcCU->getDISFlag(uiAbsPartIdx ) ? 1 : 0;
+  m_pcBinIf->encodeBin( uiSymbol, m_cCUDISFlagSCModel.get( 0, 0, 0 ) );
+  if(uiSymbol)
+  {
+    UInt uiUnaryIdx = (UInt) pcCU->getDISType(uiAbsPartIdx);
+    UInt uiNumCand  = 4;
+
+    if ( uiNumCand > 1 )
+    {
+      for( UInt ui = 0; ui < uiNumCand - 1; ++ui )
+      {
+        const UInt uiSymbol2 = ui == uiUnaryIdx ? 0 : 1;
+        if ( ui == 0 )
+        {
+          m_pcBinIf->encodeBin( uiSymbol2, m_cCUDISTypeSCModel.get( 0, 0, 0 ) );
+        }
+        else
+        {
+          m_pcBinIf->encodeBinEP( uiSymbol2 );
+        }
+        if( uiSymbol2 == 0 )
+        {
+          break;
+        }
+      }
+    }
+  }
+}
+#else
 #if H_3D_SINGLE_DEPTH
 Void TEncSbac::codeSingleDepthMode( TComDataCU* pcCU, UInt uiAbsPartIdx )
@@ -477,4 +530,6 @@
 }
 #endif
+#endif
+
 /** Coding of coeff_abs_level_minus3
  * \param uiSymbol value of coeff_abs_level_minus3
Index: /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibEncoder/TEncSbac.h
===================================================================
--- /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibEncoder/TEncSbac.h	(revision 1144)
+++ /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibEncoder/TEncSbac.h	(revision 1145)
@@ -146,6 +146,10 @@
   Void codeCUTransquantBypassFlag( TComDataCU* pcCU, UInt uiAbsPartIdx );
   Void codeSkipFlag      ( TComDataCU* pcCU, UInt uiAbsPartIdx );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  Void codeDIS           ( TComDataCU* pcCU, UInt uiAbsPartIdx );
+#else
 #if H_3D_SINGLE_DEPTH
   Void codeSingleDepthMode( TComDataCU* pcCU, UInt uiAbsPartIdx );
+#endif
 #endif
   Void codeMergeFlag     ( TComDataCU* pcCU, UInt uiAbsPartIdx );
@@ -215,7 +219,12 @@
   ContextModel3DBuffer m_cCUSplitFlagSCModel;
   ContextModel3DBuffer m_cCUSkipFlagSCModel;
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  ContextModel3DBuffer m_cCUDISFlagSCModel;
+  ContextModel3DBuffer m_cCUDISTypeSCModel;
+#else
 #if H_3D_SINGLE_DEPTH
   ContextModel3DBuffer m_cCUSingleDepthFlagSCModel;
   ContextModel3DBuffer m_cSingleDepthValueSCModel;
+#endif
 #endif
   ContextModel3DBuffer m_cCUMergeFlagExtSCModel;
Index: /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibEncoder/TEncSearch.cpp
===================================================================
--- /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibEncoder/TEncSearch.cpp	(revision 1144)
+++ /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibEncoder/TEncSearch.cpp	(revision 1145)
@@ -915,10 +915,21 @@
         }
         m_pcEntropyCoder->encodeSkipFlag( pcCU, 0, true );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+        m_pcEntropyCoder->encodeDIS(pcCU, 0, true );
+        if(!pcCU->getDISFlag(uiAbsPartIdx))
+#else
 #if H_3D_SINGLE_DEPTH
         m_pcEntropyCoder->encodeSingleDepthMode(pcCU, 0, true );
         if(!pcCU->getSingleDepthFlag(uiAbsPartIdx))
 #endif
+#endif
         m_pcEntropyCoder->encodePredMode( pcCU, 0, true );
       }
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+      else
+      {
+        m_pcEntropyCoder->encodeDIS(pcCU, 0, true );
+      }
+#else
 #if H_3D_SINGLE_DEPTH
       else
@@ -926,9 +937,15 @@
         m_pcEntropyCoder->encodeSingleDepthMode(pcCU, 0, true );
       }
-#endif      
+#endif
+#endif
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+      if(!pcCU->getDISFlag(uiAbsPartIdx))
+      {
+#else
 #if H_3D_SINGLE_DEPTH
       if(!pcCU->getSingleDepthFlag(uiAbsPartIdx))
       {
 #endif
+#endif
       m_pcEntropyCoder  ->encodePartSize( pcCU, 0, pcCU->getDepth(0), true );
 
@@ -945,11 +962,20 @@
         }
       }
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+      }
+#else
 #if H_3D_SINGLE_DEPTH
     }
 #endif
-    }
+#endif
+    }
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+    if(!pcCU->getDISFlag(uiAbsPartIdx))
+    {
+#else
 #if H_3D_SINGLE_DEPTH
       if(!pcCU->getSingleDepthFlag(uiAbsPartIdx))
       {
+#endif
 #endif
     // luma prediction mode
@@ -995,6 +1021,10 @@
     }
   }
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+ }
+#else
 #if H_3D_SINGLE_DEPTH
     }
+#endif
 #endif
   }
@@ -1859,4 +1889,98 @@
   dRDCost  += dSingleCost;
 }
+
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+Void TEncSearch::xIntraCodingDIS( TComDataCU* pcCU, UInt uiAbsPartIdx, TComYuv* pcOrgYuv, TComYuv* pcPredYuv, Dist& ruiDist, Double& dRDCost, UInt uiPredMode )
+{
+  UInt    uiWidth           = pcCU     ->getWidth   ( 0 );
+  UInt    uiHeight          = pcCU     ->getHeight  ( 0 );
+  UInt    uiStride          = pcOrgYuv ->getStride  ();
+  Pel*    piOrg             = pcOrgYuv ->getLumaAddr( uiAbsPartIdx );
+  Pel*    piPred            = pcPredYuv->getLumaAddr( uiAbsPartIdx );
+
+  AOF( uiWidth == uiHeight );
+  AOF( uiAbsPartIdx == 0 );
+  pcCU->setDISTypeSubParts(uiPredMode, uiAbsPartIdx, 0, pcCU->getDepth(0));  
+  //===== reconstruction =====
+
+  Bool bAboveAvail = false;
+  Bool bLeftAvail  = false;
+  pcCU->getPattern()->initPattern   ( pcCU, 0, 0 );
+  pcCU->getPattern()->initAdiPattern( pcCU, 0, 0, m_piYuvExt, m_iYuvExtStride, m_iYuvExtHeight, bAboveAvail, bLeftAvail );
+
+  if ( uiPredMode == 0 )
+  {
+    predIntraLumaAng( pcCU->getPattern(), VER_IDX, piPred, uiStride, uiWidth, uiHeight, bAboveAvail, bLeftAvail );
+  }
+  else if ( uiPredMode == 1 )
+  {
+    predIntraLumaAng( pcCU->getPattern(), HOR_IDX, piPred, uiStride, uiWidth, uiHeight, bAboveAvail, bLeftAvail );
+  }
+  else if ( uiPredMode == 2 )
+  {
+    Pel pSingleDepth = 1 << ( g_bitDepthY - 1 );
+    pcCU->getNeighDepth ( 0, 0, &pSingleDepth, 0 );
+    for( UInt uiY = 0; uiY < uiHeight; uiY++ )
+    {
+      for( UInt uiX = 0; uiX < uiWidth; uiX++ )
+      {
+        piPred[ uiX ] = pSingleDepth;
+      }
+      piPred+= uiStride;
+    }
+  }
+  else if ( uiPredMode == 3 )
+  {
+    Pel pSingleDepth = 1 << ( g_bitDepthY - 1 );
+    pcCU->getNeighDepth ( 0, 0, &pSingleDepth, 1 );
+    for( UInt uiY = 0; uiY < uiHeight; uiY++ )
+    {
+      for( UInt uiX = 0; uiX < uiWidth; uiX++ )
+      {
+        piPred[ uiX ] = pSingleDepth;
+      }
+      piPred+= uiStride;
+    }
+  }
+
+  // clear UV
+  UInt  uiStrideC     = pcPredYuv->getCStride();
+  Pel   *pRecCb       = pcPredYuv->getCbAddr();
+  Pel   *pRecCr       = pcPredYuv->getCrAddr();
+
+  for (Int y=0; y<uiHeight/2; y++)
+  {
+    for (Int x=0; x<uiWidth/2; x++)
+    {
+      pRecCb[x] = 1<<(g_bitDepthC-1);
+      pRecCr[x] = 1<<(g_bitDepthC-1);
+    }
+
+    pRecCb += uiStrideC;
+    pRecCr += uiStrideC;
+  }
+
+  piPred            = pcPredYuv->getLumaAddr( uiAbsPartIdx );
+  //===== determine distortion =====
+#if H_3D_VSO
+  if ( m_pcRdCost->getUseVSO() )
+    ruiDist = m_pcRdCost->getDistPartVSO  ( pcCU, uiAbsPartIdx, piPred, uiStride, piOrg, uiStride, uiWidth, uiHeight, false );
+  else
+#endif
+    ruiDist = m_pcRdCost->getDistPart(g_bitDepthY, piPred, uiStride, piOrg, uiStride, uiWidth, uiHeight );
+
+  //===== determine rate and r-d cost =====
+  m_pcEntropyCoder->resetBits();
+  m_pcEntropyCoder->encodeDIS( pcCU, 0, true );
+  UInt uiBits = m_pcEntropyCoder->getNumberOfWrittenBits();
+
+#if H_3D_VSO
+  if ( m_pcRdCost->getUseLambdaScaleVSO())
+    dRDCost = m_pcRdCost->calcRdCostVSO( uiBits, ruiDist );
+  else
+#endif
+    dRDCost = m_pcRdCost->calcRdCost( uiBits, ruiDist );
+}
+#else
 #if H_3D_SINGLE_DEPTH
 Void TEncSearch::xIntraCodingSingleDepth( TComDataCU* pcCU, UInt uiAbsPartIdx, TComYuv* pcOrgYuv, TComYuv* pcPredYuv, Dist& ruiDist, Double& dRDCost, Int iTestDepthIdx, Pel *DepthNeighbor )
@@ -1921,4 +2045,6 @@
 }
 #endif
+#endif
+
 #if H_3D_DIM_SDC
 Void TEncSearch::xIntraCodingSDC( TComDataCU* pcCU, UInt uiAbsPartIdx, TComYuv* pcOrgYuv, TComYuv* pcPredYuv, Dist& ruiDist, Double& dRDCost, Bool bZeroResidual, Int iSDCDeltaResi  )
@@ -2861,4 +2987,65 @@
   pcCU->setChromIntraDirSubParts( uiBestMode, 0, pcCU->getDepth( 0 ) );
 }
+
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+Void TEncSearch::estIntraPredDIS( TComDataCU* pcCU, 
+                                  TComYuv*    pcOrgYuv, 
+                                  TComYuv*    pcPredYuv, 
+                                  TComYuv*    pcResiYuv, 
+                                  TComYuv*    pcRecoYuv,
+                                  UInt&       ruiDistC,
+                                  Bool        bLumaOnly )
+{
+  UInt    uiDepth        = pcCU->getDepth(0);
+  UInt    uiWidth        = pcCU->getWidth (0);
+  UInt    uiHeight       = pcCU->getHeight(0);
+
+
+  Pel* piOrg         = pcOrgYuv ->getLumaAddr( 0, uiWidth );
+  UInt uiStride      = pcPredYuv->getStride();
+
+  Dist   uiDist = 0;
+  Double dCost   = 0.0;
+  Dist    uiBestDist = 0;
+  Double  dBestCost   = MAX_DOUBLE;
+  UInt     uiBestDISType = 0;
+
+  for( UInt uiPredMode = 0; uiPredMode < 4 ; uiPredMode++ )
+  {
+    // set context models
+    m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[uiDepth][CI_CURR_BEST] );
+
+    // determine residual for partition
+    uiDist = 0;
+    dCost   = 0.0;
+#if H_3D_VSO // M36
+    if( m_pcRdCost->getUseRenModel() )
+    {
+      m_pcRdCost->setRenModelData( pcCU, 0, piOrg, uiStride, uiWidth, uiHeight );
+    }
+#endif
+    xIntraCodingDIS(pcCU, 0, pcOrgYuv, pcPredYuv, uiDist, dCost, uiPredMode);
+    // check r-d cost
+    if( dCost < dBestCost )
+    {
+      uiBestDist = uiDist;
+      dBestCost   = dCost;
+      uiBestDISType = pcCU->getDISType(0);
+      // copy reconstruction
+      pcPredYuv->copyPartToPartYuv(pcRecoYuv, 0, uiWidth, uiHeight);
+    }
+  } 
+
+
+  pcCU->setDISTypeSubParts(uiBestDISType, 0, 0, uiDepth);  
+  assert(uiBestDISType >= 0);
+
+  //===== reset context models =====
+  m_pcRDGoOnSbacCoder->load(m_pppcRDSbacCoder[uiDepth][CI_CURR_BEST]);
+
+  //===== set distortion (rate and r-d costs are determined later) =====
+  pcCU->getTotalDistortion() = uiBestDist;
+}
+#else
 #if H_3D_SINGLE_DEPTH
 Void 
@@ -2950,4 +3137,6 @@
 
 #endif 
+#endif
+
 Void 
 TEncSearch::estIntraPredQT( TComDataCU* pcCU, 
@@ -7261,6 +7450,10 @@
     }
     m_pcEntropyCoder->encodeSkipFlag ( pcCU, 0, true );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+    m_pcEntropyCoder->encodeDIS ( pcCU, 0, true );
+#else
 #if H_3D_SINGLE_DEPTH
     m_pcEntropyCoder->encodeSingleDepthMode ( pcCU, 0, true );
+#endif
 #endif
     m_pcEntropyCoder->encodePredMode( pcCU, 0, true );
Index: /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibEncoder/TEncSearch.h
===================================================================
--- /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibEncoder/TEncSearch.h	(revision 1144)
+++ /branches/HTM-13.1-dev1-Samsung/source/Lib/TLibEncoder/TEncSearch.h	(revision 1145)
@@ -191,4 +191,13 @@
                                   TComYuv*    pcRecoYuv,
                                   UInt        uiPreCalcDistC );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  Void  estIntraPredDIS        ( TComDataCU* pcCU, 
+                                 TComYuv*    pcOrgYuv, 
+                                 TComYuv*    pcPredYuv, 
+                                 TComYuv*    pcResiYuv, 
+                                 TComYuv*    pcRecoYuv,
+                                 UInt&       ruiDistC,
+                                 Bool        bLumaOnly );
+#else
 #if H_3D_SINGLE_DEPTH
   Void  estIntraPredSingleDepth  ( TComDataCU* pcCU, 
@@ -199,5 +208,6 @@
                                   UInt&       ruiDistC,
                                   Bool        bLumaOnly );
-#endif    
+#endif
+#endif
   
   /// encoder estimation - inter prediction (non-skip)
@@ -354,6 +364,10 @@
                                     UInt         uiAbsPartIdx,
                                     UInt         stateU0V1Both2 );
+#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
+  Void xIntraCodingDIS           ( TComDataCU* pcCU, UInt uiAbsPartIdx, TComYuv* pcOrgYuv, TComYuv* pcPredYuv, Dist& ruiDist, Double& dRDCost, UInt uiPredMode );
+#else
 #if H_3D_SINGLE_DEPTH
   Void xIntraCodingSingleDepth( TComDataCU* pcCU, UInt uiAbsPartIdx, TComYuv* pcOrgYuv, TComYuv* pcPredYuv, Dist& ruiDist, Double& dRDCost, Int iTestDepthIdx, Pel * DepthNeighbor );
+#endif
 #endif
 #if H_3D_DIM
