Index: branches/HTM-14.1-update-dev1-RWTH/source/App/TAppEncoder/TAppEncCfg.cpp
===================================================================
--- branches/HTM-14.1-update-dev1-RWTH/source/App/TAppEncoder/TAppEncCfg.cpp	(revision 1221)
+++ branches/HTM-14.1-update-dev1-RWTH/source/App/TAppEncoder/TAppEncCfg.cpp	(revision 1223)
@@ -1363,5 +1363,10 @@
   ;
 
-#if NH_MV    
+  // FJ: this should be removed as soon as Inter-SDC is fully implemented
+#if !NH_3D_INTER_SDC
+  m_interSdcFlag = false;
+#endif
+
+#if NH_MV
   // parse coding structure
   for( Int k = 0; k < MAX_NUM_LAYERS; k++ )
Index: branches/HTM-14.1-update-dev1-RWTH/source/Lib/TLibCommon/TComRom.cpp
===================================================================
--- branches/HTM-14.1-update-dev1-RWTH/source/Lib/TLibCommon/TComRom.cpp	(revision 1221)
+++ branches/HTM-14.1-update-dev1-RWTH/source/Lib/TLibCommon/TComRom.cpp	(revision 1223)
@@ -543,9 +543,9 @@
 UInt64 g_nSymbolCounter = 0;
 #if H_MV_ENC_DEC_TRAC
-Bool g_traceCU = true;
+Bool g_traceCU = false; 
 Bool g_tracePU = false; 
 Bool g_traceTU = false; 
-Bool g_disableNumbering = true;
-Bool g_disableHLSTrace = true;
+Bool g_disableNumbering = false; 
+Bool g_disableHLSTrace = false; 
 UInt64 g_stopAtCounter       = 937234; 
 Bool g_traceCopyBack         = false; 
Index: branches/HTM-14.1-update-dev1-RWTH/source/Lib/TLibCommon/TComRom.h
===================================================================
--- branches/HTM-14.1-update-dev1-RWTH/source/Lib/TLibCommon/TComRom.h	(revision 1221)
+++ branches/HTM-14.1-update-dev1-RWTH/source/Lib/TLibCommon/TComRom.h	(revision 1223)
@@ -157,5 +157,5 @@
 // Change later
 #ifndef ENC_DEC_TRACE
-#define ENC_DEC_TRACE 1
+#define ENC_DEC_TRACE 0
 #endif
 #endif
@@ -176,5 +176,4 @@
 #define DTRACE_CABAC_R( x,y ) if ( ( g_nSymbolCounter >= COUNTER_START && g_nSymbolCounter <= COUNTER_END )|| g_bJustDoIt ) fprintf( g_hTrace, x,    y );
 #define DTRACE_CABAC_N        if ( ( g_nSymbolCounter >= COUNTER_START && g_nSymbolCounter <= COUNTER_END )|| g_bJustDoIt ) fprintf( g_hTrace, "\n"    );
-
 #if H_MV_ENC_DEC_TRAC
  extern Bool   g_traceCU; 
Index: branches/HTM-14.1-update-dev1-RWTH/source/Lib/TLibCommon/TypeDef.h
===================================================================
--- branches/HTM-14.1-update-dev1-RWTH/source/Lib/TLibCommon/TypeDef.h	(revision 1221)
+++ branches/HTM-14.1-update-dev1-RWTH/source/Lib/TLibCommon/TypeDef.h	(revision 1223)
@@ -65,10 +65,10 @@
 /////////////////////////////////////////////////////////////////////////////////////////
 #if NH_MV
-#define H_MV_ENC_DEC_TRAC                 1  //< CU/PU level tracking
+#define H_MV_ENC_DEC_TRAC                 0  //< CU/PU level tracking
 
 #if NH_3D
 #define NH_3D_VSO                         1
