Ignore:
Timestamp:
24 Feb 2012, 20:22:58 (15 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/TLibDecoder/TDecSbac.cpp

    r5 r28  
    579579
    580580
    581 #if HHI_INTER_VIEW_MOTION_PRED || HHI_MPI
     581#if HHI_INTER_VIEW_MOTION_PRED || HHI_MPI || POZNAN_DBMP
    582582Void TDecSbac::parseMergeIndexMV( TComDataCU* pcCU, UInt& ruiMergeIndex, UInt uiAbsPartIdx, UInt uiDepth )
    583583{
     
    585585  const Bool bMVIAvailable = pcCU->getSlice()->getSPS()->getUseMVI() && pcCU->getSlice()->getSliceType() != I_SLICE;
    586586  const UInt uiMviMergePos = bMVIAvailable ? HHI_MPI_MERGE_POS : MRG_MAX_NUM_CANDS;
     587#endif
     588#if POZNAN_DBMP
     589  const Bool bDBMPAvailable = pcCU->getSlice()->getMP()->isDBMPEnabled();
     590  Bool bDBMPModifyMergeIdx = true;
    587591#endif
    588592  //--- set number of candidates and availability ---
     
    611615    }
    612616  }
     617
     618#if POZNAN_DBMP
     619  if(bDBMPAvailable)
     620  {
     621    UInt uiDBMPMergePos = POZNAN_DBMP_MERGE_POS;
     622#if HHI_MPI
     623        if(bMVIAvailable && uiDBMPMergePos>=uiMviMergePos) uiDBMPMergePos++;
     624#endif
     625        for( Int iIdx = MRG_MAX_NUM_CANDS-2; iIdx >= (Int)uiDBMPMergePos; iIdx-- )
     626        {
     627                Int iWrIdx = iIdx+1;
     628#if HHI_MPI
     629                if(bMVIAvailable)
     630                {
     631                        if(iIdx==(Int)uiMviMergePos) continue;
     632                        if(iWrIdx==(Int)uiMviMergePos) iWrIdx++;
     633                }
     634#endif
     635                if(iWrIdx>=MRG_MAX_NUM_CANDS) continue;
     636
     637                abAvailable[ iWrIdx ] = abAvailable[ iIdx ];
     638        }
     639        abAvailable[ uiDBMPMergePos ] = ( pcCU->getNeighbourCandIdx( POZNAN_DBMP_MRG_CAND, uiAbsPartIdx ) == POZNAN_DBMP_MRG_CAND + 1 );
     640       
     641        uiNumCand = 0; for( UInt uiIdx = 0; uiIdx < MRG_MAX_NUM_CANDS; uiIdx++ ) if(abAvailable[ uiIdx ]) uiNumCand++;
     642  }
     643#endif
     644
    613645  AOF( uiNumCand > 1 );
    614646
     
    665697  {
    666698    pcCU->setTextureModeDepthSubParts( uiDepth, uiAbsPartIdx, uiDepth );
     699#if POZNAN_DBMP
     700        bDBMPModifyMergeIdx = false;
     701#endif
     702  }
     703#endif
     704
     705#if POZNAN_DBMP
     706  if(bDBMPAvailable && bDBMPModifyMergeIdx)
     707  {
     708        if(ruiMergeIndex==POZNAN_DBMP_MERGE_POS) ruiMergeIndex = POZNAN_DBMP_MRG_CAND;
     709        else if(ruiMergeIndex>POZNAN_DBMP_MERGE_POS) ruiMergeIndex--;
    667710  }
    668711#endif
     
    694737Void TDecSbac::parseMergeIndex ( TComDataCU* pcCU, UInt& ruiMergeIndex, UInt uiAbsPartIdx, UInt uiDepth )
    695738{
    696 #if HHI_INTER_VIEW_MOTION_PRED || HHI_MPI
     739#if HHI_INTER_VIEW_MOTION_PRED || HHI_MPI || POZNAN_DBMP
    697740  if(
    698741#if HHI_INTER_VIEW_MOTION_PRED
     
    701744#if HHI_MPI
    702745      ( pcCU->getSlice()->getSPS()->getUseMVI() && pcCU->getSlice()->getSliceType() != I_SLICE && pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_2Nx2N ) ||
     746#endif
     747#if     POZNAN_DBMP 
     748          ( pcCU->getSlice()->getMP()->isDBMPEnabled() ) ||
    703749#endif
    704750      0
Note: See TracChangeset for help on using the changeset viewer.