Index: /branches/HTM-10.2-dev2-RWTH/source/Lib/TLibCommon/TComDataCU.cpp
===================================================================
--- /branches/HTM-10.2-dev2-RWTH/source/Lib/TLibCommon/TComDataCU.cpp	(revision 894)
+++ /branches/HTM-10.2-dev2-RWTH/source/Lib/TLibCommon/TComDataCU.cpp	(revision 895)
@@ -3940,4 +3940,7 @@
       && !bARPFlag
 #endif
+#if RWTH_H0057_DBBP_NO_SPU
+      && !bDBBPFlag
+#endif
       )
     {
@@ -3963,4 +3966,7 @@
       && !bARPFlag
 #endif
+#if RWTH_H0057_DBBP_NO_SPU
+      && !bDBBPFlag
+#endif
       )
     {
@@ -3986,4 +3992,7 @@
       && !bARPFlag
 #endif
+#if RWTH_H0057_DBBP_NO_SPU
+      && !bDBBPFlag
+#endif
       )
     {
@@ -4006,4 +4015,7 @@
 #if H_3D_ARP
       && !bARPFlag
+#endif
+#if RWTH_H0057_DBBP_NO_SPU
+      && !bDBBPFlag
 #endif
       )
@@ -4029,4 +4041,7 @@
 #if H_3D_ARP
       && !bARPFlag
+#endif
+#if RWTH_H0057_DBBP_NO_SPU
+      && !bDBBPFlag
 #endif
       )
@@ -4689,4 +4704,7 @@
 #if H_3D_ARP
       !bARPFlag &&
+#endif
+#if RWTH_H0057_DBBP_NO_SPU
+      !bDBBPFlag &&
 #endif
       xAddVspCand( mrgCandIdx, &cDisInfo, iCount, abCandIsInter, pcMvFieldNeighbours, puhInterDirNeighbours, vspFlag, iCount3DV, inheritedVSPDisInfo ) )
Index: /branches/HTM-10.2-dev2-RWTH/source/Lib/TLibCommon/TComDataCU.h
===================================================================
--- /branches/HTM-10.2-dev2-RWTH/source/Lib/TLibCommon/TComDataCU.h	(revision 894)
+++ /branches/HTM-10.2-dev2-RWTH/source/Lib/TLibCommon/TComDataCU.h	(revision 895)
@@ -70,6 +70,8 @@
   Bool        abMergeFlag[2];       // for two segments
   UChar       auhMergeIndex[2];     // for two segments
+#if !RWTH_H0057_DBBP_NO_SPU
   Char        ahVSPFlag[2];         // for two segments
   DisInfo     acDvInfo[2];          // for two segments
+#endif
   
   PartSize    eVirtualPartSize;
Index: /branches/HTM-10.2-dev2-RWTH/source/Lib/TLibCommon/TComPrediction.cpp
===================================================================
--- /branches/HTM-10.2-dev2-RWTH/source/Lib/TLibCommon/TComPrediction.cpp	(revision 894)
+++ /branches/HTM-10.2-dev2-RWTH/source/Lib/TLibCommon/TComPrediction.cpp	(revision 895)
@@ -639,10 +639,17 @@
   
   // start mapping process
+#if !MTK_H0072_DBBP_AMP_REM
   Bool bAMPAvail = uiSize > 8;
   Int matchedPartSum[6][2] = {{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}}; // counter for each part size and boolean option
   PartSize virtualPartSizes[6] = { SIZE_Nx2N, SIZE_2NxN, SIZE_2NxnU, SIZE_2NxnD, SIZE_nLx2N, SIZE_nRx2N };
+#else
+  Int matchedPartSum[2][2] = {{0,0},{0,0}}; // counter for each part size and boolean option
+  PartSize virtualPartSizes[2] = { SIZE_Nx2N, SIZE_2NxN};
+#endif
   
   UInt uiHalfSize = uiSize>>1;
+#if !MTK_H0072_DBBP_AMP_REM
   UInt uiQuarterSize = uiSize>>2;
+#endif
   
   for (Int y=0; y<uiSize; y+=iSubSample)
