Changeset 1222 in 3DVCSoftware for branches/HTM-14.1-update-dev4-RWTH/source


Ignore:
Timestamp:
21 May 2015, 15:43:58 (10 years ago)
Author:
rwth
Message:
  • migration of DBBP (to be tested)
Location:
branches/HTM-14.1-update-dev4-RWTH/source/Lib
Files:
25 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-14.1-update-dev4-RWTH/source/Lib/TLibCommon/ContextTables.h

    r1200 r1222  
    188188#define NUM_SDC_FLAG_CTX              1      ///< number of context
    189189#endif
    190 #if H_3D_DBBP
     190#if NH_3D_DBBP
    191191#define DBBP_NUM_FLAG_CTX                 1
    192192#endif
     
    629629#endif
    630630
    631 #if H_3D_DBBP
     631#if NH_3D_DBBP
    632632static const UChar INIT_DBBP_FLAG[3][DBBP_NUM_FLAG_CTX] =
    633633{
  • branches/HTM-14.1-update-dev4-RWTH/source/Lib/TLibCommon/TComDataCU.cpp

    r1217 r1222  
    142142#if H_3D_INTER_SDC
    143143#endif
    144 #if H_3D_DBBP
     144#if NH_3D_DBBP
    145145  m_pbDBBPFlag         = NULL;
    146146#endif
     
    273273#endif
    274274#endif
    275 #if H_3D_DBBP
     275#if NH_3D_DBBP
    276276    m_pbDBBPFlag         = (Bool*  )xMalloc(Bool,   uiNumPartition);
    277277#endif
     
    493493#endif   
    494494#endif   
    495 #if H_3D_DBBP
     495#if NH_3D_DBBP
    496496    if ( m_pbDBBPFlag         ) { xFree(m_pbDBBPFlag);          m_pbDBBPFlag        = NULL; }
    497497#endif
     
    632632    m_pbSDCFlag[ui] = pcFrom->m_pbSDCFlag[ui];
    633633#endif
    634 #if H_3D_DBBP
    635     m_pbDBBPFlag[ui] = pcFrom->m_pbDBBPFlag[ui];
     634#if NH_3D_DBBP
     635  memset( m_pbDBBPFlag , false, m_uiNumPartition * sizeof( *m_pbDBBPFlag ));
    636636#endif
    637637#if H_3D
     
    678678    m_apDmmPredictor[0] = 0;
    679679    m_apDmmPredictor[1] = 0;
    680 #endif
    681 #if H_3D_DBBP
    682     memset( m_pbDBBPFlag        + firstElement, false,                    numElements * sizeof( *m_pbDBBPFlag ) );
    683680#endif
    684681
     
    840837      m_apDmmPredictor[1] = 0;
    841838#endif
    842 #if H_3D_DBBP
     839#if NH_3D_DBBP
    843840      m_pbDBBPFlag[ui] = false;
    844841#endif
     
    949946  m_apDmmPredictor[1] = 0;
    950947#endif
    951 #if H_3D_DBBP
    952   memset( m_pbDBBPFlag,         0, iSizeInBool  );
     948#if NH_3D_DBBP
     949  memset( m_pbDBBPFlag,         0, sizeof(Bool) * m_uiNumPartition  );
    953950#endif
    954951
     
    10071004#endif
    10081005#endif
    1009 #if H_3D_DBBP
     1006#if NH_3D_DBBP
    10101007      m_pbDBBPFlag[ui]=pcCU->m_pbDBBPFlag[uiPartOffset+ui];
    10111008#endif
     
    11301127#endif 
    11311128#endif 
    1132 #if H_3D_DBBP
     1129#if NH_3D_DBBP
    11331130  m_pbDBBPFlag              = pcCU->getDBBPFlag()         + uiPart;
    11341131#endif
     
    12511248  m_puhARPW            = pcCU->getARPW()                  + uiAbsPartIdx;
    12521249#endif   
    1253 #if H_3D_DBBP
     1250#if NH_3D_DBBP
    12541251  m_pbDBBPFlag       = pcCU->getDBBPFlag()              + uiAbsPartIdx;
    12551252#endif
     
    13371334#endif
    13381335#endif
    1339 #if H_3D_DBBP
     1336#if NH_3D_DBBP
    13401337  memcpy( m_pbDBBPFlag          + uiOffset, pcCU->getDBBPFlag(),          iSizeInBool  );
    13411338#endif
     
    14651462#endif
    14661463#endif
    1467 #if H_3D_DBBP
    1468   memcpy( rpcCU->getDBBPFlag()          + m_uiAbsIdxInLCU, m_pbDBBPFlag,          iSizeInBool  );
     1464#if NH_3D_DBBP
     1465  memcpy( pCtu->getDBBPFlag()          + m_absZIdxInCtu, m_pbDBBPFlag,          iSizeInBool  );
    14691466#endif
    14701467
     
    15391536  memcpy( rpcCU->getSDCSegmentDCOffset(1) + uiPartOffset, m_apSegmentDCOffset[1], sizeof( Pel ) * uiQNumPart);
    15401537#endif
    1541 #endif
    1542 #if H_3D_DBBP
    1543   memcpy( rpcCU->getDBBPFlag()          + uiPartOffset, m_pbDBBPFlag,          iSizeInBool  );
    15441538#endif
    15451539#if H_3D_ARP
     
    21122106}
    21132107#endif
    2114 #if H_3D_DBBP
     2108#if NH_3D_DBBP
    21152109Pel* TComDataCU::getVirtualDepthBlock(UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, UInt& uiDepthStride)
    21162110{
     2111  const TComSPS* sps = getSlice()->getSPS();
     2112  UInt uiMaxCUWidth = sps->getMaxCUWidth();
     2113  UInt uiMaxCUHeight = sps->getMaxCUHeight();
     2114 
    21172115  // get coded and reconstructed depth view
    21182116  TComPicYuv* depthPicYuv = NULL;
     
    21502148    depthPicYuv   = baseDepthPic->getPicYuvRec();
    21512149    depthPicYuv->extendPicBorder();
    2152     uiDepthStride = depthPicYuv->getStride();
     2150    uiDepthStride = depthPicYuv->getStride(COMPONENT_Y);
    21532151   
    2154     Int iBlkX = ( getAddr() % baseDepthPic->getFrameWidthInCU() ) * g_uiMaxCUWidth  + g_auiRasterToPelX[ g_auiZscanToRaster[ getZorderIdxInCU()+uiAbsPartIdx ] ];
    2155     Int iBlkY = ( getAddr() / baseDepthPic->getFrameWidthInCU() ) * g_uiMaxCUHeight + g_auiRasterToPelY[ g_auiZscanToRaster[ getZorderIdxInCU()+uiAbsPartIdx ] ];
     2152    Int iBlkX = ( getCtuRsAddr() % baseDepthPic->getFrameWidthInCtus() ) * uiMaxCUWidth  + g_auiRasterToPelX[ g_auiZscanToRaster[ getZorderIdxInCtu()+uiAbsPartIdx ] ];
     2153    Int iBlkY = ( getCtuRsAddr() / baseDepthPic->getFrameWidthInCtus() ) * uiMaxCUHeight + g_auiRasterToPelY[ g_auiZscanToRaster[ getZorderIdxInCtu()+uiAbsPartIdx ] ];
    21562154   
    2157     Int iPictureWidth  = depthPicYuv->getWidth();
    2158     Int iPictureHeight = depthPicYuv->getHeight();
     2155    Int iPictureWidth  = depthPicYuv->getWidth(COMPONENT_Y);
     2156    Int iPictureHeight = depthPicYuv->getHeight(COMPONENT_Y);
    21592157   
    21602158   
     
    21732171    Int depthPosY = Clip3(0,   iPictureHeight - 1, iBlkY + ((cDv.getVer()+2)>>2));
    21742172   
    2175     pDepthPels = depthPicYuv->getLumaAddr() + depthPosX + depthPosY * uiDepthStride;
     2173    pDepthPels = depthPicYuv->getAddr(COMPONENT_Y) + depthPosX + depthPosY * uiDepthStride;
    21762174  }
    21772175#endif
     
    21852183#endif
    21862184
    2187 #if H_3D_DBBP
     2185#if NH_3D_DBBP
    21882186Void TComDataCU::setDBBPFlagSubParts ( Bool bDBBPFlag, UInt uiAbsPartIdx, UInt uiPartIdx, UInt uiDepth )
    21892187{
     
    37053703  Bool bARPFlag = getARPW(uiAbsPartIdx) > 0;
    37063704#endif
    3707 #if H_3D_DBBP
     3705#if NH_3D_DBBP
    37083706  Bool bDBBPFlag = getDBBPFlag(uiAbsPartIdx);
    37093707  assert(bDBBPFlag == getDBBPFlag(0)); 
     
    37433741      && !bARPFlag
    37443742#endif
    3745 #if H_3D_DBBP
     3743#if NH_3D_DBBP
    37463744      && !bDBBPFlag
    37473745#endif
     
    40554053        spiMvpFlag = true;
    40564054      }
    4057 #if H_3D_DBBP
     4055#if NH_3D_DBBP
    40584056      spiMvpFlag &= !bDBBPFlag;
    40594057#endif
     
    41944192      (nPSW + nPSH > 12) &&
    41954193#endif
    4196 #if H_3D_DBBP
     4194#if NH_3D_DBBP
    41974195      !bDBBPFlag &&
    41984196#endif
     
    51265124  UInt partAddr;
    51275125
    5128 #if H_3D_DBBP
     5126#if NH_3D_DBBP
    51295127  if( getDBBPFlag(0) )
    51305128  {
  • branches/HTM-14.1-update-dev4-RWTH/source/Lib/TLibCommon/TComDataCU.h

    r1217 r1222  
    6565static const UInt NUM_MOST_PROBABLE_MODES=3;
    6666
    67 #if H_3D_DBBP
     67#if NH_3D_DBBP
    6868typedef struct _DBBPTmpData
    6969{
     
    193193#endif
    194194#endif
    195 #if H_3D_DBBP
     195#if NH_3D_DBBP
    196196  Bool*         m_pbDBBPFlag;        ///< array of DBBP flags
    197197  DbbpTmpData   m_sDBBPTmpData;
     
    329329  Void          setCUTransquantBypassSubParts( Bool flag, UInt uiAbsPartIdx, UInt uiDepth );
    330330
    331 #if H_3D_DBBP
     331#if NH_3D_DBBP
    332332  Pel*          getVirtualDepthBlock(UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, UInt& uiDepthStride);
    333333#endif
     
    353353  Void          setPredModeSubParts   ( PredMode eMode, UInt uiAbsPartIdx, UInt uiDepth );
    354354
    355 #if H_3D_DBBP
     355#if NH_3D_DBBP
    356356  Bool*         getDBBPFlag           ()                        { return m_pbDBBPFlag;               }
    357357  Bool          getDBBPFlag           ( UInt uiIdx )            { return m_pbDBBPFlag[uiIdx];        }
  • branches/HTM-14.1-update-dev4-RWTH/source/Lib/TLibCommon/TComPrediction.cpp

    r1210 r1222  
    747747#endif
    748748
    749 #if H_3D_DBBP
     749#if NH_3D_DBBP
    750750PartSize TComPrediction::getPartitionSizeFromDepth(Pel* pDepthPels, UInt uiDepthStride, UInt uiSize, TComDataCU*& pcCU)
    751751{
     752  const TComSPS* sps = pcCU->getSlice()->getSPS();
     753  UInt uiMaxCUWidth = sps->getMaxCUWidth();
     754  UInt uiMaxCUHeight = sps->getMaxCUHeight();
     755 
    752756  // find virtual partitioning for this CU based on depth block
    753757  // segmentation of texture block --> mask IDs
     
    757761  Int iSumDepth = 0;
    758762  Int iSubSample = 4;
    759   Int iPictureWidth = pcCU->getSlice()->getIvPic (true, pcCU->getDvInfo(0).m_aVIdxCan)->getPicYuvRec()->getWidth();
    760   Int iPictureHeight = pcCU->getSlice()->getIvPic (true, pcCU->getDvInfo(0).m_aVIdxCan)->getPicYuvRec()->getHeight();
     763  Int iPictureWidth = pcCU->getSlice()->getIvPic (true, pcCU->getDvInfo(0).m_aVIdxCan)->getPicYuvRec()->getWidth(COMPONENT_Y);
     764  Int iPictureHeight = pcCU->getSlice()->getIvPic (true, pcCU->getDvInfo(0).m_aVIdxCan)->getPicYuvRec()->getHeight(COMPONENT_Y);
    761765  TComMv cDv = pcCU->getSlice()->getDepthRefinementFlag(  ) ? pcCU->getDvInfo(0).m_acDoNBDV : pcCU->getDvInfo(0).m_acNBDV;
    762766  if( pcCU->getSlice()->getDepthRefinementFlag(  ) )
     
    764768    cDv.setVer(0);
    765769  }
    766   Int iBlkX = ( pcCU->getAddr() % pcCU->getSlice()->getIvPic (true, pcCU->getDvInfo(0).m_aVIdxCan)->getFrameWidthInCU() ) * g_uiMaxCUWidth  + g_auiRasterToPelX[ g_auiZscanToRaster[ pcCU->getZorderIdxInCU() ] ]+ ((cDv.getHor()+2)>>2);
    767   Int iBlkY = ( pcCU->getAddr() / pcCU->getSlice()->getIvPic (true, pcCU->getDvInfo(0).m_aVIdxCan)->getFrameWidthInCU() ) * g_uiMaxCUHeight + g_auiRasterToPelY[ g_auiZscanToRaster[ pcCU->getZorderIdxInCU() ] ]+ ((cDv.getVer()+2)>>2);
     770  Int iBlkX = ( pcCU->getCtuRsAddr() % pcCU->getSlice()->getIvPic (true, pcCU->getDvInfo(0).m_aVIdxCan)->getFrameWidthInCtus() ) * uiMaxCUWidth  + g_auiRasterToPelX[ g_auiZscanToRaster[ pcCU->getZorderIdxInCtu() ] ]+ ((cDv.getHor()+2)>>2);
     771  Int iBlkY = ( pcCU->getCtuRsAddr() / pcCU->getSlice()->getIvPic (true, pcCU->getDvInfo(0).m_aVIdxCan)->getFrameWidthInCtus() ) * uiMaxCUHeight + g_auiRasterToPelY[ g_auiZscanToRaster[ pcCU->getZorderIdxInCtu() ] ]+ ((cDv.getVer()+2)>>2);
    768772 
    769773  UInt t=0;
     
    852856  }
    853857
    854   PartSize matchedPartSize = SIZE_NONE;
     858  PartSize matchedPartSize = NUMBER_OF_PART_SIZES;
    855859
    856860  Int iMaxMatchSum = 0;
     
    867871  }
    868872
    869   AOF( matchedPartSize != SIZE_NONE );
     873  AOF( matchedPartSize != NUMBER_OF_PART_SIZES );
    870874
    871875  return matchedPartSize;
     
    874878Bool TComPrediction::getSegmentMaskFromDepth( Pel* pDepthPels, UInt uiDepthStride, UInt uiWidth, UInt uiHeight, Bool* pMask, TComDataCU*& pcCU)
    875879{
     880  const TComSPS* sps = pcCU->getSlice()->getSPS();
     881  UInt uiMaxCUWidth = sps->getMaxCUWidth();
     882  UInt uiMaxCUHeight = sps->getMaxCUHeight();
     883 
    876884  // segmentation of texture block --> mask IDs
    877885  Pel*  pDepthBlockStart      = pDepthPels;
     
    885893  iSumDepth  = pDepthPels[ 0 ];
    886894 
    887   Int iPictureWidth = pcCU->getSlice()->getIvPic (true, pcCU->getDvInfo(0).m_aVIdxCan)->getPicYuvRec()->getWidth();
    888   Int iPictureHeight = pcCU->getSlice()->getIvPic (true, pcCU->getDvInfo(0).m_aVIdxCan)->getPicYuvRec()->getHeight(); 
     895  Int iPictureWidth = pcCU->getSlice()->getIvPic (true, pcCU->getDvInfo(0).m_aVIdxCan)->getPicYuvRec()->getWidth(COMPONENT_Y);
     896  Int iPictureHeight = pcCU->getSlice()->getIvPic (true, pcCU->getDvInfo(0).m_aVIdxCan)->getPicYuvRec()->getHeight(COMPONENT_Y); 
    889897  TComMv cDv = pcCU->getSlice()->getDepthRefinementFlag(  ) ? pcCU->getDvInfo(0).m_acDoNBDV : pcCU->getDvInfo(0).m_acNBDV;
    890898  if( pcCU->getSlice()->getDepthRefinementFlag(  ) )
     
    892900    cDv.setVer(0);
    893901  }
    894   Int iBlkX = ( pcCU->getAddr() % pcCU->getSlice()->getIvPic (true, pcCU->getDvInfo(0).m_aVIdxCan)->getFrameWidthInCU() ) * g_uiMaxCUWidth  + g_auiRasterToPelX[ g_auiZscanToRaster[ pcCU->getZorderIdxInCU() ] ]+ ((cDv.getHor()+2)>>2);
    895   Int iBlkY = ( pcCU->getAddr() / pcCU->getSlice()->getIvPic (true, pcCU->getDvInfo(0).m_aVIdxCan)->getFrameWidthInCU() ) * g_uiMaxCUHeight + g_auiRasterToPelY[ g_auiZscanToRaster[ pcCU->getZorderIdxInCU() ] ]+ ((cDv.getVer()+2)>>2);
     902  Int iBlkX = ( pcCU->getCtuRsAddr() % pcCU->getSlice()->getIvPic (true, pcCU->getDvInfo(0).m_aVIdxCan)->getFrameWidthInCtus() ) * uiMaxCUWidth  + g_auiRasterToPelX[ g_auiZscanToRaster[ pcCU->getZorderIdxInCtu() ] ]+ ((cDv.getHor()+2)>>2);
     903  Int iBlkY = ( pcCU->getCtuRsAddr() / pcCU->getSlice()->getIvPic (true, pcCU->getDvInfo(0).m_aVIdxCan)->getFrameWidthInCtus() ) * uiMaxCUHeight + g_auiRasterToPelY[ g_auiZscanToRaster[ pcCU->getZorderIdxInCtu() ] ]+ ((cDv.getVer()+2)>>2);
    896904  if (iBlkX>(Int)(iPictureWidth - uiWidth))
    897905  {
     
    10081016}
    10091017
    1010 Void TComPrediction::combineSegmentsWithMask( TComYuv* pInYuv[2], TComYuv* pOutYuv, Bool* pMask, UInt uiWidth, UInt uiHeight, UInt uiPartAddr, UInt partSize )
    1011 {
    1012   Pel*  piSrc[2]    = {pInYuv[0]->getLumaAddr(uiPartAddr), pInYuv[1]->getLumaAddr(uiPartAddr)};
    1013   UInt  uiSrcStride = pInYuv[0]->getStride();
    1014   Pel*  piDst       = pOutYuv->getLumaAddr(uiPartAddr);
    1015   UInt  uiDstStride = pOutYuv->getStride();
     1018Void TComPrediction::combineSegmentsWithMask( TComYuv* pInYuv[2], TComYuv* pOutYuv, Bool* pMask, UInt uiWidth, UInt uiHeight, UInt uiPartAddr, UInt partSize, Int bitDepthY )
     1019{
     1020  Pel*  piSrc[2]    = {pInYuv[0]->getAddr(COMPONENT_Y, uiPartAddr), pInYuv[1]->getAddr(COMPONENT_Y, uiPartAddr)};
     1021  UInt  uiSrcStride = pInYuv[0]->getStride(COMPONENT_Y);
     1022  Pel*  piDst       = pOutYuv->getAddr(COMPONENT_Y, uiPartAddr);
     1023  UInt  uiDstStride = pOutYuv->getStride(COMPONENT_Y);
    10161024 
    10171025  UInt  uiMaskStride= MAX_CU_SIZE;
     
    10521060        right  = (x==uiWidth-1)  ? tmpTar[y*uiWidth+x] : tmpTar[y*uiWidth+x+1];
    10531061       
    1054         piDst[x] = (l!=r) ? ClipY( Pel(( left + (tmpTar[y*uiWidth+x] << 1) + right ) >> 2 )) : tmpTar[y*uiWidth+x];
     1062        piDst[x] = (l!=r) ? ClipBD( Pel(( left + (tmpTar[y*uiWidth+x] << 1) + right ) >> 2 ), bitDepthY) : tmpTar[y*uiWidth+x];
    10551063      }
    10561064      piDst     += uiDstStride;
     
    10701078        bottom = (y==uiHeight-1) ? tmpTar[y*uiWidth+x] : tmpTar[(y+1)*uiWidth+x];
    10711079       
    1072         piDst[x] = (t!=b) ? ClipY( Pel(( top + (tmpTar[y*uiWidth+x] << 1) + bottom ) >> 2 )) : tmpTar[y*uiWidth+x];
     1080        piDst[x] = (t!=b) ? ClipBD( Pel(( top + (tmpTar[y*uiWidth+x] << 1) + bottom ) >> 2 ), bitDepthY) : tmpTar[y*uiWidth+x];
    10731081      }
    10741082      piDst     += uiDstStride;
     
    10831091 
    10841092  // now combine chroma
    1085   Pel*  piSrcU[2]       = { pInYuv[0]->getCbAddr(uiPartAddr), pInYuv[1]->getCbAddr(uiPartAddr) };
    1086   Pel*  piSrcV[2]       = { pInYuv[0]->getCrAddr(uiPartAddr), pInYuv[1]->getCrAddr(uiPartAddr) };
    1087   UInt  uiSrcStrideC    = pInYuv[0]->getCStride();
    1088   Pel*  piDstU          = pOutYuv->getCbAddr(uiPartAddr);
    1089   Pel*  piDstV          = pOutYuv->getCrAddr(uiPartAddr);
    1090   UInt  uiDstStrideC    = pOutYuv->getCStride();
     1093  Pel*  piSrcU[2]       = { pInYuv[0]->getAddr(COMPONENT_Cb, uiPartAddr), pInYuv[1]->getAddr(COMPONENT_Cb, uiPartAddr) };
     1094  Pel*  piSrcV[2]       = { pInYuv[0]->getAddr(COMPONENT_Cr, uiPartAddr), pInYuv[1]->getAddr(COMPONENT_Cr, uiPartAddr) };
     1095  UInt  uiSrcStrideC    = pInYuv[0]->getStride(COMPONENT_Cb);
     1096  Pel*  piDstU          = pOutYuv->getAddr(COMPONENT_Cb, uiPartAddr);
     1097  Pel*  piDstV          = pOutYuv->getAddr(COMPONENT_Cr, uiPartAddr);
     1098  UInt  uiDstStrideC    = pOutYuv->getStride(COMPONENT_Cb);
    10911099  UInt  uiWidthC        = uiWidth >> 1;
    10921100  UInt  uiHeightC       = uiHeight >> 1;
     
    11341142        if (l!=r)
    11351143        {
    1136           filSrcU = ClipC( Pel(( leftU + (tmpTarU[y*uiWidthC+x] << 1) + rightU ) >> 2 ));
    1137           filSrcV = ClipC( Pel(( leftV + (tmpTarV[y*uiWidthC+x] << 1) + rightV ) >> 2 ));
     1144          filSrcU = ClipBD( Pel(( leftU + (tmpTarU[y*uiWidthC+x] << 1) + rightU ) >> 2 ), bitDepthY);
     1145          filSrcV = ClipBD( Pel(( leftV + (tmpTarV[y*uiWidthC+x] << 1) + rightV ) >> 2 ), bitDepthY);
    11381146        }
    11391147        else
     
    11671175        if (t!=b)
    11681176        {
    1169           filSrcU = ClipC( Pel(( topU + (tmpTarU[y*uiWidthC+x] << 1) + bottomU ) >> 2 ));
    1170           filSrcV = ClipC( Pel(( topV + (tmpTarV[y*uiWidthC+x] << 1) + bottomV ) >> 2 ));
     1177          filSrcU = ClipBD( Pel(( topU + (tmpTarU[y*uiWidthC+x] << 1) + bottomU ) >> 2 ), bitDepthY);
     1178          filSrcV = ClipBD( Pel(( topV + (tmpTarV[y*uiWidthC+x] << 1) + bottomV ) >> 2 ), bitDepthY);
    11711179        }
    11721180        else
  • branches/HTM-14.1-update-dev4-RWTH/source/Lib/TLibCommon/TComPrediction.h

    r1200 r1222  
    187187#endif
    188188 
    189 #if H_3D_DBBP
     189#if NH_3D_DBBP
    190190  PartSize      getPartitionSizeFromDepth(Pel* pDepthPels, UInt uiDepthStride, UInt uiSize, TComDataCU*& pcCU);
    191191  Bool          getSegmentMaskFromDepth( Pel* pDepthPels, UInt uiDepthStride, UInt uiWidth, UInt uiHeight, Bool* pMask, TComDataCU*& pcCU);
    192   Void          combineSegmentsWithMask( TComYuv* pInYuv[2], TComYuv* pOutYuv, Bool* pMask, UInt uiWidth, UInt uiHeight, UInt uiPartAddr, UInt partSize );
     192  Void          combineSegmentsWithMask( TComYuv* pInYuv[2], TComYuv* pOutYuv, Bool* pMask, UInt uiWidth, UInt uiHeight, UInt uiPartAddr, UInt partSize, Int bitDepthY );
    193193#endif
    194194
  • branches/HTM-14.1-update-dev4-RWTH/source/Lib/TLibCommon/TComRdCost.cpp

    r1200 r1222  
    311311  m_bUseEstimatedVSD        = false;
    312312#endif
    313 #if H_3D_DBBP
     313#if NH_3D_DBBP
    314314  m_bUseMask                = false;
    315315#endif
     
    340340  rcDistParam.DistFunc = m_afpDistortFunc[eDFunc + g_aucConvertToBit[ rcDistParam.iCols ] + 1 ];
    341341
    342 #if H_3D_DBBP
     342#if NH_3D_DBBP
    343343  if( m_bUseMask )
    344344  {
     
    397397  }
    398398
    399 #if H_3D_DBBP
     399#if NH_3D_DBBP
    400400  if( m_bUseMask )
    401401  {
     
    446446  }
    447447
    448 #if H_3D_DBBP
     448#if NH_3D_DBBP
    449449  if( m_bUseMask )
    450450  {
     
    468468  rcDP.bitDepth   = bitDepth;
    469469  rcDP.DistFunc   = m_afpDistortFunc[ ( bHadamard ? DF_HADS : DF_SADS ) + g_aucConvertToBit[ iWidth ] + 1 ];
    470 #if H_3D_DBBP
     470#if NH_3D_DBBP
    471471  if( m_bUseMask )
    472472  {
     
    649649// ====================================================================================================================
    650650
    651 #if H_3D_DBBP
     651#if NH_3D_DBBP
    652652// --------------------------------------------------------------------------------------------------------------------
    653653// Masked distortion functions
  • branches/HTM-14.1-update-dev4-RWTH/source/Lib/TLibCommon/TComRdCost.h

    r1200 r1222  
    167167#endif
    168168  Int                     m_iCostScale;
    169 #if H_3D_DBBP
     169#if NH_3D_DBBP
    170170  Bool                    m_bUseMask;
    171171#endif
     
    206206  Void    setDistParam( DistParam& rcDP, Int bitDepth, Pel* p1, Int iStride1, Pel* p2, Int iStride2, Int iWidth, Int iHeight, Bool bHadamard = false );
    207207
    208 #if H_3D_DBBP
     208#if NH_3D_DBBP
    209209  Void    setUseMask(Bool b) { m_bUseMask = b; }
    210210#endif
     
    302302  static Distortion xCalcHADs4x4      ( Pel *piOrg, Pel *piCurr, Int iStrideOrg, Int iStrideCur, Int iStep );
    303303  static Distortion xCalcHADs8x8      ( Pel *piOrg, Pel *piCurr, Int iStrideOrg, Int iStrideCur, Int iStep );
    304 #if H_3D_DBBP
     304#if NH_3D_DBBP
    305305  static UInt xGetMaskedSSE     ( DistParam* pcDtParam );
    306306  static UInt xGetMaskedSAD     ( DistParam* pcDtParam );
  • branches/HTM-14.1-update-dev4-RWTH/source/Lib/TLibCommon/TypeDef.h

    r1217 r1222  
    7171#define NH_3D_NBDV                        1
    7272#define NH_3D_NBDV_REF                    1
     73
     74#define NH_3D_DBBP                         1
    7375#endif
    7476
     
    328330#endif
    329331///// ***** DEPTH BASED BLOCK PARTITIONING *********
    330 #if H_3D_DBBP
     332#if NH_3D_DBBP
    331333#define DBBP_INVALID_SHORT                (-4)
    332334#define DBBP_PACK_MODE               SIZE_2NxN
  • branches/HTM-14.1-update-dev4-RWTH/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r1200 r1222  
    34003400
    34013401#endif
    3402 #if H_3D_DBBP
     3402#if NH_3D_DBBP
    34033403  Void TDecCavlc::parseDBBPFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
    34043404  {
  • branches/HTM-14.1-update-dev4-RWTH/source/Lib/TLibDecoder/TDecCAVLC.h

    r1200 r1222  
    127127  Void  parseSDCFlag        ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
    128128#endif
    129 #if H_3D_DBBP
     129#if NH_3D_DBBP
    130130  Void  parseDBBPFlag       ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
    131131#endif
  • branches/HTM-14.1-update-dev4-RWTH/source/Lib/TLibDecoder/TDecCu.cpp

    r1217 r1222  
    5252  m_ppcYuvReco = NULL;
    5353  m_ppcCU      = NULL;
    54 #if H_3D_DBBP
     54#if NH_3D_DBBP
    5555  m_ppcYuvRecoDBBP = NULL;
    5656#endif
     
    8181  m_ppcYuvReco = new TComYuv*[m_uiMaxDepth-1];
    8282  m_ppcCU      = new TComDataCU*[m_uiMaxDepth-1];
    83 #if H_3D_DBBP
     83#if NH_3D_DBBP
    8484  m_ppcYuvRecoDBBP = new TComYuv*[m_uiMaxDepth-1];
    8585#endif
     
    9595    m_ppcYuvReco[ui] = new TComYuv;    m_ppcYuvReco[ui]->create( uiWidth, uiHeight, chromaFormatIDC );
    9696    m_ppcCU     [ui] = new TComDataCU; m_ppcCU     [ui]->create( chromaFormatIDC, uiNumPartitions, uiWidth, uiHeight, true, uiMaxWidth >> (m_uiMaxDepth - 1) );
    97 #if H_3D_DBBP
    98     m_ppcYuvRecoDBBP[ui] = new TComYuv;    m_ppcYuvRecoDBBP[ui]->create( uiWidth, uiHeight );
     97#if NH_3D_DBBP
     98    m_ppcYuvRecoDBBP[ui] = new TComYuv;    m_ppcYuvRecoDBBP[ui]->create( uiWidth, uiHeight, chromaFormatIDC );
    9999#endif
    100100}
     
    119119    m_ppcYuvReco[ui]->destroy(); delete m_ppcYuvReco[ui]; m_ppcYuvReco[ui] = NULL;
    120120    m_ppcCU     [ui]->destroy(); delete m_ppcCU     [ui]; m_ppcCU     [ui] = NULL;
    121 #if H_3D_DBBP
     121#if NH_3D_DBBP
    122122    m_ppcYuvRecoDBBP[ui]->destroy(); delete m_ppcYuvRecoDBBP[ui]; m_ppcYuvRecoDBBP[ui] = NULL;
    123123#endif
     
    127127  delete [] m_ppcYuvReco; m_ppcYuvReco = NULL;
    128128  delete [] m_ppcCU     ; m_ppcCU      = NULL;
    129 #if H_3D_DBBP
     129#if NH_3D_DBBP
    130130  delete [] m_ppcYuvRecoDBBP; m_ppcYuvRecoDBBP = NULL;
    131131#endif
     
    616616  {
    617617    case MODE_INTER:
    618 #if H_3D_DBBP
     618#if NH_3D_DBBP
    619619    if( m_ppcCU[uiDepth]->getDBBPFlag(0) )
    620620    {
     
    636636      }
    637637#endif
    638 #if H_3D_DBBP
     638#if NH_3D_DBBP
    639639    }
    640640#endif
     
    844844#endif
    845845
    846 #if H_3D_DBBP
     846#if NH_3D_DBBP
    847847Void TDecCu::xReconInterDBBP( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
    848848{
     
    850850  AOF(!pcCU->getSlice()->isIntra());
    851851  PartSize ePartSize = pcCU->getPartitionSize( 0 );
     852 
     853  Int bitDepthY = pcCU->getSlice()->getSPS()->getBitDepth(CHANNEL_TYPE_LUMA);
    852854 
    853855  // get collocated depth block
     
    870872 
    871873  // first, extract the two sets of motion parameters
    872   UInt uiPUOffset = ( g_auiPUOffset[UInt( ePartSize )] << ( ( pcCU->getSlice()->getSPS()->getMaxCUDepth() - uiDepth ) << 1 ) ) >> 4;
     874  UInt uiPUOffset = ( g_auiPUOffset[UInt( ePartSize )] << ( ( pcCU->getSlice()->getSPS()->getMaxTotalCUDepth() - uiDepth ) << 1 ) ) >> 4;
    873875  for( UInt uiSegment = 0; uiSegment < 2; uiSegment++ )
    874876  {
     
    883885    }
    884886   
     887#if H_3D
    885888    AOF( pcCU->getARPW(uiPartAddr) == 0 );
    886889    AOF( pcCU->getICFlag(uiPartAddr) == false );
    887890    AOF( pcCU->getSPIVMPFlag(uiPartAddr) == false );
    888891    AOF( pcCU->getVSPFlag(uiPartAddr) == 0 );
     892#endif
    889893  }
    890894 
     
    926930 
    927931  // reconstruct final prediction signal by combining both segments
    928   m_pcPrediction->combineSegmentsWithMask(apSegPredYuv, m_ppcYuvReco[uiDepth], pMask, pcCU->getWidth(0), pcCU->getHeight(0), 0, ePartSize);
     932  m_pcPrediction->combineSegmentsWithMask(apSegPredYuv, m_ppcYuvReco[uiDepth], pMask, pcCU->getWidth(0), pcCU->getHeight(0), 0, ePartSize, bitDepthY);
    929933
    930934  // inter recon
    931   xDecodeInterTexture( pcCU, 0, uiDepth );
     935  xDecodeInterTexture( pcCU, uiDepth );
    932936 
    933937  // clip for only non-zero cbp case
    934   if  ( ( pcCU->getCbf( 0, TEXT_LUMA ) ) || ( pcCU->getCbf( 0, TEXT_CHROMA_U ) ) || ( pcCU->getCbf(0, TEXT_CHROMA_V ) ) )
    935   {
    936     m_ppcYuvReco[uiDepth]->addClip( m_ppcYuvReco[uiDepth], m_ppcYuvResi[uiDepth], 0, pcCU->getWidth( 0 ) );
     938  if  ( ( pcCU->getCbf( 0, COMPONENT_Y ) ) || ( pcCU->getCbf( 0, COMPONENT_Cb ) ) || ( pcCU->getCbf(0, COMPONENT_Cr ) ) )
     939  {
     940    m_ppcYuvReco[uiDepth]->addClip( m_ppcYuvReco[uiDepth], m_ppcYuvResi[uiDepth], 0, pcCU->getWidth( 0 ), pcCU->getSlice()->getSPS()->getBitDepths() );
    937941  }
    938942  else
  • branches/HTM-14.1-update-dev4-RWTH/source/Lib/TLibDecoder/TDecCu.h

    r1200 r1222  
    6262  TComDataCU**        m_ppcCU;            ///< CU data array
    6363
    64 #if H_3D_DBBP
     64#if NH_3D_DBBP
    6565  TComYuv**           m_ppcYuvRecoDBBP;
    6666#endif
     
    102102  Void xReconInter              ( TComDataCU* pcCU, UInt uiDepth );
    103103
    104 #if H_3D_DBBP
     104#if NH_3D_DBBP
    105105  Void xReconInterDBBP          ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
    106106#endif
  • branches/HTM-14.1-update-dev4-RWTH/source/Lib/TLibDecoder/TDecEntropy.cpp

    r1200 r1222  
    181181  {
    182182    decodePUWise( pcCU, uiAbsPartIdx, uiDepth, pcSubCU );
     183   
     184    decodeDBBPFlag( pcCU, uiAbsPartIdx, uiDepth );
    183185  }
    184186}
     
    292294
    293295  ////// Parse CUs extension syntax
    294   decodeDBBPFlag( pcCU, uiAbsPartIdx, uiDepth );
    295296  decodeSDCFlag ( pcCU, uiAbsPartIdx, uiDepth );
    296297
     
    308309    {
    309310      UInt uiMergeIndex = pcCU->getMergeIndex(uiSubPartIdx);
    310 #if H_3D_DBBP
     311#if NH_3D_DBBP
    311312      if ( pcCU->getSlice()->getPPS()->getLog2ParallelMergeLevelMinus2() && ePartSize != SIZE_2Nx2N && pcSubCU->getWidth( 0 ) <= 8 && pcCU->getDBBPFlag(uiAbsPartIdx) == false )
    312313#else
     
    395396          pcCU->getCUMvField( RefPicList( uiRefListIdx ) )->setAllMvField( cMvFieldNeighbours[ 2*uiMergeIndex + uiRefListIdx ], ePartSize, uiSubPartIdx, uiDepth, uiPartIdx );
    396397#if H_3D_VSP
    397 #if H_3D_DBBP
     398#if NH_3D_DBBP
    398399          if( pcCU->getVSPFlag( uiSubPartIdx ) != 0 && !pcCU->getDBBPFlag( uiAbsPartIdx ) )
    399400#else
     
    10601061}
    10611062#endif
    1062 #if H_3D_DBBP
     1063#if NH_3D_DBBP
    10631064Void TDecEntropy::decodeDBBPFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
    10641065{
  • branches/HTM-14.1-update-dev4-RWTH/source/Lib/TLibDecoder/TDecEntropy.h

    r1200 r1222  
    9595  virtual Void parseSDCFlag       ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) = 0;
    9696#endif
    97 #if H_3D_DBBP
     97#if NH_3D_DBBP
    9898  virtual Void parseDBBPFlag      ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) = 0;
    9999#endif
     
    183183  Void decodeSDCFlag           ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
    184184#endif
    185 #if H_3D_DBBP
     185#if NH_3D_DBBP
    186186  Void decodeDBBPFlag          ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
    187187#endif
  • branches/HTM-14.1-update-dev4-RWTH/source/Lib/TLibDecoder/TDecSbac.cpp

    r1200 r1222  
    119119, m_cSDCFlagSCModel                  ( 1,             1,  NUM_SDC_FLAG_CTX                 , m_contextModels + m_numContextModels, m_numContextModels)
    120120#endif
    121 #if H_3D_DBBP
     121#if NH_3D_DBBP
    122122, m_cDBBPFlagSCModel             ( 1,             1,                 DBBP_NUM_FLAG_CTX           , m_contextModels + m_numContextModels, m_numContextModels)
    123123#endif
     
    210210  m_cSDCFlagSCModel.initBuffer            ( sliceType, qp, (UChar*)INIT_SDC_FLAG );
    211211#endif
    212 #if H_3D_DBBP
     212#if NH_3D_DBBP
    213213  m_cDBBPFlagSCModel.initBuffer              ( sliceType, qp, (UChar*)INIT_DBBP_FLAG );
    214214#endif
     
    259259#if H_3D_DIM_SDC
    260260  m_cSDCFlagSCModel.initBuffer            ( eSliceType, iQp, (UChar*)INIT_SDC_FLAG );
    261 #endif
    262 #if H_3D_DBBP
    263   m_cDBBPFlagSCModel.initBuffer              ( eSliceType, iQp, (UChar*)INIT_DBBP_FLAG );
    264261#endif
    265262
     
    25412538#endif
    25422539
    2543 #if H_3D_DBBP
     2540#if NH_3D_DBBP
    25442541Void TDecSbac::parseDBBPFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
    25452542{
     
    25532550  PartSize ePartSize = pcCU->getPartitionSize( uiAbsPartIdx );
    25542551  AOF( ePartSize == SIZE_2NxN || ePartSize == SIZE_Nx2N );
    2555   UInt uiPUOffset = ( g_auiPUOffset[UInt( ePartSize )] << ( ( pcCU->getSlice()->getSPS()->getMaxCUDepth() - uiDepth ) << 1 ) ) >> 4;
     2552  UInt uiPUOffset = ( g_auiPUOffset[UInt( ePartSize )] << ( ( pcCU->getSlice()->getSPS()->getMaxTotalCUDepth() - uiDepth ) << 1 ) ) >> 4;
    25562553  pcCU->setDBBPFlagSubParts(uiSymbol, uiAbsPartIdx, 0, uiDepth);
    25572554  pcCU->setDBBPFlagSubParts(uiSymbol, uiAbsPartIdx+uiPUOffset, 1, uiDepth);
  • branches/HTM-14.1-update-dev4-RWTH/source/Lib/TLibDecoder/TDecSbac.h

    r1200 r1222  
    121121  Void  parseSDCFlag         ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
    122122#endif
    123 #if H_3D_DBBP
     123#if NH_3D_DBBP
    124124  Void parseDBBPFlag        ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
    125125#endif
     
    240240  ContextModel3DBuffer m_cSDCFlagSCModel;
    241241#endif
    242 #if H_3D_DBBP
     242#if NH_3D_DBBP
    243243  ContextModel3DBuffer m_cDBBPFlagSCModel;
    244244#endif
  • branches/HTM-14.1-update-dev4-RWTH/source/Lib/TLibEncoder/TEncCavlc.cpp

    r1200 r1222  
    29012901#endif
    29022902   
    2903 #if H_3D_DBBP
     2903#if NH_3D_DBBP
    29042904Void TEncCavlc::codeDBBPFlag    ( TComDataCU* pcCU, UInt uiAbsPartIdx )
    29052905{
  • branches/HTM-14.1-update-dev4-RWTH/source/Lib/TLibEncoder/TEncCavlc.h

    r1200 r1222  
    136136  Void codeSDCFlag       ( TComDataCU* pcCU, UInt uiAbsPartIdx );
    137137#endif
    138 #if H_3D_DBBP
     138#if NH_3D_DBBP
    139139  Void codeDBBPFlag       ( TComDataCU* pcCU, UInt uiAbsPartIdx );
    140140#endif
  • branches/HTM-14.1-update-dev4-RWTH/source/Lib/TLibEncoder/TEncCu.cpp

    r1217 r1222  
    7979  m_ppcRecoYuvTemp = new TComYuv*[m_uhTotalDepth-1];
    8080  m_ppcOrigYuv     = new TComYuv*[m_uhTotalDepth-1];
    81 #if H_3D_DBBP
     81#if NH_3D_DBBP
    8282  m_ppcOrigYuvDBBP = new TComYuv*[m_uhTotalDepth-1];
    8383#endif
     
    105105
    106106    m_ppcOrigYuv    [i] = new TComYuv; m_ppcOrigYuv    [i]->create(uiWidth, uiHeight, chromaFormat);
    107 #if H_3D_DBBP
    108     m_ppcOrigYuvDBBP[i] = new TComYuv; m_ppcOrigYuvDBBP[i]->create(uiWidth, uiHeight);
     107#if NH_3D_DBBP
     108    m_ppcOrigYuvDBBP[i] = new TComYuv; m_ppcOrigYuvDBBP[i]->create(uiWidth, uiHeight, chromaFormat);
    109109#endif
    110110
     
    180180      m_ppcOrigYuv[i]->destroy();     delete m_ppcOrigYuv[i];     m_ppcOrigYuv[i] = NULL;
    181181    }
    182 #if H_3D_DBBP
     182#if NH_3D_DBBP
    183183    if(m_ppcOrigYuvDBBP[i])
    184184    {
     
    240240    m_ppcOrigYuv = NULL;
    241241  }
    242 #if H_3D_DBBP
     242#if NH_3D_DBBP
    243243  if(m_ppcOrigYuvDBBP)
    244244  {
     
    693693            rpcTempCU->setDvInfoSubParts(DvInfo, 0, uiDepth);
    694694#endif
    695 #if H_3D_DBBP
     695#if NH_3D_DBBP
    696696            if( rpcTempCU->getSlice()->getDepthBasedBlkPartFlag() && rpcTempCU->getSlice()->getDefaultRefViewIdxAvailableFlag() )
    697697            {
     
    16111611  // prediction Info ( Intra : direction mode, Inter : Mv, reference idx )
    16121612  m_pcEntropyCoder->encodePredInfo( pcCU, uiAbsPartIdx );
    1613 #if H_3D
     1613#if NH_3D_DBBP
    16141614  m_pcEntropyCoder->encodeDBBPFlag( pcCU, uiAbsPartIdx );
    16151615#endif
     
    23842384}
    23852385
    2386 #if H_3D_DBBP
     2386#if NH_3D_DBBP
    23872387Void TEncCu::xInvalidateOriginalSegments( TComYuv* pOrigYuv, TComYuv* pOrigYuvTemp, Bool* pMask, UInt uiValidSegment )
    23882388{
    2389   UInt  uiWidth     = pOrigYuv->getWidth ( );
    2390   UInt  uiHeight    = pOrigYuv->getHeight( );
    2391   Pel*  piSrc       = pOrigYuv->getLumaAddr( );
    2392   UInt  uiSrcStride = pOrigYuv->getStride();
    2393   Pel*  piDst       = pOrigYuvTemp->getLumaAddr( );
    2394   UInt  uiDstStride = pOrigYuvTemp->getStride();
     2389  UInt  uiWidth     = pOrigYuv->getWidth (COMPONENT_Y);
     2390  UInt  uiHeight    = pOrigYuv->getHeight(COMPONENT_Y);
     2391  Pel*  piSrc       = pOrigYuv->getAddr(COMPONENT_Y);
     2392  UInt  uiSrcStride = pOrigYuv->getStride(COMPONENT_Y);
     2393  Pel*  piDst       = pOrigYuvTemp->getAddr(COMPONENT_Y);
     2394  UInt  uiDstStride = pOrigYuvTemp->getStride(COMPONENT_Y);
    23952395 
    23962396  UInt  uiMaskStride= MAX_CU_SIZE;
     
    24172417 
    24182418  // now invalidate chroma
    2419   Pel*  piSrcU       = pOrigYuv->getCbAddr();
    2420   Pel*  piSrcV       = pOrigYuv->getCrAddr();
    2421   UInt  uiSrcStrideC = pOrigYuv->getCStride();
    2422   Pel*  piDstU       = pOrigYuvTemp->getCbAddr( );
    2423   Pel*  piDstV       = pOrigYuvTemp->getCrAddr( );
    2424   UInt  uiDstStrideC = pOrigYuvTemp->getCStride();
     2419  Pel*  piSrcU       = pOrigYuv->getAddr(COMPONENT_Cb);
     2420  Pel*  piSrcV       = pOrigYuv->getAddr(COMPONENT_Cr);
     2421  UInt  uiSrcStrideC = pOrigYuv->getStride(COMPONENT_Cb);
     2422  Pel*  piDstU       = pOrigYuvTemp->getAddr(COMPONENT_Cb);
     2423  Pel*  piDstV       = pOrigYuvTemp->getAddr(COMPONENT_Cr);
     2424  UInt  uiDstStrideC = pOrigYuvTemp->getStride(COMPONENT_Cb);
    24252425  pMask = pMaskStart;
    24262426 
     
    24432443  }
    24442444}
    2445 
     2445#endif
     2446
     2447#if H_3D_DIS
    24462448Void TEncCu::xCheckRDCostDIS( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize eSize )
    24472449{
     
    25172519  xCheckBestMode(rpcBestCU, rpcTempCU, uiDepth);
    25182520}
    2519 
     2521#endif
     2522
     2523#if NH_3D_DBBP
    25202524Void TEncCu::xCheckRDCostInterDBBP( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, Bool bUseMRG )
    25212525{
     
    25392543  AOF( uiWidth == uiHeight );
    25402544 
    2541 #if H_3D_DBBP
     2545#if NH_3D_DBBP
    25422546  // Is this correct here, was under the macro SEC_DBBP_DISALLOW_8x8_I0078, however the function is related to Single Depth Mode
    25432547  if(uiWidth <= 8)
     
    25912595    rpcTempCU->getDBBPTmpData()->eVirtualPartSize = eVirtualPartSize;
    25922596    rpcTempCU->getDBBPTmpData()->uiVirtualPartIndex = uiSegment;
    2593     m_pcPredSearch->predInterSearch( rpcTempCU, m_ppcOrigYuvDBBP[uhDepth], apPredYuv[uiSegment], m_ppcResiYuvTemp[uhDepth], m_ppcResiYuvTemp[uhDepth], false, false, bUseMRG );
     2597
     2598    m_pcPredSearch->predInterSearch( rpcTempCU, m_ppcOrigYuvDBBP[uhDepth], apPredYuv[uiSegment], m_ppcResiYuvTemp[uhDepth], m_ppcResiYuvTemp[uhDepth], false, bUseMRG );
    25942599    m_pcRdCost->setUseMask(false);
    25952600   
     
    25992604    pDBBPTmpData->abMergeFlag[uiSegment] = rpcTempCU->getMergeFlag(0);
    26002605    pDBBPTmpData->auhMergeIndex[uiSegment] = rpcTempCU->getMergeIndex(0);
    2601    
     2606
     2607#if NH_3D_VSP
    26022608    AOF( rpcTempCU->getSPIVMPFlag(0) == false );
    26032609    AOF( rpcTempCU->getVSPFlag(0) == 0 );
     2610#endif
    26042611   
    26052612    for ( UInt uiRefListIdx = 0; uiRefListIdx < 2; uiRefListIdx++ )
     
    26202627  rpcTempCU->setPredModeSubParts  ( MODE_INTER, 0, uhDepth );
    26212628 
    2622   UInt uiPUOffset = ( g_auiPUOffset[UInt( eVirtualPartSize )] << ( ( rpcTempCU->getSlice()->getSPS()->getMaxCUDepth() - uhDepth ) << 1 ) ) >> 4;
     2629  UInt uiPUOffset = ( g_auiPUOffset[UInt( eVirtualPartSize )] << ( ( rpcTempCU->getSlice()->getSPS()->getMaxTotalCUDepth() - uhDepth ) << 1 ) ) >> 4;
    26232630  for( UInt uiSegment = 0; uiSegment < 2; uiSegment++ )
    26242631  {
     
    26462653 
    26472654  // reconstruct final prediction signal by combining both segments
    2648   m_pcPredSearch->combineSegmentsWithMask(apPredYuv, m_ppcPredYuvTemp[uhDepth], pMask, uiWidth, uiHeight, 0, eVirtualPartSize);
     2655  Int bitDepthY = rpcTempCU->getSlice()->getSPS()->getBitDepth(CHANNEL_TYPE_LUMA);
     2656  m_pcPredSearch->combineSegmentsWithMask(apPredYuv, m_ppcPredYuvTemp[uhDepth], pMask, uiWidth, uiHeight, 0, eVirtualPartSize, bitDepthY);
    26492657  m_pcPredSearch->encodeResAndCalcRdInterCU( rpcTempCU, m_ppcOrigYuv[uhDepth], m_ppcPredYuvTemp[uhDepth], m_ppcResiYuvTemp[uhDepth], m_ppcResiYuvBest[uhDepth], m_ppcRecoYuvTemp[uhDepth], false );
    26502658 
  • branches/HTM-14.1-update-dev4-RWTH/source/Lib/TLibEncoder/TEncCu.h

    r1200 r1222  
    8282  TComYuv**               m_ppcOrigYuv;     ///< Original Yuv for each depth
    8383
    84 #if H_3D_DBBP
     84#if NH_3D_DBBP
    8585  TComYuv**               m_ppcOrigYuvDBBP;
    8686#endif
     
    155155  Void  xCheckRDCostInter   ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize ePartSize  );
    156156#endif
    157 #if H_3D_DBBP
     157#if NH_3D_DBBP
    158158  Void  xInvalidateOriginalSegments( TComYuv* pOrigYuv, TComYuv* pOrigYuvTemp, Bool* pMask, UInt uiValidSegment );
    159159  Void  xCheckRDCostInterDBBP( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, Bool bUseMRG = false );
  • branches/HTM-14.1-update-dev4-RWTH/source/Lib/TLibEncoder/TEncEntropy.cpp

    r1200 r1222  
    870870
    871871#endif
    872 #if H_3D_DBBP
     872#if NH_3D_DBBP
    873873Void TEncEntropy::encodeDBBPFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD )
    874874{
    875   if( pcCU->getSlice()->getDepthBasedBlkPartFlag() &&
     875  if( bRD )
     876  {
     877    uiAbsPartIdx = 0;
     878  }
     879 
     880  if( pcCU->getSlice()->getDepthBasedBlkPartFlag() &&
    876881    ( pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_2NxN ||
    877882      pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_Nx2N) &&
     
    879884      pcCU->getSlice()->getDefaultRefViewIdxAvailableFlag() )
    880885  {
    881     if( bRD )
    882     {
    883       uiAbsPartIdx = 0;
    884     }
    885886    m_pcEntropyCoderIf->codeDBBPFlag( pcCU, uiAbsPartIdx );
    886887  }
  • branches/HTM-14.1-update-dev4-RWTH/source/Lib/TLibEncoder/TEncEntropy.h

    r1200 r1222  
    9494  virtual Void codeSDCFlag       ( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0;
    9595#endif
    96 #if H_3D_DBBP
     96#if NH_3D_DBBP
    9797  virtual Void codeDBBPFlag      ( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0;
    9898#endif
     
    183183  Void encodeSDCFlag      ( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD = false );
    184184#endif
    185 #if H_3D_DBBP
     185#if NH_3D_DBBP
    186186  Void encodeDBBPFlag     ( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD = false );
    187187#endif
  • branches/HTM-14.1-update-dev4-RWTH/source/Lib/TLibEncoder/TEncSbac.cpp

    r1200 r1222  
    114114, m_cSDCFlagSCModel                    ( 1,             1,                       NUM_SDC_FLAG_CTX                    , m_contextModels + m_numContextModels, m_numContextModels)
    115115#endif                                                                                                         
    116 #if H_3D_DBBP                                                                                                 
     116#if NH_3D_DBBP
    117117, m_cDBBPFlagSCModel                   ( 1,             1,                       DBBP_NUM_FLAG_CTX                   , m_contextModels + m_numContextModels, m_numContextModels)
    118118#endif
     
    194194  m_cSDCFlagSCModel.initBuffer                    ( eSliceType, iQp, (UChar*)INIT_SDC_FLAG );
    195195#endif                                           
    196 #if H_3D_DBBP                                   
     196#if NH_3D_DBBP
    197197  m_cDBBPFlagSCModel.initBuffer                   ( eSliceType, iQp, (UChar*)INIT_DBBP_FLAG );
    198198#endif
     
    244244      curCost += m_cSDCFlagSCModel.calcCost                    ( curSliceType, qp, (UChar*)INIT_SDC_FLAG );
    245245#endif                                                     
    246 #if H_3D_DBBP                                             
     246#if NH_3D_DBBP
    247247      curCost += m_cDBBPFlagSCModel.calcCost                   ( curSliceType, qp, (UChar*)INIT_DBBP_FLAG );
    248248#endif
     
    321321  m_cSDCFlagSCModel.initBuffer              ( eSliceType, iQp, (UChar*)INIT_SDC_FLAG );
    322322#endif
    323 #if H_3D_DBBP
    324   m_cDBBPFlagSCModel.initBuffer              ( eSliceType, iQp, (UChar*)INIT_DBBP_FLAG );
    325 #endif
    326323
    327324
     
    26502647#endif
    26512648
    2652 #if H_3D_DBBP
     2649#if NH_3D_DBBP
    26532650Void TEncSbac::codeDBBPFlag( TComDataCU* pcCU, UInt uiAbsPartIdx )
    26542651{
  • branches/HTM-14.1-update-dev4-RWTH/source/Lib/TLibEncoder/TEncSbac.h

    r1200 r1222  
    150150  Void codeSDCFlag       ( TComDataCU* pcCU, UInt uiAbsPartIdx );
    151151#endif
    152 #if H_3D_DBBP
     152#if NH_3D_DBBP
    153153  Void codeDBBPFlag      ( TComDataCU* pcCU, UInt uiAbsPartIdx );
    154154#endif
     
    262262  ContextModel3DBuffer m_cSDCFlagSCModel;
    263263#endif
    264 #if H_3D_DBBP
     264#if NH_3D_DBBP
    265265  ContextModel3DBuffer m_cDBBPFlagSCModel;
    266266#endif
  • branches/HTM-14.1-update-dev4-RWTH/source/Lib/TLibEncoder/TEncSearch.cpp

    r1200 r1222  
    38843884  UInt uiDepth = pcCU->getDepth( uiAbsPartIdx );
    38853885
    3886 #if H_3D_DBBP
     3886#if NH_3D_DBBP
    38873887  DbbpTmpData* pDBBPTmpData = pcCU->getDBBPTmpData();
    38883888  if( pcCU->getDBBPFlag(0) )
     
    38913891    AOF( iPUIdx == 0 );
    38923892    AOF( pcCU->getPartitionSize(0) == SIZE_2Nx2N );
    3893     AOF( pDBBPTmpData->eVirtualPartSize != SIZE_NONE );
     3893    AOF( pDBBPTmpData->eVirtualPartSize != NUMBER_OF_PART_SIZES );
    38943894   
    38953895    // temporary change of partition size for candidate derivation
     
    39163916
    39173917  PartSize partSize = pcCU->getPartitionSize( 0 );
    3918 #if H_3D_DBBP
     3918#if NH_3D_DBBP
    39193919  if ( pcCU->getSlice()->getPPS()->getLog2ParallelMergeLevelMinus2() && partSize != SIZE_2Nx2N && pcCU->getWidth( 0 ) <= 8 && pcCU->getDBBPFlag(0) == false )
    39203920#else
     
    39783978  xRestrictBipredMergeCand( pcCU, iPUIdx, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand );
    39793979
    3980 #if H_3D_DBBP
     3980#if NH_3D_DBBP
    39813981  if( pcCU->getDBBPFlag(0) )
    39823982  {
     
    40254025#endif
    40264026#if H_3D_VSP
    4027 #if H_3D_DBBP
     4027#if NH_3D_DBBP
    40284028      if ( vspFlag[uiMergeCand] && !pcCU->getDBBPFlag(0) )
    40294029#else
     
    45504550    } // end if bTestNormalMC
    45514551#endif
    4552 #if H_3D_DBBP
     4552#if NH_3D_DBBP
    45534553    // test merge mode for DBBP (2Nx2N)
    45544554    if ( pcCU->getPartitionSize( uiPartAddr ) != SIZE_2Nx2N || pcCU->getDBBPFlag(0) )
     
    46494649#endif
    46504650#if H_3D_VSP
    4651 #if H_3D_DBBP
     4651#if NH_3D_DBBP
    46524652        if ( vspFlag[uiMRGIndex] && !pcCU->getDBBPFlag(uiPartAddr) )
    46534653#else
     
    47474747  {
    47484748
    4749 #if H_3D_DBBP
     4749#if NH_3D_DBBP
    47504750    DbbpTmpData* pDBBPTmpData = pcCU->getDBBPTmpData();
    47514751    if( pcCU->getDBBPFlag(0) )
     
    47544754      AOF( uiPartIdx == 0 );
    47554755      AOF( pcCU->getPartitionSize(0) == SIZE_2Nx2N );
    4756       AOF( pDBBPTmpData->eVirtualPartSize != SIZE_NONE );
     4756      AOF( pDBBPTmpData->eVirtualPartSize != NUMBER_OF_PART_SIZES );
    47574757      AOF( iRoiWidth == iRoiHeight );
    47584758     
     
    47794779
    47804780    pcCU->fillMvpCand( uiPartIdx, uiPartAddr, eRefPicList, iRefIdx, pcAMVPInfo );
    4781 #if H_3D_DBBP
     4781#if NH_3D_DBBP
    47824782    if( pcCU->getDBBPFlag(0) )
    47834783    {
     
    71307130    m_pcEntropyCoder->encodeICFlag( pcCU, 0, true );
    71317131#endif
    7132 #if H_3D
     7132#if NH_3D_DBBP
    71337133    m_pcEntropyCoder->encodeDBBPFlag( pcCU, 0, true );
    71347134#endif
Note: See TracChangeset for help on using the changeset viewer.