Index: branches/HM-10.0-dev-SHM/source/Lib/TLibCommon/TComDataCU.cpp
===================================================================
--- branches/HM-10.0-dev-SHM/source/Lib/TLibCommon/TComDataCU.cpp	(revision 54)
+++ branches/HM-10.0-dev-SHM/source/Lib/TLibCommon/TComDataCU.cpp	(revision 56)
@@ -2712,5 +2712,5 @@
   pcCULeftBottom->isDiffMER(xP-1, yP+nPSH, xP, yP) &&
 #if SVC_MVP
-  ( !pcColCU || pcColCU->isIntra( uiAbsPartAddrBase ) || !pcCULeftBottom->hasEqualMotion( uiLeftBottomPartIdx, puhInterDirNeighbours[0], &pcMvFieldNeighbours[0]))
+  ( !pcColCU || pcColCU->isIntra( uiAbsPartAddrBase ) || !pcCULeftBottom->hasEqualMotion( uiLeftBottomPartIdx, puhInterDirNeighbours[0], &pcMvFieldNeighbours[0])) &&
 #endif
   !pcCULeftBottom->isIntra( uiLeftBottomPartIdx ) ;
@@ -2756,5 +2756,5 @@
     pcCUAboveLeft->isDiffMER(xP-1, yP-1, xP, yP) &&
 #if SVC_MVP
-    ( !pcColCU || pcColCU->isIntra( uiAbsPartAddrBase ) || !pcCUAboveLeft->hasEqualMotion( uiAboveLeftPartIdx, puhInterDirNeighbours[0], &pcMvFieldNeighbours[0] ))
+    ( !pcColCU || pcColCU->isIntra( uiAbsPartAddrBase ) || !pcCUAboveLeft->hasEqualMotion( uiAboveLeftPartIdx, puhInterDirNeighbours[0], &pcMvFieldNeighbours[0] )) &&
 #endif
     !pcCUAboveLeft->isIntra( uiAboveLeftPartIdx );
Index: branches/HM-10.0-dev-SHM/source/Lib/TLibCommon/TComUpsampleFilter.cpp
===================================================================
--- branches/HM-10.0-dev-SHM/source/Lib/TLibCommon/TComUpsampleFilter.cpp	(revision 54)
+++ branches/HM-10.0-dev-SHM/source/Lib/TLibCommon/TComUpsampleFilter.cpp	(revision 56)
@@ -171,12 +171,12 @@
   Int tempBufSizeRight = 0, tempBufSizeBottom = 0;
   
