Ticket #1401: IBC_CIP_FIX.patch

File IBC_CIP_FIX.patch, 19.5 KB (added by xiuxx, 9 years ago)

CIP patch over SCM4.0

  • source/Lib/TLibCommon/TComDataCU.cpp

     
    41014101  }
    41024102#endif
    41034103
     4104#if CIP_IBC_UNIFICATION
     4105  if ( getSlice()->getPPS()->getConstrainedIntraPred() && (getSlice()->getRefPic(eRefPicList, riRefIdx)->getPOC() == getSlice()->getPOC()) )
     4106  {
     4107    return false;
     4108  }
     4109#endif
    41044110  eColRefPicList = getSlice()->getCheckLDC() ? eRefPicList : RefPicList(getSlice()->getColFromL0Flag());
    41054111
    41064112  Int iColRefIdx = pColCtu->getCUMvField(RefPicList(eColRefPicList))->getRefIdx(uiAbsPartAddr);
  • source/Lib/TLibCommon/TComPattern.cpp

     
    562562  TComDataCU* pcCUAboveLeft = pcCU->getPUAboveLeft( uiPartAboveLeft, uiPartIdxLT );
    563563  if(pcCU->getSlice()->getPPS()->getConstrainedIntraPred())
    564564  {
     565#if CIP_IBC_UNIFICATION
     566    bAboveLeftFlag = ( pcCUAboveLeft && (pcCUAboveLeft->isConstrainedIntra( uiPartAboveLeft ) || pcCUAboveLeft->isIntraBC( uiPartAboveLeft )) );
     567#else
    565568    bAboveLeftFlag = ( pcCUAboveLeft && pcCUAboveLeft->isConstrainedIntra( uiPartAboveLeft ) );
     569#endif
    566570  }
    567571  else
    568572  {
     
    585589    TComDataCU* pcCUAbove = pcCU->getPUAbove( uiPartAbove, g_auiRasterToZscan[uiRasterPart] );
    586590    if(pcCU->getSlice()->getPPS()->getConstrainedIntraPred())
    587591    {
     592#if CIP_IBC_UNIFICATION
     593      if ( pcCUAbove && (pcCUAbove->isConstrainedIntra( uiPartAbove ) || pcCUAbove->isIntraBC( uiPartAbove )) )
     594#else
    588595      if ( pcCUAbove && pcCUAbove->isConstrainedIntra( uiPartAbove ) )
     596#endif
    589597      {
    590598        iNumIntra++;
    591599        *pbValidFlags = true;
     
    626634    TComDataCU* pcCULeft = pcCU->getPULeft( uiPartLeft, g_auiRasterToZscan[uiRasterPart] );
    627635    if(pcCU->getSlice()->getPPS()->getConstrainedIntraPred())
    628636    {
     637#if CIP_IBC_UNIFICATION
     638      if ( pcCULeft && (pcCULeft->isConstrainedIntra( uiPartLeft ) || pcCULeft->isIntraBC( uiPartLeft )) )
     639#else
    629640      if ( pcCULeft && pcCULeft->isConstrainedIntra( uiPartLeft ) )
     641#endif
    630642      {
    631643        iNumIntra++;
    632644        *pbValidFlags = true;
     
    666678    TComDataCU* pcCUAboveRight = pcCU->getPUAboveRightAdi( uiPartAboveRight, uiPartIdxRT, uiOffset );
    667679    if(pcCU->getSlice()->getPPS()->getConstrainedIntraPred())
    668680    {
     681#if CIP_IBC_UNIFICATION
     682      if ( pcCUAboveRight && (pcCUAboveRight->isConstrainedIntra( uiPartAboveRight ) || pcCUAboveRight->isIntraBC( uiPartAboveRight )) )
     683#else
    669684      if ( pcCUAboveRight && pcCUAboveRight->isConstrainedIntra( uiPartAboveRight ) )
     685#endif
    670686      {
    671687        iNumIntra++;
    672688        *pbValidFlags = true;
     
    706722    TComDataCU* pcCUBelowLeft = pcCU->getPUBelowLeftAdi( uiPartBelowLeft, uiPartIdxLB, uiOffset );
    707723    if(pcCU->getSlice()->getPPS()->getConstrainedIntraPred())
    708724    {
     725#if CIP_IBC_UNIFICATION
     726      if ( pcCUBelowLeft && (pcCUBelowLeft->isConstrainedIntra( uiPartBelowLeft ) || pcCUBelowLeft->isIntraBC( uiPartBelowLeft )) )
     727#else
    709728      if ( pcCUBelowLeft && pcCUBelowLeft->isConstrainedIntra( uiPartBelowLeft ) )
     729#endif
    710730      {
    711731        iNumIntra++;
    712732        *pbValidFlags = true;
  • source/Lib/TLibCommon/TypeDef.h

     
    4141#include <vector>
    4242#include <cstdlib>
    4343
     44#define CIP_IBC_UNIFICATION   1
     45
    4446//! \ingroup TLibCommon
    4547//! \{
    4648
  • source/Lib/TLibEncoder/TEncCu.cpp

     
    18381838            continue;
    18391839          }
    18401840
     1841#if CIP_IBC_UNIFICATION
     1842          if ( !m_pcPredSearch->isBlockVectorValid( rpcTempCU, xPos, yPos, width, height,
     1843            rpcTempCU->getSlice()->getSPS()->getPicWidthInLumaSamples(), rpcTempCU->getSlice()->getSPS()->getPicHeightInLumaSamples(),
     1844            0, 0, (cMvFieldNeighbours[uiMergeCand<<1].getHor() >> 2), (cMvFieldNeighbours[uiMergeCand<<1].getVer()>>2), sps.getMaxCUWidth() ) )
     1845          {
     1846            continue;
     1847          }
     1848#else
    18411849          if ( !m_pcPredSearch->isBlockVectorValid( xPos, yPos, width, height,
    18421850            rpcTempCU->getSlice()->getSPS()->getPicWidthInLumaSamples(), rpcTempCU->getSlice()->getSPS()->getPicHeightInLumaSamples(),
    18431851            0, 0, (cMvFieldNeighbours[uiMergeCand<<1].getHor() >> 2), (cMvFieldNeighbours[uiMergeCand<<1].getVer()>>2), sps.getMaxCUWidth() ) )
     
    18441852          {
    18451853            continue;
    18461854          }
     1855#endif
    18471856
    18481857          // set MC parameters
    18491858          rpcTempCU->setPredModeSubParts( MODE_INTER, 0, uhDepth ); // interprets depth relative to LCU level
  • source/Lib/TLibEncoder/TEncSearch.cpp

     
    51445144}
    51455145
    51465146#if SCM_T0227_INTRABC_SIG_UNIFICATION
     5147#if CIP_IBC_UNIFICATION
     5148Bool TEncSearch::isBlockVectorValid( TComDataCU* pcCU, Int xPos, Int yPos, Int width, Int height, Int picWidth, Int picHeight, Int xStartInCU, Int yStartInCU, Int xBv, Int yBv, Int ctuSize )
     5149#else
    51475150Bool TEncSearch::isBlockVectorValid( Int xPos, Int yPos, Int width, Int height, Int picWidth, Int picHeight, Int xStartInCU, Int yStartInCU, Int xBv, Int yBv, Int ctuSize )
     5151#endif
    51485152{
    51495153  static const Int s_floorLog2[65] =
    51505154  {
     
    51965200    }
    51975201    else
    51985202    {
     5203#if CIP_IBC_UNIFICATION
     5204      if(!pcCU->getSlice()->getPPS()->getConstrainedIntraPred() || xCIPIBCSearchPruning(pcCU, xPos + xBv, yPos + yBv, width, height))
     5205      {
     5206        return true;
     5207      }
     5208      else
     5209      {
     5210        return false;
     5211      }
     5212#else
    51995213      return true;
     5214#endif
    52005215    }
    52015216  }
    52025217
     
    52085223  // in the same CTU line
    52095224  if ( refRightX>>ctuSizeLog2 < xPos>>ctuSizeLog2 )
    52105225  {
     5226#if CIP_IBC_UNIFICATION
     5227    if(!pcCU->getSlice()->getPPS()->getConstrainedIntraPred() || xCIPIBCSearchPruning(pcCU, xPos + xBv, yPos + yBv, width, height))
     5228    {
     5229      return true;
     5230    }
     5231    else
     5232    {
     5233      return false;
     5234    }
     5235#else
    52115236    return true;
     5237#endif
    52125238  }
    52135239  if ( refRightX>>ctuSizeLog2 > xPos>>ctuSizeLog2 )
    52145240  {
     
    52265252    return false;
    52275253  }
    52285254
     5255#if CIP_IBC_UNIFICATION
     5256  if(!pcCU->getSlice()->getPPS()->getConstrainedIntraPred() || xCIPIBCSearchPruning(pcCU, xPos + xBv, yPos + yBv, width, height))
     5257  {
     5258    return true;
     5259  }
     5260  else
     5261  {
     5262    return false;
     5263  }
     5264#else
    52295265  return true;
     5266#endif
    52305267}
    52315268#endif
    52325269
     
    54345471          continue;
    54355472        }
    54365473
     5474#if CIP_IBC_UNIFICATION
     5475        if ( !isBlockVectorValid( pcCU, xCUStart+xStartInCU, yCUStart+yStartInCU, width, height,
     5476          pcCU->getSlice()->getSPS()->getPicWidthInLumaSamples(), pcCU->getSlice()->getSPS()->getPicHeightInLumaSamples(),
     5477          xStartInCU, yStartInCU, (cMvFieldNeighbours[mrgIdxTemp<<1].getHor() >> 2), (cMvFieldNeighbours[mrgIdxTemp<<1].getVer()>>2), pcCU->getSlice()->getSPS()->getMaxCUWidth() ) )
     5478        {
     5479          continue;
     5480        }
     5481#else
    54375482        if ( !isBlockVectorValid( xCUStart+xStartInCU, yCUStart+yStartInCU, width, height,
    54385483          pcCU->getSlice()->getSPS()->getPicWidthInLumaSamples(), pcCU->getSlice()->getSPS()->getPicHeightInLumaSamples(),
    54395484          xStartInCU, yStartInCU, (cMvFieldNeighbours[mrgIdxTemp<<1].getHor() >> 2), (cMvFieldNeighbours[mrgIdxTemp<<1].getVer()>>2), pcCU->getSlice()->getSPS()->getMaxCUWidth() ) )
     
    54405485        {
    54415486          continue;
    54425487        }
     5488#endif
    54435489        bitsMergeTemp = mrgIdxTemp == m_pcEncCfg->getMaxNumMergeCand() ? mrgIdxTemp : mrgIdxTemp+1;
    54445490
    54455491        distMergeTemp = 0;
     
    57465792              continue;
    57475793            }
    57485794
     5795#if CIP_IBC_UNIFICATION
     5796            if ( !isBlockVectorValid( pcCU, xCUStart+xStartInCU, yCUStart+yStartInCU, iDummyWidth, iDummyHeight,
     5797              pcCU->getSlice()->getSPS()->getPicWidthInLumaSamples(), pcCU->getSlice()->getSPS()->getPicHeightInLumaSamples(),
     5798              xStartInCU, yStartInCU, (cMvFieldNeighboursIBC[mrgIdxTemp<<1].getHor() >> 2), (cMvFieldNeighboursIBC[mrgIdxTemp<<1].getVer() >> 2), pcCU->getSlice()->getSPS()->getMaxCUWidth() ) )
     5799            {
     5800              continue;
     5801            }
     5802#else
    57495803            if ( !isBlockVectorValid( xCUStart+xStartInCU, yCUStart+yStartInCU, iDummyWidth, iDummyHeight,
    57505804              pcCU->getSlice()->getSPS()->getPicWidthInLumaSamples(), pcCU->getSlice()->getSPS()->getPicHeightInLumaSamples(),
    57515805              xStartInCU, yStartInCU, (cMvFieldNeighboursIBC[mrgIdxTemp<<1].getHor() >> 2), (cMvFieldNeighboursIBC[mrgIdxTemp<<1].getVer() >> 2), pcCU->getSlice()->getSPS()->getMaxCUWidth() ) )
     
    57525806            {
    57535807              continue;
    57545808            }
     5809#endif
    57555810
    57565811            bitsMergeTemp = mrgIdxTemp == m_pcEncCfg->getMaxNumMergeCand() ? mrgIdxTemp : mrgIdxTemp+1;
    57575812
     
    65416596}
    65426597
    65436598
    6544 
     6599#if !CIP_IBC_UNIFICATION
    65456600Bool TEncSearch::xCIPIntraSearchPruning( TComDataCU* pcCU, Int relX, Int relY, Int roiWidth, Int roiHeight )
    65466601{
    65476602  UInt uiAbsPartIdx;
     
    65806635
    65816636  return true;
    65826637}
     6638#endif
    65836639
     6640#if CIP_IBC_UNIFICATION
     6641Bool TEncSearch::xCIPIBCSearchPruning( TComDataCU* pcCU, Int refPixlX, Int refPixlY, Int roiWidth, Int roiHeight )
     6642{
     6643  const Int iMaxCuWidth   = pcCU->getSlice()->getSPS()->getMaxCUWidth();
     6644  const Int iMaxCuHeight  = pcCU->getSlice()->getSPS()->getMaxCUHeight();
     6645
     6646  UInt partNumX = roiWidth/pcCU->getPic()->getMinCUWidth() + (((refPixlX%pcCU->getPic()->getMinCUWidth()) == 0) ? 0:1);
     6647  UInt partNumY = roiHeight/pcCU->getPic()->getMinCUHeight() + (((refPixlY%pcCU->getPic()->getMinCUHeight()) == 0) ? 0:1);
     6648
     6649
     6650  for(Int partY = 0; partY < partNumY; partY++)
     6651  {
     6652    for(Int partX = 0; partX < partNumX; partX++)
     6653    {
     6654      Int currRefX = refPixlX + partX * pcCU->getPic()->getMinCUWidth();
     6655      Int currRefY = refPixlY + partY * pcCU->getPic()->getMinCUHeight();
     6656     
     6657      Int currRefCtuX = currRefX/iMaxCuWidth;
     6658      Int currRefCtuY = currRefY/iMaxCuHeight;
     6659      Int currRefCtuRs = currRefCtuY * pcCU->getPic()->getFrameWidthInCtus() + currRefCtuX;
     6660
     6661      Int currRefRelX = currRefX%iMaxCuWidth;
     6662      Int currRefRelY = currRefY%iMaxCuHeight;
     6663
     6664      TComDataCU* pcCurrRefCU = pcCU->getPic()->getCtu( currRefCtuRs );
     6665      UInt uiAbsPartIdx = g_auiRasterToZscan[currRefRelX/pcCU->getPic()->getMinCUWidth() + (currRefRelY/pcCU->getPic()->getMinCUHeight())*pcCU->getPic()->getNumPartInCtuWidth()];
     6666
     6667      if(pcCurrRefCU->isInter(uiAbsPartIdx))
     6668      {
     6669        Int iRefL0 = pcCurrRefCU->getCUMvField(REF_PIC_LIST_0)->getRefIdx(uiAbsPartIdx);
     6670        Int iRefL1 = pcCurrRefCU->getCUMvField(REF_PIC_LIST_1)->getRefIdx(uiAbsPartIdx);
     6671
     6672        assert(iRefL0 >= 0 || iRefL1 >= 0);
     6673       
     6674        if( iRefL0 >=0 && iRefL1 < 0 )
     6675        {
     6676          if( pcCU->getSlice()->getRefPic( REF_PIC_LIST_0, iRefL0 )->getPOC() != pcCU->getSlice()->getPOC() )
     6677          {
     6678            return false;
     6679          }
     6680        }
     6681        else
     6682        {
     6683          return false;
     6684        }
     6685      }
     6686    }
     6687  }
     6688
     6689  return true;
     6690}
     6691#endif
     6692
    65846693Void TEncSearch::xIntraBCSearchMVCandUpdate(Distortion  uiSad, Int x, Int y, Distortion* uiSadBestCand, TComMv* cMVCand)
    65856694{
    65866695  int j = CHROMA_REFINEMENT_CANDIDATES - 1;
     
    67836892  const Int        iRelCUPelX    = cuPelX % lcuWidth;
    67846893  const Int        iRelCUPelY    = cuPelY % lcuHeight;
    67856894 
    6786   const ChromaFormat format = pcCU->getPic()->getChromaFormat();
    6787    
     6895#if CIP_IBC_UNIFICATION
     6896  const Int chromaROIWidthInPixels  = iRoiWidth;
     6897  const Int chromaROIHeightInPixels = iRoiHeight;
     6898#else
     6899  const ChromaFormat format = pcCU->getPic()->getChromaFormat();   
    67886900  const Int chromaROIWidthInPixels  = (((format == CHROMA_420) || (format == CHROMA_422)) && (iRoiWidth  == 4) && ((iRelCUPelX & 0x4) != 0)) ? (iRoiWidth  * 2) : iRoiWidth;
    67896901  const Int chromaROIHeightInPixels = (((format == CHROMA_420)                          ) && (iRoiHeight == 4) && ((iRelCUPelY & 0x4) != 0)) ? (iRoiHeight * 2) : iRoiHeight;
    67906902  const Int chromaROIStartXInPixels = iRelCUPelX + iRoiWidth  - chromaROIWidthInPixels;
    67916903  const Int chromaROIStartYInPixels = iRelCUPelY + iRoiHeight - chromaROIHeightInPixels;
     6904#endif
    67926905
    67936906  if (m_pcEncCfg->getUseIntraBlockCopyFastSearch())
    67946907  {
     
    68636976      {
    68646977        Int iTempY = yPred + iRelCUPelY + iRoiHeight - 1;
    68656978        Int iTempX = xPred + iRelCUPelX + iRoiWidth  - 1;
     6979#if CIP_IBC_UNIFICATION
     6980        Bool validCand = isValidIntraBCSearchArea(pcCU, xPred, yPred, chromaROIWidthInPixels, chromaROIHeightInPixels, uiPartOffset);
     6981#else
    68666982        Bool validCand = isValidIntraBCSearchArea(pcCU, iPartIdx, xPred, chromaROIStartXInPixels, yPred, chromaROIStartYInPixels, chromaROIWidthInPixels, chromaROIHeightInPixels,uiPartOffset);
     6983#endif
    68676984
    68686985        if((iTempX >= (Int)lcuWidth) && (iTempY >= 0) && m_pcEncCfg->getUseIntraBCFullFrameSearch())
    68696986        {
     
    69357052#endif
    69367053#endif
    69377054    {
     7055#if CIP_IBC_UNIFICATION
     7056      if ( !isValidIntraBCSearchArea( pcCU, 0, y, chromaROIWidthInPixels, chromaROIHeightInPixels, uiPartOffset ) )
     7057#else
    69387058      if ( !isValidIntraBCSearchArea( pcCU, iPartIdx, 0, chromaROIStartXInPixels, y, chromaROIStartYInPixels, chromaROIWidthInPixels, chromaROIHeightInPixels, uiPartOffset ) )
     7059#endif
    69397060      {
    69407061        continue;
    69417062      }
     
    69827103#endif
    69837104    for(Int x = 0 - iRoiWidth - puPelOffsetX ; x >= boundX ; --x )
    69847105    {
     7106#if CIP_IBC_UNIFICATION
     7107      if (!isValidIntraBCSearchArea(pcCU, x, 0, chromaROIWidthInPixels, chromaROIHeightInPixels, uiPartOffset))
     7108#else
    69857109      if (!isValidIntraBCSearchArea(pcCU, iPartIdx, x, chromaROIStartXInPixels, 0, chromaROIStartYInPixels, chromaROIWidthInPixels, chromaROIHeightInPixels,uiPartOffset))
     7110#endif
    69867111      {
    69877112        continue;
    69887113      }
     
    70557180              continue;
    70567181          }
    70577182
     7183#if CIP_IBC_UNIFICATION
     7184          if (!isValidIntraBCSearchArea(pcCU, x, y, chromaROIWidthInPixels, chromaROIHeightInPixels, uiPartOffset))
     7185#else
    70587186          if (!isValidIntraBCSearchArea(pcCU, iPartIdx, x, chromaROIStartXInPixels, y,  chromaROIStartYInPixels, chromaROIWidthInPixels, chromaROIHeightInPixels,uiPartOffset))
     7187#endif
    70597188          {
    70607189            continue;
    70617190          }
     
    71167245              continue;
    71177246          }
    71187247
     7248#if CIP_IBC_UNIFICATION
     7249          if (!isValidIntraBCSearchArea(pcCU, x, y, chromaROIWidthInPixels, chromaROIHeightInPixels, uiPartOffset))
     7250#else
    71197251          if (!isValidIntraBCSearchArea(pcCU, iPartIdx, x, chromaROIStartXInPixels, y, chromaROIStartYInPixels, chromaROIWidthInPixels, chromaROIHeightInPixels,uiPartOffset))
     7252#endif
    71207253          {
    71217254            continue;
    71227255          }
     
    71927325              continue;
    71937326          }
    71947327
     7328#if CIP_IBC_UNIFICATION
     7329          if (!isValidIntraBCSearchArea(pcCU, x, y, chromaROIWidthInPixels, chromaROIHeightInPixels, uiPartOffset))
     7330#else
    71957331          if (!isValidIntraBCSearchArea(pcCU, iPartIdx, x, chromaROIStartXInPixels, y, chromaROIStartYInPixels, chromaROIWidthInPixels, chromaROIHeightInPixels,uiPartOffset))
     7332#endif
    71967333          {
    71977334            continue;
    71987335          }
     
    72597396          if(iTempZscanIdx >= pcCU->getZorderIdxInCtu())
    72607397            continue;
    72617398        }
     7399
     7400#if CIP_IBC_UNIFICATION
     7401        if (!isValidIntraBCSearchArea(pcCU, x, y, chromaROIWidthInPixels, chromaROIHeightInPixels, uiPartOffset))
     7402#else
    72627403        if (!isValidIntraBCSearchArea(pcCU, iPartIdx, x, chromaROIStartXInPixels, y, chromaROIStartYInPixels, chromaROIWidthInPixels, chromaROIHeightInPixels,uiPartOffset))
     7404#endif
    72637405        {
    72647406          continue;
    72657407        }
     
    75477689      continue;
    75487690    }
    75497691
     7692#if CIP_IBC_UNIFICATION
     7693    if( pcCU->getSlice()->getPPS()->getConstrainedIntraPred() && !xCIPIBCSearchPruning(pcCU, iTempX, iTempY, iRoiWidth, iRoiHeight) )
     7694    {
     7695      HashLinklist = HashLinklist->next;
     7696      continue;
     7697    }
     7698#endif
     7699
    75507700    uiSad = 0;//m_pcRdCost->getCost( iTempX - cuPelX, iTempY - cuPelY);
    75517701
    75527702    for(int r = 0; r < iRoiHeight; )
  • source/Lib/TLibEncoder/TEncSearch.h

     
    256256                                );
    257257
    258258#if SCM_T0227_INTRABC_SIG_UNIFICATION
     259#if CIP_IBC_UNIFICATION
     260  Bool isBlockVectorValid( TComDataCU* pcCU, Int xPos, Int yPos, Int width, Int height, Int picWidth, Int picHeight, Int xStartInCU, Int yStartInCU, Int xBv, Int yBv, Int ctuSize );
     261#else
    259262  Bool isBlockVectorValid( Int xPos, Int yPos, Int width, Int height, Int picWidth, Int picHeight, Int xStartInCU, Int yStartInCU, Int xBv, Int yBv, Int ctuSize );
    260263#endif
     264#endif
    261265
    262266  Bool predIntraBCSearch        ( TComDataCU* pcCU,
    263267                                  TComYuv*    pcOrgYuv,
     
    346350                                  TComMv&       rcMvSrchRngLT,
    347351                                  TComMv&       rcMvSrchRngRB );
    348352
     353#if !CIP_IBC_UNIFICATION
    349354  Bool xCIPIntraSearchPruning(    TComDataCU*   pcCU,
    350355                                  Int           relX,
    351356                                  Int           relY,
    352357                                  Int           roiWidth,
    353358                                  Int           roiHeight);
     359#endif
    354360
     361#if CIP_IBC_UNIFICATION
     362  Bool xCIPIBCSearchPruning(    TComDataCU*   pcCU,
     363                                Int           refPixlX,
     364                                Int           refPixlY,
     365                                Int           roiWidth,
     366                                Int           roiHeight);
     367#endif
     368
     369#if CIP_IBC_UNIFICATION
    355370  Bool isValidIntraBCSearchArea(  TComDataCU*   pcCU,
     371                                  Int           predX,
     372                                  Int           predY,
     373                                  Int           roiWidth,
     374                                  Int           roiHeight,
     375                                  Int           uiPartOffset)
     376#else
     377  Bool isValidIntraBCSearchArea(  TComDataCU*   pcCU,
    356378                                  Int           iPartIdx,
    357379                                  Int           predX,
    358380                                  Int           ROIStartX,
     
    361383                                  Int           roiWidth,
    362384                                  Int           roiHeight,
    363385                                  Int           uiPartOffset)
     386#endif
    364387  {
    365388    const Int uiMaxCuWidth   = pcCU->getSlice()->getSPS()->getMaxCUWidth();
    366389    const Int uiMaxCuHeight  = pcCU->getSlice()->getSPS()->getMaxCUHeight();
     
    376399      return false;
    377400    }
    378401
     402#if !CIP_IBC_UNIFICATION
    379403    // check boundary
    380404    if ( pcCU->getWidth( 0 ) == 8 && pcCU->getPartitionSize( 0 ) != SIZE_2Nx2N && pcCU->getSlice()->getPic()->getPicYuvOrg()->getChromaFormat() != CHROMA_444 )
    381405    {
     
    448472        }
    449473      }
    450474    }
     475#endif
    451476
     477#if CIP_IBC_UNIFICATION
    452478    return (!pcCU->getSlice()->getPPS()->getConstrainedIntraPred())        ||
     479           xCIPIBCSearchPruning(pcCU, cuPelX + predX, cuPelY + predY, roiWidth, roiHeight);
     480#endif
     481
     482#if !CIP_IBC_UNIFICATION
     483    return (!pcCU->getSlice()->getPPS()->getConstrainedIntraPred())        ||
    453484           (pcCU->getSlice()->getSliceType() == I_SLICE)                   ||
    454485           xCIPIntraSearchPruning(pcCU, predX + ROIStartX, predY + ROIStartY, roiWidth, roiHeight);
     486#endif
    455487  }
    456488
    457489  Void xIntraBCSearchMVCandUpdate(Distortion uiSad, Int x, Int y, Distortion* uiSadBestCand, TComMv* cMVCand);