@@ -677,4 +684,5 @@
       }
       
+#if !MTK_H0072_DBBP_AMP_REM
       if( bAMPAvail )
       {
@@ -719,4 +727,5 @@
         }
       }
+#endif
     }
     
@@ -728,5 +737,9 @@
   
   Int iMaxMatchSum = 0;
-  for(Int p=0; p<6; p++)  // loop over partition sizes
+#if !MTK_H0072_DBBP_AMP_REM
+  for(Int p=0; p<6; p++)  // loop over partition
+#else
+  for(Int p=0; p<2; p++)  // loop over partition
+#endif
   {
     for( Int b=0; b<=1; b++ ) // loop over boolean options
Index: /branches/HTM-10.2-dev2-RWTH/source/Lib/TLibCommon/TypeDef.h
===================================================================
--- /branches/HTM-10.2-dev2-RWTH/source/Lib/TLibCommon/TypeDef.h	(revision 894)
+++ /branches/HTM-10.2-dev2-RWTH/source/Lib/TLibCommon/TypeDef.h	(revision 895)
@@ -295,4 +295,6 @@
 #define DBBP_INVALID_SHORT                (-4)
 #define RWTH_DBBP_PACK_MODE               SIZE_2NxN
+#define MTK_H0072_DBBP_AMP_REM                 1
+#define RWTH_H0057_DBBP_NO_SPU                 1
 #endif
 
Index: /branches/HTM-10.2-dev2-RWTH/source/Lib/TLibDecoder/TDecCu.cpp
===================================================================
--- /branches/HTM-10.2-dev2-RWTH/source/Lib/TLibDecoder/TDecCu.cpp	(revision 894)
+++ /branches/HTM-10.2-dev2-RWTH/source/Lib/TLibDecoder/TDecCu.cpp	(revision 895)
@@ -782,6 +782,14 @@
     }
     
+    AOF( pcCU->getARPW(uiPartAddr) == 0 );
+    AOF( pcCU->getICFlag(uiPartAddr) == false );
+    
+#if RWTH_H0057_DBBP_NO_SPU
+    AOF( pcCU->getSPIVMPFlag(uiPartAddr) == false );
+    AOF( pcCU->getVSPFlag(uiPartAddr) == 0 );
+#else
     pDBBPTmpData->ahVSPFlag[uiSegment] = pcCU->getVSPFlag( uiPartAddr );
     pDBBPTmpData->acDvInfo[uiSegment] = pcCU->getDvInfo( uiPartAddr );
+#endif
   }
   
@@ -793,6 +801,8 @@
     pcCU->setInterDirSubParts( pDBBPTmpData->auhInterDir[uiSegment], 0, 0, uiDepth );
     
+#if !RWTH_H0057_DBBP_NO_SPU
     pcCU->setVSPFlagSubParts( pDBBPTmpData->ahVSPFlag[uiSegment], 0, 0, uiDepth );
     pcCU->setDvInfoSubParts( pDBBPTmpData->acDvInfo[uiSegment], 0, 0, uiDepth );
+#endif
     
     for ( UInt uiRefListIdx = 0; uiRefListIdx < 2; uiRefListIdx++ )
@@ -816,6 +826,8 @@
     pcCU->setDBBPFlagSubParts(true, uiPartAddr, uiSegment, uiDepth);
     
+#if !RWTH_H0057_DBBP_NO_SPU
     pcCU->setVSPFlagSubParts( pDBBPTmpData->ahVSPFlag[uiSegment], uiPartAddr, uiSegment, uiDepth );
     pcCU->setDvInfoSubParts( pDBBPTmpData->acDvInfo[uiSegment], uiPartAddr, uiSegment, uiDepth );
+#endif
     
     pcCU->setInterDirSubParts(pDBBPTmpData->auhInterDir[uiSegment], uiPartAddr, uiSegment, uiDepth); // interprets depth relative to LCU level