-  if ( pcBasePic->getPicCropRightOffset() )
-  {
-    tempBufSizeRight = pcBasePic->getPicCropRightOffset() * pcBasePic->getHeight();
-  }
-  
-  if( pcBasePic->getPicCropBottomOffset() )
-  {
-    tempBufSizeBottom = pcBasePic->getPicCropBottomOffset() * pcBasePic->getWidth ();
+  if( confBL.getWindowRightOffset())
+  {
+    tempBufSizeRight = confBL.getWindowRightOffset() * pcBasePic->getHeight();
+  }
+  
+  if( confBL.getWindowBottomOffset() )
+  {
+    tempBufSizeBottom = confBL.getWindowBottomOffset() * pcBasePic->getWidth ();
   }
   
@@ -241,26 +241,26 @@
     for( i = 0; i < pcBasePic->getHeight(); i++ )
     {
-      memcpy(piDstY, piSrcY, sizeof(Pel) * pcBasePic->getPicCropRightOffset());
+      memcpy(piDstY, piSrcY, sizeof(Pel) * confBL.getWindowRightOffset());
       piSrcY += iBStride;
-      piDstY += pcBasePic->getPicCropRightOffset();
+      piDstY += confBL.getWindowRightOffset();
     }
     
-    if(pcBasePic->getPicCropRightOffset()>>1)
+    if(confBL.getWindowRightOffset()>>1)
     {
       Int iBStrideChroma = (iBStride>>1);
       piSrcU = piSrcBufU + (iBWidth>>1);
-      piDstU = tempBufRight + pcBasePic->getPicCropRightOffset() * pcBasePic->getHeight();
+      piDstU = tempBufRight + confBL.getWindowRightOffset() * pcBasePic->getHeight();
       piSrcV = piSrcBufV + (iBWidth>>1);
-      piDstV = piDstU + (pcBasePic->getPicCropRightOffset()>>1) * (pcBasePic->getHeight()>>1);
+      piDstV = piDstU + (confBL.getWindowRightOffset()>>1) * (pcBasePic->getHeight()>>1);
     
       for( i = 0; i < pcBasePic->getHeight()>>1; i++ )
       {
-        memcpy(piDstU, piSrcU, sizeof(Pel) * (pcBasePic->getPicCropRightOffset()>>1));
+        memcpy(piDstU, piSrcU, sizeof(Pel) * (confBL.getWindowRightOffset()>>1));
         piSrcU += iBStrideChroma;
-        piDstU += (pcBasePic->getPicCropRightOffset()>>1);
+        piDstU += (confBL.getWindowRightOffset()>>1);
         
-        memcpy(piDstV, piSrcV, sizeof(Pel) * (pcBasePic->getPicCropRightOffset()>>1));
+        memcpy(piDstV, piSrcV, sizeof(Pel) * (confBL.getWindowRightOffset()>>1));
         piSrcV += iBStrideChroma;
-        piDstV += (pcBasePic->getPicCropRightOffset()>>1);
+        piDstV += (confBL.getWindowRightOffset()>>1);
       }
     }
@@ -273,5 +273,5 @@
     piSrcY = piSrcBufY + iBHeight * iBStride;
     piDstY = tempBufBottom;
-    for( i = 0; i < pcBasePic->getPicCropBottomOffset(); i++ )
+    for( i = 0; i < confBL.getWindowBottomOffset(); i++ )
     {
       memcpy(piDstY, piSrcY, sizeof(Pel) * pcBasePic->getWidth());
@@ -280,13 +280,13 @@
     }
     
-    if(pcBasePic->getPicCropBottomOffset()>>1)
+    if(confBL.getWindowBottomOffset()>>1)
     {
       Int iBStrideChroma = (iBStride>>1);
       piSrcU = piSrcBufU + (iBHeight>>1) * iBStrideChroma;
-      piDstU = tempBufBottom + pcBasePic->getPicCropBottomOffset() * pcBasePic->getWidth();
+      piDstU = tempBufBottom + confBL.getWindowBottomOffset() * pcBasePic->getWidth();
       piSrcV = piSrcBufV + (iBHeight>>1) * iBStrideChroma;
-      piDstV = piDstU + (pcBasePic->getPicCropBottomOffset()>>1) * (pcBasePic->getWidth()>>1);
+      piDstV = piDstU + (confBL.getWindowBottomOffset()>>1) * (pcBasePic->getWidth()>>1);
       
-      for( i = 0; i < pcBasePic->getPicCropBottomOffset()>>1; i++ )
+      for( i = 0; i < confBL.getWindowBottomOffset()>>1; i++ )
       {
         memcpy(piDstU, piSrcU, sizeof(Pel) * (pcBasePic->getWidth()>>1));
@@ -514,13 +514,13 @@
   {
     // put the correct width back
-    pcBasePic->setWidth(pcBasePic->getWidth()+pcBasePic->getPicCropRightOffset());
+    pcBasePic->setWidth(pcBasePic->getWidth() + confBL.getWindowRightOffset());
   }
   if( tempBufSizeBottom )
   {
-    pcBasePic->setHeight(pcBasePic->getHeight()+pcBasePic->getPicCropBottomOffset());
-  }
-  
-  iBWidth   = pcBasePic->getWidth () - pcBasePic->getPicCropLeftOffset() - pcBasePic->getPicCropRightOffset();
-  iBHeight  = pcBasePic->getHeight() - pcBasePic->getPicCropTopOffset() - pcBasePic->getPicCropBottomOffset();
+    pcBasePic->setHeight(pcBasePic->getHeight() + confBL.getWindowBottomOffset());
+  }
+  
+  iBWidth   = pcBasePic->getWidth () - confBL.getWindowLeftOffset() - confBL.getWindowRightOffset();
+  iBHeight  = pcBasePic->getHeight() - confBL.getWindowTopOffset() - confBL.getWindowBottomOffset();
   
   iBStride  = pcBasePic->getStride();
@@ -533,25 +533,25 @@
     for( i = 0; i < pcBasePic->getHeight(); i++ )
     {
-      memcpy(piDstY, piSrcY, sizeof(Pel) * pcBasePic->getPicCropRightOffset());
-      piSrcY += pcBasePic->getPicCropRightOffset();
+      memcpy(piDstY, piSrcY, sizeof(Pel) * confBL.getWindowRightOffset() );
+      piSrcY += confBL.getWindowRightOffset();
       piDstY += iBStride;
     }
     
-    if(pcBasePic->getPicCropRightOffset()>>1)
+    if(confBL.getWindowRightOffset()>>1)
     {
       Int iBStrideChroma = (iBStride>>1);
-      piSrcU = tempBufRight + pcBasePic->getPicCropRightOffset() * pcBasePic->getHeight();
+      piSrcU = tempBufRight + confBL.getWindowRightOffset() * pcBasePic->getHeight();
       piDstU = piSrcBufU + (iBWidth>>1);
-      piSrcV = piSrcU + (pcBasePic->getPicCropRightOffset()>>1) * (pcBasePic->getHeight()>>1);
+      piSrcV = piSrcU + (confBL.getWindowRightOffset()>>1) * (pcBasePic->getHeight()>>1);
       piDstV = piSrcBufV + (iBWidth>>1);
 
       for( i = 0; i < pcBasePic->getHeight()>>1; i++ )
       {
-        memcpy(piDstU, piSrcU, sizeof(Pel) * (pcBasePic->getPicCropRightOffset()>>1));
-        piSrcU += (pcBasePic->getPicCropRightOffset()>>1);
+        memcpy(piDstU, piSrcU, sizeof(Pel) * (confBL.getWindowRightOffset()>>1));
+        piSrcU += (confBL.getWindowRightOffset()>>1);
         piDstU += iBStrideChroma;
         
-        memcpy(piDstV, piSrcV, sizeof(Pel) * (pcBasePic->getPicCropRightOffset()>>1));
-        piSrcV += (pcBasePic->getPicCropRightOffset()>>1);
+        memcpy(piDstV, piSrcV, sizeof(Pel) * (confBL.getWindowRightOffset()>>1));
+        piSrcV += (confBL.getWindowRightOffset()>>1);
         piDstV += iBStrideChroma;
       }
@@ -563,5 +563,5 @@
     piDstY = piSrcBufY + iBHeight * iBStride;
     piSrcY = tempBufBottom;
-    for( i = 0; i < pcBasePic->getPicCropBottomOffset(); i++ )
+    for( i = 0; i < confBL.getWindowBottomOffset(); i++ )
     {
       memcpy(piDstY, piSrcY, sizeof(Pel) * pcBasePic->getWidth());
@@ -570,13 +570,13 @@
     }
     
-    if(pcBasePic->getPicCropBottomOffset()>>1)
+    if(confBL.getWindowBottomOffset()>>1)
     {
       Int iBStrideChroma = (iBStride>>1);
-      piSrcU = tempBufBottom + pcBasePic->getPicCropBottomOffset() * pcBasePic->getWidth();
+      piSrcU = tempBufBottom + confBL.getWindowBottomOffset() * pcBasePic->getWidth();
       piDstU = piSrcBufU + (iBHeight>>1) * iBStrideChroma;
-      piSrcV = piSrcU + (pcBasePic->getPicCropBottomOffset()>>1) * (pcBasePic->getWidth()>>1);
+      piSrcV = piSrcU + (confBL.getWindowBottomOffset()>>1) * (pcBasePic->getWidth()>>1);
       piDstV = piSrcBufV + (iBHeight>>1) * iBStrideChroma;
             
-      for( i = 0; i < pcBasePic->getPicCropBottomOffset()>>1; i++ )
+      for( i = 0; i < confBL.getWindowBottomOffset()>>1; i++ )
       {
         memcpy(piDstU, piSrcU, sizeof(Pel) * (pcBasePic->getWidth()>>1));
Index: branches/HM-10.0-dev-SHM/source/Lib/TLibCommon/TypeDef.h
===================================================================
--- branches/HM-10.0-dev-SHM/source/Lib/TLibCommon/TypeDef.h	(revision 54)
+++ branches/HM-10.0-dev-SHM/source/Lib/TLibCommon/TypeDef.h	(revision 56)
@@ -79,5 +79,5 @@
 
 #else
-#define INTRA_BL                         0      ///< inter-layer texture prediction
+#define INTRA_BL                         1      ///< inter-layer texture prediction
 
 #if INTRA_BL
@@ -439,4 +439,7 @@
   MODE_INTER,           ///< inter-prediction mode
   MODE_INTRA,           ///< intra-prediction mode
+#if INTRA_BL
+  MODE_INTRA_BL,        ///< inter-layer intra-prediction mode
+#endif
   MODE_NONE = 15
 };
