Ignore:
Timestamp:
24 Feb 2012, 20:22:58 (13 years ago)
Author:
poznan-univ
Message:

Poznan Tools

  • Encoding only disoccluded CUs in depended views
  • Depth based motion prediction
  • Texture QP adjustment based on depth data
  • Nonlinear depth representation
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/0.3-poznan-univ/source/Lib/TLibEncoder/TEncSbac.cpp

    r5 r28  
    660660
    661661
    662 #if HHI_INTER_VIEW_MOTION_PRED || HHI_MPI
     662#if HHI_INTER_VIEW_MOTION_PRED || HHI_MPI || POZNAN_DBMP
    663663Void TEncSbac::codeMergeIndexMV( TComDataCU* pcCU, UInt uiAbsPartIdx )
    664664{
     
    670670  const UInt uiMviMergePos = bMVIAvailable ? HHI_MPI_MERGE_POS : MRG_MAX_NUM_CANDS;
    671671#endif
     672#if POZNAN_DBMP
     673  const Bool bDBMPAvailable = pcCU->getSlice()->getMP()->isDBMPEnabled();
     674#endif
    672675  for( UInt uiIdx = 0; uiIdx < MRG_MAX_NUM_CANDS; uiIdx++ )
    673676  {
     
    692695    }
    693696  }
     697
     698#if POZNAN_DBMP
     699  if(bDBMPAvailable)
     700  {
     701    UInt uiDBMPMergePos = POZNAN_DBMP_MERGE_POS;
     702#if HHI_MPI
     703        if(bMVIAvailable && uiDBMPMergePos>=uiMviMergePos) uiDBMPMergePos++;
     704#endif
     705        for( Int iIdx = MRG_MAX_NUM_CANDS-2; iIdx >= (Int)uiDBMPMergePos; iIdx-- )
     706        {
     707                Int iWrIdx = iIdx+1;
     708#if HHI_MPI
     709                if(bMVIAvailable)
     710                {
     711                        if(iIdx==(Int)uiMviMergePos) continue;
     712                        if(iWrIdx==(Int)uiMviMergePos) iWrIdx++;
     713                }
     714#endif
     715                if(iWrIdx>=MRG_MAX_NUM_CANDS) continue;
     716
     717                abAvailable[ iWrIdx ] = abAvailable[ iIdx ];
     718        }
     719        abAvailable[ uiDBMPMergePos ] = ( pcCU->getNeighbourCandIdx( POZNAN_DBMP_MRG_CAND, uiAbsPartIdx ) == POZNAN_DBMP_MRG_CAND + 1 );
     720       
     721        uiNumCand = 0; for( UInt uiIdx = 0; uiIdx < MRG_MAX_NUM_CANDS; uiIdx++ ) if(abAvailable[ uiIdx ]) uiNumCand++;
     722  }
     723#endif
     724
    694725  AOF( uiNumCand > 1 );
    695726
     
    718749  //--- determine unary index ---
    719750  UInt  uiMergeIdx  = pcCU->getMergeIndex( uiAbsPartIdx );
     751#if POZNAN_DBMP
     752  if(bDBMPAvailable)
     753  {
     754        if(uiMergeIdx==POZNAN_DBMP_MRG_CAND)  uiMergeIdx = POZNAN_DBMP_MERGE_POS;
     755        else if(uiMergeIdx>=POZNAN_DBMP_MERGE_POS) uiMergeIdx++;
     756  }
     757#endif
    720758#if HHI_MPI
    721759  if( bMVIAvailable )
     
    783821Void TEncSbac::codeMergeIndex( TComDataCU* pcCU, UInt uiAbsPartIdx )
    784822{
     823/* todo jacek niech sie wypowie
    785824#if HHI_INTER_VIEW_MOTION_PRED || HHI_MPI
    786825#if HHI_INTER_VIEW_MOTION_PRED && HHI_MPI
     
    791830#else
    792831  if( pcCU->getSlice()->getSPS()->getViewId() > 0 && ( pcCU->getSlice()->getSPS()->getMultiviewMvPredMode() & PDM_USE_FOR_MERGE ) == PDM_USE_FOR_MERGE )
    793 #endif
     832#endif//*/
     833#if HHI_INTER_VIEW_MOTION_PRED || HHI_MPI || POZNAN_DBMP
     834  if(
     835#if HHI_INTER_VIEW_MOTION_PRED   
     836          ( pcCU->getSlice()->getSPS()->getViewId() > 0 && ( pcCU->getSlice()->getSPS()->getMultiviewMvPredMode() & PDM_USE_FOR_MERGE ) == PDM_USE_FOR_MERGE ) ||
     837#endif
     838#if HHI_MPI
     839      ( pcCU->getSlice()->getSPS()->getUseMVI() && pcCU->getSlice()->getSliceType() != I_SLICE && pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_2Nx2N )  ||
     840#endif
     841#if     POZNAN_DBMP 
     842          ( pcCU->getSlice()->getMP()->isDBMPEnabled() ) ||
     843#endif
     844          0
     845    )
    794846  {
    795847    codeMergeIndexMV( pcCU, uiAbsPartIdx );
Note: See TracChangeset for help on using the changeset viewer.