-#define NH_3D_DMM                         1   // Depth modeling modes
-#define NH_3D_DLT                         0   // Depth Lookup Table
+#define NH_3D_DMM                         0   // Depth modeling modes
+#define NH_3D_DLT                         1   // Depth Lookup Table
 #define NH_3D_INTRA_SDC                   1   // Segment-wise DC Coding method for INTRA
 #define NH_3D_ENC_DEPTH                   1   // Encoder optimizations for depth, incl.
Index: branches/HTM-14.1-update-dev1-RWTH/source/Lib/TLibDecoder/TDecCu.cpp
===================================================================
--- branches/HTM-14.1-update-dev1-RWTH/source/Lib/TLibDecoder/TDecCu.cpp	(revision 1221)
+++ branches/HTM-14.1-update-dev1-RWTH/source/Lib/TLibDecoder/TDecCu.cpp	(revision 1223)
@@ -1275,6 +1275,11 @@
       const UInt uiAbsPartIdxTU = tuRecurseWithPU.GetAbsPartIdxTU();
       
-      Pel* piPredTU        = pcPredYuv->getAddr   ( COMPONENT_Y, uiAbsPartIdxTU );
-      UInt uiStrideTU      = pcPredYuv->getStride ( COMPONENT_Y );
+      Pel* piPredTU       = pcPredYuv->getAddr  ( COMPONENT_Y, uiAbsPartIdxTU );
+      UInt uiStrideTU     = pcPredYuv->getStride( COMPONENT_Y );
+      
+      Pel* piRecIPredTU   = pcCU->getPic()->getPicYuvRec()->getAddr( COMPONENT_Y, pcCU->getCtuRsAddr(), pcCU->getZorderIdxInCtu() + uiAbsPartIdxTU );
+      UInt uiRecIPredStrideTU  = pcCU->getPic()->getPicYuvRec()->getStride(COMPONENT_Y);
+      
+      const Bool bUseFilter = TComPrediction::filteringIntraReferenceSamples(COMPONENT_Y, uiLumaPredMode, puRect.width, puRect.height, chFmt, sps.getSpsRangeExtension().getIntraSmoothingDisabledFlag());
       
       //===== init pattern for luma prediction =====
@@ -1282,12 +1287,20 @@
       Bool bLeftAvail  = false;
       
-      if (tuRecurseWithPU.ProcessComponentSection(COMPONENT_Y))
-      {
-        m_pcPrediction->initIntraPatternChType( tuRecurseWithPU, bAboveAvail, bLeftAvail, COMPONENT_Y, true DEBUG_STRING_PASS_INTO(sTemp2) );
-      }
+      m_pcPrediction->initIntraPatternChType( tuRecurseWithPU, bAboveAvail, bLeftAvail, COMPONENT_Y, bUseFilter  DEBUG_STRING_PASS_INTO(sTemp) );
       
-      const Bool bUseFilter = TComPrediction::filteringIntraReferenceSamples(COMPONENT_Y, uiLumaPredMode, puRect.width, puRect.height, chFmt, sps.getSpsRangeExtension().getIntraSmoothingDisabledFlag());
+      m_pcPrediction->predIntraAng( COMPONENT_Y, uiLumaPredMode, NULL, uiStrideTU, piPredTU, uiStrideTU, tuRecurseWithPU, bAboveAvail, bLeftAvail, bUseFilter );
       
-      m_pcPrediction->predIntraAng( COMPONENT_Y, uiLumaPredMode, NULL, uiStrideTU, piPredTU, uiStrideTU, tuRecurseWithPU, bAboveAvail, bLeftAvail, bUseFilter, TComPrediction::UseDPCMForFirstPassIntraEstimation(tuRecurseWithPU, uiLumaPredMode) );
+      // copy for prediction of next part
+      for( UInt uiY = 0; uiY < puRect.height; uiY++ )
+      {
+        for( UInt uiX = 0; uiX < puRect.width; uiX++ )
+        {
+          piPredTU      [ uiX ] = ClipBD( piPredTU[ uiX ], bitDepthY );
+          piRecIPredTU  [ uiX ] = piPredTU[ uiX ];
+        }
+        piPredTU     += uiStrideTU;
+        piRecIPredTU += uiRecIPredStrideTU;
+      }
+      
       
     } while (tuRecurseWithPU.nextSection(tuRecurseCU));
