Ignore:
Timestamp:
1 Nov 2012, 19:22:41 (12 years ago)
Author:
mitsubishi-htm
Message:

Initial integration of VSP into HTM 4.0.1. The version used for JCT3V-B0102 at Shanghai meeting.

  • VC9 project/solution files updated. Other Visual C++ project/solution files are not updated.
  • Linux make file updated.

TODO

  • A second release is expected to include some bug fix and improvements on the interface, e.g. to move switches from macro definition to the configuration file.
  • A third release is expected after being integrated within HTM 5.x, which is to be used for CE1.h anchor.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibDecoder/TDecCu.cpp

    r100 r166  
    5252  m_ppcYuvResPred = NULL;
    5353#endif
     54#if FORCE_REF_VSP
     55  m_ppcYuvAvail   = NULL;
     56  m_ppcYuvSynth   = NULL;
     57#endif
    5458  m_ppcCU      = NULL;
    5559}
     
    7983#if HHI_INTER_VIEW_RESIDUAL_PRED
    8084  m_ppcYuvResPred = new TComYuv*   [m_uiMaxDepth-1];
     85#endif
     86#if FORCE_REF_VSP
     87  m_ppcYuvAvail   = new TComYuv*    [m_uiMaxDepth-1];
     88  m_ppcYuvSynth   = new TComYuv*    [m_uiMaxDepth-1];
    8189#endif
    8290  m_ppcCU      = new TComDataCU*[m_uiMaxDepth-1];
     
    94102    m_ppcYuvResPred[ui] = new TComYuv;    m_ppcYuvResPred[ui]->create( uiWidth, uiHeight );
    95103#endif
     104#if FORCE_REF_VSP
     105    m_ppcYuvAvail  [ui] = new TComYuv;    m_ppcYuvAvail  [ui]->create( uiWidth, uiHeight );
     106    m_ppcYuvSynth  [ui] = new TComYuv;    m_ppcYuvSynth  [ui]->create( uiWidth, uiHeight );
     107#endif
    96108    m_ppcCU     [ui] = new TComDataCU; m_ppcCU     [ui]->create( uiNumPartitions, uiWidth, uiHeight, true, uiMaxWidth >> (m_uiMaxDepth - 1) );
    97109  }
     
    118130    m_ppcYuvResPred[ui]->destroy(); delete m_ppcYuvResPred[ui]; m_ppcYuvResPred[ui] = NULL;
    119131#endif
     132#if FORCE_REF_VSP
     133    m_ppcYuvAvail  [ui]->destroy(); delete m_ppcYuvAvail  [ui]; m_ppcYuvAvail  [ui] = NULL;
     134    m_ppcYuvSynth  [ui]->destroy(); delete m_ppcYuvSynth  [ui]; m_ppcYuvSynth  [ui] = NULL;
     135#endif
    120136    m_ppcCU     [ui]->destroy(); delete m_ppcCU     [ui]; m_ppcCU     [ui] = NULL;
    121137  }
     
    125141#if HHI_INTER_VIEW_RESIDUAL_PRED
    126142  delete [] m_ppcYuvResPred; m_ppcYuvResPred = NULL;
     143#endif
     144#if FORCE_REF_VSP
     145  delete [] m_ppcYuvAvail;   m_ppcYuvAvail   = NULL;
     146  delete [] m_ppcYuvSynth;   m_ppcYuvSynth   = NULL;
    127147#endif
    128148  delete [] m_ppcCU     ; m_ppcCU      = NULL;
     
    328348  {
    329349    m_pcEntropyDecoder->decodeSkipFlag( pcCU, uiAbsPartIdx, uiDepth );
     350
     351#if FORCE_REF_VSP==1
     352    if( pcCU->isSkipped(uiAbsPartIdx) && pcCU->getSlice()->getViewId() != 0 )
     353#if VSP_TEXT_ONLY
     354    if( !pcCU->getSlice()->getSPS()->isDepth() )
     355#endif
     356    {
     357      m_pcEntropyDecoder->decodeVspFlag( pcCU, uiAbsPartIdx, uiDepth );
     358    }
     359#endif
    330360  }
    331361 
    332362  if( pcCU->isSkipped(uiAbsPartIdx) )
     363#if FORCE_REF_VSP==1
     364  if( !pcCU->isVspMode(uiAbsPartIdx) )
     365#endif
    333366  {
    334367    m_ppcCU[uiDepth]->copyInterPredInfoFrom( pcCU, uiAbsPartIdx, REF_PIC_LIST_0 );
     
    352385    if( pcCU->getTextureModeDepth( uiAbsPartIdx ) == uiDepth )
    353386    {
     387#if DEBUGLOGOUT
     388      PredMode   eOrgPred = pcCU->getPredictionMode( uiAbsPartIdx );
     389#endif
    354390      TComDataCU *pcTextureCU = pcCU->getSlice()->getTexturePic()->getCU( pcCU->getAddr() );
    355391      pcCU->copyTextureMotionDataFrom( pcTextureCU, uiDepth, pcCU->getZorderIdxInCU() + uiAbsPartIdx, uiAbsPartIdx );
     392#if DEBUGLOGOUT
     393      if( eOrgPred == MODE_SKIP )
     394        pcCU->setPredModeSubParts( MODE_SKIP, uiAbsPartIdx, uiDepth );
     395      m_cDebug.DebugLogOut( pcCU, uiAbsPartIdx, uiDepth );
     396#endif
    356397
    357398      UInt uiCurrPartNumb = pcCU->getPic()->getNumPartInCU() >> (uiDepth << 1);
     
    396437#endif
    397438    xFinishDecodeCU( pcCU, uiAbsPartIdx, uiDepth, ruiIsLast );
     439#if DEBUGLOGOUT
     440#if HHI_MPI
     441    if( pcCU->getTextureModeDepth( uiAbsPartIdx ) != uiDepth )
     442#endif
     443      m_cDebug.DebugLogOut( pcCU, uiAbsPartIdx, uiDepth );
     444#endif
    398445    return;
    399446  }
     447
     448#if FORCE_REF_VSP==1
     449  if( pcCU->isVspMode( uiAbsPartIdx ) )
     450  {
     451    TComMv cMvZero;
     452
     453    pcCU->setPartSizeSubParts( SIZE_2Nx2N, uiAbsPartIdx, uiDepth );
     454    pcCU->setSizeSubParts( g_uiMaxCUWidth>>uiDepth, g_uiMaxCUHeight>>uiDepth, uiAbsPartIdx, uiDepth );
     455
     456    pcCU->getCUMvField(REF_PIC_LIST_0)->setAllMvField( TComMvField(), SIZE_2Nx2N, uiAbsPartIdx, uiDepth, 0 );
     457    pcCU->getCUMvField(REF_PIC_LIST_1)->setAllMvField( TComMvField(), SIZE_2Nx2N, uiAbsPartIdx, uiDepth, 0 );
     458    pcCU->getCUMvField(REF_PIC_LIST_0)->setAllMvd    ( cMvZero,       SIZE_2Nx2N, uiAbsPartIdx, uiDepth, 0 );
     459    pcCU->getCUMvField(REF_PIC_LIST_1)->setAllMvd    ( cMvZero,       SIZE_2Nx2N, uiAbsPartIdx, uiDepth, 0 );
     460
     461    //pcCU->getCUMvField(REF_PIC_LIST_0)->setAllRefIdx ( pcCU->getSlice()->getRefIdxVsp(REF_PIC_LIST_0), SIZE_2Nx2N, 0, pcCU->getDepth(0), 0 );
     462    //pcCU->getCUMvField(REF_PIC_LIST_1)->setAllRefIdx ( pcCU->getSlice()->getRefIdxVsp(REF_PIC_LIST_1), SIZE_2Nx2N, 0, pcCU->getDepth(0), 0 );
     463
     464    pcCU->setMVPIdxSubParts( -1, REF_PIC_LIST_0, uiAbsPartIdx, 0, uiDepth );
     465    pcCU->setMVPNumSubParts( -1, REF_PIC_LIST_0, uiAbsPartIdx, 0, uiDepth );
     466    pcCU->setMVPIdxSubParts( -1, REF_PIC_LIST_1, uiAbsPartIdx, 0, uiDepth );
     467    pcCU->setMVPNumSubParts( -1, REF_PIC_LIST_1, uiAbsPartIdx, 0, uiDepth );
     468
     469    pcCU->setCbfSubParts( 0, 0, 0, uiAbsPartIdx, uiDepth );
     470    pcCU->setTrIdxSubParts( 0 , uiAbsPartIdx, uiDepth );
     471    pcCU->setNSQTIdxSubParts( uiAbsPartIdx, uiDepth );
     472
     473    xFinishDecodeCU( pcCU, uiAbsPartIdx, uiDepth, ruiIsLast );
     474#if DEBUGLOGOUT
     475    m_cDebug.DebugLogOut( pcCU, uiAbsPartIdx, uiDepth );
     476#endif
     477    return;
     478  }
     479#endif
    400480
    401481#if HHI_MPI
     
    428508    {
    429509      xFinishDecodeCU( pcCU, uiAbsPartIdx, uiDepth, ruiIsLast );
     510#if DEBUGLOGOUT
     511      m_cDebug.DebugLogOut( pcCU, uiAbsPartIdx, uiDepth );
     512#endif
    430513      return;
    431514    }
     
    527610  setdQPFlag( bCodeDQP );
    528611  xFinishDecodeCU( pcCU, uiAbsPartIdx, uiDepth, ruiIsLast );
     612#if DEBUGLOGOUT
     613  m_cDebug.DebugLogOut( pcCU, uiAbsPartIdx, uiDepth );
     614#endif
    529615}
    530616
     
    553639{
    554640  TComPic* pcPic = pcCU->getPic();
     641#if FORCE_REF_VSP
     642  if(pcPic->getPicYuvSynth())  m_ppcYuvSynth[uiDepth]->copyFromPicYuv( pcPic->getPicYuvSynth(), pcCU->getAddr(), uiAbsPartIdx );
     643  if(pcPic->getPicYuvAvail())  m_ppcYuvAvail[uiDepth]->copyFromPicYuv( pcPic->getPicYuvAvail(), pcCU->getAddr(), uiAbsPartIdx );
     644#endif
    555645 
    556646  Bool bBoundary = false;
     
    603693      xReconIntraQT( m_ppcCU[uiDepth], uiAbsPartIdx, uiDepth );
    604694      break;
     695#if FORCE_REF_VSP==1
     696    case MODE_SYNTH:
     697      m_ppcYuvReco[uiDepth]->copyFromPicYuv(pcPic->getPicYuvSynth(), pcCU->getAddr(), uiAbsPartIdx);
     698      break;
     699#endif
    605700    default:
    606701      assert(0);
     
    615710 
    616711  xCopyToPic( m_ppcCU[uiDepth], pcPic, uiAbsPartIdx, uiDepth );
     712#if DEBUGIMGOUT
     713  xColsetToPicMerge( m_ppcCU[uiDepth], pcPic->getPicYuvRecDbg(), uiAbsPartIdx, uiDepth );
     714#endif
    617715}
    618716
     
    626724  // inter prediction
    627725  m_pcPrediction->motionCompensation( pcCU, m_ppcYuvReco[uiDepth] );
    628  
    629726#if HHI_MPI
    630727  if( pcCU->getTextureModeDepth( 0 ) != -1 )
Note: See TracChangeset for help on using the changeset viewer.