Ignore:
Timestamp:
16 May 2013, 16:05:31 (12 years ago)
Author:
mitsubishi-htm
Message:

-D0166 part 1, set refView selection for NBDV.

Location:
branches/HTM-6.2-dev2-MERL/source/Lib/TLibDecoder
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-6.2-dev2-MERL/source/Lib/TLibDecoder/TDecCu.cpp

    r402 r412  
    393393        const UChar uhNewDepth = max<UInt>( uiDepth, pcTextureCU->getDepth( uiAbsPartIdx + ui ) );
    394394#if MERL_VSP_C0152
    395         Int vspIdx = pcTextureCU->getVSPIndex( uiAbsPartIdx + ui);
    396         pcCU->setVSPIndex( uiAbsPartIdx + ui, vspIdx);
     395        Int vspIdx = pcTextureCU->getVSPIndex( uiAbsPartIdx + ui );
     396        pcCU->setVSPIndex( uiAbsPartIdx + ui, vspIdx );
     397#endif
     398#if MERL_VSP_NBDV_RefVId_Fix_D0166
     399        Int vspDir = pcTextureCU->getVSPDir( uiAbsPartIdx + ui );
     400        pcCU->setVSPDir( uiAbsPartIdx + ui, vspDir );
    397401#endif
    398402        pcCU->setPredictionMode( uiAbsPartIdx + ui, MODE_SKIP );
     
    412416#if MERL_VSP_C0152
    413417    Int iVSPIndexTrue[3] = {-1, -1, -1};
     418#if MERL_VSP_NBDV_RefVId_Fix_D0166
     419    Int iVSPDirTrue[3]   = {-1, -1, -1};
     420    m_ppcCU[uiDepth]->getInterMergeCandidates( 0, 0, uiDepth, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, iVSPIndexTrue, iVSPDirTrue, uiMergeIndex );
     421#else
    414422    m_ppcCU[uiDepth]->getInterMergeCandidates( 0, 0, uiDepth, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, iVSPIndexTrue, uiMergeIndex );
     423#endif
    415424    {
    416425      Int iVSPIdx = 0;
     
    425434          }
    426435      }
    427       pcCU->setVSPIndexSubParts( iVSPIdx, uiAbsPartIdx, 0, uiDepth );  //Initialize the VSP, may change later in get InterMergeCandidates()
     436      pcCU->setVSPIndexSubParts( iVSPIdx, uiAbsPartIdx, 0, uiDepth );  // Initialize
     437#if MERL_VSP_NBDV_RefVId_Fix_D0166
     438      pcCU->setVSPDirSubParts( iVSPDirTrue[iVSPIdx-1], uiAbsPartIdx, 0, uiDepth );
     439#endif
    428440    }
    429441#else
     
    530542        Int vspIdx = pcTextureCU->getVSPIndex( uiAbsPartIdx + ui);
    531543        pcCU->setVSPIndex( uiAbsPartIdx + ui, vspIdx);
     544#endif
     545#if MERL_VSP_NBDV_RefVId_Fix_D0166
     546        if (pcCU->getSlice()->getIsDepth()) {
     547          pcCU->setVSPDir( uiAbsPartIdx + ui, 0);
     548        }
     549        else {
     550          Int vspDir = pcTextureCU->getVSPDir( uiAbsPartIdx + ui);
     551          pcCU->setVSPDir( uiAbsPartIdx + ui, vspDir);
     552        }
    532553#endif
    533554        pcCU->setPredictionMode( uiAbsPartIdx + ui, MODE_INTER );
  • branches/HTM-6.2-dev2-MERL/source/Lib/TLibDecoder/TDecEntropy.cpp

    r373 r412  
    321321#if MERL_VSP_C0152
    322322      Int iVSPIndexTrue[3] = {-1, -1, -1};
     323#if MERL_VSP_NBDV_RefVId_Fix_D0166
     324      Int iVSPDirTrue[3]   = {-1, -1, -1};
     325      pcSubCU->getInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, uiDepth, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, iVSPIndexTrue, iVSPDirTrue, uiMergeIndex );
     326#else
    323327      pcSubCU->getInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, uiDepth, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, iVSPIndexTrue, uiMergeIndex );
    324 
     328#endif
    325329#if HHI_MPI
    326330      if(pcCU->getTextureModeDepth( uiSubPartIdx ) == uiDepth)//MPI is used
     
    330334        for( UInt ui = 0; ui < uiCurrPartNumb; ui++ )
    331335        {
    332           Int vspIdx = pcTextureCU->getVSPIndex( uiAbsPartIdx + ui);
     336          Int vspIdx = pcTextureCU->getVSPIndex( uiAbsPartIdx + ui );
    333337          pcCU->setVSPIndex( uiAbsPartIdx + ui, vspIdx);
     338#if MERL_VSP_NBDV_RefVId_Fix_D0166
     339          Int vspDir = pcTextureCU->getVSPDir( uiAbsPartIdx + ui );
     340          pcCU->setVSPDir( uiAbsPartIdx + ui, vspDir);
     341#endif
    334342        }
    335343      }
     
    348356            }
    349357        }
    350         pcCU->setVSPIndexSubParts( iVSPIdx, uiSubPartIdx, uiPartIdx, uiDepth );  //Initialize the VSP, may change later in get InterMergeCandidates()
     358        pcCU->setVSPIndexSubParts( iVSPIdx, uiSubPartIdx, uiPartIdx, uiDepth );               // Initialize
     359#if MERL_VSP_NBDV_RefVId_Fix_D0166
     360        pcCU->setVSPDirSubParts( iVSPDirTrue[iVSPIdx-1], uiSubPartIdx, uiPartIdx, uiDepth );  // Initialize
     361#endif
    351362      }
    352363
  • branches/HTM-6.2-dev2-MERL/source/Lib/TLibDecoder/TDecTop.cpp

    r373 r412  
    12221222     pcSlice->setRefPicBaseDepth(pcBaseDepthPic);
    12231223  }
     1224#if !MERL_VSP_NBDV_RefVId_Fix_D0166
    12241225  getTAppDecTop()->setBWVSPLUT( pcSlice, pcSlice->getViewId(),  pcSlice->getPOC() ); // get the LUT for backward warping
     1226#else
     1227  if (pcSlice->getViewId() != 0)
     1228  {
     1229    Bool isDepth = true;
     1230    for(Int refviewId = 0; refviewId < (pcSlice->getViewId()); refviewId++)
     1231    {
     1232      if (m_tAppDecTop->getTDecTop( refviewId, isDepth ))
     1233      {
     1234        pcSlice->setListDepthPic(m_tAppDecTop->getTDecTop( refviewId, isDepth )->getListPic(), refviewId); // The list will store only the depth pictures
     1235      }
     1236      getTAppDecTop()->setBWVSPLUT( refviewId, pcSlice, pcSlice->getViewId(),  pcSlice->getPOC() ); // get the LUT for backward warping
     1237    }
     1238  }
     1239#endif
    12251240#endif
    12261241
Note: See TracChangeset for help on using the changeset viewer.