Changeset 479 in 3DVCSoftware for branches/HTM-DEV-0.3-dev2/source


Ignore:
Timestamp:
18 Jun 2013, 23:24:53 (12 years ago)
Author:
tech
Message:
  • changed IV-MERGE HLS to match Test Model 4 spec
  • incorporated iv-refpic list to TComSlice
  • removed TComDepthMapGenerator
Location:
branches/HTM-DEV-0.3-dev2/source
Files:
2 deleted
26 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-DEV-0.3-dev2/source/App/TAppDecoder/TAppDecTop.cpp

    r478 r479  
    641641    m_tDecTop[ decIdx ] =  new TDecTop;
    642642    m_tDecTop[ decIdx ]->create();
    643 #if H_3D_IV_MERGE
    644     m_tDecTop[ decIdx ]->init(this );
    645 #else
    646643    m_tDecTop[ decIdx ]->init( );
    647 #endif
    648644    m_tDecTop[ decIdx ]->setLayerId( layerId );
    649645    m_tDecTop[ decIdx ]->setDecodedPictureHashSEIEnabled(m_decodedPictureHashSEIEnabled);
     
    682678}
    683679#endif
    684 #if H_3D_IV_MERGE
    685 // GT: This function is not necessary anymore m_ivPicLists should be used instead
    686 TComPic* TAppDecTop::xGetPicFromView( Int viewIdx, Int poc, Bool isDepth )
    687 {
    688   assert( ( viewIdx >= 0 ) );
    689 
    690   TComList<TComPic*>* apcListPic = m_tDecTop[ (isDepth ? 1 : 0) + viewIdx * 2 ]->getListPic();
    691 
    692   TComPic* pcPic = NULL;
    693   for( TComList<TComPic*>::iterator it=apcListPic->begin(); it!=apcListPic->end(); it++ )
    694   {
    695     if( (*it)->getPOC() == poc )
    696     {
    697       pcPic = *it;
    698       break;
    699     }
    700   }
    701   return pcPic;
    702 }
    703 #endif
    704680//! \}
  • branches/HTM-DEV-0.3-dev2/source/App/TAppDecoder/TAppDecTop.h

    r478 r479  
    4949#include "TAppDecCfg.h"
    5050
    51 #if H_3D_IV_MERGE
    52 #include "TLibCommon/TComDepthMapGenerator.h"
    53 #endif
    5451//! \ingroup TAppDecoder
    5552//! \{
     
    7673    // for output control
    7774  Bool                            m_abDecFlag[ MAX_GOP ];         ///< decoded flag in one GOP
    78 #if H_3D_IV_MERGE
    79   Int  m_fcoViewDepthId;
    80   Char m_fcoOrder[MAX_VIEW_NUM*2];
    81 #endif
    8275#if H_MV
    8376  Int                             m_pocLastDisplay      [ MAX_NUM_LAYERS ]; ///< last POC in display order
     
    8982  FILE*                           m_pScaleOffsetFile;
    9083  CamParsCollector                m_cCamParsCollector;
    91 #if H_3D_IV_MERGE
    92   TComVPSAccess                   m_cVPSAccess;
    93   TComSPSAccess                   m_cSPSAccess;
    94   TComAUPicAccess                 m_cAUPicAccess;
    95 #endif
    9684#endif
    9785public:
     
    10391  Void  decode            (); ///< main decoding function
    10492
    105 #if H_3D_IV_MERGE
    106   TDecTop* getTDecTop     ( Int viewIdx, Bool isDepth );
    107   TComPic*              getPicFromView     ( Int viewIdx, Int poc, bool isDepth ) { return xGetPicFromView( viewIdx, poc, isDepth ); }
    108   TComVPSAccess*    getVPSAccess  () { return &m_cVPSAccess;   }
    109   TComSPSAccess*    getSPSAccess  () { return &m_cSPSAccess;   }
    110   TComAUPicAccess*  getAUPicAccess() { return &m_cAUPicAccess; }
    111   TDecTop*          getDecTop0    () { return m_tDecTop[0]; }
    112 #endif
    113 
    11493protected:
    11594  Void  xCreateDecLib     (); ///< create internal classes
     
    11796  Void  xInitDecLib       (); ///< initialize decoder class
    11897
    119 #if H_3D_IV_MERGE
    120   TComPic* xGetPicFromView( Int viewIdx, Int poc, Bool isDepth );
    121 #endif
    12298#if H_MV
    12399  Void  xWriteOutput      ( TComList<TComPic*>* pcListPic, Int layerId, Int tId ); ///< write YUV to file
  • branches/HTM-DEV-0.3-dev2/source/App/TAppEncoder/TAppEncCfg.cpp

    r478 r479  
    718718#endif //HHI_VSO
    719719#if H_3D_IV_MERGE
    720   ("PredDepthMapGen",  m_uiPredDepthMapGeneration, (UInt)0, "generation of prediction depth maps for motion data prediction" )
    721   ("MultiviewMvPred",  m_uiMultiviewMvPredMode,    (UInt)0, "usage of predicted depth maps" )
     720  ("IvMvPred",                       m_ivMvPredFlag,           false           , "inter view motion prediction " ) 
    722721#endif
    723722#endif //H_3D
     
    14431442  xConfirmPara( ((UInt) m_numberOfLayers >> 1 ) != m_cCameraData.getBaseViewNumbers().size(),   "Number of Views in BaseViewCameraNumbers must be equal to NumberOfViews" );
    14441443  xConfirmPara    ( m_iCodedCamParPrecision < 0 || m_iCodedCamParPrecision > 5,       "CodedCamParsPrecision must be in range of 0..5" );
    1445 #if H_3D_IV_MERGE
    1446   xConfirmPara    ( m_uiPredDepthMapGeneration > 2,                                   "PredDepthMapGen must be less than or equal to 2" );
    1447   xConfirmPara    ( m_uiMultiviewMvPredMode > 7,                                      "MultiviewMvPred must be less than or equal to 7" ); 
    1448   xConfirmPara    ( m_uiMultiviewMvPredMode > 0 && m_uiPredDepthMapGeneration == 0 ,  "MultiviewMvPred > 0 requires PredDepthMapGen > 0" );
    1449 #endif
    14501444#if H_3D_VSO
    14511445    if( m_bUseVSO )
     
    22882282#endif
    22892283#if H_3D_IV_MERGE
    2290   printf("MultiviewMvPred:%d", m_uiMultiviewMvPredMode);
     2284  printf("IvMvPred:%d", m_ivMvPredFlag );
    22912285#endif
    22922286  printf("\n\n"); 
  • branches/HTM-DEV-0.3-dev2/source/App/TAppEncoder/TAppEncCfg.h

    r476 r479  
    8585  Bool                   m_splittingFlag;                     ///< Splitting Flag
    8686  Int                    m_scalabilityMask;                   ///< Mask indicating scalabilities, 1: texture; 3: texture + depth                                                               
    87   std::vector<Int>       m_dimensionIdLen;                   ///< Length of scalability dimension s
     87  std::vector<Int>       m_dimensionIdLen;                    ///< Length of scalability dimension s
     88#if H_3D_IV_MERGE
     89  Bool                   m_ivMvPredFlag;                      ///< Interview motion vector prediction
     90#endif
    8891#endif
    8992  Double    m_adLambdaModifier[ MAX_TLAYER ];                 ///< Lambda modifier array for each temporal layer
     
    381384  TAppComCamPara m_cCameraData;
    382385  Int       m_iCodedCamParPrecision;                          ///< precision for coding of camera parameters
    383 #if H_3D_IV_MERGE
    384   UInt      m_uiMultiviewMvPredMode;   
    385   UInt      m_uiPredDepthMapGeneration;
    386 #endif
    387386#if H_3D_VSO
    388387  Char*     m_pchVSOConfig;
  • branches/HTM-DEV-0.3-dev2/source/App/TAppEncoder/TAppEncTop.cpp

    r478 r479  
    121121#if H_3D
    122122  vps.initViewIndex();
     123#if H_3D_GEN
     124  xSetVPSExtension2        ( vps );
     125#endif
    123126  m_ivPicLists.setVPS      ( &vps );
    124127#endif
     
    166169    m_cTEncTop.setDWeight                      ( isDepth ? m_iDWeight             : 0     );
    167170#endif // H_3D_VSO
    168 #if H_3D_IV_MERGE
    169     m_cTEncTop.setMultiviewMvPredMode          ( m_uiMultiviewMvPredMode     );
    170     m_cTEncTop.setPredDepthMapGeneration       ( m_uiPredDepthMapGeneration );
    171 #endif
    172171#endif // H_3D
    173172
     
    211210    m_cTEncTop.setNumReorderPics             ( m_numReorderPics[i], i );
    212211    m_cTEncTop.setMaxDecPicBuffering         ( m_maxDecPicBuffering[i], i );
    213 #if H_3D_IV_MERGE
    214         m_acTEncDepthTopList[iViewIdx]->setNumReorderPics             ( m_numReorderPics[iViewIdx][i], i );
    215         m_acTEncDepthTopList[iViewIdx]->setMaxDecPicBuffering         ( m_maxDecPicBuffering[iViewIdx][i], i );
    216 #endif
    217   }
    218 #if H_3D_IV_MERGE
    219       m_acTEncDepthTopList[iViewIdx]->setQP                           ( m_aiQP[1] );
    220 
    221       m_acTEncDepthTopList[iViewIdx]->setTemporalLayerQPOffset        ( m_aiTLayerQPOffset );
    222       m_acTEncDepthTopList[iViewIdx]->setPad                          ( m_aiPad );
    223 
    224       m_acTEncDepthTopList[iViewIdx]->setMaxTempLayer                 ( m_maxTempLayer[iViewIdx] );
    225 
    226       m_acTEncDepthTopList[iViewIdx]->setDisInter4x4                  ( m_bDisInter4x4);
    227 
    228       m_acTEncDepthTopList[iViewIdx]->setUseNSQT( m_enableNSQT );
    229       m_acTEncDepthTopList[iViewIdx]->setUseAMP( m_enableAMP );
    230 #endif
     212  }
    231213#endif
    232214  for( UInt uiLoop = 0; uiLoop < MAX_TLAYER; ++uiLoop )
     
    625607  for(Int layer=0; layer<m_numberOfLayers; layer++)
    626608  {
    627 #if H_3D_IV_MERGE
    628     m_acTEncTopList[layer]->init(this );
    629 #else
    630609    m_acTEncTopList[layer]->init( );
    631 #endif
    632610  }
    633611#else
     
    10571035}
    10581036#endif
     1037#if H_3D_GEN
     1038Void TAppEncTop::xSetVPSExtension2( TComVPS& vps )
     1039{
     1040  for ( Int layer = 0; layer < vps.getMaxLayers(); layer++ )
     1041  {
     1042    if ( layer != 0 )
     1043    {   
     1044      if( ( vps.getDepthId( layer ) == 0 ) )
     1045      {
    10591046#if H_3D_IV_MERGE
    1060  // GT: This function is not necessary anymore m_ivPicLists should be used instead
    1061 TComPic* TAppEncTop::xGetPicFromView( Int viewIdx, Int poc, Bool isDepth )
    1062 {
    1063   assert( ( viewIdx >= 0 ) && ( viewIdx < m_iNumberOfViews ) );
    1064 
    1065   TComList<TComPic*>* apcListPic =  m_acTEncTopList[(isDepth ? 1 : 0) + viewIdx * 2]->getListPic() ;
    1066 
    1067  
    1068 
    1069   TComPic* pcPic = NULL;
    1070   for(TComList<TComPic*>::iterator it=apcListPic->begin(); it!=apcListPic->end(); it++)
    1071   {
    1072     if( (*it)->getPOC() == poc )
    1073     {
    1074       pcPic = *it ;
    1075       break ;
    1076     }
    1077   }
    1078 
    1079   return pcPic;
    1080 };
     1047        vps.setIvMvPredFlag( layer, m_ivMvPredFlag );
     1048#endif
     1049      }
     1050    }
     1051  }
     1052}
    10811053#endif
    10821054//! \}
  • branches/HTM-DEV-0.3-dev2/source/App/TAppEncoder/TAppEncTop.h

    r478 r479  
    4848#if H_3D
    4949#include "../../Lib/TLibRenderer/TRenTop.h"
    50 #if H_3D_IV_MERGE
    51 #include "TLibCommon/TComDepthMapGenerator.h"
    52 #endif
    5350#endif
    5451
     
    9289  TRenModel                   m_cRendererModel;   
    9390#endif
    94 #if H_3D_IV_MERGE
    95   TComVPSAccess               m_cVPSAccess;
    96   TComSPSAccess               m_cSPSAccess;
    97   TComAUPicAccess             m_cAUPicAccess;
    98 #endif
    9991protected:
    10092  // initialization
     
    122114  void rateStatsAccum(const AccessUnit& au, const std::vector<UInt>& stats);
    123115  void printRateSummary();
    124 #if H_3D_IV_MERGE
    125   TComPic* xGetPicFromView( Int viewIdx, Int iPoc, Bool isDepth );
    126 #endif
     116
    127117#if H_MV
    128118  Void xSetLayerIds               ( TComVPS& vps ); 
     
    131121  Int  xGetMax( std::vector<Int>& vec);
    132122#endif
     123#if H_3D_GEN
     124  Void xSetVPSExtension2( TComVPS& vps );
     125#endif
    133126public:
    134127  TAppEncTop();
     
    136129 
    137130  Void        encode      ();                               ///< main encoding function
    138 #if H_3D_IV_MERGE
    139   TComPic*              getPicFromView     ( Int viewIdx, Int poc, Bool isDepth ) { return xGetPicFromView( viewIdx, poc, isDepth ); }
    140 #endif
    141131#if H_MV
    142132  TEncTop*    getTEncTop( UInt layer ) { return  m_acTEncTopList[layer]; }  ///< return pointer to encoder class for specific layer
    143133#else
    144134  TEncTop&    getTEncTop  ()   { return  m_cTEncTop; }      ///< return encoder class pointer reference
    145 #endif
    146 #if H_3D_IV_MERGE
    147   TComVPSAccess*    getVPSAccess  () { return &m_cVPSAccess;   }
    148   TComSPSAccess*    getSPSAccess  () { return &m_cSPSAccess;   }
    149   TComAUPicAccess*  getAUPicAccess() { return &m_cAUPicAccess; }
    150135#endif
    151136};// END CLASS DEFINITION TAppEncTop
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/CommonDef.h

    r478 r479  
    178178}
    179179
    180 #if H_3D_IV_MERGE
    181 #define ROFVS( exp )          \
    182 {                             \
    183   if( !( exp ) )              \
    184 {                           \
    185   return;                   \
    186 }                           \
    187 }
    188 
    189 #define ROTVS( exp )          \
    190 {                             \
    191   if( ( exp ) )               \
    192 {                           \
    193   return;                   \
    194 }                           \
    195 }
    196 
    197 #define ROTRS( exp, retVal )  \
    198 {                             \
    199   if( ( exp ) )               \
    200 {                           \
    201   return retVal;            \
    202 }                           \
    203 }
    204 
    205 #define ROFRS( exp, retVal )  \
    206 {                             \
    207   if( !( exp ) )              \
    208 {                           \
    209   return retVal;            \
    210 }                           \
    211 }
    212 #endif
    213180template <typename T>
    214181__inline T gSign(const T& t)
     
    360327#define STD_CAM_PARAMETERS_PRECISION 5        ///< quarter luma sample accuarcy for derived disparities (as default)
    361328
    362 #if H_3D_IV_MERGE
    363  // GT: To be checked if all of this is still necessary.
    364 #define PDM_USE_FOR_IVIEW                 1
    365 #define PDM_USE_FOR_INTER                 2
    366 #define PDM_USE_FOR_MERGE                 4
    367 
    368 #define MAX_VIEW_NUM                      10
    369 #define PDM_SUBSAMPLING_EXP               2         // subsampling factor is 2^PDM_SUBSAMPLING_EXP
    370 #define PDM_SUB_SAMP_EXP_X(Pdm)           ((Pdm)==1?PDM_SUBSAMPLING_EXP:0)
    371 #define PDM_SUB_SAMP_EXP_Y(Pdm)           ((Pdm)==1?PDM_SUBSAMPLING_EXP:0)
    372 
    373 #define PDM_INTERNAL_CALC_BIT_DEPTH       31        // bit depth for internal calculations (32 - 1 for signed values)
    374 #define PDM_BITDEPTH_VIRT_DEPTH           15        // bit depth for virtual depth storage (16 - 1 for signed values)
    375 #define PDM_LOG2_MAX_ABS_NORMAL_DISPARITY 8         // maximum absolute normal disparity = 256 (for setting accuracy)
    376 #define PDM_VIRT_DEPTH_PRECISION          4         // must be greater than or equal to 2 (since MVs are given in quarter-pel units)
    377 
    378 #define PDM_INTER_CALC_SHIFT              ( PDM_INTERNAL_CALC_BIT_DEPTH - PDM_BITDEPTH_VIRT_DEPTH )         // avoids overflow
    379 #define PDM_LOG4_SCALE_DENOMINATOR        ( PDM_LOG2_MAX_ABS_NORMAL_DISPARITY + PDM_VIRT_DEPTH_PRECISION )  // accuracy of scaling factor
    380 #define PDM_OFFSET_SHIFT                  ( PDM_LOG2_MAX_ABS_NORMAL_DISPARITY )                             // accuracy of offset
    381 
    382 #endif
    383329#endif // end of H_3D
    384330//! \}
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TComDataCU.cpp

    r478 r479  
    4040#include "TComPic.h"
    4141
    42 #if H_3D_IV_MERGE
    43 #include "TComDepthMapGenerator.h"
    44 #endif
    4542//! \ingroup TLibCommon
    4643//! \{
     
    24582455  deriveLeftBottomIdxGeneral  ( uiAbsPartIdx, uiPUIdx, uiPartIdxLB );
    24592456#if H_3D_IV_MERGE
    2460   Bool bNoPdmMerge   = ( m_pcSlice->getSPS()->getViewIndex() == 0 || ( m_pcSlice->getSPS()->getMultiviewMvPredMode() & PDM_USE_FOR_MERGE ) != PDM_USE_FOR_MERGE );
     2457  Bool ivMvPredFlag   = getSlice()->getVPS()->getIvMvPredFlag( getSlice()->getLayerIdInVps() );
    24612458
    24622459  //===== add merge with predicted depth maps =====
     
    25562553
    25572554  Int iPdmDir[2] = {0, 0};
    2558   getUnifiedMvPredCan(uiPUIdx, REF_PIC_LIST_0, 0, aiPdmRefIdx, acPdmMv, &cDisInfo, iPdmDir, true);
     2555  getInterViewMergeCands(uiPUIdx, aiPdmRefIdx, acPdmMv, &cDisInfo, iPdmDir );
    25592556  Int iPdmInterDir;
    25602557
    2561   if( iPdmDir[0] && !bNoPdmMerge )
     2558  if( iPdmDir[0] && ivMvPredFlag )
    25622559  {
    25632560    abCandIsInter        [ iCount ] = true;
     
    27552752
    27562753#if H_3D_IV_MERGE
    2757   if(!bNoPdmMerge && iPdmDir[1] )
     2754  if(ivMvPredFlag && iPdmDir[1] )
    27582755  {
    27592756    assert(iCount < getSlice()->getMaxNumMergeCand());
     
    45004497#endif
    45014498#if H_3D_IV_MERGE
    4502 Bool TComDataCU::getUnifiedMvPredCan(UInt uiPartIdx, RefPicList eRefPicList, Int iRefIdx, Int* paiPdmRefIdx, TComMv* pacPdmMv, DisInfo* pDInfo, Int* iPdm, Bool bMerge )
    4503 {
    4504   TComDepthMapGenerator* pcDepthMapGenerator = m_pcSlice->getSPS()->getDepthMapGenerator();
    4505   ROFRS( pcDepthMapGenerator, false );
    4506   if (pcDepthMapGenerator->getPdmCandidate(this, uiPartIdx, eRefPicList, iRefIdx, paiPdmRefIdx, pacPdmMv, pDInfo, iPdm, bMerge))
    4507     return true;
     4499Bool
     4500TComDataCU::getInterViewMergeCands(UInt uiPartIdx, Int* paiPdmRefIdx, TComMv* pacPdmMv, DisInfo* pDInfo, Int* availableMcDc )
     4501{
     4502  TComSlice*    pcSlice         = getSlice (); 
     4503
     4504  Bool valid     = false;
     4505  Int iViewIndex = 0;
     4506
     4507  for( UInt uiBIndex = 0; uiBIndex < pcSlice->getViewIndex( ) && !valid; uiBIndex++ )
     4508  {
     4509    UInt        uiBaseIndex = uiBIndex;   
     4510    TComPic*    pcBasePic   = pcSlice->getIvPic( false, uiBaseIndex );
     4511    for( Int iRefListId = 0; iRefListId < 2 && !valid; iRefListId++ )
     4512    {
     4513      RefPicList  eRefPicListTest = RefPicList( iRefListId );
     4514      Int         iNumRefPics = pcSlice->getNumRefIdx( eRefPicListTest ) ;
     4515      for( Int iRefIndex = 0; iRefIndex < iNumRefPics; iRefIndex++ )
     4516      {
     4517        if(pcBasePic->getPOC() == pcSlice->getRefPic( eRefPicListTest, iRefIndex )->getPOC()
     4518          && pcBasePic->getViewIndex() == pcSlice->getRefPic( eRefPicListTest, iRefIndex )->getViewIndex())
     4519        {
     4520          valid = true;
     4521          iViewIndex = uiBaseIndex;
     4522          break;
     4523        }
     4524      }
     4525    }
     4526  }
     4527
     4528  if (!valid)
     4529    return false;
     4530
     4531  //--- get base CU/PU and check prediction mode ---
     4532  TComPic*    pcBasePic   = pcSlice->getIvPic( false, iViewIndex );
     4533  TComPicYuv* pcBaseRec   = pcBasePic->getPicYuvRec   ();
     4534
     4535  UInt          uiPartAddr;
     4536  Int           iWidth;
     4537  Int           iHeight;
     4538  getPartIndexAndSize( uiPartIdx, uiPartAddr, iWidth, iHeight );
     4539
     4540  Int  iCurrPosX, iCurrPosY;
     4541  pcBaseRec->getTopLeftSamplePos( getAddr(), getZorderIdxInCU() + uiPartAddr, iCurrPosX, iCurrPosY );
     4542
     4543  iCurrPosX  += ( ( iWidth  - 1 ) >> 1 );
     4544  iCurrPosY  += ( ( iHeight - 1 ) >> 1 );
     4545
     4546  Int         iBasePosX   = Clip3( 0, pcBaseRec->getWidth () - 1, iCurrPosX + ( (pDInfo->m_acNBDV.getHor() + 2 ) >> 2 ) );
     4547  Int         iBasePosY   = Clip3( 0, pcBaseRec->getHeight() - 1, iCurrPosY + ( (pDInfo->m_acNBDV.getVer() + 2 ) >> 2 ));
     4548
     4549  Int         iBaseCUAddr;
     4550  Int         iBaseAbsPartIdx;
     4551  pcBaseRec->getCUAddrAndPartIdx( iBasePosX , iBasePosY , iBaseCUAddr, iBaseAbsPartIdx );
     4552
     4553  TComDataCU* pcBaseCU    = pcBasePic->getCU( iBaseCUAddr );
     4554
     4555  Bool abPdmAvailable[4] = {false, false, false, false};
     4556  if(!( pcBaseCU->getPredictionMode( iBaseAbsPartIdx ) == MODE_INTRA ))
     4557  {
     4558    for( UInt uiCurrRefListId = 0; uiCurrRefListId < 2; uiCurrRefListId++ )
     4559    {
     4560      RefPicList  eCurrRefPicList = RefPicList( uiCurrRefListId );
     4561
     4562      Bool stopLoop = false;
     4563      for(Int iLoop = 0; iLoop < 2 && !stopLoop; ++iLoop)
     4564      {
     4565        RefPicList eBaseRefPicList = (iLoop ==1)? RefPicList( 1 -  uiCurrRefListId ) : RefPicList( uiCurrRefListId );
     4566        TComMvField cBaseMvField;
     4567        pcBaseCU->getMvField( pcBaseCU, iBaseAbsPartIdx, eBaseRefPicList, cBaseMvField );
     4568        Int         iBaseRefIdx     = cBaseMvField.getRefIdx();
     4569        if (iBaseRefIdx >= 0)
     4570        {
     4571          Int iBaseRefPOC = pcBaseCU->getSlice()->getRefPOC(eBaseRefPicList, iBaseRefIdx);
     4572          if (iBaseRefPOC != pcSlice->getPOC())   
     4573          {
     4574            for (Int iPdmRefIdx = 0; iPdmRefIdx < pcSlice->getNumRefIdx( eCurrRefPicList ); iPdmRefIdx++)
     4575            {
     4576              if (iBaseRefPOC == pcSlice->getRefPOC(eCurrRefPicList, iPdmRefIdx))
     4577              {
     4578                abPdmAvailable[ uiCurrRefListId ] = true;
     4579                TComMv cMv(cBaseMvField.getHor(), cBaseMvField.getVer());
     4580
     4581                //                  cMv.m_bDvMcp = true;
     4582                //                  cMv.m_iDvMcpDispX = pDInfo->m_acMvCand[0].getHor();                 
     4583
     4584                clipMv( cMv );
     4585                paiPdmRefIdx  [ uiCurrRefListId ] = iPdmRefIdx;
     4586                pacPdmMv      [ uiCurrRefListId ] = cMv;
     4587                stopLoop = true;
     4588                break;
     4589              }
     4590            }
     4591          }
     4592        }
     4593      }
     4594    }
     4595  }
     4596  availableMcDc[0] = ( abPdmAvailable[0] ? 1 : 0 ) + ( abPdmAvailable[1] ? 2 : 0 );
     4597
     4598  for( Int iRefListId = 0; iRefListId < 2 ; iRefListId++ )
     4599  {
     4600    RefPicList  eRefPicListDMV       = RefPicList( iRefListId );
     4601    Int         iNumRefPics       = pcSlice->getNumRefIdx( eRefPicListDMV );
     4602    for( Int iPdmRefIdx = 0; iPdmRefIdx < iNumRefPics; iPdmRefIdx++ )
     4603    {
     4604      if( pcSlice->getRefPOC( eRefPicListDMV, iPdmRefIdx ) == pcSlice->getPOC())
     4605      {
     4606        abPdmAvailable[ iRefListId+2 ] = true;
     4607        paiPdmRefIdx  [ iRefListId+2 ] = iPdmRefIdx;
     4608
     4609        TComMv cMv = pDInfo->m_acNBDV;
     4610        cMv.setVer(0);
     4611        clipMv( cMv );
     4612        pacPdmMv      [ iRefListId + 2] = cMv;
     4613        break;
     4614      }
     4615    }
     4616  }
     4617  availableMcDc[1] = ( abPdmAvailable[2] ? 1 : 0 ) + ( abPdmAvailable[3] ? 2 : 0 );
    45084618  return false;
    45094619}
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TComDataCU.h

    r478 r479  
    435435#endif
    436436#if H_3D_IV_MERGE
    437   Bool          getUnifiedMvPredCan       ( UInt uiPartIdx, RefPicList eRefPicList, Int iRefIdx, Int* paiPdmRefIdx, TComMv* pacPdmMv, DisInfo* pDInfo, Int* iPdm, Bool bMerge );
     437  Bool          getInterViewMergeCands          ( UInt uiPartIdx, Int* paiPdmRefIdx, TComMv* pacPdmMv, DisInfo* pDInfo, Int* availableMcDc );   
    438438#endif
    439439  // -------------------------------------------------------------------------------------------------------------------
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TComPic.h

    r476 r479  
    141141  Int           getPOC()              { return  m_apcPicSym->getSlice(m_uiCurrSliceIdx)->getPOC();  }
    142142  TComDataCU*&  getCU( UInt uiCUAddr )  { return  m_apcPicSym->getCU( uiCUAddr ); }
    143 #if H_3D_IV_MERGE
    144   TComSlice*    getCurrSlice()        { return  m_apcPicSym->getSlice(m_uiCurrSliceIdx);  }
    145   TComSPS*      getSPS()              { return  m_apcPicSym->getSlice(m_uiCurrSliceIdx)->getSPS();  }
    146   TComVPS*      getVPS()              { return  m_apcPicSym->getSlice(m_uiCurrSliceIdx)->getVPS();  }
    147 #endif
    148143 
    149144  TComPicYuv*   getPicYuvOrg()        { return  m_apcPicYuv[0]; }
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TComSlice.cpp

    r478 r479  
    6868, m_iSliceQpDeltaCb               ( 0 )
    6969, m_iSliceQpDeltaCr               ( 0 )
    70 #if H_3D_IV_MERGE
    71 , m_pcTexturePic                  ( NULL )
    72 #endif
    7370, m_iDepth                        ( 0 )
    7471, m_bRefenced                     ( false )
     
    174171 
    175172  m_colRefIdx = 0;
    176 #if H_3D_IV_MERGE
    177   m_pcTexturePic = NULL;
    178 #endif
    179173  initEqualRef();
    180174#if !L0034_COMBINED_LIST_CLEANUP
     
    14971491    }
    14981492  }
     1493#if H_3D_IV_MERGE
     1494  for( Int i = 0; i < MAX_NUM_LAYERS; i++ )
     1495  {
     1496    m_ivMvPredFlag[ i ] = false;
     1497  }
     1498#endif
    14991499#endif
    15001500}
     
    18571857  }
    18581858}
    1859 #if H_3D_IV_MERGE
    1860 Void
    1861 TComSPS::setPredDepthMapGeneration( UInt uiViewIndex, Bool bIsDepth, UInt uiPdmGenMode, UInt uiPdmMvPredMode)
    1862 {
    1863   AOF( m_uiViewIndex == uiViewIndex );
    1864   AOF( m_bDepth   == bIsDepth );
    1865   AOT( ( uiViewIndex == 0 || bIsDepth ) && uiPdmGenMode );
    1866   AOT( uiPdmMvPredMode && uiPdmGenMode == 0 );
    1867 
    1868   m_uiPredDepthMapGeneration = uiPdmGenMode;
    1869   m_uiMultiviewMvPredMode    = uiPdmMvPredMode;
    1870 }
    1871 #endif
    18721859const Int TComSPS::m_winUnitX[]={1,2,2,1};
    18731860const Int TComSPS::m_winUnitY[]={1,2,1,1};
     
    19361923  ::memset( m_aaiCodedOffset, 0x00, sizeof( m_aaiCodedOffset ) );
    19371924
    1938 #if H_3D_IV_MERGE 
    1939   m_uiViewIndex           = uiViewIndex;
    1940   m_bDepth                = false;
    1941 #endif
    19421925  if( !m_bCamParInSliceHeader )
    19431926  {
     
    19511934  }
    19521935}
    1953 #if H_3D_IV_MERGE
    1954 Void
    1955 TComSPS::initCamParaSPSDepth( UInt uiViewIndex)
    1956 
    1957   m_uiCamParPrecision     = 0;
    1958   m_bCamParInSliceHeader  = false;
    1959 
    1960   ::memset( m_aaiCodedScale,  0x00, sizeof( m_aaiCodedScale  ) );
    1961   ::memset( m_aaiCodedOffset, 0x00, sizeof( m_aaiCodedOffset ) );
    1962 
    1963   m_uiViewIndex           = uiViewIndex;
    1964   m_bDepth                = true;
    1965 }
    1966 #endif
    19671936#endif
    19681937
     
    22982267  }
    22992268}
     2269#if H_3D_GEN
     2270Void TComSlice::setIvPicLists( TComPicLists* m_ivPicLists )
     2271{
     2272  for (Int i = 0; i < MAX_NUM_LAYERS; i++ )
     2273  {     
     2274    for ( Int depthId = 0; depthId < 2; depthId++ )
     2275    {
     2276      m_ivPicsCurrPoc[ depthId ][ i ] = ( i <= m_viewIndex ) ? m_ivPicLists->getPic( i, ( depthId == 1) , getPOC() ) : NULL;
     2277    }       
     2278  } 
     2279}
     2280#endif
    23002281#endif
    23012282/** get scaling matrix from RefMatrixID
     
    26062587}
    26072588#endif
     2589
    26082590//! \}
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TComSlice.h

    r478 r479  
    5454class TComPicLists;
    5555#endif
    56 #if H_3D_IV_MERGE
    57 class TComDepthMapGenerator;
    58 #endif
    5956// ====================================================================================================================
    6057// Constants
     
    540537  Int         m_refLayerId               [ MAX_NUM_LAYERS ][MAX_NUM_LAYERS]; 
    541538
     539#if H_3D_IV_MERGE
     540  Bool        m_ivMvPredFlag             [ MAX_NUM_LAYERS ];
     541#endif
    542542#endif
    543543public:
     
    673673  Bool    checkVPSExtensionSyntax();
    674674  Int     scalTypeToScalIdx   ( ScalabilityType scalType );
     675#if H_3D_IV_MERGE
     676  Void    setIvMvPredFlag     ( Int layerIdInVps, Bool val )  { m_ivMvPredFlag[ layerIdInVps ] = val; }
     677  Bool    getIvMvPredFlag     ( Int layerIdInVps )            { return m_ivMvPredFlag[ layerIdInVps ]; };
     678#endif
    675679#endif
    676680};
     
    984988  Int         m_aaiCodedScale [2][MAX_NUM_LAYERS];
    985989  Int         m_aaiCodedOffset[2][MAX_NUM_LAYERS];
    986 #if H_3D_IV_MERGE
    987   UInt        m_uiMultiviewMvPredMode;
    988   UInt        m_uiPredDepthMapGeneration;
    989 
    990   UInt        m_uiViewIndex;
    991   Bool        m_bDepth;
    992   TComDepthMapGenerator* m_pcDepthMapGenerator;
    993 #endif
    994990#endif
    995991public:
     
    11351131  Int* getInvCodedScale      ()  { return m_aaiCodedScale [1]; }
    11361132  Int* getInvCodedOffset     ()  { return m_aaiCodedOffset[1]; }
    1137 #if H_3D_IV_MERGE
    1138   Void  initCamParaSPSDepth      ( UInt uiViewIndex);
    1139   UInt  getMultiviewMvPredMode   ()          { return m_uiMultiviewMvPredMode;    }
    1140   UInt  getPredDepthMapGeneration()          { return m_uiPredDepthMapGeneration; }
    1141 
    1142   UInt  getViewIndex             ()  { return m_uiViewIndex; }
    1143   Bool  isDepth               ()  { return m_bDepth; }
    1144   Void  setDepthMapGenerator( TComDepthMapGenerator* pcDepthMapGenerator )  { m_pcDepthMapGenerator = pcDepthMapGenerator; }
    1145   TComDepthMapGenerator*  getDepthMapGenerator()                                              { return m_pcDepthMapGenerator; }
    1146   Void setPredDepthMapGeneration( UInt uiViewIndex, Bool bIsDepth, UInt uiPdmGenMode = 0, UInt uiPdmMvPredMode = 0);
    1147 #endif
    11481133#endif
    11491134};
     
    14361421#endif
    14371422  Bool        m_bIsUsedAsLongTerm[2][MAX_NUM_REF+1];
    1438 #if H_3D_IV_MERGE
    1439   TComPic*    m_pcTexturePic;
    1440 #endif
    14411423  Int         m_iDepth;
    14421424 
     
    15101492  Bool       m_isDepth;
    15111493  Int        m_aaiCodedScale [2][MAX_NUM_LAYERS];
    1512   Int        m_aaiCodedOffset[2][MAX_NUM_LAYERS];
     1494  Int        m_aaiCodedOffset[2][MAX_NUM_LAYERS]; 
     1495#if H_3D_GEN
     1496  TComPic*   m_ivPicsCurrPoc [2][MAX_NUM_LAYERS]; 
     1497#endif
    15131498#endif
    15141499#endif
     
    15691554  TComPic*  getRefPic           ( RefPicList e, Int iRefIdx)    { return  m_apcRefPicList[e][iRefIdx];  }
    15701555  Int       getRefPOC           ( RefPicList e, Int iRefIdx)    { return  m_aiRefPOCList[e][iRefIdx];   }
     1556#if H_3D_GEN
     1557  TComPic*  getIvPic            ( Bool depthFlag, Int viewIndex){ return  m_ivPicsCurrPoc[ depthFlag ? 1 : 0 ][ viewIndex ]; }
     1558#endif
    15711559#if H_3D_IV_MERGE
    1572   TComPic*  getTexturePic       () const                        { return  m_pcTexturePic; }
     1560  TComPic*  getTexturePic       ()                              { return  m_ivPicsCurrPoc[0][ m_viewIndex ]; }
    15731561#endif
    15741562  Int       getDepth            ()                              { return  m_iDepth;                     }
     
    16221610  Void      setRefPic           ( TComPic* p, RefPicList e, Int iRefIdx ) { m_apcRefPicList[e][iRefIdx] = p; }
    16231611  Void      setRefPOC           ( Int i, RefPicList e, Int iRefIdx ) { m_aiRefPOCList[e][iRefIdx] = i; }
    1624 #if H_3D_IV_MERGE
    1625   Void      setTexturePic       ( TComPic *pcTexturePic )       { m_pcTexturePic = pcTexturePic; }
    1626 #endif
    16271612  Void      setNumRefIdx        ( RefPicList e, Int i )         { m_aiNumRefIdx[e]    = i;      }
    16281613  Void      setPic              ( TComPic* p )                  { m_pcPic             = p;      }
     
    17891774#endif
    17901775#endif
     1776#if H_3D_GEN
     1777  Void    setIvPicLists( TComPicLists* m_ivPicLists );
     1778#endif
     1779
    17911780protected:
    17921781  TComPic*  xGetRefPic  (TComList<TComPic*>& rcListPic,
     
    17941783TComPic*  xGetLongTermRefPic(TComList<TComPic*>& rcListPic, Int poc, Bool pocHasMsb);
    17951784#if H_MV
    1796   TComPic*  xGetInterLayerRefPic( std::vector<TComPic*>& rcListIlPic, Int layerId );
     1785  TComPic*  xGetInterLayerRefPic( std::vector<TComPic*>& rcListIlPic, Int layerId ); 
    17971786#endif
    17981787};// END CLASS DEFINITION TComSlice
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TypeDef.h

    r476 r479  
    9797                                              // QC_AMVP_MRG_UNIFY_IVCAN_C0051     
    9898                                              // TEXTURE MERGING CANDIDATE     , JCT3V-C0137
    99 
     99#define H_3D_GEN                          1   // Some general changes can be removed after merge
    100100#endif
    101101
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r478 r479  
    759759    }
    760760#endif // !H_MV
    761 #if H_3D_IV_MERGE
    762     READ_FLAG( uiCode, "base_view_flag" );
    763     if( uiCode )
    764     { // baseview SPS -> set standard values
    765       pcSPS->initCamParaSPS         ( 0 );
    766       pcSPS->setPredDepthMapGeneration( 0, false );
    767     }
    768     else
    769     {
    770       READ_FLAG( uiCode, "depth_flag" );
    771       if( uiCode )
    772       {
    773         READ_UVLC( uiCode, "view_idx" );
    774         pcSPS->initCamParaSPSDepth    ( uiCode );
    775         pcSPS->setPredDepthMapGeneration( uiCode, true );
    776       }
    777       else
    778       {
    779         UInt  uiViewIndex;
    780         READ_UVLC( uiViewIndex, "view_idx" );  uiViewIndex++;
    781         UInt uiPredDepthMapGeneration = 0;
    782         UInt uiMultiviewMvPredMode = 0;
    783 
    784         READ_UVLC( uiPredDepthMapGeneration, "Pdm_generation" );
    785         if( uiPredDepthMapGeneration )
    786         {
    787           READ_UVLC( uiMultiviewMvPredMode, "multi_view_mv_pred_mode" );
    788         }
    789 
    790         pcSPS->setPredDepthMapGeneration( uiViewIndex, false, uiPredDepthMapGeneration, uiMultiviewMvPredMode);
    791 
    792       }
    793     }
    794 #endif
    795761  }
    796762}
     
    987953    if (uiCode)
    988954    {
     955#if H_3D
     956#if H_3D_IV_MERGE
     957      for( Int layer = 0; layer <= pcVPS->getMaxLayers() - 1; layer++ )
     958      {
     959        if (layer != 0)
     960        {
     961          if ( !( pcVPS->getDepthId( layer ) == 1 ) )
     962          {
     963            READ_FLAG( uiCode, "ivMvPredFlag[i]"); pcVPS->setIvMvPredFlag( layer, uiCode == 1 ? true : false );
     964          }         
     965        }       
     966      }
     967#endif
     968#else
    989969      while ( xMoreRbspData() )
    990970      {
    991971        READ_FLAG( uiCode, "vps_extension2_data_flag");
    992972      }
     973#endif
    993974    }
    994975
     
    14491430      READ_UVLC( uiCode, "five_minus_max_num_merge_cand");
    14501431#if H_3D_IV_MERGE
    1451       rpcSlice->setMaxNumMergeCand(((rpcSlice->getSPS()->getMultiviewMvPredMode() & PDM_USE_FOR_MERGE) == PDM_USE_FOR_MERGE ? MRG_MAX_NUM_CANDS_MEM: MRG_MAX_NUM_CANDS) - uiCode);
     1432      Bool ivMvPredFlag = rpcSlice->getVPS()->getIvMvPredFlag( rpcSlice->getLayerIdInVps() ) ;
     1433      rpcSlice->setMaxNumMergeCand(( ivMvPredFlag ? MRG_MAX_NUM_CANDS_MEM : MRG_MAX_NUM_CANDS) - uiCode);
    14521434#else
    14531435      rpcSlice->setMaxNumMergeCand(MRG_MAX_NUM_CANDS - uiCode);
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibDecoder/TDecGop.cpp

    r478 r479  
    8484                   TComLoopFilter*         pcLoopFilter,
    8585                   TComSampleAdaptiveOffset* pcSAO
    86 #if H_3D_IV_MERGE
    87                     ,TComDepthMapGenerator*  pcDepthMapGenerator
    88 #endif
    8986                   )
    9087{
     
    9693  m_pcLoopFilter          = pcLoopFilter;
    9794  m_pcSAO  = pcSAO;
    98 #if H_3D_IV_MERGE
    99   m_pcDepthMapGenerator   = pcDepthMapGenerator;
    100 #endif
    10195}
    10296
     
    158152    m_LFCrossSliceBoundaryFlag.push_back( pcSlice->getLFCrossSliceBoundaryFlag());
    159153  }
    160 #if H_3D_IV_MERGE
    161   if( uiStartCUAddr == 0 )
    162   {
    163     m_pcDepthMapGenerator->initViewComponent( rpcPic );
    164   }
    165 #endif
    166154#if H_3D_NBDV
    167155  if(pcSlice->getViewIndex() && !pcSlice->getIsDepth()) //Notes from QC: this condition shall be changed once the configuration is completed, e.g. in pcSlice->getSPS()->getMultiviewMvPredMode() || ARP in prev. HTM. Remove this comment once it is done.
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibDecoder/TDecGop.h

    r478 r479  
    5151#include "TLibCommon/TComSampleAdaptiveOffset.h"
    5252
    53 #if H_3D_IV_MERGE
    54 #include "TLibCommon/TComDepthMapGenerator.h"
    55 #endif
    5653#include "TDecEntropy.h"
    5754#include "TDecSlice.h"
     
    8279  TComLoopFilter*       m_pcLoopFilter;
    8380 
    84 #if H_3D_IV_MERGE
    85   TComDepthMapGenerator*  m_pcDepthMapGenerator;
    86 #endif
    8781  TComSampleAdaptiveOffset*     m_pcSAO;
    8882  Double                m_dDecTime;
     
    10498                 TComLoopFilter*         pcLoopFilter,
    10599                 TComSampleAdaptiveOffset* pcSAO
    106 #if H_3D_IV_MERGE
    107                  ,TComDepthMapGenerator* pcDepthMapGenerator
    108 #endif
    109100                 );
    110101  Void  create  ();
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibDecoder/TDecTop.cpp

    r478 r479  
    3737
    3838#include "NALread.h"
    39 #if H_3D_IV_MERGE
    40 #include "../../App/TAppDecoder/TAppDecTop.h"
    41 #endif
    4239#include "TDecTop.h"
    4340
     
    392389}
    393390
    394 #if H_3D_IV_MERGE
    395 Void TDecTop::init(TAppDecTop* pcTAppDecTop)
    396 #else
    397391Void TDecTop::init()
    398 #endif
    399392{
    400393  // initialize ROM
     
    402395  initROM();
    403396#endif
    404   m_cGopDecoder.init( &m_cEntropyDecoder, &m_cSbacDecoder, &m_cBinCABAC, &m_cCavlcDecoder, &m_cSliceDecoder, &m_cLoopFilter, &m_cSAO
    405 #if H_3D_IV_MERGE
    406     , &m_cDepthMapGenerator
    407 #endif
    408     );
     397  m_cGopDecoder.init( &m_cEntropyDecoder, &m_cSbacDecoder, &m_cBinCABAC, &m_cCavlcDecoder, &m_cSliceDecoder, &m_cLoopFilter, &m_cSAO );
    409398  m_cSliceDecoder.init( &m_cEntropyDecoder, &m_cCuDecoder );
    410399  m_cEntropyDecoder.init(&m_cPrediction);
    411 #if H_3D_IV_MERGE
    412   m_tAppDecTop = pcTAppDecTop;
    413   m_cDepthMapGenerator.init( &m_cPrediction, m_tAppDecTop->getVPSAccess(), m_tAppDecTop->getSPSAccess(), m_tAppDecTop->getAUPicAccess() );
    414 #endif
    415400}
    416401
     
    769754
    770755    m_cSliceDecoder.create();
    771 #if H_3D_IV_MERGE
    772     UInt uiPdm = ( m_apcSlicePilot->getSPS()->getViewIndex() ? m_apcSlicePilot->getSPS()->getPredDepthMapGeneration() : m_tAppDecTop->getSPSAccess()->getPdm() );
    773     m_cDepthMapGenerator.create( true, m_apcSlicePilot->getSPS()->getPicWidthInLumaSamples(), m_apcSlicePilot->getSPS()->getPicHeightInLumaSamples(), g_uiMaxCUDepth, g_uiMaxCUWidth, g_uiMaxCUHeight, g_bitDepthY, PDM_SUB_SAMP_EXP_X(uiPdm), PDM_SUB_SAMP_EXP_Y(uiPdm) );
    774     TComDepthMapGenerator* pcDMG0 = m_tAppDecTop->getDecTop0()->getDepthMapGenerator();
    775     if( m_apcSlicePilot->getSPS()->getViewIndex() == 1 && ( pcDMG0->getSubSampExpX() != PDM_SUB_SAMP_EXP_X(uiPdm) || pcDMG0->getSubSampExpY() != PDM_SUB_SAMP_EXP_Y(uiPdm) ) )
    776     {
    777       pcDMG0->create( true, m_apcSlicePilot->getSPS()->getPicWidthInLumaSamples(), m_apcSlicePilot->getSPS()->getPicHeightInLumaSamples(), g_uiMaxCUDepth, g_uiMaxCUWidth, g_uiMaxCUHeight, g_bitDepthY, PDM_SUB_SAMP_EXP_X(uiPdm), PDM_SUB_SAMP_EXP_Y(uiPdm) );
    778     }
    779 #endif
    780756  }
    781757  else
     
    918894
    919895#endif
    920 #if H_3D_IV_MERGE
    921     TComPic * const pcTexturePic = m_isDepth ? m_tAppDecTop->getPicFromView(  m_viewIndex, pcSlice->getPOC(), false ) : NULL;
    922     assert( !m_isDepth || pcTexturePic != NULL );
    923     pcSlice->setTexturePic( pcTexturePic );
     896#if H_3D_GEN
     897    pcSlice->setIvPicLists( m_ivPicLists );         
     898#if H_3D_IV_MERGE   
     899    assert( !getIsDepth() || ( pcSlice->getTexturePic() != 0 ) );
     900#endif   
    924901#endif
    925902    // For generalized B
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibDecoder/TDecTop.h

    r476 r479  
    4545#include "TLibCommon/TComTrQuant.h"
    4646#include "TLibCommon/SEI.h"
    47 #if H_3D_IV_MERGE
    48 #include "TLibCommon/TComDepthMapGenerator.h"
    49 #endif
    5047
    5148#include "TDecGop.h"
     
    225222  Bool                    m_isDepth;
    226223  CamParsCollector*       m_pcCamParsCollector;
    227 #if H_3D_IV_MERGE
    228   TComDepthMapGenerator   m_cDepthMapGenerator;
    229   TAppDecTop*             m_tAppDecTop;
    230 #endif
    231224#endif
    232225#endif
     
    241234  void setDecodedPictureHashSEIEnabled(Int enabled) { m_cGopDecoder.setDecodedPictureHashSEIEnabled(enabled); }
    242235
    243 #if H_3D_IV_MERGE
    244   Void  init(TAppDecTop* pcTAppDecTop);
    245 #else
    246236  Void  init();
    247 #endif
    248237#if H_MV 
    249238  Bool  decode(InputNALUnit& nalu, Int& iSkipFrame, Int& iPOCLastDisplay, Bool newLayer );
     
    276265  Bool                    getIsDepth            ()               { return m_isDepth;    }
    277266  Void                    setCamParsCollector( CamParsCollector* pcCamParsCollector ) { m_pcCamParsCollector = pcCamParsCollector; }
    278 #if H_3D_IV_MERGE
    279   TComDepthMapGenerator*  getDepthMapGenerator  () { return &m_cDepthMapGenerator; }
    280 #endif
    281267#endif
    282268#endif
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibEncoder/TEncCavlc.cpp

    r478 r479  
    581581  WRITE_FLAG( 0, "sps_extension_flag" );
    582582#endif
    583 #if H_3D_IV_MERGE
    584   if( pcSPS->getViewIndex() || pcSPS->isDepth() )
    585   {
    586     WRITE_FLAG( 0, "base_view_flag" );
    587     if( pcSPS->isDepth() )
    588     {
    589       WRITE_FLAG( 1, "depth_flag" );
    590       WRITE_UVLC( pcSPS->getViewIndex(), "view_idx" );
    591     }
    592     else
    593     {
    594       WRITE_FLAG( 0, "depth_flag" );
    595       WRITE_UVLC( pcSPS->getViewIndex() - 1, "view_idx_minus1" );
    596       WRITE_UVLC( pcSPS->getPredDepthMapGeneration(), "Pdm_generation" );
    597       if( pcSPS->getPredDepthMapGeneration() )
    598       {
    599         WRITE_UVLC( pcSPS->getMultiviewMvPredMode(), "multi_view_mv_pred_mode" );
    600       }
    601     }
    602   }
    603   else
    604   {
    605     WRITE_FLAG( 1, "base_view_flag" );   
    606   }
    607 #endif
    608583}
    609584
     
    766741    }
    767742  }
     743#if H_3D_GEN
     744  WRITE_FLAG( 1,                                             "vps_extension2_flag" );
     745  for( Int layer = 0; layer <= pcVPS->getMaxLayers() - 1; layer++ )
     746  {
     747    if (layer != 0)
     748    {
     749      if ( !( pcVPS->getDepthId( layer ) == 1 ) )
     750      {
     751#if H_3D_IV_MERGE
     752        WRITE_FLAG( pcVPS->getIvMvPredFlag(layer) ? 1 : 0 , "ivMvPredFlag[i]");
     753#endif
     754      }         
     755    }       
     756  }
     757#else
    768758  WRITE_FLAG( 0,                                             "vps_extension2_flag" );
     759#endif
    769760#else
    770761  WRITE_FLAG( 0,                     "vps_extension_flag" );
     
    11041095    {
    11051096#if H_3D_IV_MERGE
    1106       WRITE_UVLC(((pcSlice->getSPS()->getMultiviewMvPredMode() & PDM_USE_FOR_MERGE) == PDM_USE_FOR_MERGE? MRG_MAX_NUM_CANDS_MEM: MRG_MAX_NUM_CANDS) - pcSlice->getMaxNumMergeCand(), "five_minus_max_num_merge_cand");
     1097      Bool ivMvPredFlag = pcSlice->getVPS()->getIvMvPredFlag( pcSlice->getLayerIdInVps() ) ;
     1098      WRITE_UVLC( ( ivMvPredFlag ? MRG_MAX_NUM_CANDS_MEM : MRG_MAX_NUM_CANDS ) - pcSlice->getMaxNumMergeCand(), "five_minus_max_num_merge_cand");
    11071099#else
    11081100      WRITE_UVLC(MRG_MAX_NUM_CANDS - pcSlice->getMaxNumMergeCand(), "five_minus_max_num_merge_cand");
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibEncoder/TEncCfg.h

    r476 r479  
    375375  TAppComCamPara* m_cameraParameters;
    376376 
    377 #if H_3D_IV_MERGE
    378   UInt      m_uiPredDepthMapGeneration;
    379   UInt      m_uiMultiviewMvPredMode;
    380 #endif
    381377#if H_3D_VSO
    382378  //====== View Synthesis Optimization ======
     
    930926  Void      setDispCoeff                    ( Double  d )   { m_dDispCoeff  = d; }
    931927#endif // H_3D_VSO
    932 #if H_3D_IV_MERGE
    933   Void      setMultiviewMvPredMode              (UInt ui)   { m_uiMultiviewMvPredMode = ui;}
    934   Void      setPredDepthMapGeneration       ( UInt  u )      { m_uiPredDepthMapGeneration   = u; } 
    935 
    936   UInt      getMultiviewMvPredMode          ()              { return m_uiMultiviewMvPredMode;}
    937 #endif
    938928#endif // H_3D
    939929};
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibEncoder/TEncGOP.cpp

    r478 r479  
    4949#include <time.h>
    5050#include <math.h>
    51 #if H_3D_IV_MERGE
    52 #include "../../App/TAppEncoder/TAppEncTop.h"
    53 #endif
     51
    5452using namespace std;
    5553//! \ingroup TLibEncoder
     
    109107  m_viewIndex  =   0;
    110108  m_isDepth = false;
    111 #if H_3D_IV_MERGE
    112   m_pcDepthMapGenerator = NULL;
    113 #endif
    114109#endif
    115110#endif
     
    160155  m_viewIndex            = pcTEncTop->getViewIndex();
    161156  m_isDepth              = pcTEncTop->getIsDepth();
    162 #if H_3D_IV_MERGE
    163   m_pcDepthMapGenerator  = pcTEncTop->getDepthMapGenerator();
    164 #endif
    165157#endif
    166158#endif
     
    502494    pcPic->setCurrSliceIdx(0);
    503495
     496#if H_3D_GEN
     497    m_pcSliceEncoder->initEncSlice ( pcPic, iPOCLast, pocCurr, iNumPicRcvd, iGOPid, pcSlice, m_pcEncTop->getVPS(), m_pcEncTop->getSPS(), m_pcEncTop->getPPS() );     
     498#else
    504499    m_pcSliceEncoder->initEncSlice ( pcPic, iPOCLast, pocCurr, iNumPicRcvd, iGOPid, pcSlice, m_pcEncTop->getSPS(), m_pcEncTop->getPPS() );
     500#endif
    505501    pcSlice->setLastIDR(m_iLastIDR);
    506502    pcSlice->setSliceIdx(0);
     
    510506    pcSlice->setLayerId     ( getLayerId() );
    511507    pcSlice->setViewId      ( getViewId()  );   
     508#if !H_3D_GEN
    512509    pcSlice->setVPS         ( m_pcEncTop->getVPS() );
     510#endif
    513511#if H_3D
    514512    pcPic  ->setViewIndex   ( getViewIndex() );
     
    516514    pcSlice->setViewIndex   ( getViewIndex()  );
    517515    pcSlice->setIsDepth( getIsDepth() );   
    518     pcSlice->setCamparaSlice( pcPic->getCodedScale(), pcPic->getCodedOffset() );
    519 #endif
    520 #endif
     516    pcSlice->setCamparaSlice( pcPic->getCodedScale(), pcPic->getCodedOffset() );   
     517#endif
     518#endif 
    521519    //set default slice level flag to the same as SPS level flag
    522520    pcSlice->setLFCrossSliceBoundaryFlag(  pcSlice->getPPS()->getLoopFilterAcrossSlicesEnabledFlag()  );
     
    682680#endif
    683681
    684 #if H_3D_IV_MERGE
    685     TAppEncTop* tAppEncTop = m_pcEncTop->getEncTop();
    686     TComPic * const pcTexturePic = m_pcEncTop->getIsDepth() ? tAppEncTop->getPicFromView( getViewIndex(), pcSlice->getPOC(), false ) : NULL;
    687     assert( !m_pcEncTop->getIsDepth() || pcTexturePic != NULL );
    688     pcSlice->setTexturePic( pcTexturePic );
     682#if H_3D
     683    pcSlice->setIvPicLists( m_ivPicLists );         
     684#if H_3D_IV_MERGE   
     685    assert( !m_pcEncTop->getIsDepth() || ( pcSlice->getTexturePic() != 0 ) );
     686#endif   
    689687#endif
    690688    //  Slice info. refinement
     
    10421040    m_storedStartCUAddrForEncodingSliceSegment.push_back(nextCUAddr);
    10431041    startCUAddrSliceSegmentIdx++;
    1044 #if H_3D_IV_MERGE
    1045     m_pcDepthMapGenerator->initViewComponent( pcPic );
    1046 #endif
    10471042#if H_3D_NBDV
    10481043      if(pcSlice->getViewIndex() && !pcSlice->getIsDepth()) //Notes from QC: this condition shall be changed once the configuration is completed, e.g. in pcSlice->getSPS()->getMultiviewMvPredMode() || ARP in prev. HTM. Remove this comment once it is done.
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibEncoder/TEncGOP.h

    r478 r479  
    5959#include <vector>
    6060
    61 #if H_3D_IV_MERGE
    62 #include "TLibCommon/TComDepthMapGenerator.h"
    63 #endif
    6461//! \ingroup TLibEncoder
    6562//! \{
     
    110107  Int                     m_viewIndex;
    111108  Bool                    m_isDepth;
    112 #if H_3D_IV_MERGE
    113   TComDepthMapGenerator*  m_pcDepthMapGenerator;
    114 #endif
    115109#endif
    116110#endif
     
    172166 
    173167  TComList<TComPic*>*   getListPic()      { return m_pcListPic; }
    174 #if H_3D_IV_MERGE
    175   TEncTop* getEncTop() { return m_pcEncTop; }
    176 #endif
     168
    177169#if !H_MV
    178170  Void  printOutSummary      ( UInt uiNumAllPicCoded );
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibEncoder/TEncSlice.cpp

    r476 r479  
    176176 \param pPPS          PPS associated with the slice
    177177 */
     178#if H_3D_GEN
     179Void TEncSlice::initEncSlice( TComPic* pcPic, Int pocLast, Int pocCurr, Int iNumPicRcvd, Int iGOPid, TComSlice*& rpcSlice, TComVPS* pVPS, TComSPS* pSPS, TComPPS *pPPS )
     180#else
    178181Void TEncSlice::initEncSlice( TComPic* pcPic, Int pocLast, Int pocCurr, Int iNumPicRcvd, Int iGOPid, TComSlice*& rpcSlice, TComSPS* pSPS, TComPPS *pPPS )
     182#endif
    179183{
    180184  Double dQP;
     
    182186 
    183187  rpcSlice = pcPic->getSlice(0);
     188#if H_3D_GEN
     189  rpcSlice->setVPS( pVPS );
     190#endif
    184191  rpcSlice->setSPS( pSPS );
    185192  rpcSlice->setPPS( pPPS );
     
    530537  rpcSlice->setSliceSegmentArgument ( m_pcCfg->getSliceSegmentArgument() );
    531538#if H_3D_IV_MERGE
    532   rpcSlice->setMaxNumMergeCand        ( m_pcCfg->getMaxNumMergeCand()   + ((rpcSlice->getSPS()->getMultiviewMvPredMode() & PDM_USE_FOR_MERGE) ? 1:0)      );
     539  rpcSlice->setMaxNumMergeCand      ( m_pcCfg->getMaxNumMergeCand()   + ( rpcSlice->getVPS()->getIvMvPredFlag( rpcSlice->getLayerIdInVps() ) ? 1 : 0 ) );
    533540#else
    534541  rpcSlice->setMaxNumMergeCand        ( m_pcCfg->getMaxNumMergeCand()        );
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibEncoder/TEncSlice.h

    r446 r479  
    116116 
    117117  /// preparation of slice encoding (reference marking, QP and lambda)
     118#if H_3D_GEN
     119  Void    initEncSlice        ( TComPic* pcPic, Int pocLast, Int pocCurr, Int iNumPicRcvd,
     120                                Int iGOPid, TComSlice*& rpcSlice, TComVPS* pVPS, TComSPS* pSPS, TComPPS *pPPS );
     121#else
    118122  Void    initEncSlice        ( TComPic*  pcPic, Int pocLast, Int pocCurr, Int iNumPicRcvd,
    119123                                Int iGOPid,   TComSlice*& rpcSlice, TComSPS* pSPS, TComPPS *pPPS );
     124#endif
    120125#if RATE_CONTROL_LAMBDA_DOMAIN
    121126  Void    resetQP             ( TComPic* pic, Int sliceQP, Double lambda );
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibEncoder/TEncTop.cpp

    r478 r479  
    120120  m_cLoopFilter.        create( g_uiMaxCUDepth );
    121121
    122 #if H_3D_IV_MERGE
    123   m_cDepthMapGenerator. create( false, getSourceWidth(), getSourceHeight(), g_uiMaxCUDepth, g_uiMaxCUWidth, g_uiMaxCUHeight, g_bitDepthY, PDM_SUB_SAMP_EXP_X(m_uiPredDepthMapGeneration), PDM_SUB_SAMP_EXP_Y(m_uiPredDepthMapGeneration) );
    124 #endif
    125122#if RATE_CONTROL_LAMBDA_DOMAIN
    126123  if ( m_RCEnableRateControl )
     
    228225  m_cLoopFilter.        destroy();
    229226  m_cRateCtrl.          destroy();
    230 #if H_3D_IV_MERGE
    231   m_cDepthMapGenerator. destroy();
    232 #endif
    233227  // SBAC RD
    234228  if( m_bUseSBACRD )
     
    290284}
    291285
    292 #if H_3D_IV_MERGE
    293 Void TEncTop::init( TAppEncTop* pcTAppEncTop)
    294 #else
    295286Void TEncTop::init()
    296 #endif
    297287{
    298288  // initialize SPS
     
    316306  m_cCuEncoder.   init( this );
    317307 
    318 #if H_3D_IV_MERGE
    319   m_pcTAppEncTop = pcTAppEncTop;
    320   m_cDepthMapGenerator.init( (TComPrediction*)this->getPredSearch(), m_pcTAppEncTop->getVPSAccess(), m_pcTAppEncTop->getSPSAccess(), m_pcTAppEncTop->getAUPicAccess() );
    321 #endif
    322308  // initialize transform & quantization class
    323309  m_pcCavlcCoder = getCavlcCoder();
     
    672658  {
    673659    m_cSPS.initCamParaSPS           ( m_viewIndex, m_uiCamParPrecision, m_bCamParInSliceHeader, m_aaiCodedScale, m_aaiCodedOffset );
    674 #if H_3D_IV_MERGE
    675     if( m_viewIndex )
    676     {
    677       m_cSPS.setPredDepthMapGeneration( m_viewIndex, false, m_uiPredDepthMapGeneration, m_uiMultiviewMvPredMode);
    678     }
    679     else
    680     {
    681       m_cSPS.setPredDepthMapGeneration( m_viewIndex, false );
    682     }
    683 #endif
    684   }
    685 #if H_3D_IV_MERGE
    686   else
    687   {
    688     m_cSPS.initCamParaSPSDepth           ( m_viewIndex);
    689     m_cSPS.setPredDepthMapGeneration( m_viewIndex, true );
    690   }
    691 #endif
     660  }
    692661#endif
    693662}
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibEncoder/TEncTop.h

    r478 r479  
    5757#include "TEncPreanalyzer.h"
    5858#include "TEncRateCtrl.h"
    59 #if H_3D_IV_MERGE
    60 #include "TLibCommon/TComDepthMapGenerator.h"
    61 #endif
    6259//! \ingroup TLibEncoder
    6360//! \{
     
    6764// ====================================================================================================================
    6865
    69 #if H_3D_IV_MERGE
    70 class TAppEncTop;
    71 #endif
    7266/// encoder class
    7367class TEncTop : public TEncCfg
     
    10296  TEncSlice               m_cSliceEncoder;                ///< slice encoder
    10397  TEncCu                  m_cCuEncoder;                   ///< CU encoder
    104 #if H_3D_IV_MERGE
    105   TComDepthMapGenerator   m_cDepthMapGenerator;           ///< depth map generator
    106 #endif
    10798  // SPS
    10899  TComSPS                 m_cSPS;                         ///< SPS
     
    128119  TEncBinCABAC*           m_pcRDGoOnBinCodersCABAC;        ///< going on bin coder CABAC for RD stage per substream
    129120
    130 #if H_3D_IV_MERGE 
    131   TAppEncTop*             m_pcTAppEncTop;
    132 #endif
    133121  // quality control
    134122  TEncPreanalyzer         m_cPreanalyzer;                 ///< image characteristics analyzer for TM5-step3-like adaptive QP
     
    157145  Void      create          ();
    158146  Void      destroy         ();
    159 #if H_3D_IV_MERGE
    160   Void      init            ( TAppEncTop* pcTAppEncTop );
    161 #else
    162147  Void      init            ();
    163 #endif
    164148#if H_MV 
    165149  TComPicLists* getIvPicLists() { return m_ivPicLists; }
     
    201185  TEncSbac*               getRDGoOnSbacCoders   () { return  m_pcRDGoOnSbacCoders;   }
    202186  TEncRateCtrl*           getRateCtrl           () { return &m_cRateCtrl;             }
    203 #if H_3D_IV_MERGE
    204   TAppEncTop*             getEncTop             () { return m_pcTAppEncTop; }
    205 #endif
    206187  TComSPS*                getSPS                () { return  &m_cSPS;                 }
    207188  TComPPS*                getPPS                () { return  &m_cPPS;                 }
     
    224205  Void                    setIvPicLists         ( TComPicLists* picLists) { m_ivPicLists = picLists; }
    225206#endif
    226 #if H_3D_IV_MERGE
    227   TComDepthMapGenerator*  getDepthMapGenerator  () { return  &m_cDepthMapGenerator;   }
    228 #endif
    229207  // -------------------------------------------------------------------------------------------------------------------
    230208  // encoder function
Note: See TracChangeset for help on using the changeset viewer.