Index: branches/SHM-dev/source/Lib/TLibCommon/TComDataCU.cpp
===================================================================
--- branches/SHM-dev/source/Lib/TLibCommon/TComDataCU.cpp	(revision 1598)
+++ branches/SHM-dev/source/Lib/TLibCommon/TComDataCU.cpp	(revision 1600)
@@ -2329,4 +2329,8 @@
   if ( getSlice()->getEnableTMVPFlag() )
   {
+#if SVC_EXTENSION
+    TComPic* colPic = m_pcSlice->getRefPic( RefPicList( getSlice()->isInterB() ? 1 - getSlice()->getColFromL0Flag() : 0 ), getSlice()->getColRefIdx() );
+    Bool replaceWithILRP = colPic->isILR( m_pcPic->getLayerId() ) && ( m_pcPic->getMinCUWidth() > 16 || m_pcPic->getMinCUHeight() > 16 );
+#endif
     //>> MTK colocated-RightBottom
     UInt uiPartIdxRB;
@@ -2348,4 +2352,12 @@
         ( uiAbsPartIdxTmp / numPartInCtuWidth < numPartInCtuHeight - 1 ) )              // is not at the last row    of CTU
       {
+#if SVC_EXTENSION
+        if( replaceWithILRP )
+        {
+          UInt brILRPIdx = xDeriveRightBottomIdxForILRP( uiPUIdx, colPic );
+          uiAbsPartAddr = colPic->getRasterToZscanILRP()[brILRPIdx + colPic->getNumPartInCtuWidth() + 1];
+        }
+        else
+#endif
         uiAbsPartAddr = g_auiRasterToZscan[ uiAbsPartIdxTmp + numPartInCtuWidth + 1 ];
         ctuRsAddr = getCtuRsAddr();
@@ -2357,4 +2369,12 @@
       else if ( uiAbsPartIdxTmp / numPartInCtuWidth < numPartInCtuHeight - 1 )          // is not at the last row of CTU But is last column of CTU
       {
+#if SVC_EXTENSION
+        if( replaceWithILRP )
+        {
+          UInt brILRPIdx = xDeriveRightBottomIdxForILRP( uiPUIdx, colPic );
+          uiAbsPartAddr = colPic->getRasterToZscanILRP()[brILRPIdx + 1];
+        }
+        else
+#endif
         uiAbsPartAddr = g_auiRasterToZscan[ uiAbsPartIdxTmp + 1 ];
         ctuRsAddr = getCtuRsAddr() + 1;
@@ -2372,4 +2392,11 @@
     Int dir = 0;
     UInt uiArrayAddr = iCount;
+#if SVC_EXTENSION
+    if( replaceWithILRP )
+    {
+      uiPartIdxCenter = xDeriveCenterIdxForILRP( uiPUIdx, colPic );
+    }
+    else
+#endif
     xDeriveCenterIdx( uiPUIdx, uiPartIdxCenter );
     bExistMV = ctuRsAddr >= 0 && xGetColMVP( REF_PIC_LIST_0, ctuRsAddr, uiAbsPartAddr, cColMv, iRefIdx );
@@ -2667,4 +2694,9 @@
     UInt absPartIdx;
 
+#if SVC_EXTENSION
+    TComPic* colPic = m_pcSlice->getRefPic( RefPicList( getSlice()->isInterB() ? 1 - getSlice()->getColFromL0Flag() : 0 ), getSlice()->getColRefIdx());
+    Bool replaceWithILRP = colPic->isILR( m_pcPic->getLayerId() ) && ( m_pcPic->getMinCUWidth() > 16 || m_pcPic->getMinCUHeight() > 16 );
+#endif
+
     deriveRightBottomIdx( partIdx, partIdxRB );
     UInt absPartAddr = m_absZIdxInCtu + partAddr;
@@ -2679,4 +2711,12 @@
            ( absPartIdx / numPartInCtuWidth < numPartInCtuHeight - 1 ) )  // is not at the last row    of CTU
       {
+#if SVC_EXTENSION
+        if( replaceWithILRP )
+        {
+          UInt brILRPIdx = xDeriveRightBottomIdxForILRP( partIdx, colPic );
+          absPartAddr = colPic->getRasterToZscanILRP()[brILRPIdx + colPic->getNumPartInCtuWidth() + 1];
+        }
+        else
+#endif
         absPartAddr = g_auiRasterToZscan[ absPartIdx + numPartInCtuWidth + 1 ];
         ctuRsAddr = getCtuRsAddr();
@@ -2688,4 +2728,12 @@
       else if ( absPartIdx / numPartInCtuWidth < numPartInCtuHeight - 1 ) // is not at the last row of CTU But is last column of CTU
       {
+#if SVC_EXTENSION
+        if( replaceWithILRP )
+        {
+          UInt brILRPIdx = xDeriveRightBottomIdxForILRP( partIdx, colPic );
+          absPartAddr = colPic->getRasterToZscanILRP()[brILRPIdx + 1];
+        }
+        else
+#endif
         absPartAddr = g_auiRasterToZscan[ absPartIdx + 1 ];
         ctuRsAddr = getCtuRsAddr() + 1;
@@ -2703,4 +2751,11 @@
     {
       UInt uiPartIdxCenter;
+#if SVC_EXTENSION
+      if( replaceWithILRP )
+      {
+        uiPartIdxCenter = xDeriveCenterIdxForILRP( partIdx, colPic );
+      }
+      else
+#endif
       xDeriveCenterIdx( partIdx, uiPartIdxCenter );
       if (xGetColMVP( eRefPicList, getCtuRsAddr(), uiPartIdxCenter,  cColMv, refIdx_Col ))
@@ -3407,4 +3462,124 @@
 #endif
 
+// Inter-layer reference picture has a motion field for each 16x16 block, however if the current picture has a min CU size greater than 16x16 then the motion field has to be calculated based on 16x16 accuracy
+UInt TComDataCU::xDeriveRightBottomIdxForILRP( UInt partIdx, TComPic* refILP ) const
+{
+  // convert m_absZIdxInCtu to the ILRP z-index
+  UInt pelX = m_uiCUPelX + g_auiRasterToPelX[g_auiZscanToRaster[m_absZIdxInCtu]];
+  UInt pelY = m_uiCUPelY + g_auiRasterToPelY[g_auiZscanToRaster[m_absZIdxInCtu]];
+
+  UInt maxCUHeight = refILP->getSlice( 0 )->getSPS()->getMaxCUHeight();
+  UInt maxCUWidth = refILP->getSlice( 0 )->getSPS()->getMaxCUWidth();
+  UInt minUnitSize = refILP->getMinCUWidth();
+
+  UInt absZIdxInCtu = ( pelY - ( pelY / maxCUHeight )*maxCUHeight ) / minUnitSize * refILP->getNumPartInCtuWidth() + ( pelX - ( pelX / maxCUWidth )*maxCUWidth ) / minUnitSize;
+  absZIdxInCtu = refILP->getRasterToZscanILRP()[absZIdxInCtu];
+
+  UInt partIdxBR = refILP->getRasterToZscanILRP()[refILP->getZscanToRasterILRP()[absZIdxInCtu] + ( ( ( m_puhHeight[0] / refILP->getMinCUHeight() ) >> 1 ) - 1 )*refILP->getNumPartInCtuWidth() + m_puhWidth[0] / refILP->getMinCUWidth() - 1];
+
+  Int numPartitionsInCtu = refILP->getNumPartitionsInCtu();
+
+  switch( m_pePartSize[0] )
+  {
+  case SIZE_2Nx2N:
+    partIdxBR += numPartitionsInCtu >> 1;
+    break;
+  case SIZE_2NxN:
+    partIdxBR += ( partIdx == 0 ) ? 0 : numPartitionsInCtu >> 1;
+    break;
+  case SIZE_Nx2N:
+    partIdxBR += ( partIdx == 0 ) ? numPartitionsInCtu >> 2 : ( numPartitionsInCtu >> 1 );
+    break;
+  case SIZE_NxN:
+    partIdxBR += ( numPartitionsInCtu >> 2 ) * ( partIdx - 1 );
+    break;
+  case SIZE_2NxnU:
+    partIdxBR += ( partIdx == 0 ) ? -( Int(numPartitionsInCtu) >> 3 ) : numPartitionsInCtu >> 1;
+    break;
+  case SIZE_2NxnD:
+    partIdxBR += ( partIdx == 0 ) ? ( numPartitionsInCtu >> 2 ) + ( numPartitionsInCtu >> 3 ) : numPartitionsInCtu >> 1;
+    break;
+  case SIZE_nLx2N:
+    partIdxBR += ( partIdx == 0 ) ? ( numPartitionsInCtu >> 3 ) + ( numPartitionsInCtu >> 4 ) : numPartitionsInCtu >> 1;
+    break;
+  case SIZE_nRx2N:
+    partIdxBR += ( partIdx == 0 ) ? ( numPartitionsInCtu >> 2 ) + ( numPartitionsInCtu >> 3 ) + ( numPartitionsInCtu >> 4 ) : numPartitionsInCtu >> 1;
+    break;
+  default:
+    assert( 0 );
+    break;
+  }
+
+  partIdxBR = refILP->getZscanToRasterILRP()[absZIdxInCtu + partIdxBR];
+
+  return partIdxBR;
+}
+
+// Inter-layer reference picture has a motion field for each 16x16 block, however if the current picture has a min CU size greater than 16x16 then the motion field has to be calculated based on 16x16 accuracy
+UInt TComDataCU::xDeriveCenterIdxForILRP( UInt partIdx, TComPic* refILP ) const
+{
+  UInt partAddr;
+  Int  partWidth;
+  Int  partHeight;
+
+  UInt numPartitionsInCtu = refILP->getNumPartitionsInCtu();
+
+  switch( m_pePartSize[0] )
+  {
+  case SIZE_2NxN:
+    partWidth = m_puhWidth[0];      partHeight = m_puhHeight[0] >> 1; partAddr = ( partIdx == 0 ) ? 0 : numPartitionsInCtu >> 1;
+    break;
+  case SIZE_Nx2N:
+    partWidth = m_puhWidth[0] >> 1; partHeight = m_puhHeight[0];      partAddr = ( partIdx == 0 ) ? 0 : numPartitionsInCtu >> 2;
+    break;
+  case SIZE_NxN:
+    partWidth = m_puhWidth[0] >> 1; partHeight = m_puhHeight[0] >> 1; partAddr = ( numPartitionsInCtu >> 2 ) * partIdx;
+    break;
+  case SIZE_2NxnU:
+    partWidth = m_puhWidth[0];
+    partHeight = ( partIdx == 0 ) ? m_puhHeight[0] >> 2 : ( m_puhHeight[0] >> 2 ) + ( m_puhHeight[0] >> 1 );
+    partAddr = ( partIdx == 0 ) ? 0 : numPartitionsInCtu >> 3;
+    break;
+  case SIZE_2NxnD:
+    partWidth = m_puhWidth[0];
+    partHeight = ( partIdx == 0 ) ? ( m_puhHeight[0] >> 2 ) + ( m_puhHeight[0] >> 1 ) : m_puhHeight[0] >> 2;
+    partAddr = ( partIdx == 0 ) ? 0 : ( numPartitionsInCtu >> 1 ) + ( numPartitionsInCtu >> 3 );
+    break;
+  case SIZE_nLx2N:
+    partWidth = ( partIdx == 0 ) ? m_puhWidth[0] >> 2 : ( m_puhWidth[0] >> 2 ) + ( m_puhWidth[0] >> 1 );
+    partHeight = m_puhHeight[0];
+    partAddr = ( partIdx == 0 ) ? 0 : numPartitionsInCtu >> 4;
+    break;
+  case SIZE_nRx2N:
+    partWidth = ( partIdx == 0 ) ? ( m_puhWidth[0] >> 2 ) + ( m_puhWidth[0] >> 1 ) : m_puhWidth[0] >> 2;
+    partHeight = m_puhHeight[0];
+    partAddr = ( partIdx == 0 ) ? 0 : ( numPartitionsInCtu >> 2 ) + ( numPartitionsInCtu >> 4 );
+    break;
+  default:
+    assert( m_pePartSize[0] == SIZE_2Nx2N );
+    partWidth = m_puhWidth[0];      partHeight = m_puhHeight[0];      partAddr = 0;
+    break;
+  }
+
+  // convert m_absZIdxInCtu to the ILRP z-index
+  UInt pelX = m_uiCUPelX + g_auiRasterToPelX[g_auiZscanToRaster[m_absZIdxInCtu]];
+  UInt pelY = m_uiCUPelY + g_auiRasterToPelY[g_auiZscanToRaster[m_absZIdxInCtu]];
+
+  UInt maxCUHeight = refILP->getSlice( 0 )->getSPS()->getMaxCUHeight();
+  UInt maxCUWidth  = refILP->getSlice( 0 )->getSPS()->getMaxCUWidth();
+  UInt minUnitSize = refILP->getMinCUWidth();
+
+  UInt absZIdxInCtu = ( pelY - ( pelY / maxCUHeight )*maxCUHeight ) / minUnitSize * refILP->getNumPartInCtuWidth() + ( pelX - ( pelX / maxCUWidth )*maxCUWidth ) / minUnitSize;
+  absZIdxInCtu = refILP->getRasterToZscanILRP()[absZIdxInCtu];
+
+  UInt partIdxCenter = absZIdxInCtu + partAddr; // partition origin.
+
+  partIdxCenter = refILP->getRasterToZscanILRP()[refILP->getZscanToRasterILRP()[partIdxCenter]
+    + ( partHeight / refILP->getMinCUHeight() ) / 2 * refILP->getNumPartInCtuWidth()
+    + ( partWidth / refILP->getMinCUWidth() ) / 2];
+
+  return partIdxCenter;
+}
+
 #endif //SVC_EXTENSION
 //! \}
Index: branches/SHM-dev/source/Lib/TLibCommon/TComDataCU.h
===================================================================
--- branches/SHM-dev/source/Lib/TLibCommon/TComDataCU.h	(revision 1598)
+++ branches/SHM-dev/source/Lib/TLibCommon/TComDataCU.h	(revision 1600)
@@ -171,4 +171,9 @@
   Void          xDeriveCenterIdx              ( UInt uiPartIdx, UInt& ruiPartIdxCenter ) const;
 
+#if SVC_EXTENSION
+  UInt          xDeriveRightBottomIdxForILRP  ( UInt partIdx, TComPic* refILP ) const;
+  UInt          xDeriveCenterIdxForILRP       ( UInt partIdx, TComPic* refILP ) const;
+#endif
+
 public:
                 TComDataCU();
Index: branches/SHM-dev/source/Lib/TLibCommon/TComPic.cpp
===================================================================
--- branches/SHM-dev/source/Lib/TLibCommon/TComPic.cpp	(revision 1598)
+++ branches/SHM-dev/source/Lib/TLibCommon/TComPic.cpp	(revision 1600)
@@ -79,7 +79,7 @@
 #if SVC_EXTENSION
 #if REDUCED_ENCODER_MEMORY
-Void TComPic::create( const TComSPS &sps, const TComPPS &pps, const Bool bCreateEncoderSourcePicYuv, const Bool bCreateForImmediateReconstruction, const UInt layerId )
-#else
-Void TComPic::create( const TComSPS &sps, const TComPPS &pps, const Bool bIsVirtual, const UInt layerId )
+Void TComPic::create( const TComSPS &sps, const TComPPS &pps, const Bool bCreateEncoderSourcePicYuv, const Bool bCreateForImmediateReconstruction, const UInt layerId, const Bool isILRP )
+#else
+Void TComPic::create( const TComSPS &sps, const TComPPS &pps, const Bool bIsVirtual, const UInt layerId, const Bool isILRP )
 #endif
 {
@@ -91,5 +91,28 @@
   const UInt         uiMaxCuWidth    = sps.getMaxCUWidth();
   const UInt         uiMaxCuHeight   = sps.getMaxCUHeight();
+#if SVC_EXTENSION
+  UInt maxDepth = 0;
+  if( isILRP )
+  {
+    while( ( uiMaxCuWidth >> maxDepth ) > 16 )
+    {
+      maxDepth++;
+    }
+  }
+
+  const UInt         uiMaxDepth      = ( ( uiMaxCuWidth >> sps.getMaxTotalCUDepth() ) > 16 && isILRP ) ? maxDepth : sps.getMaxTotalCUDepth();
+
+  if( isILRP )
+  {
+    m_maxILRPdepth = uiMaxDepth;
+
+    UInt* piTmp = &m_auiZscanToRaster[0];
+    initZscanToRaster( m_maxILRPdepth + 1, 1, 0, piTmp );
+    initRasterToZscan( uiMaxCuWidth, uiMaxCuHeight, m_maxILRPdepth + 1, m_auiZscanToRaster, m_auiRasterToZscan );
+    initRasterToPelXY( uiMaxCuWidth, uiMaxCuHeight, m_maxILRPdepth + 1, m_auiRasterToPelX, m_auiRasterToPelY );
+  }
+#else
   const UInt         uiMaxDepth      = sps.getMaxTotalCUDepth();
+#endif
   const Window& conformanceWindow    = sps.getConformanceWindow();
 
@@ -485,5 +508,5 @@
 {
   const TComSPS *sps       = getSlice(0)->getSPS();
-  const UInt uiMaxDepth    = sps->getMaxTotalCUDepth();
+  const UInt uiMaxDepth    = m_maxILRPdepth;
   const UInt numPartitions = 1<<(uiMaxDepth<<1);
   const UInt widthMinPU    = sps->getMaxCUWidth()  / (1<<uiMaxDepth);
@@ -502,6 +525,6 @@
     {
       //pixel position of each unit in up-sampled layer
-      UInt pelX = pcCUDes->getCUPelX() + g_auiRasterToPelX[ g_auiZscanToRaster[absPartIdx] ];
-      UInt pelY = pcCUDes->getCUPelY() + g_auiRasterToPelY[ g_auiZscanToRaster[absPartIdx] ];
+      UInt pelX = pcCUDes->getCUPelX() + m_auiRasterToPelX[ m_auiZscanToRaster[absPartIdx] ];
+      UInt pelY = pcCUDes->getCUPelY() + m_auiRasterToPelY[ m_auiZscanToRaster[absPartIdx] ];
       UInt baseCUAddr, baseAbsPartIdx;
 
@@ -558,6 +581,5 @@
 Void TComPic::initUpsampledMvField()
 {
-  const TComSPS *sps         = getSlice(0)->getSPS();
-  const UInt uiMaxDepth      = sps->getMaxTotalCUDepth();
+  const UInt uiMaxDepth      = m_maxILRPdepth;
   const UInt numPartitions = 1<<(uiMaxDepth<<1);
 
Index: branches/SHM-dev/source/Lib/TLibCommon/TComPic.h
===================================================================
--- branches/SHM-dev/source/Lib/TLibCommon/TComPic.h	(revision 1598)
+++ branches/SHM-dev/source/Lib/TLibCommon/TComPic.h	(revision 1600)
@@ -87,4 +87,9 @@
 #if SVC_EXTENSION
   UInt                  m_layerId;                         //  Layer ID
+  UInt                  m_maxILRPdepth;                    // max depth for ILRP
+  UInt                  m_auiZscanToRaster[MAX_NUM_PART_IDXS_IN_CTU_WIDTH*MAX_NUM_PART_IDXS_IN_CTU_WIDTH]; // for ILRP
+  UInt                  m_auiRasterToZscan[MAX_NUM_PART_IDXS_IN_CTU_WIDTH*MAX_NUM_PART_IDXS_IN_CTU_WIDTH]; // for ILRP
+  UInt                  m_auiRasterToPelX[MAX_NUM_PART_IDXS_IN_CTU_WIDTH*MAX_NUM_PART_IDXS_IN_CTU_WIDTH]; // for ILRP
+  UInt                  m_auiRasterToPelY[MAX_NUM_PART_IDXS_IN_CTU_WIDTH*MAX_NUM_PART_IDXS_IN_CTU_WIDTH]; // for ILRP
   Bool                  m_requireResampling[MAX_LAYERS];   // whether current layer requires resampling
   TComPicYuv*           m_pcFullPelBaseRec[MAX_LAYERS];    // upsampled base layer recontruction for difference domain inter prediction
@@ -103,5 +108,5 @@
 #if REDUCED_ENCODER_MEMORY
 #if SVC_EXTENSION
-  Void          create( const TComSPS &sps, const TComPPS &pps, const Bool bCreateEncoderSourcePicYuv, const Bool bCreateForImmediateReconstruction, const UInt layerId );
+  Void          create( const TComSPS &sps, const TComPPS &pps, const Bool bCreateEncoderSourcePicYuv, const Bool bCreateForImmediateReconstruction, const UInt layerId, const Bool isILRP = false );
 #else
   Void          create( const TComSPS &sps, const TComPPS &pps, const Bool bCreateEncoderSourcePicYuv, const Bool bCreateForImmediateReconstruction );
@@ -114,5 +119,5 @@
 #else
 #if SVC_EXTENSION
-  Void          create( const TComSPS &sps, const TComPPS &pps, const Bool bIsVirtual /*= false*/, const UInt layerId );
+  Void          create( const TComSPS &sps, const TComPPS &pps, const Bool bIsVirtual /*= false*/, const UInt layerId, const Bool isILRP = false );
 #else
   Void          create( const TComSPS &sps, const TComPPS &pps, const Bool bIsVirtual /*= false*/ );
@@ -231,4 +236,7 @@
   Bool          isCurrAu() const                                            { return m_currAuFlag; }
   Void          setCurrAuFlag(Bool x)                                       { m_currAuFlag = x;    }
+
+  UInt*         getZscanToRasterILRP()                                      { return m_auiZscanToRaster; }
+  UInt*         getRasterToZscanILRP()                                      { return m_auiRasterToZscan; }
 #endif //SVC_EXTENSION
 };// END CLASS DEFINITION TComPic
Index: branches/SHM-dev/source/Lib/TLibCommon/TComRom.cpp
===================================================================
--- branches/SHM-dev/source/Lib/TLibCommon/TComRom.cpp	(revision 1598)
+++ branches/SHM-dev/source/Lib/TLibCommon/TComRom.cpp	(revision 1600)
@@ -378,4 +378,5 @@
   }
 
+  uiTempY[0] = 0;
   for ( i = 1; i < uiNumPartInWidth*uiNumPartInHeight; i++ )
   {
@@ -732,3 +733,50 @@
 #endif
 
+#if SVC_EXTENSION
+Void initRasterToZscan( UInt uiMaxCUWidth, UInt uiMaxCUHeight, UInt uiMaxDepth, UInt* inZscanToRaster, UInt* outRasterToZscan )
+{
+  UInt  uiMinCUWidth = uiMaxCUWidth >> ( uiMaxDepth - 1 );
+  UInt  uiMinCUHeight = uiMaxCUHeight >> ( uiMaxDepth - 1 );
+
+  UInt  uiNumPartInWidth = (UInt)uiMaxCUWidth / uiMinCUWidth;
+  UInt  uiNumPartInHeight = (UInt)uiMaxCUHeight / uiMinCUHeight;
+
+  for( UInt i = 0; i < uiNumPartInWidth*uiNumPartInHeight; i++ )
+  {
+    outRasterToZscan[inZscanToRaster[i]] = i;
+  }
+}
+
+Void initRasterToPelXY( UInt uiMaxCUWidth, UInt uiMaxCUHeight, UInt uiMaxDepth, UInt* outRasterToPelX, UInt* outRasterToPelY )
+{
+  UInt    i;
+
+  UInt* uiTempX = outRasterToPelX;
+  UInt* uiTempY = outRasterToPelY;
+
+  UInt  uiMinCUWidth = uiMaxCUWidth >> ( uiMaxDepth - 1 );
+  UInt  uiMinCUHeight = uiMaxCUHeight >> ( uiMaxDepth - 1 );
+
+  UInt  uiNumPartInWidth = uiMaxCUWidth / uiMinCUWidth;
+  UInt  uiNumPartInHeight = uiMaxCUHeight / uiMinCUHeight;
+
+  uiTempX[0] = 0; uiTempX++;
+  for( i = 1; i < uiNumPartInWidth; i++ )
+  {
+    uiTempX[0] = uiTempX[-1] + uiMinCUWidth; uiTempX++;
+  }
+  for( i = 1; i < uiNumPartInHeight; i++ )
+  {
+    memcpy( uiTempX, uiTempX - uiNumPartInWidth, sizeof( *uiTempX )*uiNumPartInWidth );
+    uiTempX += uiNumPartInWidth;
+  }
+  
+  uiTempY[0] = 0;
+  for( i = 1; i < uiNumPartInWidth*uiNumPartInHeight; i++ )
+  {
+    uiTempY[i] = ( i / uiNumPartInWidth ) * uiMinCUWidth;
+  }
+}
+#endif
+
 //! \}
Index: branches/SHM-dev/source/Lib/TLibCommon/TComRom.h
===================================================================
--- branches/SHM-dev/source/Lib/TLibCommon/TComRom.h	(revision 1598)
+++ branches/SHM-dev/source/Lib/TLibCommon/TComRom.h	(revision 1600)
@@ -178,4 +178,9 @@
 #endif
 
+#if SVC_EXTENSION
+Void         initRasterToZscan( UInt uiMaxCUWidth, UInt uiMaxCUHeight, UInt uiMaxDepth, UInt* inZscanToRaster, UInt* outRasterToZscan );
+Void         initRasterToPelXY( UInt uiMaxCUWidth, UInt uiMaxCUHeight, UInt uiMaxDepth, UInt* outRasterToPelX, UInt* outRasterToPelY );
+#endif
+
 //! \}
 
Index: branches/SHM-dev/source/Lib/TLibCommon/TypeDef.h
===================================================================
--- branches/SHM-dev/source/Lib/TLibCommon/TypeDef.h	(revision 1598)
+++ branches/SHM-dev/source/Lib/TLibCommon/TypeDef.h	(revision 1600)
@@ -99,5 +99,5 @@
 #define ENCODER_FAST_MODE                1      ///< JCTVC-L0174: enable encoder fast mode. TestMethod 1 is enabled by setting to 1 and TestMethod 2 is enable by setting to 2. By default it is set to 1.
 #define HIGHER_LAYER_IRAP_SKIP_FLAG      1      ///< JCTVC-O0199: Indication that higher layer IRAP picture uses skip blocks only
-#define LAYER_CTB                        0      ///< enable layer-specific CTB structure
+#define LAYER_CTB                        1      ///< enable layer-specific CTB structure
 
 /// SEI messages -------------------------
Index: branches/SHM-dev/source/Lib/TLibDecoder/TDecTop.cpp
===================================================================
--- branches/SHM-dev/source/Lib/TLibDecoder/TDecTop.cpp	(revision 1598)
+++ branches/SHM-dev/source/Lib/TLibDecoder/TDecTop.cpp	(revision 1600)
@@ -2298,7 +2298,7 @@
 
 #if REDUCED_ENCODER_MEMORY
-        m_cIlpPic[j]->create(*sps, *pps, false, true, m_layerId);
-#else
-        m_cIlpPic[j]->create(*sps, *pps, true, m_layerId);
+        m_cIlpPic[j]->create(*sps, *pps, false, true, m_layerId, true);
+#else
+        m_cIlpPic[j]->create(*sps, *pps, true, m_layerId, true);
 #endif
 
Index: branches/SHM-dev/source/Lib/TLibEncoder/TEncTop.cpp
===================================================================
--- branches/SHM-dev/source/Lib/TLibEncoder/TEncTop.cpp	(revision 1598)
+++ branches/SHM-dev/source/Lib/TLibEncoder/TEncTop.cpp	(revision 1600)
@@ -1758,7 +1758,7 @@
         m_cIlpPic[j] = new TComPic;
 #if REDUCED_ENCODER_MEMORY
-        m_cIlpPic[j]->create(m_cSPS, m_cPPS, false, true, m_layerId);
+        m_cIlpPic[j]->create(m_cSPS, m_cPPS, false, true, m_layerId, true);
 #else
-        m_cIlpPic[j]->create(m_cSPS, m_cPPS, true, m_layerId);
+        m_cIlpPic[j]->create(m_cSPS, m_cPPS, true, m_layerId, true);
 #endif
         for (Int i=0; i<m_cIlpPic[j]->getPicSym()->getNumberOfCtusInFrame(); i++)
