Changeset 124 in 3DVCSoftware for trunk/source


Ignore:
Timestamp:
7 Sep 2012, 15:24:21 (12 years ago)
Author:
tech
Message:

Fixed VSO setup and compiler warning in getRefQP
( FIX_VSO_SETUP and FIX_COMP_WARNING_INIT )

Location:
trunk/source
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/App/TAppEncoder/TAppEncTop.cpp

    r121 r124  
    12691269Void TAppEncTop::setupRenModel( Int iPoc, Int iEncViewIdx, Int iEncContent, Int iHorOffset )
    12701270{
     1271#if FIX_VSO_SETUP
     1272  m_cRendererModel.setupPart( iHorOffset, Min( g_uiMaxCUHeight, m_iSourceHeight - iHorOffset ) );
     1273#else
    12711274  m_cRendererModel.setHorOffset( iHorOffset );
     1275#endif
    12721276#else
    12731277Void TAppEncTop::setupRenModel( Int iPoc, Int iEncViewIdx, Int iEncContent )
  • trunk/source/App/TAppRenderer/TAppRendererTop.cpp

    r101 r124  
    533533
    534534#if HHI_VSO_SPEEDUP_A0033
     535#if FIX_VSO_SETUP
     536    cCurModel.setupPart( 0, m_iSourceHeight  );
     537#else
    535538    cCurModel.setHorOffset( 0 );
     539#endif
    536540#endif
    537541
     
    710714  AOT( m_iLog2SamplingFactor != 0 );
    711715#if HHI_VSO_SPEEDUP_A0033
     716#if FIX_VSO_SETUP
     717  cCurModel.setupPart( 0, m_iSourceHeight  );
     718#else
    712719  cCurModel.setHorOffset( 0 );
     720#endif
    713721#endif
    714722#if LGE_VSO_EARLY_SKIP_A0093
  • trunk/source/Lib/TLibCommon/TComDataCU.cpp

    r121 r124  
    23212321#if H0204_QP_PREDICTION
    23222322  UInt        lPartIdx, aPartIdx;
     2323#if FIX_COMP_WARNING_INIT
     2324  lPartIdx = 0;
     2325  aPartIdx = 0;
     2326#endif
    23232327  TComDataCU* cULeft  = getQpMinCuLeft ( lPartIdx, m_uiAbsIdxInLCU + uiCurrAbsIdxInLCU );
    23242328  TComDataCU* cUAbove = getQpMinCuAbove( aPartIdx, m_uiAbsIdxInLCU + uiCurrAbsIdxInLCU );
  • trunk/source/Lib/TLibCommon/TypeDef.h

    r121 r124  
    4848#define FIX_VIRT_DESTRUCTOR               1
    4949#define FIX_MEM_LEAKS                     1
     50#define FIX_VSO_SETUP                     1
     51#define FIX_COMP_WARNING_INIT             1
    5052
    5153#define FIX_LG_RESTRICTEDRESPRED_M24766   1
  • trunk/source/Lib/TLibRenderer/TRenModel.cpp

    r101 r124  
    4242  m_iWidth             = -1;
    4343  m_iHeight            = -1;
     44#if FIX_VSO_SETUP
     45  m_iUsedHeight        = -1;
     46#endif
    4447  m_iNumOfBaseViews    = -1;
    4548  m_iSampledWidth      = -1;
     
    434437{
    435438  AOT( iViewNum < 0 || iViewNum > m_iNumOfBaseViews );
     439#if FIX_VSO_SETUP
     440  AOF( pcPicYuvVideoData->getHeight() >= m_iUsedHeight + m_uiHorOff && pcPicYuvVideoData->getWidth() == m_iWidth );
     441  AOF( pcPicYuvDepthData->getHeight() >= m_iUsedHeight + m_uiHorOff && pcPicYuvDepthData->getWidth() == m_iWidth );
     442#else
    436443  AOF( pcPicYuvVideoData->getHeight() <= m_iHeight + m_uiHorOff || pcPicYuvVideoData->getWidth() == m_iWidth );
    437444  AOF( pcPicYuvDepthData->getHeight() <= m_iHeight + m_uiHorOff || pcPicYuvDepthData->getWidth() == m_iWidth );
     445#endif
    438446
    439447  pcPicYuvVideoData->extendPicBorder();
    440448
    441  
    442 
    443 
     449#if FIX_VSO_SETUP
     450  TRenFilter::sampleHorUp   ( m_iShiftPrec, pcPicYuvVideoData->getLumaAddr() +  m_uiHorOff        * pcPicYuvVideoData->getStride () , pcPicYuvVideoData->getStride() , m_iWidth,      m_iUsedHeight,      m_aapiCurVideoPel[ iViewNum ][0], m_aaiCurVideoStrides[iViewNum][0] );
     451  TRenFilter::sampleCUpHorUp( m_iShiftPrec, pcPicYuvVideoData->getCbAddr()   + (m_uiHorOff >> 1 ) * pcPicYuvVideoData->getCStride() , pcPicYuvVideoData->getCStride(), m_iWidth >> 1, m_iUsedHeight >> 1, m_aapiCurVideoPel[ iViewNum ][1], m_aaiCurVideoStrides[iViewNum][1] );
     452  TRenFilter::sampleCUpHorUp( m_iShiftPrec, pcPicYuvVideoData->getCrAddr()   + (m_uiHorOff >> 1 ) * pcPicYuvVideoData->getCStride() , pcPicYuvVideoData->getCStride(), m_iWidth >> 1, m_iUsedHeight >> 1, m_aapiCurVideoPel[ iViewNum ][2], m_aaiCurVideoStrides[iViewNum][2] );
     453  TRenFilter::copy          (               pcPicYuvDepthData->getLumaAddr() +  m_uiHorOff        * pcPicYuvDepthData->getStride () , pcPicYuvDepthData->getStride(),  m_iWidth,      m_iUsedHeight,      m_apiCurDepthPel [ iViewNum],     m_aiCurDepthStrides [iViewNum]    );
     454#else
    444455  TRenFilter::sampleHorUp   ( m_iShiftPrec, pcPicYuvVideoData->getLumaAddr() +  m_uiHorOff        * pcPicYuvVideoData->getStride () , pcPicYuvVideoData->getStride() , m_iWidth,      m_iHeight,      m_aapiCurVideoPel[ iViewNum ][0], m_aaiCurVideoStrides[iViewNum][0] );
    445456  TRenFilter::sampleCUpHorUp( m_iShiftPrec, pcPicYuvVideoData->getCbAddr()   + (m_uiHorOff >> 1 ) * pcPicYuvVideoData->getCStride() , pcPicYuvVideoData->getCStride(), m_iWidth >> 1, m_iHeight >> 1, m_aapiCurVideoPel[ iViewNum ][1], m_aaiCurVideoStrides[iViewNum][1] );
    446457  TRenFilter::sampleCUpHorUp( m_iShiftPrec, pcPicYuvVideoData->getCrAddr()   + (m_uiHorOff >> 1 ) * pcPicYuvVideoData->getCStride() , pcPicYuvVideoData->getCStride(), m_iWidth >> 1, m_iHeight >> 1, m_aapiCurVideoPel[ iViewNum ][2], m_aaiCurVideoStrides[iViewNum][2] );
    447458  TRenFilter::copy          (               pcPicYuvDepthData->getLumaAddr() +  m_uiHorOff        * pcPicYuvDepthData->getStride () , pcPicYuvDepthData->getStride(),  m_iWidth,      m_iHeight,      m_apiCurDepthPel [ iViewNum],     m_aiCurDepthStrides [iViewNum]    );
     459#endif
    448460
    449461  // Used for rendering reference pic from original video data
     
    453465  if ( m_abSetupVideoFromOrgForView[iViewNum] )
    454466  {
     467#if FIX_VSO_SETUP
     468    AOF( pcPicYuvOrgVideoData->getHeight() >= m_iUsedHeight + m_uiHorOff && pcPicYuvOrgVideoData->getWidth() == m_iWidth );
     469    pcPicYuvOrgVideoData->extendPicBorder();
     470    TRenFilter::sampleHorUp   ( m_iShiftPrec, pcPicYuvOrgVideoData->getLumaAddr() +  m_uiHorOff        * pcPicYuvOrgVideoData->getStride() , pcPicYuvOrgVideoData->getStride() , m_iWidth,      m_iUsedHeight,      m_aapiOrgVideoPel[ iViewNum ][0], m_aaiOrgVideoStrides[iViewNum][0] );
     471    TRenFilter::sampleCUpHorUp( m_iShiftPrec, pcPicYuvOrgVideoData->getCbAddr()   + (m_uiHorOff >> 1 ) * pcPicYuvOrgVideoData->getCStride(), pcPicYuvOrgVideoData->getCStride(), m_iWidth >> 1, m_iUsedHeight >> 1, m_aapiOrgVideoPel[ iViewNum ][1], m_aaiOrgVideoStrides[iViewNum][1] );
     472    TRenFilter::sampleCUpHorUp( m_iShiftPrec, pcPicYuvOrgVideoData->getCrAddr()   + (m_uiHorOff >> 1 ) * pcPicYuvOrgVideoData->getCStride(), pcPicYuvOrgVideoData->getCStride(), m_iWidth >> 1, m_iUsedHeight >> 1, m_aapiOrgVideoPel[ iViewNum ][2], m_aaiOrgVideoStrides[iViewNum][2] );
     473#else
    455474    AOF( pcPicYuvOrgVideoData->getHeight() <= m_iHeight + m_uiHorOff || pcPicYuvOrgVideoData->getWidth() == m_iWidth );
    456475    pcPicYuvOrgVideoData->extendPicBorder();
     
    458477    TRenFilter::sampleCUpHorUp( m_iShiftPrec, pcPicYuvOrgVideoData->getCbAddr()   + (m_uiHorOff >> 1 ) * pcPicYuvOrgVideoData->getCStride(), pcPicYuvOrgVideoData->getCStride(), m_iWidth >> 1, m_iHeight >> 1, m_aapiOrgVideoPel[ iViewNum ][1], m_aaiOrgVideoStrides[iViewNum][1] );
    459478    TRenFilter::sampleCUpHorUp( m_iShiftPrec, pcPicYuvOrgVideoData->getCrAddr()   + (m_uiHorOff >> 1 ) * pcPicYuvOrgVideoData->getCStride(), pcPicYuvOrgVideoData->getCStride(), m_iWidth >> 1, m_iHeight >> 1, m_aapiOrgVideoPel[ iViewNum ][2], m_aaiOrgVideoStrides[iViewNum][2] );
     479#endif
    460480  }
    461481
    462482  if ( m_abSetupDepthFromOrgForView[iViewNum] )
    463483  {
     484#if FIX_VSO_SETUP
     485    AOF( pcPicYuvOrgDepthData->getHeight() >= m_iUsedHeight + m_uiHorOff && pcPicYuvOrgDepthData->getWidth() == m_iWidth );
     486    TRenFilter::copy          (               pcPicYuvOrgDepthData->getLumaAddr() +  m_uiHorOff        * pcPicYuvOrgDepthData->getStride() , pcPicYuvOrgDepthData->getStride(),  m_iWidth,     m_iUsedHeight,      m_apiOrgDepthPel [ iViewNum],     m_aiOrgDepthStrides [iViewNum]    );
     487#else
    464488    AOF( pcPicYuvOrgDepthData->getHeight() <= m_iHeight + m_uiHorOff || pcPicYuvOrgDepthData->getWidth() == m_iWidth );
    465489    TRenFilter::copy          (               pcPicYuvOrgDepthData->getLumaAddr() +  m_uiHorOff        * pcPicYuvOrgDepthData->getStride() , pcPicYuvOrgDepthData->getStride(),  m_iWidth,     m_iHeight,      m_apiOrgDepthPel [ iViewNum],     m_aiOrgDepthStrides [iViewNum]    );
     490#endif
    466491  }
    467492}
     
    471496{
    472497  AOT( iModelNum < 0 || iModelNum > m_iNumOfRenModels );
     498
     499#if FIX_VSO_SETUP
     500  m_apcRenModels[iModelNum]->setupPart( m_uiHorOff, m_iUsedHeight );
     501#endif
    473502
    474503  // Switch model  to original data for setup if given to render reference
     
    476505  for (Int iBaseViewIdx = 0; iBaseViewIdx < m_iNumOfBaseViews; iBaseViewIdx++ )
    477506  {
    478 
    479507    Bool bSetupFromOrgVideo = m_abSetupVideoFromOrgForView[iBaseViewIdx];
    480508    Bool bSetupFromOrgDepth = m_abSetupDepthFromOrgForView[iBaseViewIdx];
     
    492520  }
    493521
     522#if FIX_VSO_SETUP
     523  m_apcRenModels[iModelNum]->setup     ( pcPicYuvRefView, ppiShiftLutLeft, ppiBaseShiftLutLeft, ppiShiftLutRight, ppiBaseShiftLutRight, iDistToLeft, false );
     524#else
    494525  m_apcRenModels[iModelNum]->setup     ( pcPicYuvRefView, ppiShiftLutLeft, ppiBaseShiftLutLeft, ppiShiftLutRight, ppiBaseShiftLutRight, iDistToLeft, false, m_uiHorOff );
     526#endif
    495527
    496528  // Setup to Org
     
    513545
    514546    // setup keeping reference rendered from original data
     547#if FIX_VSO_SETUP
     548    m_apcRenModels[iModelNum]->setup     ( pcPicYuvRefView, ppiShiftLutLeft, ppiBaseShiftLutLeft, ppiShiftLutRight, ppiBaseShiftLutRight, iDistToLeft, true );
     549#else
    515550    m_apcRenModels[iModelNum]->setup     ( pcPicYuvRefView, ppiShiftLutLeft, ppiBaseShiftLutLeft, ppiShiftLutRight, ppiBaseShiftLutRight, iDistToLeft, true, m_uiHorOff);
     551#endif
    516552  }
    517553}
     
    543579
    544580
    545 Void 
     581#if FIX_VSO_SETUP
     582Void
     583TRenModel::setupPart ( UInt uiHorOff, Int iUsedHeight )
     584{
     585  AOT( iUsedHeight > m_iHeight );     
     586  m_uiHorOff    = uiHorOff;
     587  m_iUsedHeight = iUsedHeight;
     588}
     589#else
     590Void
    546591TRenModel::setHorOffset     ( UInt uiHorOff )
    547592{
    548     m_uiHorOff = uiHorOff;
    549 }
     593  m_uiHorOff = uiHorOff;
     594}
     595#endif
    550596
    551597#if LGE_VSO_EARLY_SKIP_A0093
     
    560606
    561607  AOT( iWidth  + iStartPosX > m_iWidth  );
     608#if FIX_VSO_SETUP
     609  AOT( iHeight + iStartPosY > m_iUsedHeight );
     610#else
    562611  AOT( iHeight + iStartPosY > m_iHeight );
     612#endif
     613
    563614  AOT( iStartPosX < 0);
    564615  AOT( iStartPosY < 0);
     
    593644
    594645  iWidth  = min(iWidth , m_iWidth  - iStartPosX );
     646#if FIX_VSO_SETUP
     647  iHeight = min(iHeight, m_iUsedHeight - iStartPosY );
     648#else
    595649  iHeight = min(iHeight, m_iHeight - iStartPosY );
     650#endif
    596651
    597652  AOT( iStartPosX < 0);
     
    629684TRenModel::getSynthVideo( Int iModelNum, Int iViewNum, TComPicYuv* pcPicYuv )
    630685{
     686#if FIX_VSO_SETUP
     687  m_apcRenModels[iModelNum]->getSynthVideo(iViewNum, pcPicYuv );
     688#else
    631689  m_apcRenModels[iModelNum]->getSynthVideo(iViewNum, pcPicYuv, m_uiHorOff );
     690#endif
    632691}
    633692
     
    635694TRenModel::getSynthDepth( Int iModelNum, Int iViewNum, TComPicYuv* pcPicYuv )
    636695{
    637 #if HHI_VSO_SPEEDUP_A0033
     696#if HHI_VSO_SPEEDUP_A0033 && !FIX_VSO_SETUP
    638697  m_apcRenModels[iModelNum]->getSynthDepth(iViewNum, pcPicYuv, m_uiHorOff );
    639698#else
     
    646705{
    647706  TComPicYuv cPicYuvSynth;
     707#if FIX_VSO_SETUP
     708  cPicYuvSynth.create( m_iWidth, m_iUsedHeight, g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth );
     709#else
    648710  cPicYuvSynth.create( m_iWidth, m_iHeight, g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth );
     711#endif
    649712
    650713  TComPicYuv cPicYuvTempRef;
     714#if FIX_VSO_SETUP
     715  cPicYuvTempRef.create( m_iWidth, m_iUsedHeight, g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth);
     716#else
    651717  cPicYuvTempRef.create( m_iWidth, m_iHeight, g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth);
     718#endif
    652719
    653720  Int64 iSSEY = 0;
     
    657724  for (Int iCurModel = 0; iCurModel < m_iNumOfCurRenModels; iCurModel++)
    658725  {
     726#if FIX_VSO_SETUP
     727    m_apcCurRenModels[iCurModel]->getSynthVideo( m_aiCurPosInModels[iCurModel], &cPicYuvSynth );   
     728    m_apcCurRenModels[iCurModel]->getRefVideo  ( m_aiCurPosInModels[iCurModel], &cPicYuvTempRef   );
     729
     730    iSSEY += TRenFilter::SSE( cPicYuvSynth.getLumaAddr(), cPicYuvSynth.getStride(),  m_iWidth,      m_iUsedHeight     , cPicYuvTempRef.getLumaAddr(), cPicYuvTempRef.getStride() );
     731    iSSEU += TRenFilter::SSE( cPicYuvSynth.getCbAddr()  , cPicYuvSynth.getCStride(), m_iWidth >> 1, m_iUsedHeight >> 1, cPicYuvTempRef.getCbAddr()  , cPicYuvTempRef.getCStride());
     732    iSSEV += TRenFilter::SSE( cPicYuvSynth.getCrAddr()  , cPicYuvSynth.getCStride(), m_iWidth >> 1, m_iUsedHeight >> 1, cPicYuvTempRef.getCrAddr()  , cPicYuvTempRef.getCStride());
     733#else
    659734    m_apcCurRenModels[iCurModel]->getSynthVideo( m_aiCurPosInModels[iCurModel], &cPicYuvSynth, 0 );
    660735    TComPicYuv* pcPicYuvRef = &cPicYuvTempRef;
     
    664739    iSSEU += TRenFilter::SSE( cPicYuvSynth.getCbAddr()  , cPicYuvSynth.getCStride(), m_iWidth >> 1, m_iHeight >> 1, pcPicYuvRef->getCbAddr()  , pcPicYuvRef->getCStride());
    665740    iSSEV += TRenFilter::SSE( cPicYuvSynth.getCrAddr()  , cPicYuvSynth.getCStride(), m_iWidth >> 1, m_iHeight >> 1, pcPicYuvRef->getCrAddr()  , pcPicYuvRef->getCStride());
     741#endif
    666742  }
    667743
  • trunk/source/Lib/TLibRenderer/TRenModel.h

    r101 r124  
    6262
    6363  // Set horizontal offset
     64#if FIX_VSO_SETUP
     65  Void  setupPart        ( UInt uiHorOff, Int iUsedHeight );
     66#else
    6467  Void  setHorOffset     ( UInt uiHorOff );
     68#endif
    6569
    6670  // Set Mode
    67   Void  setErrorMode     ( Int iView, Int iContent, int iPlane );
     71  Void  setErrorMode     ( Int iView, Int iContent, Int iPlane );
    6872
    6973  // Get Distortion, set Data
     
    100104  Int m_iSampledWidth;
    101105  Int m_iPad;
     106#if FIX_VSO_SETUP
     107  Int m_iUsedHeight;   // height currently used in buffer, whereas m_iHeight is the total height of the buffer
     108#endif
     109
    102110
    103111  Int m_iNumOfBaseViews;
  • trunk/source/Lib/TLibRenderer/TRenSingleModel.cpp

    r121 r124  
    4444  m_iHeight = -1;
    4545  m_iStride = -1;
     46#if FIX_VSO_SETUP
     47  m_iUsedHeight = -1;
     48  m_iHorOffset  = -1;
     49#endif
    4650  m_iMode   = -1;
    4751  m_iPad    = PICYUV_PAD;
     
    9094{
    9195#ifdef LGE_VSO_EARLY_SKIP_A0093
    92   if (m_pbHorSkip)
     96  if ( m_pbHorSkip )
    9397  {
    9498    delete[] m_pbHorSkip;
     
    193197  Int iOffsetX = ( iViewPos == VIEWPOS_RIGHT ) ? 1 : 0;
    194198
     199#if FIX_VSO_SETUP
     200  for ( Int iPosY = 0; iPosY < m_iUsedHeight; iPosY++ )
     201#else
    195202  for ( Int iPosY = 0; iPosY < m_iHeight; iPosY++ )
     203#endif
    196204  {
    197205    if ( iViewPos == VIEWPOS_RIGHT )
     
    237245
    238246}
    239 
    240 template <BlenMod iBM, Bool bBitInc> Void
     247#if FIX_VSO_SETUP
     248template <BlenMod iBM, Bool bBitInc> Void
     249TRenSingleModelC<iBM,bBitInc>::setupPart ( UInt uiHorOffset,       Int iUsedHeight )
     250{
     251  AOT( iUsedHeight > m_iHeight );   
     252
     253  m_iUsedHeight =       iUsedHeight;
     254  m_iHorOffset  = (Int) uiHorOffset;
     255}
     256#endif
     257
     258template <BlenMod iBM, Bool bBitInc> Void
     259#if FIX_VSO_SETUP
     260TRenSingleModelC<iBM,bBitInc>::setup( TComPicYuv* pcOrgVideo, Int** ppiShiftLutLeft, Int** ppiBaseShiftLutLeft, Int** ppiShiftLutRight,  Int** ppiBaseShiftLutRight,  Int iDistToLeft, Bool bKeepReference )
     261#else
    241262TRenSingleModelC<iBM,bBitInc>::setup( TComPicYuv* pcOrgVideo, Int** ppiShiftLutLeft, Int** ppiBaseShiftLutLeft, Int** ppiShiftLutRight,  Int** ppiBaseShiftLutRight,  Int iDistToLeft, Bool bKeepReference, UInt uiHorOff )
     263#endif
    242264{
    243265  AOT( !m_bUseOrgRef && pcOrgVideo );
     
    253275  if ( pcOrgVideo && !bKeepReference )
    254276  {
     277#if FIX_VSO_SETUP
     278    TRenFilter::copy(             pcOrgVideo->getLumaAddr() +  m_iHorOffset       * pcOrgVideo->getStride() , pcOrgVideo->getStride() , m_iWidth,      m_iUsedHeight,      m_aapiRefVideoPel[0], m_aiRefVideoStrides[0]);
     279    TRenFilter::sampleCUpHorUp(0, pcOrgVideo->getCbAddr()   + (m_iHorOffset >> 1) * pcOrgVideo->getCStride(), pcOrgVideo->getCStride(), m_iWidth >> 1, m_iUsedHeight >> 1, m_aapiRefVideoPel[1], m_aiRefVideoStrides[1]);
     280    TRenFilter::sampleCUpHorUp(0, pcOrgVideo->getCrAddr()   + (m_iHorOffset >> 1) * pcOrgVideo->getCStride(), pcOrgVideo->getCStride(), m_iWidth >> 1, m_iUsedHeight >> 1, m_aapiRefVideoPel[2], m_aiRefVideoStrides[2]);   
     281#else
    255282    TRenFilter::copy(             pcOrgVideo->getLumaAddr() +  uiHorOff       * pcOrgVideo->getStride() , pcOrgVideo->getStride() , m_iWidth,      m_iHeight,      m_aapiRefVideoPel[0], m_aiRefVideoStrides[0]);
    256283    TRenFilter::sampleCUpHorUp(0, pcOrgVideo->getCbAddr()   + (uiHorOff >> 1) * pcOrgVideo->getCStride(), pcOrgVideo->getCStride(), m_iWidth >> 1, m_iHeight >> 1, m_aapiRefVideoPel[1], m_aiRefVideoStrides[1]);
    257284    TRenFilter::sampleCUpHorUp(0, pcOrgVideo->getCrAddr()   + (uiHorOff >> 1) * pcOrgVideo->getCStride(), pcOrgVideo->getCStride(), m_iWidth >> 1, m_iHeight >> 1, m_aapiRefVideoPel[2], m_aiRefVideoStrides[2]);   
     285#endif
    258286    xSetStructRefView();
    259287  }
     
    262290  xResetStructError();
    263291  xInitSampleStructs();
    264 
     292#if FIX_VSO_SETUP
     293  switch ( m_iMode )
     294  { 
     295  case 0:   
     296#if LGE_VSO_EARLY_SKIP_A0093
     297    xRenderL<true>( 0, 0, m_iWidth, m_iUsedHeight, m_aiBaseDepthStrides[0], m_apiBaseDepthPel[0],false );
     298#else
     299    xRenderL<true>( 0, 0, m_iWidth, m_iUsedHeight, m_aiBaseDepthStrides[0], m_apiBaseDepthPel[0] );
     300#endif   
     301    break;
     302  case 1:   
     303#ifdef LGE_VSO_EARLY_SKIP_A0093
     304    xRenderR<true>( 0, 0, m_iWidth, m_iUsedHeight, m_aiBaseDepthStrides[1], m_apiBaseDepthPel[1],false);
     305#else
     306    xRenderR<true>( 0, 0, m_iWidth, m_iUsedHeight, m_aiBaseDepthStrides[1], m_apiBaseDepthPel[1] );
     307#endif
     308    break;
     309  case 2:
     310    TRenFilter::setupZLUT( true, 30, iDistToLeft, ppiBaseShiftLutLeft, ppiBaseShiftLutRight, m_iBlendZThres, m_iBlendDistWeight, m_piInvZLUTLeft, m_piInvZLUTRight );
     311#ifdef LGE_VSO_EARLY_SKIP_A0093
     312    xRenderL<true>( 0, 0, m_iWidth, m_iUsedHeight, m_aiBaseDepthStrides[0], m_apiBaseDepthPel[0],false);
     313    xRenderR<true>( 0, 0, m_iWidth, m_iUsedHeight, m_aiBaseDepthStrides[1], m_apiBaseDepthPel[1],false);
     314#else     
     315    xRenderL<true>( 0, 0, m_iWidth, m_iUsedHeight, m_aiBaseDepthStrides[0], m_apiBaseDepthPel[0] );
     316    xRenderR<true>( 0, 0, m_iWidth, m_iUsedHeight, m_aiBaseDepthStrides[1], m_apiBaseDepthPel[1] );
     317#endif
     318    break;
     319  default:
     320    AOT(true);
     321  }
     322#else
    265323  switch ( m_iMode )
    266324  { 
     
    292350    AOT(true);
    293351  }
     352#endif
    294353
    295354  // Get Rendered View as Reference
     
    354413#endif 
    355414
     415#if FIX_VSO_SETUP
     416  for ( Int iPosY = 0; iPosY < m_iUsedHeight; iPosY++ )
     417#else
    356418  for ( Int iPosY = 0; iPosY < m_iHeight; iPosY++ )
     419#endif
    357420  {
    358421    for ( Int iPosX = 0; iPosX < m_iWidth; iPosX++ )
     
    407470#endif
    408471
     472#if FIX_VSO_SETUP
     473  for ( Int iPosY = 0; iPosY < m_iUsedHeight; iPosY++ )
     474#else
    409475  for ( Int iPosY = 0; iPosY < m_iHeight; iPosY++ )
     476#endif
    410477  {
    411478    for ( Int iPosX = 0; iPosX < m_iWidth; iPosX++ )
     
    550617}
    551618
     619#if FIX_VSO_SETUP
     620template <BlenMod iBM, Bool bBitInc> Void
     621TRenSingleModelC<iBM,bBitInc>::getSynthVideo( Int iViewPos, TComPicYuv* pcPicYuv )
     622
     623  AOT( pcPicYuv->getWidth() != m_iWidth );
     624  AOT( pcPicYuv->getHeight() < m_iUsedHeight + m_iHorOffset );
     625
     626#if HHI_VSO_COLOR_PLANES
     627  Pel RenModelOutPels::* piText[3] = { NULL, NULL, NULL };
     628  xGetSampleStrTextPtrs(iViewPos, piText[0], piText[1], piText[2]);
     629
     630  // Temp image for chroma down sampling
     631  PelImage cTempImage( m_iWidth, m_iUsedHeight, 3, 0);
     632
     633  Int  aiStrides[3];
     634  Pel* apiData  [3];
     635
     636  cTempImage.getDataAndStrides( apiData, aiStrides );
     637
     638  for (UInt uiCurPlane = 0; uiCurPlane < 3; uiCurPlane++ )
     639  {
     640    xCopyFromSampleStruct( m_pcOutputSamples, m_iOutputSamplesStride, piText[uiCurPlane], apiData[uiCurPlane], aiStrides[uiCurPlane] , m_iWidth, m_iUsedHeight);
     641  } 
     642  xCopy2PicYuv( apiData, aiStrides, pcPicYuv );
     643#else
     644  Pel RenModelOutPels::* piY;
     645  xGetSampleStrTextPtrs(iViewPos, piY);
     646  xCopyFromSampleStruct( m_pcOutputSamples, m_iOutputSamplesStride, piY, pcPicYuv->getLumaAddr() + m_iHorOffset * pcPicYuv->getStride(), pcPicYuv->getStride(), m_iWidth, m_iUsedHeight );
     647  pcPicYuv->setChromaTo( 128 << g_uiBitIncrement );   
     648#endif 
     649}
     650#else
    552651template <BlenMod iBM, Bool bBitInc> Void
    553652TRenSingleModelC<iBM,bBitInc>::getSynthVideo( Int iViewPos, TComPicYuv* pcPicYuv, UInt uiHorOffset )
     
    562661  // Temp image for chroma down sampling
    563662  PelImage cTempImage( m_iWidth, m_iHeight, 3, 0);
     663
    564664  Int  aiStrides[3];
    565665  Pel* apiData  [3];
     
    571671    xCopyFromSampleStruct( m_pcOutputSamples, m_iOutputSamplesStride, piText[uiCurPlane], apiData[uiCurPlane], aiStrides[uiCurPlane] , m_iWidth, m_iHeight);
    572672  } 
    573 
    574673  xCopy2PicYuv( apiData, aiStrides, pcPicYuv, uiHorOffset );
    575674#else
     
    580679#endif 
    581680}
    582 
    583 
     681#endif
     682
     683#if FIX_VSO_SETUP
     684template <BlenMod iBM, Bool bBitInc> Void
     685TRenSingleModelC<iBM,bBitInc>::getSynthDepth( Int iViewPos, TComPicYuv* pcPicYuv )
     686
     687  AOT( iViewPos != 0 && iViewPos != 1);
     688  AOT( pcPicYuv->getWidth()  != m_iWidth  );
     689  AOT( pcPicYuv->getHeight() < m_iUsedHeight + m_iHorOffset );
     690
     691  Pel RenModelOutPels::* piD = 0;
     692  xGetSampleStrDepthPtrs(iViewPos, piD);
     693  xCopyFromSampleStruct( m_pcOutputSamples, m_iOutputSamplesStride, piD, pcPicYuv->getLumaAddr() + pcPicYuv->getStride() * m_iHorOffset, pcPicYuv->getStride(), m_iWidth, m_iUsedHeight );
     694  pcPicYuv->setChromaTo( 128 << g_uiBitIncrement );   
     695}
     696
     697#else
    584698template <BlenMod iBM, Bool bBitInc> Void
    585699TRenSingleModelC<iBM,bBitInc>::getSynthDepth( Int iViewPos, TComPicYuv* pcPicYuv, UInt uiHorOff )
    586700
    587701  AOT( iViewPos != 0 && iViewPos != 1);
    588 
    589702  AOT( pcPicYuv->getWidth()  != m_iWidth  );
    590703  AOT( pcPicYuv->getHeight() > m_iHeight + uiHorOff );
     
    595708  pcPicYuv->setChromaTo( 128 << g_uiBitIncrement );   
    596709}
    597 
     710#endif
     711
     712#if FIX_VSO_SETUP
     713template <BlenMod iBM, Bool bBitInc> Void
     714TRenSingleModelC<iBM,bBitInc>::getRefVideo ( Int iViewPos, TComPicYuv* pcPicYuv )
     715
     716  AOT( pcPicYuv->getWidth()  != m_iWidth  );
     717  AOT( pcPicYuv->getHeight() <  m_iUsedHeight + m_iHorOffset);
     718
     719#if HHI_VSO_COLOR_PLANES
     720  Pel RenModelOutPels::* piText[3];
     721  piText[0] = &RenModelOutPels::iYRef;
     722  piText[1] = &RenModelOutPels::iURef;
     723  piText[2] = &RenModelOutPels::iVRef;
     724
     725  // Temp image for chroma down sampling
     726
     727  PelImage cTempImage( m_iWidth, m_iUsedHeight, 3, 0);
     728  Int  aiStrides[3];
     729  Pel* apiData  [3];
     730
     731  cTempImage.getDataAndStrides( apiData, aiStrides );
     732
     733  for (UInt uiCurPlane = 0; uiCurPlane < 3; uiCurPlane++ )
     734  {
     735    xCopyFromSampleStruct( m_pcOutputSamples, m_iOutputSamplesStride, piText[uiCurPlane], apiData[uiCurPlane], aiStrides[uiCurPlane] , m_iWidth, m_iUsedHeight);
     736  } 
     737
     738  xCopy2PicYuv( apiData, aiStrides, pcPicYuv );
     739#else
     740  xCopyFromSampleStruct( m_pcOutputSamples, m_iOutputSamplesStride, &RenModelOutPels::iYRef, pcPicYuv->getLumaAddr() *  pcPicYuv->getStride() + m_iHorOffset, pcPicYuv->getStride(), m_iWidth, m_iUsedHeight );
     741  pcPicYuv->setChromaTo( 128 << g_uiBitIncrement );   
     742#endif 
     743}
     744#else
    598745template <BlenMod iBM, Bool bBitInc> Void
    599746TRenSingleModelC<iBM,bBitInc>::getRefVideo ( Int iViewPos, TComPicYuv* pcPicYuv, UInt uiHorOffset )
     
    609756
    610757  // Temp image for chroma down sampling
     758
    611759  PelImage cTempImage( m_iWidth, m_iHeight, 3, 0);
    612760  Int  aiStrides[3];
     
    618766  {
    619767    xCopyFromSampleStruct( m_pcOutputSamples, m_iOutputSamplesStride, piText[uiCurPlane], apiData[uiCurPlane], aiStrides[uiCurPlane] , m_iWidth, m_iHeight);
    620   }  
     768  }
    621769
    622770  xCopy2PicYuv( apiData, aiStrides, pcPicYuv, uiHorOffset );
     
    626774#endif 
    627775}
    628 
     776#endif
    629777
    630778template <BlenMod iBM, Bool bBitInc> RMDist
     
    682830  // Get Data
    683831  m_ppiCurLUT      = m_appiShiftLut   [iCurViewPos];
    684 
    685832  xSetViewRow      ( iStartPosY);
    686833
     
    770917      {
    771918          break;
    772         }
     919      }
    773920
    774921      iCurPosX--;
     
    816963  iEndChangePos = m_iStartChangePosX + iWidth - 1;
    817964
    818 
    819965  for (Int iPosY = iStartPosY; iPosY < iStartPosY + iHeight; iPosY++ )
    820966  {
    821 
    822967#ifdef LGE_VSO_EARLY_SKIP_A0093
    823968    if( m_bEarlySkip && bFast )
     
    18732018}
    18742019
     2020#if FIX_VSO_SETUP
     2021template <BlenMod iBM, Bool bBitInc> Void
     2022TRenSingleModelC<iBM,bBitInc>::xCopy2PicYuv( Pel** ppiSrcVideoPel, Int* piStrides, TComPicYuv* rpcPicYuvTarget )
     2023{
     2024  TRenFilter::copy            ( ppiSrcVideoPel[0], piStrides[0], m_iWidth, m_iUsedHeight, rpcPicYuvTarget->getLumaAddr() +  m_iHorOffset       * rpcPicYuvTarget->getStride() , rpcPicYuvTarget->getStride () );
     2025  TRenFilter::sampleDown2Tap13( ppiSrcVideoPel[1], piStrides[1], m_iWidth, m_iUsedHeight, rpcPicYuvTarget->getCbAddr  () + (m_iHorOffset >> 1) * rpcPicYuvTarget->getCStride(), rpcPicYuvTarget->getCStride() );
     2026  TRenFilter::sampleDown2Tap13( ppiSrcVideoPel[2], piStrides[2], m_iWidth, m_iUsedHeight, rpcPicYuvTarget->getCrAddr  () + (m_iHorOffset >> 1) * rpcPicYuvTarget->getCStride(), rpcPicYuvTarget->getCStride() );
     2027}
     2028#else
    18752029template <BlenMod iBM, Bool bBitInc> Void
    18762030TRenSingleModelC<iBM,bBitInc>::xCopy2PicYuv( Pel** ppiSrcVideoPel, Int* piStrides, TComPicYuv* rpcPicYuvTarget, UInt uiHorOffset )
     
    18802034  TRenFilter::sampleDown2Tap13( ppiSrcVideoPel[2], piStrides[2], m_iWidth, m_iHeight, rpcPicYuvTarget->getCrAddr  () + (uiHorOffset >> 1) * rpcPicYuvTarget->getCStride(), rpcPicYuvTarget->getCStride() );
    18812035}
     2036#endif
    18822037
    18832038template class TRenSingleModelC<BLEND_NONE ,true>;
  • trunk/source/Lib/TLibRenderer/TRenSingleModel.h

    r105 r124  
    8080  // Set Frame dependent data
    8181  virtual Void   setLRView ( Int iViewPos, Pel** apiCurVideoPel, Int* aiCurVideoStride, Pel* piCurDepthPel, Int iCurDepthStride ) = 0;
     82#if FIX_VSO_SETUP
     83  virtual Void   setupPart ( UInt uiHorOffset,       Int iUsedHeight ) = 0;
     84  virtual Void   setup     ( TComPicYuv* pcOrgVideo, Int** ppiShiftLutLeft, Int** ppiBaseShiftLutLeft, Int** ppiShiftLutRight,  Int** ppiBaseShiftLutRight,  Int iDistToLeft, Bool bKeepReference ) = 0;
     85#else
    8286  virtual Void   setup     ( TComPicYuv* pcOrgVideo, Int** ppiShiftLutLeft, Int** ppiBaseShiftLutLeft, Int** ppiShiftLutRight,  Int** ppiBaseShiftLutRight,  Int iDistToLeft, Bool bKeepReference, UInt uiHorOffset ) = 0;
     87#endif
    8388
    8489  // Set Data
     
    98103  virtual RMDist getDistVideo  ( Int iViewPos, Int iPlane, Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, Pel* piNewData ) = 0;
    99104
     105#if FIX_VSO_SETUP
     106  virtual Void   getSynthVideo  ( Int iViewPos, TComPicYuv* pcPicYuv ) = 0; 
     107  virtual Void   getSynthDepth  ( Int iViewPos, TComPicYuv* pcPicYuv ) = 0;
     108  virtual Void   getRefVideo    ( Int iViewPos, TComPicYuv* pcPicYuv ) = 0;
     109#else
    100110  virtual Void   getSynthVideo  ( Int iViewPos, TComPicYuv* pcPicYuv, UInt uiHorOffset  ) = 0; 
    101111  virtual Void   getSynthDepth  ( Int iViewPos, TComPicYuv* pcPicYuv, UInt uiHorOffset  ) = 0;
    102112  virtual Void   getRefVideo    ( Int iViewPos, TComPicYuv* pcPicYuv, UInt uiHorOffset  ) = 0;
     113#endif
    103114};
    104115
     
    170181  // Set Frame dependent data
    171182  Void   setLRView ( Int iViewPos, Pel** apiCurVideoPel, Int* aiCurVideoStride, Pel* piCurDepthPel, Int iCurDepthStride );
     183#if FIX_VSO_SETUP
     184  Void   setupPart ( UInt uiHorOffset,       Int uiUsedHeight );
     185  Void   setup     ( TComPicYuv* pcOrgVideo, Int** ppiShiftLutLeft, Int** ppiBaseShiftLutLeft, Int** ppiShiftLutRight,  Int** ppiBaseShiftLutRight,  Int iDistToLeft, Bool bKeepReference );
     186#else
    172187  Void   setup     ( TComPicYuv* pcOrgVideo, Int** ppiShiftLutLeft, Int** ppiBaseShiftLutLeft, Int** ppiShiftLutRight,  Int** ppiBaseShiftLutRight,  Int iDistToLeft, Bool bKeepReference, UInt uiHorOffset );
     188#endif
    173189
    174190#if LGE_VSO_EARLY_SKIP_A0093
     
    187203  RMDist getDistVideo  ( Int iViewPos, Int iPlane, Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, Pel* piNewData );
    188204
     205#if FIX_VSO_SETUP
     206  Void   getSynthVideo  ( Int iViewPos, TComPicYuv* pcPicYuv ); 
     207  Void   getSynthDepth  ( Int iViewPos, TComPicYuv* pcPicYuv );
     208  Void   getRefVideo    ( Int iViewPos, TComPicYuv* pcPicYuv );
     209#else
    189210  Void   getSynthVideo  ( Int iViewPos, TComPicYuv* pcPicYuv, UInt uiHorOffset ); 
    190211  Void   getSynthDepth  ( Int iViewPos, TComPicYuv* pcPicYuv, UInt uiHorOffset  );
    191212  Void   getRefVideo    ( Int iViewPos, TComPicYuv* pcPicYuv, UInt uiHorOffset  );
     213#endif
    192214
    193215private:
     
    198220  /////  Rendering /////
    199221  // Left to Right
    200 #ifdef LGE_VSO_EARLY_SKIP_A0093
     222#if LGE_VSO_EARLY_SKIP_A0093
    201223                      __inline Bool   xDetectEarlySkipL   ( Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, Pel* piNewData,Pel* piOrgData, Int iOrgStride );
    202224                      __inline Bool   xDetectEarlySkipR   ( Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, Pel* piNewData,Pel* piOrgData, Int iOrgStride );
     
    234256  __inline Void   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 );
    235257#else
    236   __inline Void   xGetBlendedValue    ( Pel iYL,   Pel iYR, Pel iDepthL, Pel iDepthR, Int iFilledL, Int iFilledR, Pel& riY );
     258  __inline Void   xGetBlendedValue    ( Pel iYL, Pel iYR, Pel iDepthL, Pel iDepthR, Int iFilledL, Int iFilledR, Pel& riY );
    237259  __inline Void   xGetBlendedValueBM1 ( Pel iYL, Pel iYR, Pel iDepthL, Pel iDepthR, Int iFilledL, Int iFilledR, Pel& riY );
    238260  __inline Void   xGetBlendedValueBM2 ( Pel iYL, Pel iYR, Pel iDepthL, Pel iDepthR, Int iFilledL, Int iFilledR, Pel& riY );
     
    241263
    242264  // General
    243   template<Bool bSet> __inline Void xSetShiftedPelL       (Int iSourcePos,                  Int iSubSourcePos, Int iTargetSPos,                   Pel iFilled, RMDist& riError );
     265  template<Bool bSet> __inline Void xSetShiftedPelL       (Int iSourcePos,             Int iSubSourcePos, Int iTargetSPos,              Pel iFilled, RMDist& riError );
    244266  template<Bool bSet> __inline Void xSetShiftedPelBlendL  (RenModelInPels* pcInSample, Int iSubSourcePos, RenModelOutPels* pcOutSample, Pel iFilled, RMDist& riError );
    245267  template<Bool bSet> __inline Void xSetShiftedPelNoBlendL(RenModelInPels* pcInSample, Int iSubSourcePos, RenModelOutPels* pcOutSample, Pel iFilled, RMDist& riError );
    246268
    247   template<Bool bSet> __inline Void xSetShiftedPelR       (Int iSourcePos,                  Int iSubSourcePos, Int iTargetSPos,                   Pel iFilled, RMDist& riError );
     269  template<Bool bSet> __inline Void xSetShiftedPelR       (Int iSourcePos,             Int iSubSourcePos, Int iTargetSPos,              Pel iFilled, RMDist& riError );
    248270  template<Bool bSet> __inline Void xSetShiftedPelBlendR  (RenModelInPels* pcInSample, Int iSubSourcePos, RenModelOutPels* pcOutSample, Pel iFilled, RMDist& riError );
    249271  template<Bool bSet> __inline Void xSetShiftedPelNoBlendR(RenModelInPels* pcInSample, Int iSubSourcePos, RenModelOutPels* pcOutSample, Pel iFilled, RMDist& riError );
     
    271293  Void            xInitSampleStructs           ();
    272294  Void            xSetStructSynthViewAsRefView ();
     295#if FIX_VSO_SETUP
     296  Void            xCopy2PicYuv                ( Pel** ppiSrcVideoPel, Int* piStrides, TComPicYuv* rpcPicYuvTarget );
     297#else
    273298  Void            xCopy2PicYuv                ( Pel** ppiSrcVideoPel, Int* piStrides, TComPicYuv* rpcPicYuvTarget, UInt uiHorOffset );
    274 
     299#endif
    275300
    276301  template< typename S, typename T>
    277302  Void   xCopyFromSampleStruct ( S* ptSource , Int iSourceStride, T S::* ptSourceElement, T* ptTarget, Int iTargetStride, Int iWidth, Int iHeight )
    278303  {
     304#if FIX_VSO_SETUP
     305    AOT( iWidth != m_iWidth );
     306    for (Int iPosY = 0; iPosY < iHeight; iPosY++)
     307#else
    279308    for (Int iPosY = 0; iPosY < m_iHeight; iPosY++)
     309#endif
    280310    {
    281311      for (Int iPosX = 0; iPosX < m_iWidth; iPosX++)
     
    291321  Void   xCopyToSampleStruct ( T* ptSource , Int iSourceStride, S* ptTarget, Int iTargetStride, T S::* ptSourceElement, Int iWidth, Int iHeight )
    292322  {
     323#if FIX_VSO_SETUP
     324    AOT( iWidth != m_iWidth );
     325    for (Int iPosY = 0; iPosY < iHeight; iPosY++)
     326#else
    293327    for (Int iPosY = 0; iPosY < m_iHeight; iPosY++)
     328#endif
    294329    {
    295330      for (Int iPosX = 0; iPosX < m_iWidth; iPosX++)
     
    309344  Int   m_iStride;
    310345  Int   m_iPad;
     346#if FIX_VSO_SETUP
     347  Int   m_iUsedHeight;
     348  Int   m_iHorOffset;
     349#endif
    311350
    312351  Int   m_iSampledWidth;
     352#if FIX_VSO_SETUP
     353#else
    313354  Int   m_iSampledHeight;
     355#endif
    314356  Int   m_iSampledStride;
    315357
    316358  RenModelInPels* m_pcInputSamples[2];
    317   Int                  m_iInputSamplesStride;
     359  Int             m_iInputSamplesStride;
    318360
    319361  // Base
Note: See TracChangeset for help on using the changeset viewer.