Index: /branches/HTM-10.2-dev2-RWTH/source/Lib/TLibDecoder/TDecEntropy.cpp
===================================================================
--- /branches/HTM-10.2-dev2-RWTH/source/Lib/TLibDecoder/TDecEntropy.cpp	(revision 894)
+++ /branches/HTM-10.2-dev2-RWTH/source/Lib/TLibDecoder/TDecEntropy.cpp	(revision 895)
@@ -161,4 +161,11 @@
       
       pcCU->setPartSizeSubParts(eVirtualPartSize, uiAbsPartIdx, uiDepth);
+      
+#if RWTH_H0057_DBBP_NO_SPU
+      // make sure that DBBP flag is set for both segments
+      UInt uiPUOffset = ( g_auiPUOffset[UInt( eVirtualPartSize )] << ( ( pcCU->getSlice()->getSPS()->getMaxCUDepth() - uiDepth ) << 1 ) ) >> 4;
+      pcCU->setDBBPFlagSubParts(true, uiAbsPartIdx, 0, uiDepth);
+      pcCU->setDBBPFlagSubParts(true, uiAbsPartIdx+uiPUOffset, 1, uiDepth);
+#endif
     }
   }
Index: /branches/HTM-10.2-dev2-RWTH/source/Lib/TLibEncoder/TEncCu.cpp
===================================================================
--- /branches/HTM-10.2-dev2-RWTH/source/Lib/TLibEncoder/TEncCu.cpp	(revision 894)
+++ /branches/HTM-10.2-dev2-RWTH/source/Lib/TLibEncoder/TEncCu.cpp	(revision 895)
@@ -2383,6 +2383,11 @@
     pDBBPTmpData->auhMergeIndex[uiSegment] = rpcTempCU->getMergeIndex(0);
     
+#if RWTH_H0057_DBBP_NO_SPU
+    AOF( rpcTempCU->getSPIVMPFlag(0) == false );
+    AOF( rpcTempCU->getVSPFlag(0) == 0 );
+#else
     pDBBPTmpData->ahVSPFlag[uiSegment] = rpcTempCU->getVSPFlag(0);
     pDBBPTmpData->acDvInfo[uiSegment] = rpcTempCU->getDvInfo(0);
+#endif
     
     for ( UInt uiRefListIdx = 0; uiRefListIdx < 2; uiRefListIdx++ )
@@ -2416,6 +2421,8 @@
     rpcTempCU->setMergeIndexSubParts(pDBBPTmpData->auhMergeIndex[uiSegment], uiPartAddr, uiSegment, uhDepth);
     
+#if !RWTH_H0057_DBBP_NO_SPU
     rpcTempCU->setVSPFlagSubParts(pDBBPTmpData->ahVSPFlag[uiSegment], uiPartAddr, uiSegment, uhDepth);
     rpcTempCU->setDvInfoSubParts(pDBBPTmpData->acDvInfo[uiSegment], uiPartAddr, uiSegment, uhDepth);
+#endif
     
     for ( UInt uiRefListIdx = 0; uiRefListIdx < 2; uiRefListIdx++ )
Index: /branches/HTM-10.2-dev2-RWTH/source/Lib/TLibEncoder/TEncSearch.cpp
===================================================================
--- /branches/HTM-10.2-dev2-RWTH/source/Lib/TLibEncoder/TEncSearch.cpp	(revision 894)
+++ /branches/HTM-10.2-dev2-RWTH/source/Lib/TLibEncoder/TEncSearch.cpp	(revision 895)
@@ -3666,6 +3666,8 @@
       pcCU->setInterDirSubParts(pDBBPTmpData->auhInterDir[0], 0, 0, pcCU->getDepth(0)); // interprets depth relative to LCU level
       
+#if !RWTH_H0057_DBBP_NO_SPU
       pcCU->setVSPFlagSubParts(pDBBPTmpData->ahVSPFlag[0], 0, 0, pcCU->getDepth(0));
       pcCU->setDvInfoSubParts(pDBBPTmpData->acDvInfo[0], 0, 0, pcCU->getDepth(0));
+#endif
       
       for ( UInt uiRefListIdx = 0; uiRefListIdx < 2; uiRefListIdx++ )
