Changeset 608 in 3DVCSoftware for trunk/source/Lib/TLibRenderer


Ignore:
Timestamp:
1 Sep 2013, 22:47:26 (11 years ago)
Author:
tech
Message:

Merged DEV-2.0-dev0@604.

Location:
trunk/source/Lib/TLibRenderer
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/Lib/TLibRenderer/TRenFilter.cpp

    r296 r608  
    3636#include "TRenFilter.h"
    3737#include "TRenInterpFilter.h"
    38 
     38#if H_3D
    3939
    4040///// COMMON /////
     
    7272  }
    7373  // Set Threshold
    74   riBlendZThres  = ( Max( abs(piInvZLUTLeft[0]- piInvZLUTLeft[255]), abs(piInvZLUTRight[0]- piInvZLUTRight[255]) ) * iBlendZThresPerc + 50)  / 100;
     74  riBlendZThres  = ( std::max( abs(piInvZLUTLeft[0]- piInvZLUTLeft[255]), abs(piInvZLUTRight[0]- piInvZLUTRight[255]) ) * iBlendZThresPerc + 50)  / 100;
    7575}
    7676
     
    194194
    195195/////////// Comparison ///////////
    196 Int64 TRenFilter::SSE   (PelImagePlane* pcInputPlane1, PelImagePlane* pcInputPlane2  )
     196Int64 TRenFilter::SSE   (PelImagePlane* pcInputPlane1, PelImagePlane* pcInputPlane2, Bool bLuma )
    197197{
    198198  UInt uiWidth     = pcInputPlane1->getWidth();
     
    205205  Pel* pucImData2  = pcInputPlane2->getPlaneData();
    206206
    207   return SSE( pucImData1, (Int) uiStride1, (Int) uiWidth, (Int) uiHeight, pucImData2, (Int) uiStride2 );
    208 }
    209 
    210 Int64 TRenFilter::SSE( Pel* piSrc1, Int iSrcStride1, Int iWidth, Int iHeight,  Pel* piSrc2, Int iSrcStride2 )
     207  return SSE( pucImData1, (Int) uiStride1, (Int) uiWidth, (Int) uiHeight, pucImData2, (Int) uiStride2, bLuma );
     208}
     209
     210Int64 TRenFilter::SSE( Pel* piSrc1, Int iSrcStride1, Int iWidth, Int iHeight,  Pel* piSrc2, Int iSrcStride2, Bool bLuma )
    211211{
    212212  Int64 iSSE = 0;
    213213
    214   Int iShift = g_uiBitIncrement << 1;
     214
     215  Int iShift = DISTORTION_PRECISION_ADJUSTMENT( ( bLuma ? g_bitDepthY : g_bitDepthC ) - 8 ) << 1 ;
    215216  for(Int iPosY = 0; iPosY < iHeight; iPosY++)
    216217  {
     
    266267
    267268inline Void TRenFilter::sampleUp2Tap13(PelImage* pcInputImage, PelImage* pcOutputImage)
    268 {// UpSampling from JSVM Software (DownConvertStatic) ???
     269{ // UpSampling from JSVM Software (DownConvertStatic) ???
     270
     271  AOF( g_bitDepthC == g_bitDepthY );
    269272  UInt uiNumPlanes = pcInputImage->getNumberOfPlanes();
    270273
     
    397400      {
    398401        // Scale and copy to image buffer.
    399         pcOutputPlaneData[iOffset+i] = Max(Min((Pel) ((piDst[i] + iAddH) / iDivH), g_uiBASE_MAX ),0);
     402        pcOutputPlaneData[iOffset+i] = ClipY((Pel) ((piDst[i] + iAddH) / iDivH));
    400403      }
    401404    }
     
    421424Void TRenFilter::sampleDown2Tap13( Pel* pcInputPlaneData, Int iInputStride, Int iWidth, Int iHeight, Pel* pcOutputPlaneData, Int iOutputStride  )
    422425{ // DownSampling from JSVM Software (DownConvertStatic) ??
     426 
     427  AOF( g_bitDepthC == g_bitDepthY );
     428
    423429  Int iOffset, iPosX, iPosY, k;
    424430  Int* piDataHorDown = new Int[(Int)(iWidth * iHeight / 2)];
     
    543549    {
    544550      // Scale and copy back to image buffer.
    545       pcOutputPlaneData[iOutputStride*iPosY+iPosX] = Max(Min( ( Pel) ( (piDst[iPosY] + iAddV) / iDivV), g_uiBASE_MAX ),0);
     551      pcOutputPlaneData[iOutputStride*iPosY+iPosX] = ClipY( ( Pel) ( (piDst[iPosY] + iAddV) / iDivV));
    546552    }
    547553  }
     
    569575
    570576Void TRenFilter::sampleVerDown2Tap13( PelImagePlane* pcInputPlane, PelImagePlane* pcOutputPlane, Int uiPad)
    571 { // DownSampling from JSVM Software (DownConvertStatic) ??
     577{
     578  assert( g_bitDepthY == g_bitDepthC); // ToDo: Update renderer to work with different luma/chroma bit depth
     579  // DownSampling from JSVM Software (DownConvertStatic) ??
    572580  Int iWidth       = pcInputPlane->getWidth();
    573581  Int iHeight      = pcInputPlane->getHeight();
     
    614622
    615623      Int iSum = iTmp4 + iTmp3 - iTmp2 + ((iTmp0 + iTmp4 + iTmp5 - iTmp2) << 1) + ( ( iTmp3 - iTmp1)  << 2) + (  iTmp5 << 3 ) + (( iTmp4 + iTmp5 ) << 4);
    616       pcOutputPlaneData[ iXPos ] = (Pel) Clip((iSum + 32) >> 6);
     624      pcOutputPlaneData[ iXPos ] = (Pel) ClipY((iSum + 32) >> 6);
    617625      pcTmpIn++;
    618626    }
     
    623631
    624632Void TRenFilter::sampleHorDown2Tap13( PelImagePlane* pcInputPlane, PelImagePlane* pcOutputPlane, Int uiPad )
    625 { // DownSampling from JSVM Software (DownConvertStatic) ??
     633{
     634  assert( g_bitDepthY == g_bitDepthC); // ToDo: Update renderer to work with different luma/chroma bit depth
     635  // DownSampling from JSVM Software (DownConvertStatic) ??
    626636  Int iWidth       = pcInputPlane->getWidth();
    627637  Int iHeight      = pcInputPlane->getHeight();
     
    653663
    654664      Int iSum = iTmp4 + iTmp3 - iTmp2 + ((iTmp0 + iTmp4 + iTmp5 - iTmp2) << 1) + ( ( iTmp3 - iTmp1)  << 2) + (  iTmp5 << 3 ) + (( iTmp4 + iTmp5 ) << 4);
    655       pcOutputPlaneData[ iXPos ] = (Pel) Clip((iSum + 32) >> 6);
     665      pcOutputPlaneData[ iXPos ] = (Pel) ClipY((iSum + 32) >> 6);
    656666      pcTmpIn += 2;
    657667    }
     
    810820Pel TRenFilter::xFiltBinom3( Pel* pcInputData, Int iStride )
    811821{
     822  assert( g_bitDepthY == g_bitDepthC); // ToDo: Update renderer to work with different luma/chroma bit depth
     823
    812824  Int iSum = pcInputData[-1 * iStride ] + pcInputData[ 0 ] +  (pcInputData[iStride ] << 1 );
    813   return Clip( (iSum +  2) >>  2 );
     825  return ClipY( (iSum +  2) >>  2 );
    814826}
    815827
    816828Pel TRenFilter::xFiltBinom5( Pel* pcInputData, Int iStride )
    817829{
     830  assert( g_bitDepthY == g_bitDepthC); // ToDo: Update renderer to work with different luma/chroma bit depth
    818831  // { 1,4,6,4,1 }
    819832  Int iStride0  = 0;
     
    828841
    829842  Int iSum = iTmp0 +  (iTmp2 << 1) + ((iTmp1 + iTmp2) << 2);
    830   return Clip( (iSum +  8) >>  4 );
     843  return ClipY( (iSum +  8) >>  4 );
    831844}
    832845
    833846Pel TRenFilter::xFiltBinom7( Pel* pcInputData, Int iStride )
    834847{
     848  assert( g_bitDepthY == g_bitDepthC); // ToDo: Update renderer to work with different luma/chroma bit depth
    835849  // { 1,6,15,20,15,6,1 }
    836850  Int iStride0  = 0;
     
    849863  Int iSum = iTmp0 - iTmp2 + ( iTmp1  << 1) + ( (iTmp1 + iTmp3) << 2) + ((iTmp2 + iTmp3) << 4);
    850864
    851   return Clip( (iSum +  32) >>  6 );
     865  return ClipY( (iSum +  32) >>  6 );
    852866}
    853867
    854868Pel TRenFilter::xFiltBinom9( Pel* pcInputData, Int iStride )
    855869{
     870  assert( g_bitDepthY == g_bitDepthC); // ToDo: Update renderer to work with different luma/chroma bit depth
    856871  // {  1     8    28    56    70    56    28     8     1 }
    857872  Int iStride0  = 0;
     
    873888  Int iSum = iTmp0 + ((iTmp4 ) << 1) + ( ( iTmp4 - iTmp2 ) << 2) +  ( (iTmp1 - iTmp3) << 3 ) +  ((iTmp2 ) << 5) + ((iTmp3+ iTmp4 ) << 6);
    874889
    875   return Clip( (iSum +  128) >>  8 );
     890  return ClipY( (iSum +  128) >>  8 );
    876891}
    877892
     
    12261241Void TRenFilter::xInterpHorChroma( Pel* piSrc, Int iSrcStride, Int iSrcStepX, Int iSrcStepY, Int iWidth, Int iHeight, Pel* piDst, Int iDstStride, Int iDstStepX, Int iDstStepY, FpChromaIntFilt fpFilter )
    12271242{
     1243  assert( g_bitDepthY == g_bitDepthC); // ToDo: Update renderer to work with different luma/chroma bit depth
    12281244  Int   iSum;
    12291245  Pel*  piSrcTmp;
     
    12361252    {
    12371253      iSum      = (cFilter.*fpFilter)( piSrcTmp,  iSrcStepX );
    1238       piDst[x * iDstStepX ] =  Clip ((iSum +  32) >>  6 );
     1254      piDst[x * iDstStepX ] =  ClipC ((iSum +  32) >>  6 );
    12391255      piSrcTmp+= iSrcStepX;
    12401256    }
     
    12461262Void TRenFilter::xInterpVerChroma( Pel* piSrc, Int iSrcStride, Int iSrcStepX, Int iSrcStepY, Int iWidth, Int iHeight, Pel* piDst, Int iDstStride, Int iDstStepX, Int iDstStepY, FpChromaIntFilt fpFilter )
    12471263{
     1264  assert( g_bitDepthY == g_bitDepthC); // ToDo: Update renderer to work with different luma/chroma bit depth
    12481265  Int   iSum;
    12491266  Pel*  piSrcTmp;
     
    12561273    {
    12571274      iSum      = (cFilter.*fpFilter)( piSrcTmp,  iSrcStepY * iSrcStride );
    1258       piDst[x * iDstStepX ]  =  Clip ((iSum +  32) >>  6 );
     1275      piDst[x * iDstStepX ]  =  ClipC ((iSum +  32) >>  6 );
    12591276      piSrcTmp += iSrcStepX;
    12601277    }
     
    12671284Void TRenFilter::xSampleDownHor2( Pel* piSrc, Int iSrcStride, Int iSrcWidth, Int iHeight, Pel* piDst, Int iDstStride  )
    12681285{
     1286 
     1287  assert( g_bitDepthY == g_bitDepthC); // ToDo: Update renderer to work with different luma/chroma bit depth
     1288
    12691289  Int   iSum;
    12701290  Pel*  piSrcTmp;
     
    12781298      // { 1,2,1 }
    12791299      iSum = piSrcTmp[0] + piSrcTmp[2] +  (piSrcTmp[1] << 1);
    1280       piDst[x] = Clip( (iSum +  2) >>  2 );
     1300      piDst[x] = ClipY( (iSum +  2) >>  2 );
    12811301      piSrcTmp += 2;
    12821302    }
     
    12881308Void TRenFilter::xSampleDownVer2( Pel* piSrc, Int iSrcStride, Int iSrcWidth, Int iSrcHeight, Pel* piDst, Int iDstStride  )
    12891309{
     1310  assert( g_bitDepthY == g_bitDepthC); // ToDo: Update renderer to work with different luma/chroma bit depth
     1311
    12901312  Int   iSum;
    12911313  Pel*  piSrcTmp;
     
    12981320      // { 1,2,1 }
    12991321      iSum = piSrcTmp[0] + piSrcTmp[ iSrcStride << 1] +  (piSrcTmp[ iSrcStride ] << 1);
    1300       piDst[x] = Clip( (iSum +  2) >>  2 );
     1322      piDst[x] = ClipY( (iSum +  2) >>  2 );
    13011323      piSrcTmp += 1;
    13021324    }
     
    13081330Void TRenFilter::xSampleDownHor4( Pel* piSrc, Int iSrcStride, Int iSrcWidth, Int iHeight, Pel* piDst, Int iDstStride  )
    13091331{
     1332  assert( g_bitDepthY == g_bitDepthC); // ToDo: Update renderer to work with different luma/chroma bit depth
     1333
    13101334  Int   iSum;
    13111335  Pel*  piSrcTmp;
     
    13241348
    13251349      iSum = iTmp0 +  (iTmp2 << 1) + ((iTmp1 + iTmp2) << 2);
    1326       piDst[x] = Clip( (iSum +  8) >>  4 );
     1350      piDst[x] = ClipY( (iSum +  8) >>  4 );
    13271351      piSrcTmp += 4;
    13281352    }
     
    13341358Void TRenFilter::xSampleDownHor8( Pel* piSrc, Int iSrcStride, Int iSrcWidth, Int iHeight, Pel* piDst, Int iDstStride  )
    13351359{
     1360  assert( g_bitDepthY == g_bitDepthC); // ToDo: Update renderer to work with different luma/chroma bit depth
     1361
    13361362  Int   iSum;
    13371363  Pel*  piSrcTmp;
     
    13511377
    13521378      iSum = iTmp0 - iTmp2 + ( iTmp1  << 1) + ( (iTmp1 + iTmp3) << 2) + ((iTmp2 + iTmp3) << 4);
    1353       piDst[x] = Clip( (iSum +  32) >>  6 );
     1379      piDst[x] = ClipY( (iSum +  32) >>  6 );
    13541380      piSrcTmp += 8;
    13551381    }
     
    14331459template Void TRenFilter::mirrorHor(        TRenImage<Int>           *pcImage );
    14341460template Void TRenFilter::mirrorHor(        TRenImagePlane<Pel>      *pcImagePlane );
     1461
     1462#endif
     1463
  • trunk/source/Lib/TLibRenderer/TRenFilter.h

    r56 r608  
    3333
    3434
    35 
    3635#ifndef __TRENFILTER__
    3736#define __TRENFILTER__
     
    4039#include "TRenImage.h"
    4140#include "TRenInterpFilter.h"
     41#if H_3D
    4242
    4343typedef Int (TRenInterpFilter::*FpChromaIntFilt) ( Pel*, Int );
     
    6262  /////////// Comparison ///////////
    6363
    64   static Int64                          SSE  ( PelImagePlane*     pcInputPlane1, PelImagePlane*      pcInputPlane2 );
    65   static Int64                          SSE  ( Pel* piSrc1,       Int iSrcStride1, Int iWidth, Int iHeight,  Pel* piSrc2, Int iSrcStride2 );
     64  static Int64                          SSE  ( PelImagePlane*     pcInputPlane1, PelImagePlane*      pcInputPlane2, Bool bLuma );
     65  static Int64                          SSE  ( Pel* piSrc1,       Int iSrcStride1, Int iWidth, Int iHeight,  Pel* piSrc2, Int iSrcStride2, Bool bLuma );
    6666
    6767  template <typename T> static Bool compare  (TRenImage<T> *pcInputImage1     , TRenImage<T> *pcInputImage2);
     
    138138};
    139139
    140 
     140#endif
    141141#endif //__TRENFILTER__
  • trunk/source/Lib/TLibRenderer/TRenImage.cpp

    r189 r608  
    3737#include "TRenFilter.h"
    3838#include "assert.h"
     39#if H_3D
     40
    3941
    4042template<typename T>
     
    231233  for (UInt uiCurPlane = 1; uiCurPlane < m_uiNumberOfPlanes; uiCurPlane++)
    232234  {
    233     m_apcPlanes[uiCurPlane]->assign( (Pel) ((g_uiIBDI_MAX+1) >> 1) );
     235    m_apcPlanes[uiCurPlane]->assign( (Pel) ( 1 << ( g_bitDepthC - 1 ) ) );
    234236  }
    235237}
     
    270272template Void TRenImage<Pel>::assign<Pel>    (TRenImage<Pel>*   );
    271273
     274#endif // H_3D
  • trunk/source/Lib/TLibRenderer/TRenImage.h

    r189 r608  
    3939#include "../TLibCommon/TComPicYuv.h"
    4040#include "TRenImagePlane.h"
     41#if H_3D
    4142
    4243
     
    99100};
    100101
     102#endif // H_3D
    101103#endif // __TRENIMAGE__
    102104
  • trunk/source/Lib/TLibRenderer/TRenImagePlane.cpp

    r56 r608  
    3636#include "TRenFilter.h"
    3737#include <string.h>
     38#if H_3D
     39
    3840/////// TRenImagePlane ///////
    3941
     
    526528template class TRenImagePlanePart<Bool>;
    527529template class TRenImagePlanePart<Int>;
     530#endif // H_3D
     531
  • trunk/source/Lib/TLibRenderer/TRenImagePlane.h

    r56 r608  
    3939#include "../TLibCommon/TComPicYuv.h"
    4040
     41#if H_3D
    4142#define PelImagePlane     TRenImagePlane<Pel>
    4243#define DoubleImagePlane  TRenImagePlane<Double>
     
    121122};
    122123
     124#endif // H_3D
    123125#endif // __TRENIMAGEPLANE__
  • trunk/source/Lib/TLibRenderer/TRenInterpFilter.cpp

    r56 r608  
    3939
    4040#include "TRenInterpFilter.h"
     41#if H_3D
    4142
    4243// ====================================================================================================================
     
    4950}
    5051
     52#endif // H_3D
     53
  • trunk/source/Lib/TLibRenderer/TRenInterpFilter.h

    r56 r608  
    4444#include "TLibCommon/CommonDef.h"
    4545#include "assert.h"
     46#if H_3D
     47
    4648// ====================================================================================================================
    4749// Constants
     
    103105   __inline Int xCTI_Filter_VI04_C_OCT3( Int* pSrc, Int iStride );
    104106
    105 #if HIGH_ACCURACY_BI
    106   __inline Void xCTI_FilterHalfHor_ha(Pel* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst); //
    107   __inline Void xCTI_FilterHalfHor_ha(Int* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst);//
    108  
    109    
    110   __inline Void xCTI_FilterQuarter0Hor_ha(Pel* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst); //
    111   __inline Void xCTI_FilterQuarter0Hor_ha(Int* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst); //
    112  
    113   __inline Void xCTI_FilterQuarter1Hor_ha(Pel* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst); //
    114   __inline Void xCTI_FilterQuarter1Hor_ha(Int* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst); //
    115  
    116   __inline Void xCTI_FilterHalfVer_ha (Pel* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst ); //
    117  
    118   __inline Void xCTI_FilterQuarter0Ver_ha (Pel* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst );
    119   __inline Void xCTI_FilterQuarter1Ver_ha (Pel* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst );
    120  
    121   __inline Void xCTI_Filter1DHorC_ha (Pel* piSrc, Int iSrcStride,  Int iWidth, Int iHeight, Int iDstStride,  Pel*& rpiDst, Int iMV);
    122   __inline Void xCTI_Filter1DVerC_ha (Pel* piSrc, Int iSrcStride,  Int iWidth, Int iHeight, Int iDstStride,  Pel*& rpiDst, Int iMV);
    123   __inline Void xCTI_Filter2DHorC_ha (Int* piSrc, Int iSrcStride,  Int iWidth, Int iHeight, Int iDstStride,  Pel*& rpiDst, Int iMV);
    124 
    125 #endif
    126107};
    127108
    128 #if HIGH_ACCURACY_BI
    129 __inline Void TRenInterpFilter::xCTI_FilterHalfHor_ha(Pel* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst)
    130 {
     109
     110// ------------------------------------------------------------------------------------------------
     111// DCTIF filters
     112// ------------------------------------------------------------------------------------------------
     113
     114__inline Void TRenInterpFilter::xCTI_FilterHalfHor(Pel* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst)
     115{
     116  assert( g_bitDepthC == g_bitDepthY);  // ToDo: Update renderer to work with different luma/chroma bit depth
     117
    131118  Pel*  piDst    = rpiDst;
    132119  Int   iSum;
    133120  Pel*  piSrcTmp;
    134 
    135121  Int iSrcStep2 = iSrcStep*2;
    136122  Int iSrcStep3 = iSrcStep*3;
     
    141127
    142128  Int iTmp0, iTmp1, iTmp2, iTmp3, iTmpA;
    143   Int shiftNum = g_uiBitIncrement + g_uiBitDepth - 8;
    144   Int shiftOffset = (shiftNum > 0) ? ( 1 << (shiftNum - 1)) : 0 ;
     129
    145130  for ( Int y = iHeight; y != 0; y-- )
    146131  {
     
    160145            + (   iTmpA          << 1 )
    161146            -    iTmp0 -  iTmp2;
    162 #if REMOVE_INTERMEDIATE_CLIPPING
    163       piDst   [x * iDstStep] = (iSum +  shiftOffset) >>  shiftNum;
    164 #else
    165       piDst   [x * iDstStep] = Clip3(0,16383, (iSum +  shiftOffset) >>  shiftNum );
    166 #endif
    167      
     147
     148      piDst   [x * iDstStep] = ClipY( (iSum +  32) >>  6 );
    168149      piSrcTmp += iSrcStep;
    169150    }
     
    172153  }
    173154  return;
    174 
    175 }
    176 
    177 __inline Void TRenInterpFilter::xCTI_FilterHalfHor_ha(Int* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst)
    178 {
     155}
     156
     157__inline Void TRenInterpFilter::xCTI_FilterHalfHor(Int* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst)
     158{
     159  assert( g_bitDepthC == g_bitDepthY);  // ToDo: Update renderer to work with different luma/chroma bit depth
     160
    179161  Pel*  piDst    = rpiDst;
    180162  Int   iSum;
    181163  Int*  piSrcTmp;
    182  
    183164  Int iSrcStep2 = iSrcStep*2;
    184165  Int iSrcStep3 = iSrcStep*3;
     
    189170
    190171  Int iTmp0, iTmp1, iTmp2, iTmp3, iTmpA;
    191   Int shiftNum = 6 + g_uiBitIncrement + g_uiBitDepth - 8;
    192   Int shiftOffset = (shiftNum > 0) ? ( 1 << (shiftNum - 1)) : 0 ;
     172
    193173  for ( Int y = iHeight; y != 0; y-- )
    194174  {
     
    209189            -    iTmp0 -  iTmp2;
    210190     
    211 #if REMOVE_INTERMEDIATE_CLIPPING
    212       piDst   [x * iDstStep] = (iSum +  shiftOffset) >>  shiftNum;
    213 #else
    214       piDst   [x * iDstStep] = Clip3(0,16383, (iSum +  shiftOffset) >>  shiftNum );
    215 #endif
    216 
     191      piDst   [x * iDstStep] = ClipY( (iSum +  2048) >>  12 );
    217192      piSrcTmp += iSrcStep;
    218193    }
     
    221196  }
    222197  return;
    223 
    224 }
    225 
    226 
    227 __inline Void TRenInterpFilter::xCTI_FilterQuarter0Hor_ha(Pel* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst)
    228 {
     198}
     199
     200__inline Void TRenInterpFilter::xCTI_FilterQuarter0Hor(Pel* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst)
     201{
     202  assert( g_bitDepthC == g_bitDepthY);  // ToDo: Update renderer to work with different luma/chroma bit depth
    229203  Pel*  piDst    = rpiDst;
    230204  Int   iSum;
    231205  Pel*  piSrcTmp;
    232 
    233206  Int iSrcStep2 = iSrcStep*2;
    234207  Int iSrcStep3 = iSrcStep*3;
     
    239212
    240213  Int  iTmp1, iTmp2;
    241   Int shiftNum = g_uiBitIncrement + g_uiBitDepth - 8;
    242   Int shiftOffset = (shiftNum > 0) ? ( 1 << (shiftNum - 1)) : 0 ;
     214
    243215  for ( Int y = iHeight; y != 0; y-- )
    244216  {
     
    252224     
    253225      iSum  =  iTmp1 + iTmp2 - piSrcTmp[0] - piSrcTmp[iSrcStep7]
    254             - ( ( piSrcTmp[iSrcStep2] - iTmp2 ) << 1 )
    255             + (  piSrcTmp[iSrcStep]             << 2 )
    256             - ( ( piSrcTmp[iSrcStep2] + iTmp1 ) << 3 )
    257             + (   piSrcTmp[iSrcStep4]           << 4 )
    258             + ( piSrcTmp[iSrcStep3]             << 6);
    259      
    260 #if REMOVE_INTERMEDIATE_CLIPPING
    261       piDst   [x * iDstStep] = (iSum + shiftOffset) >> shiftNum;
    262 #else
    263       piDst   [x * iDstStep] = Clip3(0,16383, (iSum + shiftOffset) >> shiftNum );
    264 #endif
     226             - ( ( piSrcTmp[iSrcStep2] - iTmp2 ) << 1 )
     227             + (  piSrcTmp[iSrcStep]             << 2 )
     228             - ( ( piSrcTmp[iSrcStep2] + iTmp1 ) << 3 )
     229             + (   piSrcTmp[iSrcStep4]           << 4 );
     230     
     231      piDst   [x * iDstStep] = ClipY(( (iSum +  32) >>  6 )+ piSrcTmp[iSrcStep3]);
    265232      piSrcTmp += iSrcStep;
    266233    }
     
    271238}
    272239
    273 __inline Void TRenInterpFilter::xCTI_FilterQuarter0Hor_ha(Int* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst)
    274 {
     240__inline Void TRenInterpFilter::xCTI_FilterQuarter0Hor(Int* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst)
     241{
     242  assert( g_bitDepthC == g_bitDepthY);  // ToDo: Update renderer to work with different luma/chroma bit depth
     243
    275244  Pel*  piDst    = rpiDst;
    276245  Int   iSum;
    277246  Int*  piSrcTmp;
    278  
    279247  Int iSrcStep2 = iSrcStep*2;
    280248  Int iSrcStep3 = iSrcStep*3;
     
    283251  Int iSrcStep6 = iSrcStep*6;
    284252  Int iSrcStep7 = iSrcStep*7;
    285   Int shiftNum = 6 + g_uiBitIncrement + g_uiBitDepth - 8;
    286   Int shiftOffset = (shiftNum > 0) ? ( 1 << (shiftNum - 1)) : 0 ;
     253
    287254  Int  iTmp1, iTmp2;
    288255
     
    304271            + (   piSrcTmp[iSrcStep3]           << 6 );
    305272     
    306 #if REMOVE_INTERMEDIATE_CLIPPING
    307       piDst   [x * iDstStep] = (iSum +  shiftOffset) >>  shiftNum;
    308 #else
    309       piDst   [x * iDstStep] = Clip3(0, 16383, (iSum +  shiftOffset) >>  shiftNum );
    310 #endif
     273      piDst   [x * iDstStep] = ClipY( (iSum +  2048) >>  12 );
    311274      piSrcTmp += iSrcStep;
    312275    }
     
    315278  }
    316279  return;
    317 
    318 }
    319 
    320 
    321 __inline Void TRenInterpFilter::xCTI_FilterQuarter1Hor_ha(Pel* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst)
    322 {
     280}
     281
     282__inline Void TRenInterpFilter::xCTI_FilterQuarter1Hor(Pel* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst)
     283{
     284  assert( g_bitDepthC == g_bitDepthY);  // ToDo: Update renderer to work with different luma/chroma bit depth
    323285  Pel*  piDst    = rpiDst;
    324286  Int   iSum;
    325287  Pel*  piSrcTmp;
    326 
    327288  Int iSrcStep2 = iSrcStep*2;
    328289  Int iSrcStep3 = iSrcStep*3;
     
    331292  Int iSrcStep6 = iSrcStep*6;
    332293  Int iSrcStep7 = iSrcStep*7;
    333   Int shiftNum = g_uiBitIncrement + g_uiBitDepth - 8;
    334   Int shiftOffset = (shiftNum > 0) ? ( 1 << (shiftNum - 1)) : 0 ;
     294
     295  Int  iTmp1, iTmp2;
     296  for ( Int y = iHeight; y != 0; y-- )
     297  {
     298    piSrcTmp = &piSrc[ -3*iSrcStep ];
     299    for ( Int x = 0; x < iWidth; x++ )
     300    {
     301      // {-1,   3,  -7,  19,   57,  -10,   4,   -1  },
     302     
     303      iTmp1 = piSrcTmp[iSrcStep4] + piSrcTmp[iSrcStep2];
     304      iTmp2 = piSrcTmp[iSrcStep ] + piSrcTmp[iSrcStep3];
     305     
     306      iSum  =  iTmp1 + iTmp2 - piSrcTmp[0] - piSrcTmp[iSrcStep7]
     307            - ( ( piSrcTmp[iSrcStep5] - iTmp2 ) << 1 )
     308            + (   piSrcTmp[iSrcStep6]           << 2 )
     309            - ( ( piSrcTmp[iSrcStep5] + iTmp1 ) << 3 )
     310            + (   piSrcTmp[iSrcStep3]           << 4 );
     311     
     312      piDst   [x * iDstStep] = ClipY( ((iSum +  32) >>  6) + piSrcTmp[iSrcStep4] );
     313      piSrcTmp += iSrcStep;
     314    }
     315    piSrc += iSrcStride;
     316    piDst += iDstStride;
     317  }
     318  return;
     319}
     320
     321__inline Void TRenInterpFilter::xCTI_FilterQuarter1Hor(Int* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst)
     322{
     323  assert( g_bitDepthC == g_bitDepthY);  // ToDo: Update renderer to work with different luma/chroma bit depth
     324
     325  Pel*  piDst    = rpiDst;
     326  Int   iSum;
     327  Int*  piSrcTmp;
     328  Int iSrcStep2 = iSrcStep*2;
     329  Int iSrcStep3 = iSrcStep*3;
     330  Int iSrcStep4 = iSrcStep*4;
     331  Int iSrcStep5 = iSrcStep*5;
     332  Int iSrcStep6 = iSrcStep*6;
     333  Int iSrcStep7 = iSrcStep*7;
    335334
    336335  Int  iTmp1, iTmp2;
     
    351350            + (   piSrcTmp[iSrcStep3]           << 4 )
    352351            + (   piSrcTmp[iSrcStep4]           << 6 );
    353 
    354 #if REMOVE_INTERMEDIATE_CLIPPING
    355       piDst   [x * iDstStep] = (iSum +  shiftOffset) >>  shiftNum;
    356 #else
    357       piDst   [x * iDstStep] = Clip3(0, 16383, (iSum +  shiftOffset) >>  shiftNum );
    358 #endif
     352     
     353      piDst   [x * iDstStep] = ClipY( (iSum +  2048) >>  12 );
    359354      piSrcTmp += iSrcStep;
    360355    }
     
    363358  }
    364359  return;
    365 
    366 
    367 }
    368 
    369 __inline Void TRenInterpFilter::xCTI_FilterQuarter1Hor_ha(Int* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst)
    370 {
    371   Pel*  piDst    = rpiDst;
    372   Int   iSum;
    373   Int*  piSrcTmp;
    374 
    375   Int iSrcStep2 = iSrcStep*2;
    376   Int iSrcStep3 = iSrcStep*3;
    377   Int iSrcStep4 = iSrcStep*4;
    378   Int iSrcStep5 = iSrcStep*5;
    379   Int iSrcStep6 = iSrcStep*6;
    380   Int iSrcStep7 = iSrcStep*7;
    381   Int shiftNum = 6+g_uiBitIncrement + g_uiBitDepth - 8;
    382   Int shiftOffset = (shiftNum > 0) ? ( 1 << (shiftNum - 1)) : 0 ;
    383   Int  iTmp1, iTmp2;
     360}
     361
     362__inline Void TRenInterpFilter::xCTI_FilterHalfVer (Pel* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Int*& rpiDst, Int iDstStridePel, Pel*& rpiDstPel )
     363{
     364  assert( g_bitDepthC == g_bitDepthY);  // ToDo: Update renderer to work with different luma/chroma bit depth
     365  Int*  piDst = rpiDst;
     366  Pel*  piDstPel = rpiDstPel;
     367  Int   iSum;
     368  Pel*  piSrcTmp;
     369  Int iSrcStride2 = iSrcStride*2;
     370  Int iSrcStride3 = iSrcStride*3;
     371  Int iSrcStride4 = iSrcStride*4;
     372  Int iSrcStride5 = iSrcStride*5;
     373  Int iSrcStride6 = iSrcStride*6;
     374  Int iSrcStride7 = iSrcStride*7;
     375
     376  Int  iTmp0, iTmp1, iTmp2, iTmp3, iTmpA;
    384377  for ( Int y = iHeight; y != 0; y-- )
    385378  {
    386     piSrcTmp = &piSrc[ -3*iSrcStep ];
     379    piSrcTmp = &piSrc[ -3*iSrcStride ];
    387380    for ( Int x = 0; x < iWidth; x++ )
    388381    {
    389       // {-1,   3,  -7,  19,   57,  -10,   4,   -1  },
    390      
    391       iTmp1 = piSrcTmp[iSrcStep4] + piSrcTmp[iSrcStep2];
    392       iTmp2 = piSrcTmp[iSrcStep ] + piSrcTmp[iSrcStep3];
    393      
    394       iSum  =  iTmp1 + iTmp2 - piSrcTmp[0] - piSrcTmp[iSrcStep7]
    395             - ( ( piSrcTmp[iSrcStep5] - iTmp2 ) << 1 )
    396             + (   piSrcTmp[iSrcStep6]           << 2 )
    397             - ( ( piSrcTmp[iSrcStep5] + iTmp1 ) << 3 )
    398             + (   piSrcTmp[iSrcStep3]           << 4 )
    399             + (   piSrcTmp[iSrcStep4]           << 6 );
    400      
    401 #if REMOVE_INTERMEDIATE_CLIPPING
    402       piDst   [x * iDstStep] = (iSum +  shiftOffset) >>  shiftNum;
    403 #else
    404       piDst   [x * iDstStep] = Clip3(0, 16383, (iSum +  shiftOffset) >>  shiftNum );
    405 #endif
     382      // { -1,4,-11,40,40,-11,4,-1   }
     383      iTmp0 = piSrcTmp[          0]+piSrcTmp[iSrcStride7];
     384      iTmp1 = piSrcTmp[iSrcStride ]+piSrcTmp[iSrcStride6];
     385      iTmp2 = piSrcTmp[iSrcStride2]+piSrcTmp[iSrcStride5];
     386      iTmp3 = piSrcTmp[iSrcStride3]+piSrcTmp[iSrcStride4];
     387     
     388      iTmpA = (iTmp3 << 2) - iTmp2;
     389     
     390      iSum  = (   iTmp1          << 2 )
     391            + (   iTmpA          << 3 )
     392            + (   iTmpA          << 1 )
     393            -    iTmp0 -  iTmp2;
     394     
     395      piDst[x * iDstStep]    = iSum;
     396      piDstPel[x * iDstStep] = ClipY( (iSum +  32) >>  6 );
    406397      piSrcTmp += iSrcStep;
    407398    }
    408399    piSrc += iSrcStride;
    409400    piDst += iDstStride;
    410   }
    411   return;
    412 
    413 }
    414 
    415 
    416 
    417 __inline Void TRenInterpFilter::xCTI_FilterQuarter0Ver_ha (Pel* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst)
    418 {
     401    piDstPel += iDstStridePel;
     402  }
     403 return;
     404}
     405
     406__inline Void TRenInterpFilter::xCTI_FilterHalfVer (Pel* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Int*& rpiDst)
     407{
     408  Int*  piDst = rpiDst;
     409  Int   iSum;
     410  Pel*  piSrcTmp;
     411  Int iSrcStride2 = iSrcStride*2;
     412  Int iSrcStride3 = iSrcStride*3;
     413  Int iSrcStride4 = iSrcStride*4;
     414  Int iSrcStride5 = iSrcStride*5;
     415  Int iSrcStride6 = iSrcStride*6;
     416  Int iSrcStride7 = iSrcStride*7;
     417
     418  Int  iTmp0, iTmp1, iTmp2, iTmp3, iTmpA;
     419  for ( Int y = iHeight; y != 0; y-- )
     420  {
     421    piSrcTmp = &piSrc[ -3*iSrcStride ];
     422    for ( Int x = 0; x < iWidth; x++ )
     423    {
     424      // { -1,4,-11,40,40,-11,4,-1   }
     425      iTmp0 = piSrcTmp[          0]+piSrcTmp[iSrcStride7];
     426      iTmp1 = piSrcTmp[iSrcStride ]+piSrcTmp[iSrcStride6];
     427      iTmp2 = piSrcTmp[iSrcStride2]+piSrcTmp[iSrcStride5];
     428      iTmp3 = piSrcTmp[iSrcStride3]+piSrcTmp[iSrcStride4];
     429     
     430      iTmpA = (iTmp3 << 2) - iTmp2;
     431     
     432      iSum  = (   iTmp1          << 2 )
     433            + (   iTmpA          << 3 )
     434            + (   iTmpA          << 1 )
     435            -    iTmp0 -  iTmp2;       
     436     
     437      piDst[x * iDstStep] = iSum;
     438      piSrcTmp += iSrcStep;
     439    }
     440    piSrc += iSrcStride;
     441    piDst += iDstStride;
     442  }
     443  return;
     444}
     445
     446__inline Void TRenInterpFilter::xCTI_FilterHalfVer (Pel* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst)
     447{
     448  assert( g_bitDepthC == g_bitDepthY);  // ToDo: Update renderer to work with different luma/chroma bit depth
    419449  Pel*  piDst = rpiDst;
    420450  Int   iSum;
     
    427457  Int iSrcStride6 = iSrcStride*6;
    428458  Int iSrcStride7 = iSrcStride*7;
    429   Int shiftNum = g_uiBitIncrement + g_uiBitDepth - 8;
    430   Int shiftOffset = (shiftNum > 0) ? ( 1 << (shiftNum - 1)) : 0 ;
    431   Int  iTmp1, iTmp2;
     459
     460  Int  iTmp0, iTmp1, iTmp2, iTmp3, iTmpA;
    432461  for ( Int y = iHeight; y != 0; y-- )
    433462  {
     
    435464    for ( Int x = 0; x < iWidth; x++ )
    436465    {
    437       // {-1,   4,  -10,  57,   19,  -7,   3,   -1  },
    438      
    439       iTmp1 = piSrcTmp[iSrcStride3] + piSrcTmp[iSrcStride5];
    440       iTmp2 = piSrcTmp[iSrcStride6] + piSrcTmp[iSrcStride4];
    441      
    442       iSum  =  iTmp1 + iTmp2 - piSrcTmp[0] - piSrcTmp[iSrcStride7]
    443             - ( ( piSrcTmp[iSrcStride2] - iTmp2 ) << 1 )
    444             + (  piSrcTmp[iSrcStride]             << 2 )
    445             - ( ( piSrcTmp[iSrcStride2] + iTmp1 ) << 3 )
    446             + (   piSrcTmp[iSrcStride4]           << 4 )
    447             + (   piSrcTmp[iSrcStride3]           << 6);
    448      
    449 #if REMOVE_INTERMEDIATE_CLIPPING
    450       piDst   [x * iDstStep] = (iSum +  shiftOffset) >>  shiftNum;
    451 #else
    452       piDst   [x * iDstStep] = Clip3(0, 16383, (iSum +  shiftOffset) >>  shiftNum );
    453 #endif
     466      // { -1,4,-11,40,40,-11,4,-1   }
     467      iTmp0 = piSrcTmp[          0]+piSrcTmp[iSrcStride7];
     468      iTmp1 = piSrcTmp[iSrcStride ]+piSrcTmp[iSrcStride6];
     469      iTmp2 = piSrcTmp[iSrcStride2]+piSrcTmp[iSrcStride5];
     470      iTmp3 = piSrcTmp[iSrcStride3]+piSrcTmp[iSrcStride4];
     471     
     472      iTmpA = (iTmp3 << 2) - iTmp2;
     473     
     474      iSum  = (   iTmp1          << 2 )
     475            + (   iTmpA          << 3 )
     476            + (   iTmpA          << 1 )
     477            -    iTmp0 -  iTmp2;       
     478     
     479      piDst[x * iDstStep] = ClipY( (iSum +  32) >>  6 );
    454480      piSrcTmp += iSrcStep;
    455481    }
     
    458484  }
    459485  return;
    460 
    461 }
    462 
    463 
    464 __inline Void TRenInterpFilter::xCTI_FilterQuarter1Ver_ha (Pel* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst)
    465 {
    466   Pel*  piDst = rpiDst;
     486}
     487
     488__inline Void TRenInterpFilter::xCTI_FilterQuarter0Ver (Pel* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Int*& rpiDst)
     489{
     490  Int*  piDst = rpiDst;
    467491  Int   iSum;
    468492  Pel*  piSrcTmp;
    469 
    470493  Int iSrcStride2 = iSrcStride*2;
    471494  Int iSrcStride3 = iSrcStride*3;
     
    474497  Int iSrcStride6 = iSrcStride*6;
    475498  Int iSrcStride7 = iSrcStride*7;
    476   Int shiftNum = g_uiBitIncrement + g_uiBitDepth - 8;
    477   Int shiftOffset = (shiftNum > 0) ? ( 1 << (shiftNum - 1)) : 0 ;
     499
    478500  Int  iTmp1, iTmp2;
    479 
    480501  for ( Int y = iHeight; y != 0; y-- )
    481502  {
     
    483504    for ( Int x = 0; x < iWidth; x++ )
    484505    {
    485       /// {-1,   3,  -7,  19,   57,  -10,   4,   -1  },
    486       iTmp1 = piSrcTmp[iSrcStride4] + piSrcTmp[iSrcStride2];
    487       iTmp2 = piSrcTmp[iSrcStride ] + piSrcTmp[iSrcStride3];
     506      // {-1,   4,  -10,  57,   19,  -7,   3,   -1  },
     507     
     508      iTmp1 = piSrcTmp[iSrcStride3] + piSrcTmp[iSrcStride5];
     509      iTmp2 = piSrcTmp[iSrcStride6] + piSrcTmp[iSrcStride4];
    488510     
    489511      iSum  =  iTmp1 + iTmp2 - piSrcTmp[0] - piSrcTmp[iSrcStride7]
    490             - ( ( piSrcTmp[iSrcStride5] - iTmp2 ) << 1 )
    491             + (   piSrcTmp[iSrcStride6]           << 2 )
    492             - ( ( piSrcTmp[iSrcStride5] + iTmp1 ) << 3 )
    493             + (   piSrcTmp[iSrcStride3]           << 4 )
    494             + (   piSrcTmp[iSrcStride4]           << 6 );
    495            
    496 #if REMOVE_INTERMEDIATE_CLIPPING
    497       piDst   [x * iDstStep] = (iSum +  shiftOffset) >>  shiftNum;
    498 #else
    499       piDst   [x * iDstStep] = Clip3(0, 16383, (iSum +  shiftOffset) >>  shiftNum );
    500 #endif
     512            - ( ( piSrcTmp[iSrcStride2] - iTmp2 ) << 1 )
     513            + (  piSrcTmp[iSrcStride]             << 2 )
     514            - ( ( piSrcTmp[iSrcStride2] + iTmp1 ) << 3 )
     515            + (   piSrcTmp[iSrcStride4]           << 4 )
     516            + (   piSrcTmp[iSrcStride3]           << 6 );
     517     
     518      piDst[x * iDstStep] = iSum;
    501519      piSrcTmp += iSrcStep;
    502520    }
     
    505523  }
    506524  return;
    507 
    508 }
    509 
    510 __inline Void TRenInterpFilter::xCTI_FilterHalfVer_ha  (Pel* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst)
    511 {
     525}
     526
     527__inline Void TRenInterpFilter::xCTI_FilterQuarter0Ver (Pel* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst)
     528{
     529  assert( g_bitDepthC == g_bitDepthY );  // ToDo: Update renderer to work with different luma/chroma bit depth
    512530  Pel*  piDst = rpiDst;
    513531  Int   iSum;
     
    520538  Int iSrcStride6 = iSrcStride*6;
    521539  Int iSrcStride7 = iSrcStride*7;
    522   Int shiftNum = g_uiBitIncrement + g_uiBitDepth - 8;
    523   Int shiftOffset = (shiftNum > 0) ? ( 1 << (shiftNum - 1)) : 0 ;
    524   Int  iTmp0, iTmp1, iTmp2, iTmp3, iTmpA;
    525   for ( Int y = iHeight; y != 0; y-- )
    526   {
    527     piSrcTmp = &piSrc[ -3*iSrcStride ];
    528     for ( Int x = 0; x < iWidth; x++ )
    529     {
    530       // { -1,4,-11,40,40,-11,4,-1   }
    531       iTmp0 = piSrcTmp[          0]+piSrcTmp[iSrcStride7];
    532       iTmp1 = piSrcTmp[iSrcStride ]+piSrcTmp[iSrcStride6];
    533       iTmp2 = piSrcTmp[iSrcStride2]+piSrcTmp[iSrcStride5];
    534       iTmp3 = piSrcTmp[iSrcStride3]+piSrcTmp[iSrcStride4];
    535      
    536       iTmpA = (iTmp3 << 2) - iTmp2;
    537      
    538       iSum  = (   iTmp1          << 2 )
    539             + (   iTmpA          << 3 )
    540             + (   iTmpA          << 1 )
    541             -    iTmp0 -  iTmp2;       
    542      
    543 #if REMOVE_INTERMEDIATE_CLIPPING
    544       piDst   [x * iDstStep] = (iSum +  shiftOffset) >>  shiftNum;
    545 #else
    546       piDst   [x * iDstStep] = Clip3(0, 16383, (iSum +  shiftOffset) >>  shiftNum );
    547 #endif
    548       piSrcTmp += iSrcStep;
    549     }
    550     piSrc += iSrcStride;
    551     piDst += iDstStride;
    552   }
    553   return;
    554 
    555 }
    556 
    557 
    558 #endif
    559 
    560 // ------------------------------------------------------------------------------------------------
    561 // DCTIF filters
    562 // ------------------------------------------------------------------------------------------------
    563 
    564 __inline Void TRenInterpFilter::xCTI_FilterHalfHor(Pel* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst)
    565 {
    566   Pel*  piDst    = rpiDst;
    567   Int   iSum;
    568   Pel*  piSrcTmp;
    569   Int iSrcStep2 = iSrcStep*2;
    570   Int iSrcStep3 = iSrcStep*3;
    571   Int iSrcStep4 = iSrcStep*4;
    572   Int iSrcStep5 = iSrcStep*5;
    573   Int iSrcStep6 = iSrcStep*6;
    574   Int iSrcStep7 = iSrcStep*7;
    575 
    576   Int iTmp0, iTmp1, iTmp2, iTmp3, iTmpA;
    577 
    578   for ( Int y = iHeight; y != 0; y-- )
    579   {
    580     piSrcTmp = &piSrc[ -3*iSrcStep ];
    581     for ( Int x = 0; x < iWidth; x++ )
    582     {
    583       // { -1,4,-11,40,40,-11,4,-1   }
    584       iTmp0 = piSrcTmp[        0]+piSrcTmp[iSrcStep7];
    585       iTmp1 = piSrcTmp[iSrcStep]+piSrcTmp[iSrcStep6];
    586       iTmp2 = piSrcTmp[iSrcStep2]+piSrcTmp[iSrcStep5];
    587       iTmp3 = piSrcTmp[iSrcStep3]+piSrcTmp[iSrcStep4];
    588 
    589       iTmpA = (iTmp3 << 2) - iTmp2;
    590 
    591       iSum  = (   iTmp1          << 2 )
    592             + (   iTmpA          << 3 )
    593             + (   iTmpA          << 1 )
    594             -    iTmp0 -  iTmp2;
    595 
    596       piDst   [x * iDstStep] = Clip( (iSum +  32) >>  6 );
    597       piSrcTmp += iSrcStep;
    598     }
    599     piSrc += iSrcStride;
    600     piDst += iDstStride;
    601   }
    602   return;
    603 }
    604 
    605 __inline Void TRenInterpFilter::xCTI_FilterHalfHor(Int* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst)
    606 {
    607   Pel*  piDst    = rpiDst;
    608   Int   iSum;
    609   Int*  piSrcTmp;
    610   Int iSrcStep2 = iSrcStep*2;
    611   Int iSrcStep3 = iSrcStep*3;
    612   Int iSrcStep4 = iSrcStep*4;
    613   Int iSrcStep5 = iSrcStep*5;
    614   Int iSrcStep6 = iSrcStep*6;
    615   Int iSrcStep7 = iSrcStep*7;
    616 
    617   Int iTmp0, iTmp1, iTmp2, iTmp3, iTmpA;
    618 
    619   for ( Int y = iHeight; y != 0; y-- )
    620   {
    621     piSrcTmp = &piSrc[ -3*iSrcStep ];
    622     for ( Int x = 0; x < iWidth; x++ )
    623     {
    624       // { -1,4,-11,40,40,-11,4,-1   }
    625       iTmp0 = piSrcTmp[        0]+piSrcTmp[iSrcStep7];
    626       iTmp1 = piSrcTmp[iSrcStep ]+piSrcTmp[iSrcStep6];
    627       iTmp2 = piSrcTmp[iSrcStep2]+piSrcTmp[iSrcStep5];
    628       iTmp3 = piSrcTmp[iSrcStep3]+piSrcTmp[iSrcStep4];
    629      
    630       iTmpA = (iTmp3 << 2) - iTmp2;
    631      
    632       iSum  = (   iTmp1          << 2 )
    633             + (   iTmpA          << 3 )
    634             + (   iTmpA          << 1 )
    635             -    iTmp0 -  iTmp2;
    636      
    637       piDst   [x * iDstStep] = Clip( (iSum +  2048) >>  12 );
    638       piSrcTmp += iSrcStep;
    639     }
    640     piSrc += iSrcStride;
    641     piDst += iDstStride;
    642   }
    643   return;
    644 }
    645 
    646 __inline Void TRenInterpFilter::xCTI_FilterQuarter0Hor(Pel* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst)
    647 {
    648   Pel*  piDst    = rpiDst;
    649   Int   iSum;
    650   Pel*  piSrcTmp;
    651   Int iSrcStep2 = iSrcStep*2;
    652   Int iSrcStep3 = iSrcStep*3;
    653   Int iSrcStep4 = iSrcStep*4;
    654   Int iSrcStep5 = iSrcStep*5;
    655   Int iSrcStep6 = iSrcStep*6;
    656   Int iSrcStep7 = iSrcStep*7;
    657 
    658   Int  iTmp1, iTmp2;
    659 
    660   for ( Int y = iHeight; y != 0; y-- )
    661   {
    662     piSrcTmp = &piSrc[ -3*iSrcStep ];
    663     for ( Int x = 0; x < iWidth; x++ )
    664     {
    665       // {-1,   4,  -10,  57,   19,  -7,   3,   -1  },
    666      
    667       iTmp1 = piSrcTmp[iSrcStep3] + piSrcTmp[iSrcStep5];
    668       iTmp2 = piSrcTmp[iSrcStep6] + piSrcTmp[iSrcStep4];
    669      
    670       iSum  =  iTmp1 + iTmp2 - piSrcTmp[0] - piSrcTmp[iSrcStep7]
    671              - ( ( piSrcTmp[iSrcStep2] - iTmp2 ) << 1 )
    672              + (  piSrcTmp[iSrcStep]             << 2 )
    673              - ( ( piSrcTmp[iSrcStep2] + iTmp1 ) << 3 )
    674              + (   piSrcTmp[iSrcStep4]           << 4 );
    675      
    676       piDst   [x * iDstStep] = Clip(( (iSum +  32) >>  6 )+ piSrcTmp[iSrcStep3]);
    677       piSrcTmp += iSrcStep;
    678     }
    679     piSrc += iSrcStride;
    680     piDst += iDstStride;
    681   }
    682   return;
    683 }
    684 
    685 __inline Void TRenInterpFilter::xCTI_FilterQuarter0Hor(Int* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst)
    686 {
    687   Pel*  piDst    = rpiDst;
    688   Int   iSum;
    689   Int*  piSrcTmp;
    690   Int iSrcStep2 = iSrcStep*2;
    691   Int iSrcStep3 = iSrcStep*3;
    692   Int iSrcStep4 = iSrcStep*4;
    693   Int iSrcStep5 = iSrcStep*5;
    694   Int iSrcStep6 = iSrcStep*6;
    695   Int iSrcStep7 = iSrcStep*7;
    696 
    697   Int  iTmp1, iTmp2;
    698 
    699   for ( Int y = iHeight; y != 0; y-- )
    700   {
    701     piSrcTmp = &piSrc[ -3*iSrcStep ];
    702     for ( Int x = 0; x < iWidth; x++ )
    703     {
    704       // {-1,   4,  -10,  57,   19,  -7,   3,   -1  },
    705    
    706       iTmp1 = piSrcTmp[iSrcStep3] + piSrcTmp[iSrcStep5];
    707       iTmp2 = piSrcTmp[iSrcStep6] + piSrcTmp[iSrcStep4];
    708      
    709       iSum  =  iTmp1 + iTmp2 - piSrcTmp[0] - piSrcTmp[iSrcStep7]
    710             - ( ( piSrcTmp[iSrcStep2] - iTmp2 ) << 1 )
    711             + (  piSrcTmp[iSrcStep]             << 2 )
    712             - ( ( piSrcTmp[iSrcStep2] + iTmp1 ) << 3 )
    713             + (   piSrcTmp[iSrcStep4]           << 4 )
    714             + (   piSrcTmp[iSrcStep3]           << 6 );
    715      
    716       piDst   [x * iDstStep] = Clip( (iSum +  2048) >>  12 );
    717       piSrcTmp += iSrcStep;
    718     }
    719     piSrc += iSrcStride;
    720     piDst += iDstStride;
    721   }
    722   return;
    723 }
    724 
    725 __inline Void TRenInterpFilter::xCTI_FilterQuarter1Hor(Pel* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst)
    726 {
    727   Pel*  piDst    = rpiDst;
    728   Int   iSum;
    729   Pel*  piSrcTmp;
    730   Int iSrcStep2 = iSrcStep*2;
    731   Int iSrcStep3 = iSrcStep*3;
    732   Int iSrcStep4 = iSrcStep*4;
    733   Int iSrcStep5 = iSrcStep*5;
    734   Int iSrcStep6 = iSrcStep*6;
    735   Int iSrcStep7 = iSrcStep*7;
    736 
    737   Int  iTmp1, iTmp2;
    738   for ( Int y = iHeight; y != 0; y-- )
    739   {
    740     piSrcTmp = &piSrc[ -3*iSrcStep ];
    741     for ( Int x = 0; x < iWidth; x++ )
    742     {
    743       // {-1,   3,  -7,  19,   57,  -10,   4,   -1  },
    744      
    745       iTmp1 = piSrcTmp[iSrcStep4] + piSrcTmp[iSrcStep2];
    746       iTmp2 = piSrcTmp[iSrcStep ] + piSrcTmp[iSrcStep3];
    747      
    748       iSum  =  iTmp1 + iTmp2 - piSrcTmp[0] - piSrcTmp[iSrcStep7]
    749             - ( ( piSrcTmp[iSrcStep5] - iTmp2 ) << 1 )
    750             + (   piSrcTmp[iSrcStep6]           << 2 )
    751             - ( ( piSrcTmp[iSrcStep5] + iTmp1 ) << 3 )
    752             + (   piSrcTmp[iSrcStep3]           << 4 );
    753      
    754       piDst   [x * iDstStep] = Clip( ((iSum +  32) >>  6) + piSrcTmp[iSrcStep4] );
    755       piSrcTmp += iSrcStep;
    756     }
    757     piSrc += iSrcStride;
    758     piDst += iDstStride;
    759   }
    760   return;
    761 }
    762 
    763 __inline Void TRenInterpFilter::xCTI_FilterQuarter1Hor(Int* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst)
    764 {
    765   Pel*  piDst    = rpiDst;
    766   Int   iSum;
    767   Int*  piSrcTmp;
    768   Int iSrcStep2 = iSrcStep*2;
    769   Int iSrcStep3 = iSrcStep*3;
    770   Int iSrcStep4 = iSrcStep*4;
    771   Int iSrcStep5 = iSrcStep*5;
    772   Int iSrcStep6 = iSrcStep*6;
    773   Int iSrcStep7 = iSrcStep*7;
    774 
    775   Int  iTmp1, iTmp2;
    776   for ( Int y = iHeight; y != 0; y-- )
    777   {
    778     piSrcTmp = &piSrc[ -3*iSrcStep ];
    779     for ( Int x = 0; x < iWidth; x++ )
    780     {
    781       // {-1,   3,  -7,  19,   57,  -10,   4,   -1  },
    782      
    783       iTmp1 = piSrcTmp[iSrcStep4] + piSrcTmp[iSrcStep2];
    784       iTmp2 = piSrcTmp[iSrcStep ] + piSrcTmp[iSrcStep3];
    785      
    786       iSum  =  iTmp1 + iTmp2 - piSrcTmp[0] - piSrcTmp[iSrcStep7]
    787             - ( ( piSrcTmp[iSrcStep5] - iTmp2 ) << 1 )
    788             + (   piSrcTmp[iSrcStep6]           << 2 )
    789             - ( ( piSrcTmp[iSrcStep5] + iTmp1 ) << 3 )
    790             + (   piSrcTmp[iSrcStep3]           << 4 )
    791             + (   piSrcTmp[iSrcStep4]           << 6 );
    792      
    793       piDst   [x * iDstStep] = Clip( (iSum +  2048) >>  12 );
    794       piSrcTmp += iSrcStep;
    795     }
    796     piSrc += iSrcStride;
    797     piDst += iDstStride;
    798   }
    799   return;
    800 }
    801 
    802 __inline Void TRenInterpFilter::xCTI_FilterHalfVer (Pel* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Int*& rpiDst, Int iDstStridePel, Pel*& rpiDstPel )
    803 {
    804   Int*  piDst = rpiDst;
    805   Pel*  piDstPel = rpiDstPel;
    806   Int   iSum;
    807   Pel*  piSrcTmp;
    808   Int iSrcStride2 = iSrcStride*2;
    809   Int iSrcStride3 = iSrcStride*3;
    810   Int iSrcStride4 = iSrcStride*4;
    811   Int iSrcStride5 = iSrcStride*5;
    812   Int iSrcStride6 = iSrcStride*6;
    813   Int iSrcStride7 = iSrcStride*7;
    814 
    815   Int  iTmp0, iTmp1, iTmp2, iTmp3, iTmpA;
    816   for ( Int y = iHeight; y != 0; y-- )
    817   {
    818     piSrcTmp = &piSrc[ -3*iSrcStride ];
    819     for ( Int x = 0; x < iWidth; x++ )
    820     {
    821       // { -1,4,-11,40,40,-11,4,-1   }
    822       iTmp0 = piSrcTmp[          0]+piSrcTmp[iSrcStride7];
    823       iTmp1 = piSrcTmp[iSrcStride ]+piSrcTmp[iSrcStride6];
    824       iTmp2 = piSrcTmp[iSrcStride2]+piSrcTmp[iSrcStride5];
    825       iTmp3 = piSrcTmp[iSrcStride3]+piSrcTmp[iSrcStride4];
    826      
    827       iTmpA = (iTmp3 << 2) - iTmp2;
    828      
    829       iSum  = (   iTmp1          << 2 )
    830             + (   iTmpA          << 3 )
    831             + (   iTmpA          << 1 )
    832             -    iTmp0 -  iTmp2;
    833      
    834       piDst[x * iDstStep]    = iSum;
    835       piDstPel[x * iDstStep] = Clip( (iSum +  32) >>  6 );
    836       piSrcTmp += iSrcStep;
    837     }
    838     piSrc += iSrcStride;
    839     piDst += iDstStride;
    840     piDstPel += iDstStridePel;
    841   }
    842  return;
    843 }
    844 
    845 __inline Void TRenInterpFilter::xCTI_FilterHalfVer (Pel* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Int*& rpiDst)
    846 {
    847   Int*  piDst = rpiDst;
    848   Int   iSum;
    849   Pel*  piSrcTmp;
    850   Int iSrcStride2 = iSrcStride*2;
    851   Int iSrcStride3 = iSrcStride*3;
    852   Int iSrcStride4 = iSrcStride*4;
    853   Int iSrcStride5 = iSrcStride*5;
    854   Int iSrcStride6 = iSrcStride*6;
    855   Int iSrcStride7 = iSrcStride*7;
    856 
    857   Int  iTmp0, iTmp1, iTmp2, iTmp3, iTmpA;
    858   for ( Int y = iHeight; y != 0; y-- )
    859   {
    860     piSrcTmp = &piSrc[ -3*iSrcStride ];
    861     for ( Int x = 0; x < iWidth; x++ )
    862     {
    863       // { -1,4,-11,40,40,-11,4,-1   }
    864       iTmp0 = piSrcTmp[          0]+piSrcTmp[iSrcStride7];
    865       iTmp1 = piSrcTmp[iSrcStride ]+piSrcTmp[iSrcStride6];
    866       iTmp2 = piSrcTmp[iSrcStride2]+piSrcTmp[iSrcStride5];
    867       iTmp3 = piSrcTmp[iSrcStride3]+piSrcTmp[iSrcStride4];
    868      
    869       iTmpA = (iTmp3 << 2) - iTmp2;
    870      
    871       iSum  = (   iTmp1          << 2 )
    872             + (   iTmpA          << 3 )
    873             + (   iTmpA          << 1 )
    874             -    iTmp0 -  iTmp2;       
    875      
    876       piDst[x * iDstStep] = iSum;
    877       piSrcTmp += iSrcStep;
    878     }
    879     piSrc += iSrcStride;
    880     piDst += iDstStride;
    881   }
    882   return;
    883 }
    884 
    885 __inline Void TRenInterpFilter::xCTI_FilterHalfVer (Pel* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst)
    886 {
    887   Pel*  piDst = rpiDst;
    888   Int   iSum;
    889   Pel*  piSrcTmp;
    890  
    891   Int iSrcStride2 = iSrcStride*2;
    892   Int iSrcStride3 = iSrcStride*3;
    893   Int iSrcStride4 = iSrcStride*4;
    894   Int iSrcStride5 = iSrcStride*5;
    895   Int iSrcStride6 = iSrcStride*6;
    896   Int iSrcStride7 = iSrcStride*7;
    897 
    898   Int  iTmp0, iTmp1, iTmp2, iTmp3, iTmpA;
    899   for ( Int y = iHeight; y != 0; y-- )
    900   {
    901     piSrcTmp = &piSrc[ -3*iSrcStride ];
    902     for ( Int x = 0; x < iWidth; x++ )
    903     {
    904       // { -1,4,-11,40,40,-11,4,-1   }
    905       iTmp0 = piSrcTmp[          0]+piSrcTmp[iSrcStride7];
    906       iTmp1 = piSrcTmp[iSrcStride ]+piSrcTmp[iSrcStride6];
    907       iTmp2 = piSrcTmp[iSrcStride2]+piSrcTmp[iSrcStride5];
    908       iTmp3 = piSrcTmp[iSrcStride3]+piSrcTmp[iSrcStride4];
    909      
    910       iTmpA = (iTmp3 << 2) - iTmp2;
    911      
    912       iSum  = (   iTmp1          << 2 )
    913             + (   iTmpA          << 3 )
    914             + (   iTmpA          << 1 )
    915             -    iTmp0 -  iTmp2;       
    916      
    917       piDst[x * iDstStep] = Clip( (iSum +  32) >>  6 );
    918       piSrcTmp += iSrcStep;
    919     }
    920     piSrc += iSrcStride;
    921     piDst += iDstStride;
    922   }
    923   return;
    924 }
    925 
    926 __inline Void TRenInterpFilter::xCTI_FilterQuarter0Ver (Pel* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Int*& rpiDst)
    927 {
    928   Int*  piDst = rpiDst;
    929   Int   iSum;
    930   Pel*  piSrcTmp;
    931   Int iSrcStride2 = iSrcStride*2;
    932   Int iSrcStride3 = iSrcStride*3;
    933   Int iSrcStride4 = iSrcStride*4;
    934   Int iSrcStride5 = iSrcStride*5;
    935   Int iSrcStride6 = iSrcStride*6;
    936   Int iSrcStride7 = iSrcStride*7;
    937 
    938   Int  iTmp1, iTmp2;
    939   for ( Int y = iHeight; y != 0; y-- )
    940   {
    941     piSrcTmp = &piSrc[ -3*iSrcStride ];
    942     for ( Int x = 0; x < iWidth; x++ )
    943     {
    944       // {-1,   4,  -10,  57,   19,  -7,   3,   -1  },
    945      
    946       iTmp1 = piSrcTmp[iSrcStride3] + piSrcTmp[iSrcStride5];
    947       iTmp2 = piSrcTmp[iSrcStride6] + piSrcTmp[iSrcStride4];
    948      
    949       iSum  =  iTmp1 + iTmp2 - piSrcTmp[0] - piSrcTmp[iSrcStride7]
    950             - ( ( piSrcTmp[iSrcStride2] - iTmp2 ) << 1 )
    951             + (  piSrcTmp[iSrcStride]             << 2 )
    952             - ( ( piSrcTmp[iSrcStride2] + iTmp1 ) << 3 )
    953             + (   piSrcTmp[iSrcStride4]           << 4 )
    954             + (   piSrcTmp[iSrcStride3]           << 6 );
    955      
    956       piDst[x * iDstStep] = iSum;
    957       piSrcTmp += iSrcStep;
    958     }
    959     piSrc += iSrcStride;
    960     piDst += iDstStride;
    961   }
    962   return;
    963 }
    964 
    965 __inline Void TRenInterpFilter::xCTI_FilterQuarter0Ver (Pel* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst)
    966 {
    967   Pel*  piDst = rpiDst;
    968   Int   iSum;
    969   Pel*  piSrcTmp;
    970  
    971   Int iSrcStride2 = iSrcStride*2;
    972   Int iSrcStride3 = iSrcStride*3;
    973   Int iSrcStride4 = iSrcStride*4;
    974   Int iSrcStride5 = iSrcStride*5;
    975   Int iSrcStride6 = iSrcStride*6;
    976   Int iSrcStride7 = iSrcStride*7;
    977540
    978541  Int  iTmp1, iTmp2;
     
    993556            + (   piSrcTmp[iSrcStride4]           << 4 );
    994557     
    995       piDst[x * iDstStep] = Clip( ((iSum +  32) >>  6) + piSrcTmp[iSrcStride3] );
     558      piDst[x * iDstStep] = ClipY( ((iSum +  32) >>  6) + piSrcTmp[iSrcStride3] );
    996559      piSrcTmp += iSrcStep;
    997560    }
     
    1043606__inline Void TRenInterpFilter::xCTI_FilterQuarter1Ver (Pel* piSrc, Int iSrcStride, Int iSrcStep, Int iWidth, Int iHeight, Int iDstStride, Int iDstStep, Pel*& rpiDst)
    1044607{
     608  assert( g_bitDepthC == g_bitDepthY);  // ToDo: Update renderer to work with different luma/chroma bit depth
     609
    1045610  Pel*  piDst = rpiDst;
    1046611  Int   iSum;
     
    1070635            + (   piSrcTmp[iSrcStride3]           << 4 );
    1071636           
    1072       piDst[x * iDstStep] = Clip( ((iSum +  32) >>  6) +  piSrcTmp[iSrcStride4] );
     637      piDst[x * iDstStep] = ClipY( ((iSum +  32) >>  6) +  piSrcTmp[iSrcStride4] );
    1073638      piSrcTmp += iSrcStep;
    1074639    }
     
    1211776__inline Void TRenInterpFilter::xCTI_Filter2DHorC(Int* piSrc, Int iSrcStride,  Int iWidth, Int iHeight, Int iDstStride,  Pel*& rpiDst, Int iMV)
    1212777{
     778  assert( g_bitDepthC == g_bitDepthY);  // ToDo: Update renderer to work with different luma/chroma bit depth
    1213779  Pel*  piDst    = rpiDst;
    1214780  Int   iSum;
     
    1225791        {
    1226792          iSum         = xCTI_Filter_VI04_C_OCT0( piSrcTmp, 1 );
    1227           piDst   [x ] = Clip ((iSum +  2048) >>  12 );
     793          piDst   [x ] = ClipC ((iSum +  2048) >>  12 );
    1228794          piSrcTmp++;
    1229795        }
     
    1241807        {
    1242808          iSum         = xCTI_Filter_VI04_C_QUA0( piSrcTmp, 1 );
    1243           piDst   [x ] = Clip ((iSum +  2048) >>  12 );
     809          piDst   [x ] = ClipC ((iSum +  2048) >>  12 );
    1244810          piSrcTmp++;
    1245811        }
     
    1257823        {
    1258824          iSum         = xCTI_Filter_VI04_C_QUA1( piSrcTmp, 1 );
    1259           piDst   [x ] = Clip ((iSum +  2048) >>  12 );
     825          piDst   [x ] = ClipC ((iSum +  2048) >>  12 );
    1260826          piSrcTmp++;
    1261827        }
     
    1273839        {
    1274840          iSum         = xCTI_Filter_VI04_C_OCT1( piSrcTmp, 1 );
    1275           piDst   [x ] = Clip ((iSum +  2048) >>  12 );
     841          piDst   [x ] = ClipC ((iSum +  2048) >>  12 );
    1276842          piSrcTmp++;
    1277843        }
     
    1289855        {
    1290856          iSum         = xCTI_Filter_VI04_C_OCT2( piSrcTmp, 1 );
    1291           piDst   [x ] = Clip ((iSum +  2048) >>  12 );
     857          piDst   [x ] = ClipC ((iSum +  2048) >>  12 );
    1292858          piSrcTmp++;
    1293859        }
     
    1305871        {
    1306872          iSum         = xCTI_Filter_VI04_C_OCT3( piSrcTmp, 1 );
    1307           piDst   [x ] = Clip ((iSum +  2048) >>  12 );
     873          piDst   [x ] = ClipC ((iSum +  2048) >>  12 );
    1308874          piSrcTmp++;
    1309875        }
     
    1321887        {
    1322888          iSum      = xCTI_Filter_VIS04_C_HAL( piSrcTmp, 1 );
    1323           piDst   [x ] = Clip ((iSum +  2048) >>  12 );
     889          piDst   [x ] = ClipC ((iSum +  2048) >>  12 );
    1324890          piSrcTmp++;
    1325891        }
     
    1338904__inline Void TRenInterpFilter::xCTI_Filter1DVerC (Pel* piSrc, Int iSrcStride, Int iWidth, Int iHeight, Int iDstStride,  Pel*& rpiDst, Int iMV)
    1339905{
     906  assert( g_bitDepthC == g_bitDepthY);  // ToDo: Update renderer to work with different luma/chroma bit depth
     907
    1340908  Pel*  piDst = rpiDst;
    1341909  Int   iSum;
     
    1352920        {
    1353921          iSum      = xCTI_Filter_VP04_C_OCT0( piSrcTmp,  iSrcStride );
    1354           piDst[x ] = Clip ((iSum +  32) >>  6 );
     922          piDst[x ] = ClipC ((iSum +  32) >>  6 );
    1355923          piSrcTmp++;
    1356924        }
     
    1368936        {
    1369937          iSum      = xCTI_Filter_VP04_C_QUA0( piSrcTmp,  iSrcStride );
    1370           piDst[x ] = Clip ((iSum +  32) >>  6 );
     938          piDst[x ] = ClipC ((iSum +  32) >>  6 );
    1371939          piSrcTmp++;
    1372940        }
     
    1384952        {
    1385953          iSum      = xCTI_Filter_VP04_C_QUA1( piSrcTmp,  iSrcStride );
    1386           piDst[x ] = Clip ((iSum +  32) >>  6 );
     954          piDst[x ] = ClipC ((iSum +  32) >>  6 );
    1387955          piSrcTmp++;
    1388956        }
     
    1400968        {
    1401969          iSum      = xCTI_Filter_VP04_C_OCT1( piSrcTmp,  iSrcStride );
    1402           piDst[x ] = Clip ((iSum +  32) >>  6 );
     970          piDst[x ] = ClipC ((iSum +  32) >>  6 );
    1403971          piSrcTmp++;
    1404972        }
     
    1416984        {
    1417985          iSum      = xCTI_Filter_VP04_C_OCT2( piSrcTmp,  iSrcStride );
    1418           piDst[x ] = Clip ((iSum +  32) >>  6 );
     986          piDst[x ] = ClipC ((iSum +  32) >>  6 );
    1419987          piSrcTmp++;
    1420988        }
     
    14321000        {
    14331001          iSum      = xCTI_Filter_VP04_C_OCT3( piSrcTmp,  iSrcStride );
    1434           piDst[x ] = Clip ((iSum +  32) >>  6 );
     1002          piDst[x ] = ClipC ((iSum +  32) >>  6 );
    14351003          piSrcTmp++;
    14361004        }
     
    14481016        {
    14491017          iSum      = xCTI_Filter_VPS04_C_HAL( piSrcTmp, iSrcStride );
    1450           piDst[x ] = Clip ((iSum +  32) >>  6 );
     1018          piDst[x ] = ClipC ((iSum +  32) >>  6 );
    14511019          piSrcTmp++;
    14521020        }
     
    14781046        {
    14791047          iSum         = xCTI_Filter_VP04_C_OCT0( piSrcTmp,  1 );
    1480           piDst[x ] = Clip ((iSum +  32) >>  6 );
     1048          piDst[x ] = ClipC ((iSum +  32) >>  6 );
    14811049          piSrcTmp++;
    14821050        }
     
    14941062        {
    14951063          iSum         = xCTI_Filter_VP04_C_QUA0( piSrcTmp,  1 );
    1496           piDst[x ] = Clip ((iSum +  32) >>  6 );
     1064          piDst[x ] = ClipC ((iSum +  32) >>  6 );
    14971065          piSrcTmp++;
    14981066        }
     
    15101078        {
    15111079          iSum         = xCTI_Filter_VP04_C_QUA1( piSrcTmp,  1 );
    1512           piDst[x ] = Clip ((iSum +  32) >>  6 );
     1080          piDst[x ] = ClipC ((iSum +  32) >>  6 );
    15131081          piSrcTmp++;
    15141082        }
     
    15261094        {
    15271095          iSum         = xCTI_Filter_VP04_C_OCT1( piSrcTmp,  1 );
    1528           piDst[x ] = Clip ((iSum +  32) >>  6 );
     1096          piDst[x ] = ClipC ((iSum +  32) >>  6 );
    15291097          piSrcTmp++;
    15301098        }
     
    15421110        {
    15431111          iSum         = xCTI_Filter_VP04_C_OCT2( piSrcTmp,  1 );
    1544           piDst[x ] = Clip ((iSum +  32) >>  6 );
     1112          piDst[x ] = ClipC ((iSum +  32) >>  6 );
    15451113          piSrcTmp++;
    15461114        }
     
    15581126        {
    15591127          iSum         = xCTI_Filter_VP04_C_OCT3( piSrcTmp,  1 );
    1560           piDst[x ] = Clip ((iSum +  32) >>  6 );
     1128          piDst[x ] = ClipC ((iSum +  32) >>  6 );
    15611129          piSrcTmp++;
    15621130        }
     
    15741142        {
    15751143          iSum         = xCTI_Filter_VPS04_C_HAL( piSrcTmp,  1 );
    1576           piDst[x ] = Clip ((iSum +  32) >>  6 );
     1144          piDst[x ] = ClipC ((iSum +  32) >>  6 );
    15771145          piSrcTmp++;
    15781146        }
     
    15871155  return;
    15881156}
    1589 
    1590 #if HIGH_ACCURACY_BI
    1591 __inline Void TRenInterpFilter::xCTI_Filter2DHorC_ha(Int* piSrc, Int iSrcStride,  Int iWidth, Int iHeight, Int iDstStride,  Pel*& rpiDst, Int iMV)
    1592 {
    1593   Pel*  piDst    = rpiDst;
    1594   Int   iSum;
    1595   Int*  piSrcTmp;
    1596   Int shiftNum  = 6 + g_uiBitIncrement + g_uiBitDepth - 8;
    1597   Int shiftOffset = (shiftNum > 0) ? ( 1 << (shiftNum - 1)) : 0 ;
    1598 
    1599   switch (iMV)
    1600   {
    1601   case 1:
    1602   { 
    1603       for ( Int y = iHeight; y != 0; y-- )
    1604       {
    1605         piSrcTmp = &piSrc[ -1 ];
    1606         for ( Int x = 0; x < iWidth; x++ )
    1607         {
    1608           iSum         = xCTI_Filter_VI04_C_OCT0( piSrcTmp, 1 );
    1609 #if REMOVE_INTERMEDIATE_CLIPPING
    1610           piDst[x ] = (iSum +  shiftOffset) >>  shiftNum;
    1611 #else
    1612           piDst[x ] = Clip3(0,16383, (iSum +  shiftOffset) >>  shiftNum );
    1613 #endif
    1614           piSrcTmp++;
    1615         }
    1616         piSrc += iSrcStride;
    1617         piDst += iDstStride;
    1618       }
    1619   }
    1620   break;
    1621   case 2:
    1622   { 
    1623       for ( Int y = iHeight; y != 0; y-- )
    1624       {
    1625         piSrcTmp = &piSrc[ -1 ];
    1626         for ( Int x = 0; x < iWidth; x++ )
    1627         {
    1628           iSum         = xCTI_Filter_VI04_C_QUA0( piSrcTmp, 1 );
    1629 #if REMOVE_INTERMEDIATE_CLIPPING
    1630           piDst[x ] = (iSum +  shiftOffset) >>  shiftNum;
    1631 #else
    1632           piDst[x ] = Clip3(0,16383, (iSum +  shiftOffset) >>  shiftNum );
    1633 #endif
    1634           piSrcTmp++;
    1635         }
    1636         piSrc += iSrcStride;
    1637         piDst += iDstStride;
    1638       }
    1639   }
    1640   break;
    1641   case 6:
    1642   { 
    1643       for ( Int y = iHeight; y != 0; y-- )
    1644       {
    1645         piSrcTmp = &piSrc[ -1 ];
    1646         for ( Int x = 0; x < iWidth; x++ )
    1647         {
    1648           iSum         = xCTI_Filter_VI04_C_QUA1( piSrcTmp, 1 );
    1649 #if REMOVE_INTERMEDIATE_CLIPPING
    1650           piDst[x ] = (iSum +  shiftOffset) >>  shiftNum;
    1651 #else
    1652           piDst[x ] = Clip3(0,16383, (iSum +  shiftOffset) >>  shiftNum );
    1653 #endif
    1654           piSrcTmp++;
    1655         }
    1656         piSrc += iSrcStride;
    1657         piDst += iDstStride;
    1658       }
    1659   }
    1660   break;
    1661   case 3:
    1662   { 
    1663       for ( Int y = iHeight; y != 0; y-- )
    1664       {
    1665         piSrcTmp = &piSrc[ -1 ];
    1666         for ( Int x = 0; x < iWidth; x++ )
    1667         {
    1668           iSum         = xCTI_Filter_VI04_C_OCT1( piSrcTmp, 1 );
    1669 #if REMOVE_INTERMEDIATE_CLIPPING
    1670           piDst[x ] = (iSum +  shiftOffset) >>  shiftNum;
    1671 #else
    1672           piDst[x ] = Clip3(0,16383, (iSum +  shiftOffset) >>  shiftNum );
    1673 #endif
    1674           piSrcTmp++;
    1675         }
    1676         piSrc += iSrcStride;
    1677         piDst += iDstStride;
    1678       }
    1679   }
    1680   break;
    1681   case 5:
    1682   { 
    1683       for ( Int y = iHeight; y != 0; y-- )
    1684       {
    1685         piSrcTmp = &piSrc[ -1 ];
    1686         for ( Int x = 0; x < iWidth; x++ )
    1687         {
    1688           iSum         = xCTI_Filter_VI04_C_OCT2( piSrcTmp, 1 );
    1689 #if REMOVE_INTERMEDIATE_CLIPPING
    1690           piDst[x ] = (iSum +  shiftOffset) >>  shiftNum;
    1691 #else
    1692           piDst[x ] = Clip3(0,16383, (iSum +  shiftOffset) >>  shiftNum );
    1693 #endif
    1694           piSrcTmp++;
    1695         }
    1696         piSrc += iSrcStride;
    1697         piDst += iDstStride;
    1698       }
    1699   }
    1700   break;
    1701   case 7:
    1702   { 
    1703       for ( Int y = iHeight; y != 0; y-- )
    1704       {
    1705         piSrcTmp = &piSrc[ -1 ];
    1706         for ( Int x = 0; x < iWidth; x++ )
    1707         {
    1708           iSum         = xCTI_Filter_VI04_C_OCT3( piSrcTmp, 1 );
    1709 #if REMOVE_INTERMEDIATE_CLIPPING
    1710           piDst[x ] = (iSum +  shiftOffset) >>  shiftNum;
    1711 #else
    1712           piDst[x ] = Clip3(0,16383, (iSum +  shiftOffset) >>  shiftNum );
    1713 #endif
    1714           piSrcTmp++;
    1715         }
    1716         piSrc += iSrcStride;
    1717         piDst += iDstStride;
    1718       }
    1719   }
    1720   break;
    1721   case 4:
    1722   {
    1723       for ( Int y = iHeight; y != 0; y-- )
    1724       {
    1725         piSrcTmp = &piSrc[ -1 ];
    1726         for ( Int x = 0; x < iWidth; x++ )
    1727         {
    1728           iSum      = xCTI_Filter_VIS04_C_HAL( piSrcTmp, 1 );
    1729 #if REMOVE_INTERMEDIATE_CLIPPING
    1730           piDst[x ] = (iSum +  shiftOffset) >>  shiftNum;
    1731 #else
    1732           piDst[x ] = Clip3(0,16383, (iSum +  shiftOffset) >>  shiftNum );
    1733 #endif
    1734           piSrcTmp++;
    1735         }
    1736         piSrc += iSrcStride;
    1737         piDst += iDstStride;
    1738       }
    1739   }
    1740   break;
    1741   default:
    1742     assert( 0 );
    1743   }
    1744 
    1745   return;
    1746 }
    1747 
    1748 __inline Void TRenInterpFilter::xCTI_Filter1DVerC_ha (Pel* piSrc, Int iSrcStride, Int iWidth, Int iHeight, Int iDstStride,  Pel*& rpiDst, Int iMV)
    1749 {
    1750   Pel*  piDst = rpiDst;
    1751   Int   iSum;
    1752   Pel*  piSrcTmp;
    1753   Int shiftNum  = g_uiBitIncrement + g_uiBitDepth - 8;
    1754   Int shiftOffset = (shiftNum > 0) ? ( 1 << (shiftNum - 1)) : 0 ;
    1755    
    1756   switch (iMV)
    1757   {
    1758   case 1:
    1759   { 
    1760       for ( Int y = iHeight; y != 0; y-- )
    1761       {
    1762         piSrcTmp = &piSrc[ -iSrcStride ];
    1763         for ( Int x = 0; x < iWidth; x++ )
    1764         {
    1765           iSum      = xCTI_Filter_VP04_C_OCT0( piSrcTmp,  iSrcStride );
    1766 #if REMOVE_INTERMEDIATE_CLIPPING
    1767           piDst[x ] = (iSum +  shiftOffset) >>  shiftNum;
    1768 #else
    1769           piDst[x ] = Clip3(0,16383, (iSum +  shiftOffset) >>  shiftNum );
    1770 #endif
    1771           piSrcTmp++;
    1772         }
    1773         piSrc += iSrcStride;
    1774         piDst += iDstStride;
    1775       }
    1776   }
    1777   break;
    1778   case 2:
    1779   { 
    1780       for ( Int y = iHeight; y != 0; y-- )
    1781       {
    1782         piSrcTmp = &piSrc[ -iSrcStride ];
    1783         for ( Int x = 0; x < iWidth; x++ )
    1784         {
    1785           iSum      = xCTI_Filter_VP04_C_QUA0( piSrcTmp,  iSrcStride );
    1786 #if REMOVE_INTERMEDIATE_CLIPPING
    1787           piDst[x ] = (iSum +  shiftOffset) >>  shiftNum;
    1788 #else
    1789           piDst[x ] = Clip3(0,16383, (iSum +  shiftOffset) >>  shiftNum );
    1790 #endif
    1791           piSrcTmp++;
    1792         }
    1793         piSrc += iSrcStride;
    1794         piDst += iDstStride;
    1795       }
    1796   }
    1797   break;
    1798   case 6:
    1799   { 
    1800       for ( Int y = iHeight; y != 0; y-- )
    1801       {
    1802         piSrcTmp = &piSrc[ -iSrcStride ];
    1803         for ( Int x = 0; x < iWidth; x++ )
    1804         {
    1805           iSum      = xCTI_Filter_VP04_C_QUA1( piSrcTmp,  iSrcStride );
    1806 #if REMOVE_INTERMEDIATE_CLIPPING
    1807           piDst[x ] = (iSum +  shiftOffset) >>  shiftNum;
    1808 #else
    1809           piDst[x ] = Clip3(0,16383, (iSum +  shiftOffset) >>  shiftNum );
    1810 #endif
    1811           piSrcTmp++;
    1812         }
    1813         piSrc += iSrcStride;
    1814         piDst += iDstStride;
    1815       }
    1816   }
    1817   break;
    1818   case 3:
    1819   { 
    1820       for ( Int y = iHeight; y != 0; y-- )
    1821       {
    1822         piSrcTmp = &piSrc[ -iSrcStride ];
    1823         for ( Int x = 0; x < iWidth; x++ )
    1824         {
    1825           iSum      = xCTI_Filter_VP04_C_OCT1( piSrcTmp,  iSrcStride );
    1826 #if REMOVE_INTERMEDIATE_CLIPPING
    1827           piDst[x ] = (iSum +  shiftOffset) >>  shiftNum;
    1828 #else
    1829           piDst[x ] = Clip3(0,16383, (iSum +  shiftOffset) >>  shiftNum );
    1830 #endif
    1831           piSrcTmp++;
    1832         }
    1833         piSrc += iSrcStride;
    1834         piDst += iDstStride;
    1835       }
    1836   }
    1837   break;
    1838   case 5:
    1839   { 
    1840       for ( Int y = iHeight; y != 0; y-- )
    1841       {
    1842         piSrcTmp = &piSrc[ -iSrcStride ];
    1843         for ( Int x = 0; x < iWidth; x++ )
    1844         {
    1845           iSum      = xCTI_Filter_VP04_C_OCT2( piSrcTmp,  iSrcStride );
    1846 #if REMOVE_INTERMEDIATE_CLIPPING
    1847           piDst[x ] = (iSum +  shiftOffset) >>  shiftNum;
    1848 #else
    1849           piDst[x ] = Clip3(0,16383, (iSum +  shiftOffset) >>  shiftNum );
    1850 #endif
    1851           piSrcTmp++;
    1852         }
    1853         piSrc += iSrcStride;
    1854         piDst += iDstStride;
    1855       }
    1856   }
    1857   break;
    1858   case 7:
    1859   { 
    1860       for ( Int y = iHeight; y != 0; y-- )
    1861       {
    1862         piSrcTmp = &piSrc[ -iSrcStride ];
    1863         for ( Int x = 0; x < iWidth; x++ )
    1864         {
    1865           iSum      = xCTI_Filter_VP04_C_OCT3( piSrcTmp,  iSrcStride );
    1866 #if REMOVE_INTERMEDIATE_CLIPPING
    1867           piDst[x ] = (iSum +  shiftOffset) >>  shiftNum;
    1868 #else
    1869           piDst[x ] = Clip3(0,16383, (iSum +  shiftOffset) >>  shiftNum );
    1870 #endif
    1871           piSrcTmp++;
    1872         }
    1873         piSrc += iSrcStride;
    1874         piDst += iDstStride;
    1875       }
    1876   }
    1877   break;
    1878   case 4:
    1879   {
    1880       for ( Int y = iHeight; y != 0; y-- )
    1881       {
    1882         piSrcTmp = &piSrc[-iSrcStride ];
    1883         for ( Int x = 0; x < iWidth; x++ )
    1884         {
    1885           iSum      = xCTI_Filter_VPS04_C_HAL( piSrcTmp, iSrcStride );
    1886 #if REMOVE_INTERMEDIATE_CLIPPING
    1887           piDst[x ] = (iSum +  shiftOffset) >>  shiftNum;
    1888 #else
    1889           piDst[x ] = Clip3(0,16383, (iSum +  shiftOffset) >>  shiftNum );
    1890 #endif
    1891           piSrcTmp++;
    1892         }
    1893         piSrc += iSrcStride;
    1894         piDst += iDstStride;
    1895       }
    1896   }
    1897   break;
    1898   default:
    1899     assert( 0 );
    1900   }   
    1901   return;
    1902 }
    1903 
    1904 __inline Void TRenInterpFilter::xCTI_Filter1DHorC_ha(Pel* piSrc, Int iSrcStride, Int iWidth, Int iHeight, Int iDstStride, Pel*& rpiDst, Int iMV)
    1905 {
    1906   Pel*  piDst    = rpiDst;
    1907   Int   iSum;
    1908   Pel*  piSrcTmp;
    1909   Int shiftNum  = g_uiBitIncrement + g_uiBitDepth - 8;
    1910   Int shiftOffset = (shiftNum > 0) ? ( 1 << (shiftNum - 1)) : 0 ;
    1911 
    1912   switch (iMV)
    1913   {
    1914   case 1:
    1915   { 
    1916       for ( Int y = iHeight; y != 0; y-- )
    1917       {
    1918         piSrcTmp = &piSrc[ -1 ];
    1919         for ( Int x = 0; x < iWidth; x++ )
    1920         {
    1921           iSum      = xCTI_Filter_VP04_C_OCT0( piSrcTmp,  1 );
    1922 #if REMOVE_INTERMEDIATE_CLIPPING
    1923           piDst[x ] = (iSum +  shiftOffset) >>  shiftNum;
    1924 #else
    1925           piDst[x ] = Clip3(0,16383, (iSum +  shiftOffset) >>  shiftNum );
    1926 #endif
    1927           piSrcTmp++;
    1928         }
    1929         piSrc += iSrcStride;
    1930         piDst += iDstStride;
    1931       }
    1932   }
    1933   break;
    1934   case 2:
    1935   { 
    1936       for ( Int y = iHeight; y != 0; y-- )
    1937       {
    1938         piSrcTmp = &piSrc[ -1 ];
    1939         for ( Int x = 0; x < iWidth; x++ )
    1940         {
    1941           iSum      = xCTI_Filter_VP04_C_QUA0( piSrcTmp,  1 );
    1942 #if REMOVE_INTERMEDIATE_CLIPPING
    1943           piDst[x ] = (iSum +  shiftOffset) >>  shiftNum;
    1944 #else
    1945           piDst[x ] = Clip3(0,16383, (iSum +  shiftOffset) >>  shiftNum );
    1946 #endif
    1947           piSrcTmp++;
    1948         }
    1949         piSrc += iSrcStride;
    1950         piDst += iDstStride;
    1951       }
    1952   }
    1953   break;
    1954   case 6:
    1955   { 
    1956       for ( Int y = iHeight; y != 0; y-- )
    1957       {
    1958         piSrcTmp = &piSrc[ -1 ];
    1959         for ( Int x = 0; x < iWidth; x++ )
    1960         {
    1961           iSum         = xCTI_Filter_VP04_C_QUA1( piSrcTmp,  1 );
    1962 #if REMOVE_INTERMEDIATE_CLIPPING
    1963           piDst[x ] = (iSum +  shiftOffset) >>  shiftNum;
    1964 #else
    1965           piDst[x ] = Clip3(0,16383, (iSum +  shiftOffset) >>  shiftNum );
    1966 #endif
    1967           piSrcTmp++;
    1968         }
    1969         piSrc += iSrcStride;
    1970         piDst += iDstStride;
    1971       }
    1972   }
    1973   break;
    1974   case 3:
    1975   { 
    1976       for ( Int y = iHeight; y != 0; y-- )
    1977       {
    1978         piSrcTmp = &piSrc[ -1 ];
    1979         for ( Int x = 0; x < iWidth; x++ )
    1980         {
    1981           iSum      = xCTI_Filter_VP04_C_OCT1( piSrcTmp,  1 );
    1982 #if REMOVE_INTERMEDIATE_CLIPPING
    1983           piDst[x ] = (iSum +  shiftOffset) >>  shiftNum;
    1984 #else
    1985           piDst[x ] = Clip3(0,16383, (iSum +  shiftOffset) >>  shiftNum );
    1986 #endif
    1987           piSrcTmp++;
    1988         }
    1989         piSrc += iSrcStride;
    1990         piDst += iDstStride;
    1991       }
    1992   }
    1993   break;
    1994   case 5:
    1995   { 
    1996       for ( Int y = iHeight; y != 0; y-- )
    1997       {
    1998         piSrcTmp = &piSrc[ -1 ];
    1999         for ( Int x = 0; x < iWidth; x++ )
    2000         {
    2001           iSum         = xCTI_Filter_VP04_C_OCT2( piSrcTmp,  1 );
    2002 #if REMOVE_INTERMEDIATE_CLIPPING
    2003           piDst[x ] = (iSum +  shiftOffset) >>  shiftNum;
    2004 #else
    2005           piDst[x ] = Clip3(0,16383, (iSum +  shiftOffset) >>  shiftNum );
    2006 #endif
    2007           piSrcTmp++;
    2008         }
    2009         piSrc += iSrcStride;
    2010         piDst += iDstStride;
    2011       }
    2012   }
    2013   break;
    2014   case 7:
    2015   { 
    2016       for ( Int y = iHeight; y != 0; y-- )
    2017       {
    2018         piSrcTmp = &piSrc[ -1 ];
    2019         for ( Int x = 0; x < iWidth; x++ )
    2020         {
    2021           iSum         = xCTI_Filter_VP04_C_OCT3( piSrcTmp,  1 );
    2022 #if REMOVE_INTERMEDIATE_CLIPPING
    2023           piDst[x ] = (iSum +  shiftOffset) >>  shiftNum;
    2024 #else
    2025           piDst[x ] = Clip3(0,16383, (iSum +  shiftOffset) >>  shiftNum );
    2026 #endif
    2027           piSrcTmp++;
    2028         }
    2029         piSrc += iSrcStride;
    2030         piDst += iDstStride;
    2031       }
    2032   }
    2033   break;
    2034   case 4:
    2035   {
    2036       for ( Int y = iHeight; y != 0; y-- )
    2037       {
    2038         piSrcTmp = &piSrc[ -1 ];
    2039         for ( Int x = 0; x < iWidth; x++ )
    2040         {
    2041           iSum    = xCTI_Filter_VPS04_C_HAL( piSrcTmp,  1 );
    2042 #if REMOVE_INTERMEDIATE_CLIPPING
    2043           piDst[x ] = (iSum +  shiftOffset) >>  shiftNum;
    2044 #else
    2045           piDst[x ] = Clip3(0,16383, (iSum +  shiftOffset) >>  shiftNum );
    2046 #endif
    2047           piSrcTmp++;
    2048         }
    2049         piSrc += iSrcStride;
    2050         piDst += iDstStride;
    2051       }
    2052   }
    2053   break;
    2054   default:
    2055     assert( 0 );
    2056 
    2057  }
    2058   return;
    2059 }
    2060 #endif
    2061 
    20621157
    20631158__inline Int TRenInterpFilter::xCTI_Filter_VP04_C_OCT0( Pel* pSrc,  Int iStride )
     
    22311326  return iSum;
    22321327}
    2233 
     1328#endif // H_3D
    22341329#endif // __TRENINTERP__
  • trunk/source/Lib/TLibRenderer/TRenModSetupStrParser.cpp

    r210 r608  
    3636#include "TRenFilter.h"
    3737#include "TRenModSetupStrParser.h"
    38 #if !QC_MVHEVC_B0046
     38
     39#if H_3D
    3940Int
    4041TRenModSetupStrParser::getNumOfModels()
     
    450451  rcNextChar = m_pchSetStr[iPos];
    451452}
    452 #endif
    453 
     453#endif // H_3D
     454
  • trunk/source/Lib/TLibRenderer/TRenModSetupStrParser.h

    r210 r608  
    3131 * THE POSSIBILITY OF SUCH DAMAGE.
    3232 */
    33 #if !QC_MVHEVC_B0046
     33
    3434#ifndef __TRENMODSETUPSTRPARSER__
    3535#define __TRENMODSETUPSTRPARSER__
     
    3939#include "../TLibCommon/TypeDef.h"
    4040#include "../TAppCommon/TAppComCamPara.h"
     41#if H_3D
     42
    4143
    4244
     
    126128};
    127129
     130#endif // H_3D
    128131#endif //__TRENMODEL__
    129 #endif
    130132
     133
  • trunk/source/Lib/TLibRenderer/TRenModel.cpp

    r210 r608  
    3535#include "TRenFilter.h"
    3636#include "TRenModel.h"
    37 #if !QC_MVHEVC_B0046
     37
     38#if H_3D_VSO
    3839///////////  TRENMODEL //////////////////////
    3940TRenModel::TRenModel()
     
    4849  m_iHoleMargin        =  1;
    4950  m_uiHorOff           = -1;
    50 #if LGE_VSO_EARLY_SKIP_A0093
     51#if H_3D_VSO_EARLY_SKIP
    5152  m_bEarlySkip         = false;
    5253#endif
     
    214215
    215216Void
    216 #if LGE_VSO_EARLY_SKIP_A0093
     217#if H_3D_VSO_EARLY_SKIP
    217218TRenModel::create( Int iNumOfBaseViews, Int iNumOfModels, Int iWidth, Int iHeight, Int iShiftPrec, Int iHoleMargin, Bool bEarlySkip )
    218219#else
     
    226227  m_iShiftPrec          = iShiftPrec;
    227228  m_iHoleMargin         = iHoleMargin;
    228 #if LGE_VSO_EARLY_SKIP_A0093
     229#if H_3D_VSO_EARLY_SKIP
    229230  m_bEarlySkip          = bEarlySkip;
    230231#endif
     
    357358  AOT( iContent      < -1 || iContent > 1 );
    358359  AOT( iBlendMode < -1 || iBlendMode > 2 );
    359 
    360   Bool bBitInc = (g_uiBitIncrement != 0);
     360  AOT( g_bitDepthY  != g_bitDepthC );
     361
     362  Bool bBitInc = ( DISTORTION_PRECISION_ADJUSTMENT( g_bitDepthY - 8 ) != 0);
    361363
    362364  AOT( m_apcRenModels[iModelNum] );
     
    414416
    415417
    416 #if LGE_VSO_EARLY_SKIP_A0093
     418#if H_3D_VSO_EARLY_SKIP
    417419  m_apcRenModels[iModelNum]->create( iMode ,m_iWidth, m_iHeight, m_iShiftPrec, m_aaaiSubPelShiftLut, m_iHoleMargin,  bUseOrgRef, iBlendMode, m_bEarlySkip );
    418420#else
     
    550552}
    551553
    552 #if LGE_VSO_EARLY_SKIP_A0093
     554#if H_3D_VSO_EARLY_SKIP
    553555RMDist
    554556TRenModel::getDist( Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, Pel* piNewData, Pel * piOrgData, Int iOrgStride)
     
    574576    if (m_iCurrentContent == 1)
    575577    {
    576 #if LGE_VSO_EARLY_SKIP_A0093
     578#if H_3D_VSO_EARLY_SKIP
    577579      iDist +=  m_apcCurRenModels[iModelNum]->getDistDepth  ( m_aiCurPosInModels[iModelNum], iStartPosX, iStartPosY,  iWidth,  iHeight,  iStride,  piNewData , piOrgData, iOrgStride);
    578580#else
     
    606608    if (m_iCurrentContent == 1)
    607609    {
    608 #ifdef LGE_VSO_EARLY_SKIP_A0093
     610#if H_3D_VSO_EARLY_SKIP
    609611      Int iTargetStride = m_aiCurDepthStrides[ m_iCurrentView ];
    610612      m_apcCurRenModels[iModelNum]->setDepth  ( m_aiCurPosInModels[iModelNum], iStartPosX, iStartPosY, iWidth, iHeight, iStride, piNewData,m_apiCurDepthPel[ m_iCurrentView ] + iStartPosY * iTargetStride + iStartPosX ,iTargetStride );
     
    619621  }
    620622
    621 #ifdef LGE_VSO_EARLY_SKIP_A0093
     623#if H_3D_VSO_EARLY_SKIP
    622624  if (m_iCurrentContent == 1)
    623625  {
     
    658660    m_apcCurRenModels[iCurModel]->getRefVideo  ( m_aiCurPosInModels[iCurModel], &cPicYuvTempRef   );
    659661
    660     iSSEY += TRenFilter::SSE( cPicYuvSynth.getLumaAddr(), cPicYuvSynth.getStride(),  m_iWidth,      m_iUsedHeight     , cPicYuvTempRef.getLumaAddr(), cPicYuvTempRef.getStride() );
    661     iSSEU += TRenFilter::SSE( cPicYuvSynth.getCbAddr()  , cPicYuvSynth.getCStride(), m_iWidth >> 1, m_iUsedHeight >> 1, cPicYuvTempRef.getCbAddr()  , cPicYuvTempRef.getCStride());
    662     iSSEV += TRenFilter::SSE( cPicYuvSynth.getCrAddr()  , cPicYuvSynth.getCStride(), m_iWidth >> 1, m_iUsedHeight >> 1, cPicYuvTempRef.getCrAddr()  , cPicYuvTempRef.getCStride());
     662    iSSEY += TRenFilter::SSE( cPicYuvSynth.getLumaAddr(), cPicYuvSynth.getStride(),  m_iWidth,      m_iUsedHeight     , cPicYuvTempRef.getLumaAddr(), cPicYuvTempRef.getStride() , true  );
     663    iSSEU += TRenFilter::SSE( cPicYuvSynth.getCbAddr()  , cPicYuvSynth.getCStride(), m_iWidth >> 1, m_iUsedHeight >> 1, cPicYuvTempRef.getCbAddr()  , cPicYuvTempRef.getCStride(), false );
     664    iSSEV += TRenFilter::SSE( cPicYuvSynth.getCrAddr()  , cPicYuvSynth.getCStride(), m_iWidth >> 1, m_iUsedHeight >> 1, cPicYuvTempRef.getCrAddr()  , cPicYuvTempRef.getCStride(), false );
    663665  }
    664666
     
    697699  }
    698700}
    699 #endif
    700 
     701#endif // H_3D
  • trunk/source/Lib/TLibRenderer/TRenModel.h

    r210 r608  
    3232 */
    3333
    34 #if !QC_MVHEVC_B0046
     34
    3535#ifndef __TRENMODEL__
    3636#define __TRENMODEL__
     
    4242#include "../TLibCommon/TypeDef.h"
    4343
     44#if H_3D_VSO
     45
    4446class TRenModel
    4547{
     
    5052
    5153  // Creation
    52 #if LGE_VSO_EARLY_SKIP_A0093
     54#if H_3D_VSO_EARLY_SKIP
    5355  Void  create           ( Int iNumOfBaseViews, Int iNumOfModels, Int iWidth, Int iHeight, Int iShiftPrec, Int iHoleMargin, Bool bEarlySkip );
    5456#else
     
    6870
    6971  // Get Distortion, set Data
    70 #ifdef LGE_VSO_EARLY_SKIP_A0093
     72#if H_3D_VSO_EARLY_SKIP
    7173  Int64 getDist          ( Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, Pel* piNewData, Pel * piOrgData, Int iOrgStride);
    7274#else
     
    9193  Int**  m_aaaiSubPelShiftLut[2];
    9294  Int    m_iHoleMargin;
    93 #if LGE_VSO_EARLY_SKIP_A0093
     95#if H_3D_VSO_EARLY_SKIP
    9496  Bool   m_bEarlySkip;
    9597#endif
     
    155157};
    156158
     159#endif // H_3D
    157160#endif //__TRENMODEL__
    158 #endif
    159161
  • trunk/source/Lib/TLibRenderer/TRenSingleModel.cpp

    r210 r608  
    3636#include "TRenSingleModel.h"
    3737
    38 #if !QC_MVHEVC_B0046
     38#if H_3D_VSO
     39
    3940////////////// TRENSINGLE MODEL ///////////////
    4041template <BlenMod iBM, Bool bBitInc>
    4142TRenSingleModelC<iBM,bBitInc>::TRenSingleModelC()
    42 :  m_iDistShift ( g_uiBitIncrement << 1 )
     43:  m_iDistShift ( ( g_bitDepthY - 8) << 1 )
    4344{
    4445  m_iWidth  = -1;
     
    8485  }
    8586
    86 #ifdef LGE_VSO_EARLY_SKIP_A0093
     87#if H_3D_VSO_EARLY_SKIP
    8788  m_pbHorSkip = NULL;
    8889#endif
     
    9293TRenSingleModelC<iBM,bBitInc>::~TRenSingleModelC()
    9394{
    94 #ifdef LGE_VSO_EARLY_SKIP_A0093
     95#if H_3D_VSO_EARLY_SKIP
    9596  if ( m_pbHorSkip )
    9697  {
     
    114115
    115116template <BlenMod iBM, Bool bBitInc> Void
    116 #if LGE_VSO_EARLY_SKIP_A0093
     117#if H_3D_VSO_EARLY_SKIP
    117118TRenSingleModelC<iBM,bBitInc>::create( Int iMode, Int iWidth, Int iHeight, Int iShiftPrec, Int*** aaaiSubPelShiftTable, Int iHoleMargin, Bool bUseOrgRef, Int iBlendMode, Bool bEarlySkip )
    118119#else
     
    121122
    122123{
    123 #if LGE_VSO_EARLY_SKIP_A0093
     124#if H_3D_VSO_EARLY_SKIP
    124125  m_pbHorSkip     = new Bool [MAX_CU_SIZE];
    125126  m_bEarlySkip    = bEarlySkip;
     
    182183  Pel* piDRow = piCurDepthPel;
    183184  Pel* piYRow = apiCurVideoPel[0];
    184 #if HHI_VSO_COLOR_PLANES
     185#if H_3D_VSO_COLOR_PLANES
    185186  Pel* piURow = apiCurVideoPel[1];
    186187  Pel* piVRow = apiCurVideoPel[2];
     
    196197      Int iSubPosX = (1 << m_iShiftPrec);
    197198      pcCurInputSampleRow[0].aiY[iSubPosX] = piYRow[0];
    198 #if HHI_VSO_COLOR_PLANES
     199#if H_3D_VSO_COLOR_PLANES
    199200      pcCurInputSampleRow[0].aiU[iSubPosX] = piURow[0];
    200201      pcCurInputSampleRow[0].aiV[iSubPosX] = piVRow[0];
     
    210211        Int iShift = (iPosX << m_iShiftPrec) + iSubPosX;
    211212        pcCurInputSampleRow[iPosX+iOffsetX].aiY[iSubPosX] = piYRow[iShift];
    212 #if HHI_VSO_COLOR_PLANES
     213#if H_3D_VSO_COLOR_PLANES
    213214        pcCurInputSampleRow[iPosX+iOffsetX].aiU[iSubPosX] = piURow[iShift];
    214215        pcCurInputSampleRow[iPosX+iOffsetX].aiV[iSubPosX] = piVRow[iShift];
     
    221222    piDRow += iCurDepthStride;
    222223    piYRow += aiCurVideoStride[0];
    223 #if HHI_VSO_COLOR_PLANES
     224#if H_3D_VSO_COLOR_PLANES
    224225    piURow += aiCurVideoStride[1];
    225226    piVRow += aiCurVideoStride[2];
     
    270271  { 
    271272  case 0:   
    272 #if LGE_VSO_EARLY_SKIP_A0093
     273#if H_3D_VSO_EARLY_SKIP
    273274    xRenderL<true>( 0, 0, m_iWidth, m_iUsedHeight, m_aiBaseDepthStrides[0], m_apiBaseDepthPel[0],false );
    274275#else
     
    277278    break;
    278279  case 1:   
    279 #ifdef LGE_VSO_EARLY_SKIP_A0093
     280#if H_3D_VSO_EARLY_SKIP
    280281    xRenderR<true>( 0, 0, m_iWidth, m_iUsedHeight, m_aiBaseDepthStrides[1], m_apiBaseDepthPel[1],false);
    281282#else
     
    285286  case 2:
    286287    TRenFilter::setupZLUT( true, 30, iDistToLeft, ppiBaseShiftLutLeft, ppiBaseShiftLutRight, m_iBlendZThres, m_iBlendDistWeight, m_piInvZLUTLeft, m_piInvZLUTRight );
    287 #ifdef LGE_VSO_EARLY_SKIP_A0093
     288#if H_3D_VSO_EARLY_SKIP
    288289    xRenderL<true>( 0, 0, m_iWidth, m_iUsedHeight, m_aiBaseDepthStrides[0], m_apiBaseDepthPel[0],false);
    289290    xRenderR<true>( 0, 0, m_iWidth, m_iUsedHeight, m_aiBaseDepthStrides[1], m_apiBaseDepthPel[1],false);
     
    306307
    307308template <BlenMod iBM, Bool bBitInc> Void
    308 #if HHI_VSO_COLOR_PLANES
     309#if H_3D_VSO_COLOR_PLANES
    309310TRenSingleModelC<iBM,bBitInc>::xGetSampleStrTextPtrs( Int iViewNum, Pel RenModelOutPels::*& rpiSrcY, Pel RenModelOutPels::*& rpiSrcU, Pel RenModelOutPels::*& rpiSrcV )
    310311#else
     
    316317  case 0:
    317318    rpiSrcY = &RenModelOutPels::iYLeft;
    318 #if HHI_VSO_COLOR_PLANES 
     319#if H_3D_VSO_COLOR_PLANES 
    319320    rpiSrcU = &RenModelOutPels::iULeft;
    320321    rpiSrcV = &RenModelOutPels::iVLeft;
     
    323324  case 1:
    324325    rpiSrcY = &RenModelOutPels::iYRight;
    325 #if HHI_VSO_COLOR_PLANES 
     326#if H_3D_VSO_COLOR_PLANES 
    326327    rpiSrcU = &RenModelOutPels::iURight;
    327328    rpiSrcV = &RenModelOutPels::iVRight;
     
    330331  case 2:
    331332    rpiSrcY = &RenModelOutPels::iYBlended;
    332 #if HHI_VSO_COLOR_PLANES 
     333#if H_3D_VSO_COLOR_PLANES 
    333334    rpiSrcU = &RenModelOutPels::iUBlended;
    334335    rpiSrcV = &RenModelOutPels::iVBlended;
     
    353354 
    354355  Pel* piYRow = m_aapiRefVideoPel[0];
    355 #if HHI_VSO_COLOR_PLANES
     356#if H_3D_VSO_COLOR_PLANES
    356357  Pel* piURow = m_aapiRefVideoPel[1];
    357358  Pel* piVRow = m_aapiRefVideoPel[2];
     
    363364    {     
    364365      pcCurOutSampleRow[iPosX].iYRef = piYRow[iPosX];
    365 #if HHI_VSO_COLOR_PLANES
     366#if H_3D_VSO_COLOR_PLANES
    366367      pcCurOutSampleRow[iPosX].iURef = piURow[iPosX];
    367368      pcCurOutSampleRow[iPosX].iVRef = piVRow[iPosX];
     
    372373   
    373374    piYRow += m_aiRefVideoStrides[0];
    374 #if HHI_VSO_COLOR_PLANES
     375#if H_3D_VSO_COLOR_PLANES
    375376    piURow += m_aiRefVideoStrides[1];
    376377    piVRow += m_aiRefVideoStrides[2];
     
    403404  Pel RenModelOutPels::* piSrcY = NULL;
    404405
    405 #if HHI_VSO_COLOR_PLANES 
     406#if H_3D_VSO_COLOR_PLANES 
    406407  Pel RenModelOutPels::* piSrcU = NULL;
    407408  Pel RenModelOutPels::* piSrcV = NULL;
     
    416417    {     
    417418      pcCurOutSampleRow[iPosX].iYRef = pcCurOutSampleRow[iPosX].*piSrcY;
    418 #if HHI_VSO_COLOR_PLANES
     419#if H_3D_VSO_COLOR_PLANES
    419420      pcCurOutSampleRow[iPosX].iURef = pcCurOutSampleRow[iPosX].*piSrcU;
    420421      pcCurOutSampleRow[iPosX].iVRef = pcCurOutSampleRow[iPosX].*piSrcV;
     
    449450      pcOutSampleRow[iPosX].iYRight       = 0;
    450451      pcOutSampleRow[iPosX].iYBlended     = 0;
    451 #if HHI_VSO_COLOR_PLANES             
     452#if H_3D_VSO_COLOR_PLANES             
    452453      // U Planes                   
    453       pcOutSampleRow[iPosX].iULeft        = 128 << g_uiBitIncrement;
    454       pcOutSampleRow[iPosX].iURight       = 128 << g_uiBitIncrement;
    455       pcOutSampleRow[iPosX].iUBlended     = 128 << g_uiBitIncrement;
     454      pcOutSampleRow[iPosX].iULeft        = 1 << (g_bitDepthC - 1);
     455      pcOutSampleRow[iPosX].iURight       = 1 << (g_bitDepthC - 1);
     456      pcOutSampleRow[iPosX].iUBlended     = 1 << (g_bitDepthC - 1);
    456457                                     
    457458      // V Planes                   
    458       pcOutSampleRow[iPosX].iVLeft        = 128 << g_uiBitIncrement;
    459       pcOutSampleRow[iPosX].iVRight       = 128 << g_uiBitIncrement;
    460       pcOutSampleRow[iPosX].iVBlended     = 128 << g_uiBitIncrement;
     459      pcOutSampleRow[iPosX].iVLeft        = 1 << (g_bitDepthC - 1);
     460      pcOutSampleRow[iPosX].iVRight       = 1 << (g_bitDepthC - 1);
     461      pcOutSampleRow[iPosX].iVBlended     = 1 << (g_bitDepthC - 1);
    461462#endif
    462463      //// Input Samples
     
    472473
    473474
    474 #ifdef LGE_VSO_EARLY_SKIP_A0093
     475#if H_3D_VSO_EARLY_SKIP
    475476template <BlenMod iBM, Bool bBitInc> RMDist
    476477TRenSingleModelC<iBM,bBitInc>::getDistDepth( Int iViewPos, Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, Pel* piNewData , Pel * piOrgData, Int iOrgStride )
     
    481482{
    482483  RMDist iSSE = 0;
    483 #ifdef LGE_VSO_EARLY_SKIP_A0093
     484#if H_3D_VSO_EARLY_SKIP
    484485  Bool   bEarlySkip;
    485486#endif
     
    487488  {
    488489  case 0:
    489 #ifdef LGE_VSO_EARLY_SKIP_A0093
     490#if H_3D_VSO_EARLY_SKIP
    490491    bEarlySkip = m_bEarlySkip ? xDetectEarlySkipL(iStartPosX,   iStartPosY,   iWidth,   iHeight,   iStride, piNewData, piOrgData, iOrgStride) : false;
    491492    if( !bEarlySkip )
     
    498499    break;
    499500  case 1:
    500 #ifdef LGE_VSO_EARLY_SKIP_A0093
     501#if H_3D_VSO_EARLY_SKIP
    501502    bEarlySkip = m_bEarlySkip ? xDetectEarlySkipR(iStartPosX,   iStartPosY,   iWidth,   iHeight,   iStride, piNewData, piOrgData, iOrgStride) : false;
    502503    if( !bEarlySkip )
     
    514515  return iSSE;
    515516}
    516 #ifdef LGE_VSO_EARLY_SKIP_A0093
     517#if H_3D_VSO_EARLY_SKIP
    517518template <BlenMod iBM, Bool bBitInc> Void
    518519TRenSingleModelC<iBM,bBitInc>::setDepth( Int iViewPos, Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, Pel* piNewData, Pel* piOrgData, Int iOrgStride )
     
    522523#endif
    523524{
    524 #ifdef  LGE_VSO_EARLY_SKIP_A0093
     525#ifdef  H_3D_VSO_EARLY_SKIP
    525526  Bool bEarlySkip;
    526527#endif
     
    528529  {
    529530  case 0:
    530 #ifdef LGE_VSO_EARLY_SKIP_A0093
     531#if H_3D_VSO_EARLY_SKIP
    531532    bEarlySkip = m_bEarlySkip ? xDetectEarlySkipL(iStartPosX,   iStartPosY,   iWidth,   iHeight,   iStride, piNewData, piOrgData,iOrgStride) : false;
    532533    if( !bEarlySkip )
     
    539540    break;
    540541  case 1:
    541 #ifdef LGE_VSO_EARLY_SKIP_A0093
     542#if H_3D_VSO_EARLY_SKIP
    542543    bEarlySkip = m_bEarlySkip ? xDetectEarlySkipR(iStartPosX,   iStartPosY,   iWidth,   iHeight,   iStride, piNewData, piOrgData,iOrgStride) : false;
    543544    if( !bEarlySkip )
     
    560561  AOT( pcPicYuv->getHeight() < m_iUsedHeight + m_iHorOffset );
    561562
    562 #if HHI_VSO_COLOR_PLANES
     563#if H_3D_VSO_COLOR_PLANES
    563564  Pel RenModelOutPels::* piText[3] = { NULL, NULL, NULL };
    564565  xGetSampleStrTextPtrs(iViewPos, piText[0], piText[1], piText[2]);
     
    581582  xGetSampleStrTextPtrs(iViewPos, piY);
    582583  xCopyFromSampleStruct( m_pcOutputSamples, m_iOutputSamplesStride, piY, pcPicYuv->getLumaAddr() + m_iHorOffset * pcPicYuv->getStride(), pcPicYuv->getStride(), m_iWidth, m_iUsedHeight );
    583   pcPicYuv->setChromaTo( 128 << g_uiBitIncrement );   
     584  pcPicYuv->setChromaTo( 1 << (g_bitDepthC - 1) );   
    584585#endif 
    585586}
     
    595596  xGetSampleStrDepthPtrs(iViewPos, piD);
    596597  xCopyFromSampleStruct( m_pcOutputSamples, m_iOutputSamplesStride, piD, pcPicYuv->getLumaAddr() + pcPicYuv->getStride() * m_iHorOffset, pcPicYuv->getStride(), m_iWidth, m_iUsedHeight );
    597   pcPicYuv->setChromaTo( 128 << g_uiBitIncrement );   
     598  pcPicYuv->setChromaTo( 1 << (g_bitDepthC - 1) );   
    598599}
    599600
     
    605606  AOT( pcPicYuv->getHeight() <  m_iUsedHeight + m_iHorOffset);
    606607
    607 #if HHI_VSO_COLOR_PLANES
     608#if H_3D_VSO_COLOR_PLANES
    608609  Pel RenModelOutPels::* piText[3];
    609610  piText[0] = &RenModelOutPels::iYRef;
     
    627628#else
    628629  xCopyFromSampleStruct( m_pcOutputSamples, m_iOutputSamplesStride, &RenModelOutPels::iYRef, pcPicYuv->getLumaAddr() *  pcPicYuv->getStride() + m_iHorOffset, pcPicYuv->getStride(), m_iWidth, m_iUsedHeight );
    629   pcPicYuv->setChromaTo( 128 << g_uiBitIncrement );   
     630  pcPicYuv->setChromaTo( 1 << ( g_bitDepthC - 1 ) );   
    630631#endif 
    631632}
     
    662663  m_pcOutputSamplesRow   += m_iOutputSamplesStride; 
    663664}
    664 #if LGE_VSO_EARLY_SKIP_A0093
     665#if H_3D_VSO_EARLY_SKIP
    665666template <BlenMod iBM, Bool bBitInc> template<Bool bSet> __inline RMDist
    666667TRenSingleModelC<iBM,bBitInc>::xRenderL( Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, Pel* piNewData, Bool bFast)
     
    695696  for (Int iPosY = iStartPosY; iPosY < iStartPosY + iHeight; iPosY++ )
    696697  {
    697 #ifdef LGE_VSO_EARLY_SKIP_A0093
     698#if H_3D_VSO_EARLY_SKIP
    698699    if( m_bEarlySkip && bFast )
    699700    {
     
    721722      xExtrapolateMarginL<bSet>  ( iCurSPos, iEndChangePos, iError );
    722723
    723       iMinChangedSPos       = Min( iMinChangedSPos, (iEndChangePos << m_iShiftPrec) - m_ppiCurLUT[0][ RenModRemoveBitInc( Max(m_pcInputSamplesRow[iCurViewPos][iEndChangePos].iD, m_piNewDepthData[iPosXinNewData] )) ]);
     724      iMinChangedSPos       = std::min( iMinChangedSPos, (iEndChangePos << m_iShiftPrec) - m_ppiCurLUT[0][ RenModRemoveBitInc( std::max(m_pcInputSamplesRow[iCurViewPos][iEndChangePos].iD, m_piNewDepthData[iPosXinNewData] )) ]);
    724725      iLastSPos             = iCurSPos;
    725726      m_iLastDepth          = m_iCurDepth;
     
    746747      // Get minimal changed sample position
    747748
    748       iMinChangedSPos = Min( iMinChangedSPos, (iCurPosX << m_iShiftPrec) - m_ppiCurLUT[0][ RenModRemoveBitInc( Max(m_pcInputSamplesRow[iCurViewPos][iCurPosX].iD, m_piNewDepthData[iPosXinNewData] )) ]);
     749      iMinChangedSPos = std::min( iMinChangedSPos, (iCurPosX << m_iShiftPrec) - m_ppiCurLUT[0][ RenModRemoveBitInc( std::max(m_pcInputSamplesRow[iCurViewPos][iCurPosX].iD, m_piNewDepthData[iPosXinNewData] )) ]);
    749750      Int iCurSPos    = xShiftNewData(iCurPosX,iPosXinNewData);
    750751      m_iCurDepth     = m_piNewDepthData[iPosXinNewData];
     
    786787}
    787788
    788 #ifdef  LGE_VSO_EARLY_SKIP_A0093
     789#ifdef  H_3D_VSO_EARLY_SKIP
    789790template <BlenMod iBM, Bool bBitInc> template<Bool bSet> __inline RMDist
    790791TRenSingleModelC<iBM,bBitInc>::xRenderR( Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, Pel* piNewData , Bool bFast)
     
    820821  for (Int iPosY = iStartPosY; iPosY < iStartPosY + iHeight; iPosY++ )
    821822  {
    822 #ifdef LGE_VSO_EARLY_SKIP_A0093
     823#if H_3D_VSO_EARLY_SKIP
    823824    if( m_bEarlySkip && bFast )
    824825    {
     
    846847      xExtrapolateMarginR<bSet>     ( iCurSPos, iStartChangePos, iError );
    847848
    848       iMaxChangedSPos       = Max( iMaxChangedSPos, (iStartChangePos << m_iShiftPrec) - m_ppiCurLUT[0][ RenModRemoveBitInc( Max(m_pcInputSamplesRow[iCurViewPos][iStartChangePos].iD, m_piNewDepthData[iPosXinNewData] )) ]);
     849      iMaxChangedSPos       = std::max( iMaxChangedSPos, (iStartChangePos << m_iShiftPrec) - m_ppiCurLUT[0][ RenModRemoveBitInc( std::max(m_pcInputSamplesRow[iCurViewPos][iStartChangePos].iD, m_piNewDepthData[iPosXinNewData] )) ]);
    849850      iLastSPos             = iCurSPos;
    850851      m_iLastDepth          = m_iCurDepth;
     
    872873      // Get minimal changed sample position
    873874
    874       iMaxChangedSPos = Max( iMaxChangedSPos, (iCurPosX << m_iShiftPrec) - m_ppiCurLUT[0][ RenModRemoveBitInc( Max(m_pcInputSamplesRow[iCurViewPos][iCurPosX].iD, m_piNewDepthData[iPosXinNewData] )) ]);
     875      iMaxChangedSPos = std::max( iMaxChangedSPos, (iCurPosX << m_iShiftPrec) - m_ppiCurLUT[0][ RenModRemoveBitInc( std::max(m_pcInputSamplesRow[iCurViewPos][iCurPosX].iD, m_piNewDepthData[iPosXinNewData] )) ]);
    875876      Int iCurSPos    = xShiftNewData(iCurPosX,iPosXinNewData);
    876877      m_iCurDepth     = m_piNewDepthData[iPosXinNewData];
     
    10021003
    10031004    m_iThisDepth = m_iCurDepth;
    1004     for (Int iFillSPos = Max(0, xRangeLeftL(iCurSPos) ); iFillSPos <= min(xRangeRightL( iLastSPos ) ,m_iLastOccludedSPosFP-1); iFillSPos++ )
     1005    for (Int iFillSPos = std::max(0, xRangeLeftL(iCurSPos) ); iFillSPos <= min(xRangeRightL( iLastSPos ) ,m_iLastOccludedSPosFP-1); iFillSPos++ )
    10051006    {
    10061007      Int iDeltaCurSPos  = (iFillSPos << m_iShiftPrec) - iCurSPos;
     
    11891190
    11901191  m_iThisDepth = m_iLastDepth;
    1191   for (Int iFillSPos = Max(iStartFillSPosFP+1,0); iFillSPos <= min(xRangeRightL( iLastSPos ), m_iLastOccludedSPosFP-1 ); iFillSPos++ )
     1192  for (Int iFillSPos = std::max(iStartFillSPosFP+1,0); iFillSPos <= min(xRangeRightL( iLastSPos ), m_iLastOccludedSPosFP-1 ); iFillSPos++ )
    11921193  {
    11931194    xSetShiftedPelL<bSet>( iLastPos, 0,  iFillSPos, REN_IS_HOLE, riError );
     
    12331234//    return;
    12341235
    1235   Int iSPosFullPel = Max(0,xRangeLeftL(iCurSPos));
     1236  Int iSPosFullPel = std::max(0,xRangeLeftL(iCurSPos));
    12361237
    12371238  m_iThisDepth = m_iCurDepth;
     
    12531254  //    return;
    12541255
    1255   Int iSPosFullPel = Min(m_iWidth-1,xRangeRightR(iCurSPos));
     1256  Int iSPosFullPel = std::min(m_iWidth-1,xRangeRightR(iCurSPos));
    12561257
    12571258  m_iThisDepth = m_iCurDepth;
     
    14131414    // Yuv
    14141415    pcOutSample->iYLeft  = pcInSample->aiY[iSubSourcePos];
    1415 #if HHI_VSO_COLOR_PLANES
     1416#if H_3D_VSO_COLOR_PLANES
    14161417    pcOutSample->iULeft  = pcInSample->aiU[iSubSourcePos];
    14171418    pcOutSample->iVLeft  = pcInSample->aiV[iSubSourcePos];
     
    14281429  else
    14291430  {
    1430 #if HHI_VSO_COLOR_PLANES
     1431#if H_3D_VSO_COLOR_PLANES
    14311432    riError += xGetDist( pcInSample->aiY[iSubSourcePos] - pcOutSample->iYRef,
    14321433                         pcInSample->aiU[iSubSourcePos] - pcOutSample->iURef,
     
    14451446{
    14461447  Pel piBlendedValueY;
    1447 #if HHI_VSO_COLOR_PLANES
     1448#if H_3D_VSO_COLOR_PLANES
    14481449  Pel piBlendedValueU;
    14491450  Pel piBlendedValueV;
     
    14531454    pcInSample ->aiY[iSubSourcePos],
    14541455    pcOutSample->iYRight,   
    1455 #if HHI_VSO_COLOR_PLANES
     1456#if H_3D_VSO_COLOR_PLANES
    14561457    pcInSample ->aiU[iSubSourcePos],
    14571458    pcOutSample->iURight,   
     
    14641465    pcOutSample->iFilledRight  ,
    14651466    piBlendedValueY
    1466 #if HHI_VSO_COLOR_PLANES
     1467#if H_3D_VSO_COLOR_PLANES
    14671468    , piBlendedValueU,
    14681469    piBlendedValueV
     
    14761477    pcOutSample->iYLeft      = pcInSample ->aiY[iSubSourcePos];
    14771478    pcOutSample->iYBlended   = piBlendedValueY;   
    1478 #if HHI_VSO_COLOR_PLANES 
     1479#if H_3D_VSO_COLOR_PLANES 
    14791480    pcOutSample->iULeft      = pcInSample ->aiU[iSubSourcePos];
    14801481    pcOutSample->iUBlended   = piBlendedValueU;   
     
    14861487    // Get Error
    14871488    Int iDiffY = pcOutSample->iYRef - piBlendedValueY;
    1488 #if HHI_VSO_COLOR_PLANES
     1489#if H_3D_VSO_COLOR_PLANES
    14891490    Int iDiffU = pcOutSample->iURef - piBlendedValueU;
    14901491    Int iDiffV = pcOutSample->iVRef - piBlendedValueV;
     
    14971498  {
    14981499    Int iDiffY = pcOutSample->iYRef - piBlendedValueY;
    1499 #if HHI_VSO_COLOR_PLANES
     1500#if H_3D_VSO_COLOR_PLANES
    15001501    Int iDiffU = pcOutSample->iURef - piBlendedValueU;
    15011502    Int iDiffV = pcOutSample->iVRef - piBlendedValueV;
     
    15431544    // Yuv
    15441545    pcOutSample->iYRight  = pcInSample->aiY[iSubSourcePos];
    1545 #if HHI_VSO_COLOR_PLANES
     1546#if H_3D_VSO_COLOR_PLANES
    15461547    pcOutSample->iURight  = pcInSample->aiU[iSubSourcePos];
    15471548    pcOutSample->iVRight  = pcInSample->aiV[iSubSourcePos];
     
    15591560  else
    15601561  {
    1561 #if HHI_VSO_COLOR_PLANES
     1562#if H_3D_VSO_COLOR_PLANES
    15621563    riError += xGetDist( pcInSample->aiY[iSubSourcePos] - pcOutSample->iYRef,
    15631564      pcInSample->aiU[iSubSourcePos] - pcOutSample->iURef,
     
    15761577{
    15771578  Pel piBlendedValueY;
    1578 #if HHI_VSO_COLOR_PLANES
     1579#if H_3D_VSO_COLOR_PLANES
    15791580  Pel piBlendedValueU;
    15801581  Pel piBlendedValueV;
     
    15841585    pcOutSample->iYLeft,
    15851586    pcInSample ->aiY[iSubSourcePos],       
    1586 #if HHI_VSO_COLOR_PLANES
     1587#if H_3D_VSO_COLOR_PLANES
    15871588    pcOutSample->iULeft,   
    15881589    pcInSample ->aiU[iSubSourcePos],
     
    15951596    iFilled,
    15961597    piBlendedValueY
    1597 #if HHI_VSO_COLOR_PLANES
     1598#if H_3D_VSO_COLOR_PLANES
    15981599    , piBlendedValueU,
    15991600    piBlendedValueV
     
    16071608    pcOutSample->iYRight     = pcInSample ->aiY[iSubSourcePos];
    16081609    pcOutSample->iYBlended   = piBlendedValueY;   
    1609 #if HHI_VSO_COLOR_PLANES 
     1610#if H_3D_VSO_COLOR_PLANES 
    16101611    pcOutSample->iURight     = pcInSample ->aiU[iSubSourcePos];
    16111612    pcOutSample->iUBlended   = piBlendedValueU;   
     
    16171618    // Get Error
    16181619    Int iDiffY = pcOutSample->iYRef - piBlendedValueY;
    1619 #if HHI_VSO_COLOR_PLANES
     1620#if H_3D_VSO_COLOR_PLANES
    16201621    Int iDiffU = pcOutSample->iURef - piBlendedValueU;
    16211622    Int iDiffV = pcOutSample->iVRef - piBlendedValueV;
     
    16281629  {
    16291630    Int iDiffY = pcOutSample->iYRef - piBlendedValueY;
    1630 #if HHI_VSO_COLOR_PLANES
     1631#if H_3D_VSO_COLOR_PLANES
    16311632    Int iDiffU = pcOutSample->iURef - piBlendedValueU;
    16321633    Int iDiffV = pcOutSample->iVRef - piBlendedValueV;
     
    16801681
    16811682
    1682 #if HHI_VSO_COLOR_PLANES
     1683#if H_3D_VSO_COLOR_PLANES
    16831684template <BlenMod iBM, Bool bBitInc>  __inline Void
    16841685TRenSingleModelC<iBM,bBitInc>::xGetBlendedValue( Pel iYL, Pel iYR, Pel iUL, Pel iUR, Pel iVL, Pel iVR, Pel iDepthL, Pel iDepthR, Int iFilledL, Int iFilledR, Pel& riY, Pel& riU, Pel&riV )
     
    16951696    if (iBM == BLEND_LEFT )
    16961697    {
    1697 #if HHI_VSO_COLOR_PLANES
     1698#if H_3D_VSO_COLOR_PLANES
    16981699      xGetBlendedValueBM1(  iYL,  iYR,  iUL,  iUR,  iVL,  iVR,  iDepthL,  iDepthR,  iFilledL,  iFilledR,  riY,  riU, riV );
    16991700#else
     
    17031704    else
    17041705    {
    1705 #if HHI_VSO_COLOR_PLANES
     1706#if H_3D_VSO_COLOR_PLANES
    17061707      xGetBlendedValueBM2(  iYL,  iYR,  iUL,  iUR,  iVL,  iVR,  iDepthL,  iDepthR,  iFilledL,  iFilledR,  riY,  riU, riV );
    17071708#else
     
    17211722      {
    17221723        riY = xBlend( iYL, iYR, iFilledR >> 1 );
    1723 #if HHI_VSO_COLOR_PLANES
     1724#if H_3D_VSO_COLOR_PLANES
    17241725        riU = xBlend( iUL, iUR, iFilledR >> 1 );
    17251726        riV = xBlend( iVL, iVR, iFilledR >> 1 );
     
    17301731      {
    17311732        riY = xBlend( iYR, iYL, (iFilledL >> 1) );
    1732 #if HHI_VSO_COLOR_PLANES
     1733#if H_3D_VSO_COLOR_PLANES
    17331734        riU = xBlend( iUR, iUL, (iFilledL >> 1) );
    17341735        riV = xBlend( iVR, iVL, (iFilledL >> 1) );
     
    17381739      {
    17391740        riY = xBlend( iYL, iYR, m_iBlendDistWeight );
    1740 #if HHI_VSO_COLOR_PLANES   
     1741#if H_3D_VSO_COLOR_PLANES   
    17411742        riU = xBlend( iUL, iUR, m_iBlendDistWeight );
    17421743        riV = xBlend( iVL, iVR, m_iBlendDistWeight );
     
    17471748    {
    17481749      riY = iYL;
    1749 #if HHI_VSO_COLOR_PLANES
     1750#if H_3D_VSO_COLOR_PLANES
    17501751      riU = iUL;
    17511752      riV = iVL;
     
    17551756    {
    17561757      riY = iYR;
    1757 #if HHI_VSO_COLOR_PLANES
     1758#if H_3D_VSO_COLOR_PLANES
    17581759      riU = iUR;
    17591760      riV = iVR;
     
    17661767    {
    17671768        riY =  iYR;
    1768 #if HHI_VSO_COLOR_PLANES
     1769#if H_3D_VSO_COLOR_PLANES
    17691770        riU =  iUR;
    17701771        riV =  iVR;
     
    17741775    {
    17751776        riY =  iYL;
    1776 #if HHI_VSO_COLOR_PLANES
     1777#if H_3D_VSO_COLOR_PLANES
    17771778        riU =  iUL;
    17781779        riV =  iVL;
     
    17851786    {
    17861787        riY = iYL;
    1787 #if HHI_VSO_COLOR_PLANES
     1788#if H_3D_VSO_COLOR_PLANES
    17881789        riU = iUL;
    17891790        riV = iVL;
     
    17931794    {
    17941795      riY = iYR;
    1795 #if HHI_VSO_COLOR_PLANES
     1796#if H_3D_VSO_COLOR_PLANES
    17961797      riU = iUR;
    17971798      riV = iVR;
     
    18021803
    18031804template <BlenMod iBM, Bool bBitInc> __inline Void
    1804 #if HHI_VSO_COLOR_PLANES
     1805#if H_3D_VSO_COLOR_PLANES
    18051806TRenSingleModelC<iBM,bBitInc>::xGetBlendedValueBM1( Pel iYL, Pel iYR, Pel iUL, Pel iUR, Pel iVL, Pel iVR, Pel iDepthL, Pel iDepthR, Int iFilledL, Int iFilledR, Pel& riY, Pel& riU, Pel&riV )
    18061807#else
     
    18111812  {
    18121813    riY = iYL;
    1813 #if HHI_VSO_COLOR_PLANES
     1814#if H_3D_VSO_COLOR_PLANES
    18141815    riU = iUL;
    18151816    riV = iVL;
     
    18191820  {
    18201821    riY = iYR;
    1821 #if HHI_VSO_COLOR_PLANES
     1822#if H_3D_VSO_COLOR_PLANES
    18221823    riU = iUR;
    18231824    riV = iVR;
     
    18271828  {
    18281829    riY = xBlend( iYR, iYL, iFilledL );
    1829 #if HHI_VSO_COLOR_PLANES
     1830#if H_3D_VSO_COLOR_PLANES
    18301831    riU = xBlend( iUR, iUL, iFilledL );
    18311832    riV = xBlend( iVR, iUL, iFilledL );
     
    18351836
    18361837template <BlenMod iBM, Bool bBitInc> __inline Void
    1837 #if HHI_VSO_COLOR_PLANES
     1838#if H_3D_VSO_COLOR_PLANES
    18381839TRenSingleModelC<iBM,bBitInc>::xGetBlendedValueBM2( Pel iYL, Pel iYR, Pel iUL, Pel iUR, Pel iVL, Pel iVR, Pel iDepthL, Pel iDepthR, Int iFilledL, Int iFilledR, Pel& riY, Pel& riU, Pel&riV )
    18391840#else
     
    18441845  {
    18451846    riY = iYR;
    1846 #if HHI_VSO_COLOR_PLANES
     1847#if H_3D_VSO_COLOR_PLANES
    18471848    riU = iUR;
    18481849    riV = iVR;
     
    18521853  {
    18531854    riY = iYL;
    1854 #if HHI_VSO_COLOR_PLANES
     1855#if H_3D_VSO_COLOR_PLANES
    18551856    riU = iUL;
    18561857    riV = iVL;
     
    18601861  {
    18611862    riY = xBlend( iYL, iYR, iFilledR );
    1862 #if HHI_VSO_COLOR_PLANES
     1863#if H_3D_VSO_COLOR_PLANES
    18631864    riU = xBlend( iUL, iUR, iFilledR );
    18641865    riV = xBlend( iVL, iUR, iFilledR );
     
    18911892template class TRenSingleModelC<BLEND_RIGHT,false>;
    18921893
    1893 #ifdef LGE_VSO_EARLY_SKIP_A0093
     1894#if H_3D_VSO_EARLY_SKIP
    18941895template <BlenMod iBM, Bool bBitInc>
    18951896__inline Bool
     
    19571958}
    19581959#endif
    1959 #endif
    1960 
     1960#endif // H_3D
     1961
  • trunk/source/Lib/TLibRenderer/TRenSingleModel.h

    r210 r608  
    3232 */
    3333
    34 #if !QC_MVHEVC_B0046
     34
    3535#ifndef __TRENSINGLEMODEL__
    3636#define __TRENSINGLEMODEL__
     
    5151#include <cstring>
    5252
    53 
     53#if H_3D_VSO
    5454using namespace std;
    5555
    56 
    57 #if HHI_VSO_RM_ASSERTIONS
     56#if H_3D_VSO_RM_ASSERTIONS
    5857#define RM_AOT( exp ) AOT ( exp )
    5958#define RM_AOF( exp ) AOF ( exp )
     
    7069
    7170  virtual ~TRenSingleModel() { } 
    72 #if LGE_VSO_EARLY_SKIP_A0093
     71#if H_3D_VSO_EARLY_SKIP
    7372  virtual Void   create    ( Int iMode, Int iWidth, Int iHeight, Int iShiftPrec, Int*** aaaiSubPelShiftTable, Int iHoleMargin, Bool bUseOrgRef, Int iBlendMode, Bool bEarlySkip ) = 0;
    7473#else
     
    8281
    8382  // Set Data
    84 #ifdef LGE_VSO_EARLY_SKIP_A0093
     83#if H_3D_VSO_EARLY_SKIP
    8584  virtual Void   setDepth  ( Int iViewPos,                 Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, Pel* piNewData, Pel* piOrgData, Int iOrgStride )  = 0;
    8685#else
     
    9089
    9190  // Get Distortion
    92 #ifdef LGE_VSO_EARLY_SKIP_A0093
     91#if H_3D_VSO_EARLY_SKIP
    9392  virtual RMDist getDistDepth  ( Int iViewPos,             Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, Pel* piNewData, Pel * piOrgData , Int iOrgStride)=0;
    9493#else
     
    109108    // video
    110109    Pel aiY[5]    ; // y-value
    111 #if HHI_VSO_COLOR_PLANES
     110#if H_3D_VSO_COLOR_PLANES
    112111    Pel aiU[5]    ; // u-value
    113112    Pel aiV[5]    ; // v-value
     
    126125    Pel iYRight   ;
    127126    Pel iYBlended ;
    128 #if HHI_VSO_COLOR_PLANES
     127#if H_3D_VSO_COLOR_PLANES
    129128    Pel iULeft    ;
    130129    Pel iURight   ;
     
    148147    // reference
    149148    Pel iYRef    ;
    150 #if HHI_VSO_COLOR_PLANES
     149#if H_3D_VSO_COLOR_PLANES
    151150    Pel iURef    ;
    152151    Pel iVRef    ;
     
    161160
    162161  // Create Model
    163 #if LGE_VSO_EARLY_SKIP_A0093
     162#if H_3D_VSO_EARLY_SKIP
    164163  Void   create    ( Int iMode, Int iWidth, Int iHeight, Int iShiftPrec, Int*** aaaiSubPelShiftTable, Int iHoleMargin, Bool bUseOrgRef, Int iBlendMode, Bool bEarlySkip  );
    165164#else
     
    172171  Void   setup     ( TComPicYuv* pcOrgVideo, Int** ppiShiftLutLeft, Int** ppiBaseShiftLutLeft, Int** ppiShiftLutRight,  Int** ppiBaseShiftLutRight,  Int iDistToLeft, Bool bKeepReference );
    173172
    174 #if LGE_VSO_EARLY_SKIP_A0093
     173#if H_3D_VSO_EARLY_SKIP
    175174  Void   setDepth  ( Int iViewPos,                 Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, Pel* piNewData, Pel* piOrgData, Int iOrgStride );
    176175#else
     
    180179
    181180  // Get Distortion
    182 #ifdef LGE_VSO_EARLY_SKIP_A0093
     181#if H_3D_VSO_EARLY_SKIP
    183182  RMDist getDistDepth  ( Int iViewPos,             Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, Pel* piNewData, Pel * piOrgData , Int iOrgStride);
    184183#else
     
    198197  /////  Rendering /////
    199198  // Left to Right
    200 #if LGE_VSO_EARLY_SKIP_A0093
     199#if H_3D_VSO_EARLY_SKIP
    201200                      __inline Bool   xDetectEarlySkipL   ( Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, Pel* piNewData,Pel* piOrgData, Int iOrgStride );
    202201                      __inline Bool   xDetectEarlySkipR   ( Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, Pel* piNewData,Pel* piOrgData, Int iOrgStride );
     
    229228  template<Bool bSet> __inline Void   xSetShiftedPelBlend ( Int iSourcePos, Int iTargetSPos, Pel iFilled, RMDist& riError );
    230229
    231 #if HHI_VSO_COLOR_PLANES
     230#if H_3D_VSO_COLOR_PLANES
    232231  __inline Void   xGetBlendedValue    ( Pel iYL, Pel iYR, Pel iUL, Pel iUR, Pel iVL, Pel iVR, Pel iDepthL, Pel iDepthR, Int iFilledL, Int iFilledR, Pel& riY, Pel& riU, Pel&riV );
    233232  __inline Void   xGetBlendedValueBM1 ( Pel iYL, Pel iYR, Pel iUL, Pel iUR, Pel iVL, Pel iVR, Pel iDepthL, Pel iDepthR, Int iFilledL, Int iFilledR, Pel& riY, Pel& riU, Pel&riV );
     
    260259  __inline Void   xSetInts   ( Int*  piPelSource , Int iSourceStride, Int iWidth, Int iHeight, Int iVal );
    261260
    262 #if HHI_VSO_COLOR_PLANES
     261#if H_3D_VSO_COLOR_PLANES
    263262  Void            xGetSampleStrTextPtrs ( Int iViewNum, Pel RenModelOutPels::*& rpiSrcY, Pel RenModelOutPels::*& rpiSrcU, Pel RenModelOutPels::*& rpiSrcV );
    264263#else 
     
    367366  Int   m_iShiftPrec;
    368367  Int   m_iHoleMargin;
    369 #ifdef LGE_VSO_EARLY_SKIP_A0093
     368#if H_3D_VSO_EARLY_SKIP
    370369  Bool  m_bEarlySkip;
    371370#endif
     
    385384
    386385  //// Early Skip
    387 #ifdef LGE_VSO_EARLY_SKIP_A0093
     386#if H_3D_VSO_EARLY_SKIP
    388387  Bool* m_pbHorSkip;
    389388#endif
    390389};
    391390
     391#endif // H_3D
    392392#endif //__TRENSINGLEMODEL__
    393 #endif
    394 
     393
     394
  • trunk/source/Lib/TLibRenderer/TRenTop.cpp

    r296 r608  
    3232 */
    3333
     34
    3435#include "TRenImage.h"
    3536#include "TRenTop.h"
     
    3940#include <math.h>
    4041#include "../TLibCommon/CommonDef.h"
     42#if H_3D
     43
    4144
    4245Void TRenTop::xGetDataPointers( PelImage*& rpcInputImage, PelImage*& rpcOutputImage, PelImage*& rpcInputDepth, PelImage*& rpcOutputDepth, PelImage*& rpcFilled, Bool bRenderDepth )
     
    10301033            for ( ; iInterPolPos <= xCeil (iShiftedPos ) -1 ; iInterPolPos++)
    10311034            {
     1035#if H_3D_FIX_REN
     1036              if ( ( iInterPolPos >= 0 ) && ( iInterPolPos < iOutputWidth ) )
     1037              {
     1038                if( pcFilledData[iInterPolPos] == REN_IS_HOLE )
     1039                {               
     1040                  Int iNextPos = std::min(iInputWidth-1,iPosX + iStep);
     1041                  Int iPosXBG  = ( std::abs( pcDepthData[iNextPos] - pcDepthData[iPosX] ) > 5  ) ? iPosX : iNextPos;
     1042                  for( UInt uiCurPlane = 0; uiCurPlane < uiNumberOfPlanes; uiCurPlane++)
     1043                  {
     1044                    apcOutputData[uiCurPlane][iInterPolPos]  = apcInputData[uiCurPlane][iPosXBG];
     1045                  }
     1046                }
     1047                else
     1048                {
     1049                  pcFilledData[iInterPolPos] = REN_IS_HOLE + 1;
     1050                }
     1051              }
     1052#else
    10321053              for( UInt uiCurPlane = 0; uiCurPlane < uiNumberOfPlanes; uiCurPlane++)
    10331054              {
     
    10371058                }
    10381059              }
     1060#endif
    10391061            }
    10401062          }
     
    12821304        else
    12831305        {
     1306#if H_3D_FIX_REN
     1307          pcAlphaData[iXPos] = pcFilledData[iXPos];
     1308#else
    12841309          pcAlphaData[iXPos] = REN_IS_FILLED;
     1310#endif
    12851311        }
    12861312      }
     
    15881614Void TRenTop::xEnhSimilarityPlane       ( PelImagePlane** apcLeftPlane, PelImagePlane** apcRightPlane, PelImagePlane* pcFilledLeftPlane, PelImagePlane* pcFilledRightPlane, UInt uiNumberOfPlanes )
    15891615{
     1616  AOF( g_bitDepthC == g_bitDepthY );
    15901617  AOT( m_iSimEnhBaseView != 1 && m_iSimEnhBaseView != 2 );
    15911618  Int iWidth  = (*apcRightPlane)->getWidth ();
    15921619  Int iHeight = (*apcRightPlane)->getHeight();
    15931620
    1594   Int* aiHistLeft  = new Int[ g_uiIBDI_MAX + 1 ];
    1595   Int* aiHistRight = new Int[ g_uiIBDI_MAX + 1 ];
    1596   Pel* aiConvLUT   = new Pel[ g_uiIBDI_MAX + 1 ];
     1621  Int* aiHistLeft  = new Int[ ((Int64)1 ) << g_bitDepthY ];
     1622  Int* aiHistRight = new Int[ ((Int64)1 ) << g_bitDepthY ];
     1623  Pel* aiConvLUT   = new Pel[ ((Int64)1 ) << g_bitDepthY ];
    15971624
    15981625  for (UInt uiCurPlane = 0; uiCurPlane < uiNumberOfPlanes; uiCurPlane++ )
    15991626  {
    1600     for (Int iCurVal = 0 ; iCurVal <= g_uiIBDI_MAX; iCurVal++)
     1627    for (Int iCurVal = 0 ; iCurVal < ( 1 << g_bitDepthY ); iCurVal++)
    16011628    {
    16021629      aiHistLeft [iCurVal] = 0;
     
    16451672    Int iCheckSumRight = 0;
    16461673
    1647     for (Int iCurVal = 0 ; iCurVal <= g_uiIBDI_MAX; iCurVal++)
     1674    for (Int iCurVal = 0 ; iCurVal < ( 1 << g_bitDepthY ); iCurVal++)
    16481675    {
    16491676      iCheckSumLeft  += aiHistLeft [iCurVal];
     
    16521679
    16531680
    1654     while( iCurChangeVal <= g_uiIBDI_MAX )
     1681    while( iCurChangeVal < ( 1 << g_bitDepthY ) )
    16551682    {
    16561683      if ( iCumSumBase == iCumSumChange )
    16571684      {
    1658         aiConvLUT[iCurChangeVal] = Min(iCurBaseVal, g_uiIBDI_MAX);
     1685        aiConvLUT[iCurChangeVal] = std::min( iCurBaseVal,  ( 1 << g_bitDepthY ) - 1 );
    16591686        iCurBaseVal  ++;
    16601687        iCurChangeVal++;
    16611688        iCumSumChange += aiHistChange[iCurChangeVal];
    1662         if (iCurBaseVal <= g_uiIBDI_MAX )
     1689        if (iCurBaseVal <  ( 1 << g_bitDepthY ) )
    16631690        {
    16641691          iCumSumBase   += aiHistBase  [iCurBaseVal]  ;
     
    16681695      {
    16691696        iCurBaseVal++;
    1670         if (iCurBaseVal <= g_uiIBDI_MAX )
     1697        if (iCurBaseVal < ( 1 << g_bitDepthY ) )
    16711698        {
    16721699          iCumSumBase   += aiHistBase  [iCurBaseVal]  ;
     
    16751702      else if ( iCumSumBase > iCumSumChange)
    16761703      {
    1677         aiConvLUT[iCurChangeVal] = Min(iCurBaseVal, g_uiIBDI_MAX);
     1704        aiConvLUT[iCurChangeVal] = std::min(iCurBaseVal, ( 1 << g_bitDepthY )-1);
    16781705        iCurChangeVal++;
    16791706        iCumSumChange += aiHistChange  [iCurChangeVal]  ;
     
    18841911Void TRenTop::temporalFilterVSRS( TComPicYuv* pcPicYuvVideoCur, TComPicYuv* pcPicYuvDepthCur, TComPicYuv* pcPicYuvVideoLast, TComPicYuv* pcPicYuvDepthLast, Bool bFirstFrame )
    18851912{
     1913  AOF( g_bitDepthY == g_bitDepthC );
    18861914  Int iSADThres  = 100 ;  //threshold of sad in 4*4 block motion detection
    18871915
     
    19501978            { //Weight: 0.75
    19511979              Int iFilt = (( (pcDepthLastDataBlk[iCurPosX] << 1 ) + pcDepthLastDataBlk[iCurPosX] + pcDepthCurDataBlk[iCurPosX] + 2 ) >> 2 );
    1952               assert( (iFilt >= 0) && (iFilt <=  g_uiIBDI_MAX) );
     1980              assert( (iFilt >= 0) && (iFilt <  ( 1 << g_bitDepthY ) ) );
    19531981              pcDepthCurDataBlk[iCurPosX] = pcDepthLastDataBlk[iCurPosX];
    19541982              pcDepthCurDataBlk[iCurPosX] = iFilt;
     
    22212249  if(m_aiBlkMoving         != NULL ) delete[] m_aiBlkMoving;
    22222250}
     2251#endif // H_3D
     2252
  • trunk/source/Lib/TLibRenderer/TRenTop.h

    r56 r608  
    3838#include "../TLibCommon/CommonDef.h"
    3939#include "../TLibCommon/TComPicYuv.h"
     40
     41#if H_3D
    4042#include <list>
    4143#include <vector>
     
    268270};
    269271
     272#endif // H_3D
    270273#endif //__TRENTOP__
Note: See TracChangeset for help on using the changeset viewer.