Index: branches/HTM-14.1-update-dev1-RWTH/source/Lib/TLibDecoder/TDecSbac.cpp
===================================================================
--- branches/HTM-14.1-update-dev1-RWTH/source/Lib/TLibDecoder/TDecSbac.cpp	(revision 1221)
+++ branches/HTM-14.1-update-dev1-RWTH/source/Lib/TLibDecoder/TDecSbac.cpp	(revision 1223)
@@ -2409,6 +2409,7 @@
     }
   }
-  
+#if H_MV_ENC_DEC_TRAC
   DTRACE_CU("delta_dc", rValDeltaDC);
+#endif
 }
 
@@ -2509,5 +2510,7 @@
 
   m_pcTDecBinIf->decodeBin( uiSymbol, m_cSDCFlagSCModel.get( 0, 0, 0 ) );
+#if H_MV_ENC_DEC_TRAC
   DTRACE_CU("dc_only_flag", uiSymbol)
+#endif
   if( uiSymbol )
   {
Index: branches/HTM-14.1-update-dev1-RWTH/source/Lib/TLibEncoder/TEncSbac.cpp
===================================================================
--- branches/HTM-14.1-update-dev1-RWTH/source/Lib/TLibEncoder/TEncSbac.cpp	(revision 1221)
+++ branches/HTM-14.1-update-dev1-RWTH/source/Lib/TLibEncoder/TEncSbac.cpp	(revision 1223)
@@ -2540,5 +2540,7 @@
 Void TEncSbac::xCodeDeltaDC( Pel valDeltaDC, UInt uiNumSeg )
 {
+#if ENC_DEC_TRACE && H_MV_ENC_DEC_TRAC
   DTRACE_CU("delta_dc", valDeltaDC);
+#endif
   xWriteExGolombLevelDdc( UInt( abs( valDeltaDC ) - ( uiNumSeg > 1 ? 0 : 1 ) ) );
   if( valDeltaDC != 0 )
@@ -2630,5 +2632,7 @@
 {
   UInt uiSymbol = pcCU->getSDCFlag( uiAbsPartIdx ) ? 1 : 0;
+#if ENC_DEC_TRACE && H_MV_ENC_DEC_TRAC
   DTRACE_CU("dc_only_flag", uiSymbol)
+#endif
   m_pcBinIf->encodeBin( uiSymbol, m_cSDCFlagSCModel.get( 0, 0, 0 ) );
 }
Index: branches/HTM-14.1-update-dev1-RWTH/source/Lib/TLibEncoder/TEncSearch.cpp
===================================================================
--- branches/HTM-14.1-update-dev1-RWTH/source/Lib/TLibEncoder/TEncSearch.cpp	(revision 1221)
+++ branches/HTM-14.1-update-dev1-RWTH/source/Lib/TLibEncoder/TEncSearch.cpp	(revision 1223)
@@ -1053,8 +1053,10 @@
 #if NH_3D_INTRA_SDC
           m_pcEntropyCoder->encodeSDCFlag( pcCU, 0, true );
+#if NH_3D_DMM
           if( pcCU->getSlice()->getIsDepth() && ( !pcCU->getSDCFlag( 0 ) ) && isDmmMode( pcCU->getIntraDir( CHANNEL_TYPE_LUMA, 0 ) ) )
           {
             m_pcEntropyCoder->encodeDeltaDC( pcCU, 0 );
           }
+#endif
 #endif
       }
@@ -1071,8 +1073,10 @@
           for( UInt uiPart = 0; uiPart < 4; uiPart++ )
           {
+#if NH_3D_DMM
             if( pcCU->getSlice()->getIsDepth() && ( !pcCU->getSDCFlag( uiPart * uiQNumParts ) ) && isDmmMode( pcCU->getIntraDir( CHANNEL_TYPE_LUMA, uiPart * uiQNumParts ) ) ) 
             {
               m_pcEntropyCoder->encodeDeltaDC( pcCU, uiPart * uiQNumParts );
             }
+#endif
 #endif
 #if NH_3D_INTRA_SDC
@@ -1081,8 +1085,10 @@
             m_pcEntropyCoder->encodeSDCFlag( pcCU, 0, true );
           }
-          if( pcCU->getSlice()->getIsDepth() && ( !pcCU->getSDCFlag( uiAbsPartIdx ) ) && isDmmMode( pcCU->getIntraDir( CHANNEL_TYPE_LUMA, uiAbsPartIdx ) ) ) 
+#if NH_3D_DMM
+          if( pcCU->getSlice()->getIsDepth() && ( pcCU->getSDCFlag( uiAbsPartIdx ) ) && isDmmMode( pcCU->getIntraDir( CHANNEL_TYPE_LUMA, uiAbsPartIdx ) ) )
           {
             m_pcEntropyCoder->encodeDeltaDC( pcCU, uiAbsPartIdx );
           }
+#endif
 #endif
 #if H_3D
@@ -2069,16 +2075,28 @@
       UInt uiStrideTU      = pcPredYuv->getStride ( COMPONENT_Y );
       
+      Pel* piRecIPredTU   = pcCU->getPic()->getPicYuvRec()->getAddr( COMPONENT_Y, pcCU->getCtuRsAddr(), pcCU->getZorderIdxInCtu() + uiAbsPartIdxTU );
+      UInt uiRecIPredStrideTU  = pcCU->getPic()->getPicYuvRec()->getStride(COMPONENT_Y);
+      
+      const Bool bUseFilter = TComPrediction::filteringIntraReferenceSamples(COMPONENT_Y, uiLumaPredMode, puRect.width, puRect.height, chFmt, sps.getSpsRangeExtension().getIntraSmoothingDisabledFlag());
+      
       //===== init pattern for luma prediction =====
       Bool bAboveAvail = false;
       Bool bLeftAvail  = false;
       
-      if (tuRecurseWithPU.ProcessComponentSection(COMPONENT_Y))
-      {
-        initIntraPatternChType( tuRecurseWithPU, bAboveAvail, bLeftAvail, COMPONENT_Y, true DEBUG_STRING_PASS_INTO(sTemp2) );
-      }
+      initIntraPatternChType( tuRecurseWithPU, bAboveAvail, bLeftAvail, COMPONENT_Y, bUseFilter DEBUG_STRING_PASS_INTO(sTemp2) );
       
-      const Bool bUseFilter = TComPrediction::filteringIntraReferenceSamples(COMPONENT_Y, uiLumaPredMode, puRect.width, puRect.height, chFmt, sps.getSpsRangeExtension().getIntraSmoothingDisabledFlag());
+      predIntraAng( COMPONENT_Y, uiLumaPredMode, piOrgTU, uiStrideTU, piPredTU, uiStrideTU, tuRecurseWithPU, bAboveAvail, bLeftAvail, bUseFilter );
       
-      predIntraAng( COMPONENT_Y, uiLumaPredMode, piOrgTU, uiStrideTU, piPredTU, uiStrideTU, tuRecurseWithPU, bAboveAvail, bLeftAvail, bUseFilter, TComPrediction::UseDPCMForFirstPassIntraEstimation(tuRecurseWithPU, uiLumaPredMode) );
+      // copy for prediction of next part
+      for( UInt uiY = 0; uiY < puRect.height; uiY++ )
+      {
+        for( UInt uiX = 0; uiX < puRect.width; uiX++ )
+        {
+          piPredTU      [ uiX ] = ClipBD( piPredTU[ uiX ], bitDepthY );
+          piRecIPredTU  [ uiX ] = piPredTU[ uiX ];
+        }
+        piPredTU     += uiStrideTU;
+        piRecIPredTU += uiRecIPredStrideTU;
+      }
       
     } while (tuRecurseWithPU.nextSection(tuRecurseCU));
