Changeset 486 in 3DVCSoftware


Ignore:
Timestamp:
20 Jun 2013, 13:04:57 (11 years ago)
Author:
tech
Message:

Integrated DoNBDV provided by Mediatek and applied clean ups.

Location:
branches/HTM-DEV-0.3-dev2
Files:
20 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-DEV-0.3-dev2/cfg/3D-HEVC/baseCfg_2view+depth.cfg

    r479 r486  
    196196#========== multiview coding tools ==========
    197197IvMvPred           : 1                                 # Inter-view motion prediction
     198ViewSynthesisPred  : 0                                 # View synthesis prediction
     199DepthRefinement    : 1                                 # Dispary refined by depth DoNBDV
    198200
    199201#========== depth coding tools ==========
  • branches/HTM-DEV-0.3-dev2/cfg/3D-HEVC/baseCfg_2view.cfg

    r479 r486  
    151151#========== multiview coding tools ==========
    152152IvMvPred           : 1                                 # Inter-view motion prediction
     153ViewSynthesisPred  : 0                                 # View synthesis prediction
     154DepthRefinement    : 0                                 # Dispary refined by depth DoNBDV
     155
    153156### DO NOT ADD ANYTHING BELOW THIS LINE ###
    154157### DO NOT DELETE THE EMPTY LINE BELOW ###
  • branches/HTM-DEV-0.3-dev2/cfg/3D-HEVC/baseCfg_3view+depth.cfg

    r479 r486  
    195195#========== multiview coding tools ==========
    196196IvMvPred           : 1                                 # Inter-view motion prediction
     197ViewSynthesisPred  : 0                                 # View synthesis prediction
     198DepthRefinement    : 1                                 # Dispary refined by depth DoNBDV
     199
    197200
    198201#========== depth coding tools ==========
  • branches/HTM-DEV-0.3-dev2/cfg/3D-HEVC/baseCfg_3view.cfg

    r481 r486  
    161161#========== multiview coding tools ==========
    162162IvMvPred           : 1                                 # Inter-view motion prediction
     163ViewSynthesisPred  : 0                                 # View synthesis prediction
     164DepthRefinement    : 0                                 # Dispary refined by depth DoNBDV
     165
    163166### DO NOT ADD ANYTHING BELOW THIS LINE ###
    164167### DO NOT DELETE THE EMPTY LINE BELOW ###
  • branches/HTM-DEV-0.3-dev2/cfg/3D-HEVC/fullCfg.cfg

    r479 r486  
    201201#========== multiview coding tools ==========
    202202IvMvPred           : 1                                 # Inter-view motion prediction
     203ViewSynthesisPred  : 1                                 # View synthesis prediction
     204DepthRefinement    : 1                                 # Dispary refined by depth DoNBDV
     205
    203206#========== depth coding tools ==========
    204207VSO                       : 1                                      # use of view synthesis optimization for depth coding
  • branches/HTM-DEV-0.3-dev2/source/App/TAppEncoder/TAppEncCfg.cpp

    r479 r486  
    718718#endif //HHI_VSO
    719719#if H_3D_IV_MERGE
    720   ("IvMvPred",                       m_ivMvPredFlag,           false           , "inter view motion prediction " ) 
     720  ("IvMvPred",                        m_ivMvPredFlag,           false           , "inter view motion prediction " ) 
     721#endif
     722#if H_3D_NBDV_REF
     723  ("DepthRefinement",                 m_depthRefinementFlag,    false           , "depth refinement by DoNBDV" ) 
     724#endif
     725#if H_3D_VSP
     726  ("ViewSynthesisPred",               m_viewSynthesisPredFlag,  false           , "view synthesis prediction " ) 
    721727#endif
    722728#endif //H_3D
     
    22822288#endif
    22832289#if H_3D_IV_MERGE
    2284   printf("IvMvPred:%d", m_ivMvPredFlag );
     2290  printf("IvMvPred:%d ", m_ivMvPredFlag );
     2291#endif
     2292#if H_3D_NBDV_REF
     2293  printf("DepthRefinement:%d ", m_depthRefinementFlag ); 
     2294#endif
     2295#if H_3D_VSP
     2296  printf("ViewSynthesisPred:%d ", m_viewSynthesisPredFlag );
    22852297#endif
    22862298  printf("\n\n"); 
  • branches/HTM-DEV-0.3-dev2/source/App/TAppEncoder/TAppEncCfg.h

    r479 r486  
    8888#if H_3D_IV_MERGE
    8989  Bool                   m_ivMvPredFlag;                      ///< Interview motion vector prediction
     90#endif
     91#if H_3D_NBDV_REF
     92  Bool m_depthRefinementFlag; 
     93#endif
     94#if H_3D_VSP
     95  Bool m_viewSynthesisPredFlag;
    9096#endif
    9197#endif
  • branches/HTM-DEV-0.3-dev2/source/App/TAppEncoder/TAppEncTop.cpp

    r479 r486  
    10451045      {
    10461046#if H_3D_IV_MERGE
    1047         vps.setIvMvPredFlag( layer, m_ivMvPredFlag );
     1047        vps.setIvMvPredFlag       ( layer, m_ivMvPredFlag );
     1048#endif
     1049#if H_3D_NBDV_REF
     1050        vps.setDepthRefinementFlag( layer, m_depthRefinementFlag );         
     1051#endif
     1052#if H_3D_VSP
     1053        vps.setViewSynthesisPredFlag( layer, m_viewSynthesisPredFlag );         
    10481054#endif
    10491055      }
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TComDataCU.cpp

    r481 r486  
    24692469
    24702470  cDisInfo.bDV = getDvInfo(uiAbsPartIdx).bDV;
     2471#if H_3D_NBDV_REF
     2472  cDisInfo.m_acDoNBDV = getDvInfo(uiAbsPartIdx).m_acDoNBDV;
     2473#endif //H_3D_NBDV_REF
    24712474  cDisInfo.m_acNBDV = getDvInfo(uiAbsPartIdx).m_acNBDV;
    24722475  cDisInfo.m_aVIdxCan = getDvInfo(uiAbsPartIdx).m_aVIdxCan;
     
    41824185    }
    41834186  }
     4187#if H_3D_NBDV_REF
     4188  if( !m_pcSlice->getVPS()->getDepthRefinementFlag( m_pcSlice->getLayerIdInVps() ) )
     4189  {
     4190    bDepthRefine = false;
     4191  }
     4192#endif
    41844193  // Get Positions 
    41854194  PartSize eCUMode    = getPartitionSize( uiPartAddr );   
     
    42414250
    42424251#if H_3D_NBDV_REF
    4243           /*Place DoNBDV*/
     4252          TComPic* picDepth = NULL;         
     4253          picDepth = getSlice()->getIvPic( true, iTargetViewIdx );
     4254          assert(picDepth != NULL);
     4255          if (picDepth && bDepthRefine)
     4256            estimateDVFromDM(iTargetViewIdx, uiPartIdx, picDepth, uiPartAddr, &cColMv );
     4257
     4258          //Notes from MTK: Please uncomment the following parts while integrating VSP
     4259#if H_3D_VSP
     4260          Int refFrmIdx = 0;
     4261          RefPicList privateRefPicList = REF_PIC_LIST_0;
     4262          //getRefListAndRefFrmIdx(iTargetViewIdx, privateRefPicList, refFrmIdx);
     4263
     4264          //pDInfo->m_aListIdx[ pDInfo->iN ]  = privateRefPicList;
     4265          //pDInfo->m_aRefIdx [ pDInfo->iN ]  = -1-refFrmIdx;
     4266          assert(pDInfo->m_aRefIdx [ pDInfo->iN ] < 0);
     4267#endif //H_3D_VSP
    42444268          pDInfo->m_acDoNBDV  = cColMv;
    4245 #endif
     4269#endif //H_3D_NBDV_REF
    42464270          return true;
    42474271        }
     
    43324356          pDInfo->m_aVIdxCan = 0;
    43334357#if H_3D_NBDV_REF
    4334           /*Place DoNBDV*/
     4358          TComPic* picDepth = getSlice()->getIvPic( true, 0 );
     4359          assert(picDepth!=NULL);
     4360
     4361          if (picDepth && bDepthRefine)
     4362            estimateDVFromDM(0, uiPartIdx, picDepth, uiPartAddr, &cDispVec ); // from base view
    43354363
    43364364          pDInfo->m_acDoNBDV = cDispVec;
     4365         
     4366#if H_3D_VSP
     4367          Int refFrmIdx = 0;
     4368          RefPicList privateRefPicList = REF_PIC_LIST_0 ;
     4369          getRefListAndRefFrmIdx(0, privateRefPicList, refFrmIdx); // find the reference picture from base view
     4370
     4371          pDInfo->m_aListIdx[ pDInfo->iN ]  = privateRefPicList;
     4372          pDInfo->m_aRefIdx [ pDInfo->iN ]  = -1-refFrmIdx;
     4373          assert(pDInfo->m_aRefIdx [ pDInfo->iN ] < 0);
     4374#endif //H_3D_VSP
    43374375         
    43384376#endif
     
    43474385  pDInfo->m_aVIdxCan = 0;
    43484386#if H_3D_NBDV_REF
    4349   /*Place DoNBDV*/
    4350  
     4387  TComPic* picDepth = NULL;
     4388  picDepth = getSlice()->getIvPic( true, 0 );
     4389  assert(picDepth!=NULL);
     4390
     4391  if (picDepth && bDepthRefine)
     4392  {
     4393    estimateDVFromDM(0, uiPartIdx, picDepth, uiPartAddr, &defaultDV ); // from base view
     4394  }
    43514395  pDInfo->m_acDoNBDV = defaultDV;
     4396
     4397#if H_3D_VSP
     4398  Int refFrmIdx = 0;
     4399  RefPicList privateRefPicList = REF_PIC_LIST_0 ;
     4400  getRefListAndRefFrmIdx(0, privateRefPicList, refFrmIdx); // find the reference picture from base view
     4401
     4402  pDInfo->m_aListIdx[ pDInfo->iN ]  = privateRefPicList;
     4403  pDInfo->m_aRefIdx [ pDInfo->iN ]  = -1-refFrmIdx;
     4404  assert(pDInfo->m_aRefIdx [ pDInfo->iN ] < 0);
     4405#endif
    43524406#endif
    43534407  return false;
    43544408}
     4409
     4410#if H_3D_NBDV_REF
     4411Pel TComDataCU::getMcpFromDM(TComPicYuv* pcBaseViewDepthPicYuv, TComMv* mv, Int iBlkX, Int iBlkY, Int iBlkWidth, Int iBlkHeight, Int* aiShiftLUT )
     4412{
     4413  Int iPictureWidth  = pcBaseViewDepthPicYuv->getWidth();
     4414  Int iPictureHeight = pcBaseViewDepthPicYuv->getHeight();
     4415 
     4416
     4417  Int depthStartPosX = Clip3(0,   iPictureWidth - iBlkWidth,  iBlkX + ((mv->getHor()+2)>>2));
     4418  Int depthStartPosY = Clip3(0,   iPictureHeight- iBlkHeight,  iBlkY + ((mv->getVer()+2)>>2));
     4419  Int depthEndPosX   = Clip3(0,   iPictureWidth - 1,  iBlkX + iBlkWidth - 1 + ((mv->getHor()+2)>>2));
     4420  Int depthEndPosY   = Clip3(0,   iPictureHeight - 1,  iBlkY + iBlkHeight - 1 + ((mv->getVer()+2)>>2));
     4421
     4422  Pel* depthTL  = pcBaseViewDepthPicYuv->getLumaAddr();
     4423  Int depStride =  pcBaseViewDepthPicYuv->getStride();
     4424
     4425  Pel  maxDepthVal = 0;
     4426  maxDepthVal = std::max( maxDepthVal, depthTL[ (depthStartPosY) * depStride + depthStartPosX ]);      // Left Top
     4427  maxDepthVal = std::max( maxDepthVal, depthTL[ (depthEndPosY)   * depStride + depthStartPosX ]);      // Left Bottom
     4428  maxDepthVal = std::max( maxDepthVal, depthTL[ (depthStartPosY) * depStride + depthEndPosX   ]);      // Right Top
     4429  maxDepthVal = std::max( maxDepthVal, depthTL[ (depthEndPosY)   * depStride + depthEndPosX   ]);      // Right Bottom
     4430
     4431  return aiShiftLUT[ maxDepthVal ];
     4432}
     4433
     4434Void TComDataCU::estimateDVFromDM(Int refViewIdx, UInt uiPartIdx, TComPic* picDepth, UInt uiPartAddr, TComMv* cMvPred )
     4435{
     4436  if (picDepth)
     4437  {
     4438    UInt uiAbsPartAddrCurrCU = m_uiAbsIdxInLCU + uiPartAddr;
     4439    Int iWidth, iHeight;
     4440    getPartIndexAndSize( uiPartIdx, uiPartAddr, iWidth, iHeight ); // The modified value of uiPartAddr won't be used any more
     4441
     4442    TComPicYuv* pcBaseViewDepthPicYuv = picDepth->getPicYuvRec();
     4443    Int iBlkX = ( getAddr() % picDepth->getFrameWidthInCU() ) * g_uiMaxCUWidth  + g_auiRasterToPelX[ g_auiZscanToRaster[ uiAbsPartAddrCurrCU ] ];
     4444    Int iBlkY = ( getAddr() / picDepth->getFrameWidthInCU() ) * g_uiMaxCUHeight + g_auiRasterToPelY[ g_auiZscanToRaster[ uiAbsPartAddrCurrCU ] ];
     4445   
     4446    Int* aiShiftLUT = getSlice()->getDepthToDisparityB(refViewIdx );
     4447
     4448    Pel iDisp = getMcpFromDM( pcBaseViewDepthPicYuv, cMvPred, iBlkX, iBlkY, iWidth, iHeight, aiShiftLUT );
     4449    cMvPred->setHor( iDisp );
     4450    clipMv(*cMvPred);
     4451  }
     4452}
     4453#endif //H_3D_NBDV_REF
     4454
    43554455
    43564456Bool TComDataCU::xCheckSpatialNBDV( TComDataCU* pcTmpCU, UInt uiIdx, DisInfo* pNbDvInfo, Bool bSearchForMvpDv, IDVInfo* paIDVInfo, UInt uiMvpDvPos
     
    43784478          pNbDvInfo->m_aVIdxCan = refViewIdx;
    43794479#if H_3D_NBDV_REF
    4380           /*Place DoNBDV*/
     4480          TComPic* picDepth = NULL;         
     4481          assert(getSlice()->getRefPic(eRefPicList, refId)->getPOC() == getSlice()->getPOC());         
     4482          picDepth   = getSlice()->getIvPic (true, refViewIdx );         
     4483          assert(picDepth != NULL);
     4484
     4485          UInt uiPartIdx = 0;   //Notes from MTK: Please confirm that using 0 as partition index and partition address is correct for CU-level DoNBDV
     4486          UInt uiPartAddr = 0;
     4487
     4488          if (picDepth && bDepthRefine)
     4489            estimateDVFromDM(refViewIdx, uiPartIdx, picDepth, uiPartAddr, &cMvPred );
     4490
    43814491         
    43824492          pNbDvInfo->m_acDoNBDV = cMvPred;
     
    45484658  iCurrPosY  += ( ( iHeight - 1 ) >> 1 );
    45494659
    4550   Int         iBasePosX   = Clip3( 0, pcBaseRec->getWidth () - 1, iCurrPosX + ( (pDInfo->m_acNBDV.getHor() + 2 ) >> 2 ) );
    4551   Int         iBasePosY   = Clip3( 0, pcBaseRec->getHeight() - 1, iCurrPosY + ( (pDInfo->m_acNBDV.getVer() + 2 ) >> 2 ));
     4660  Bool depthRefineFlag = false;
     4661#if H_3D_NBDV_REF
     4662  depthRefineFlag = m_pcSlice->getVPS()->getDepthRefinementFlag( m_pcSlice->getLayerIdInVps() );
     4663#endif // H_3D_NBDV_REF
     4664
     4665  TComMv      cDv = depthRefineFlag ? pDInfo->m_acNBDV : pDInfo->m_acDoNBDV;
     4666
     4667  Int         iBasePosX   = Clip3( 0, pcBaseRec->getWidth () - 1, iCurrPosX + ( (cDv.getHor() + 2 ) >> 2 ) );
     4668  Int         iBasePosY   = Clip3( 0, pcBaseRec->getHeight() - 1, iCurrPosY + ( (cDv.getVer() + 2 ) >> 2 ));
    45524669
    45534670  Int         iBaseCUAddr;
     
    46114728        paiPdmRefIdx  [ iRefListId+2 ] = iPdmRefIdx;
    46124729
    4613         TComMv cMv = pDInfo->m_acNBDV;
     4730#if H_3D_NBDV_REF
     4731        TComMv cMv = depthRefineFlag ? pDInfo->m_acNBDV : pDInfo->m_acDoNBDV;
     4732#endif // H_3D_NBDV_REF
    46144733        cMv.setVer(0);
    46154734        clipMv( cMv );
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TComDataCU.h

    r479 r486  
    433433   );
    434434   
     435#if H_3D_NBDV_REF
     436  Pel           getMcpFromDM(TComPicYuv* pcBaseViewDepthPicYuv, TComMv* mv, Int iBlkX, Int iBlkY, Int iWidth, Int iHeight, Int* aiShiftLUT );
     437  Void          estimateDVFromDM(Int refViewIdx, UInt uiPartIdx, TComPic* picDepth, UInt uiPartAddr, TComMv* cMvPred );
     438#endif //H_3D_NBDV_REF
    435439#endif
    436440#if H_3D_IV_MERGE
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TComSlice.cpp

    r479 r486  
    114114, m_isDepth                       (false)
    115115#endif
     116#if H_3D_GEN
     117, m_depthToDisparityB             ( NULL )
     118, m_depthToDisparityF             ( NULL )
     119#endif
    116120#endif
    117121{
     
    160164  delete[] m_puiSubstreamSizes;
    161165  m_puiSubstreamSizes = NULL;
     166#if H_3D_GEN   
     167  for( UInt i = 0; i < getViewIndex(); i++ )
     168  {
     169    if ( m_depthToDisparityB && m_depthToDisparityB[ i ] )
     170      delete[] m_depthToDisparityB [ i ];
     171
     172    if ( m_depthToDisparityF && m_depthToDisparityF[ i ] )
     173      delete[] m_depthToDisparityF [ i ];
     174  }
     175
     176  if ( m_depthToDisparityF )
     177    delete[] m_depthToDisparityF;
     178
     179  m_depthToDisparityF = NULL;
     180
     181  if ( m_depthToDisparityB )
     182    delete[] m_depthToDisparityB;
     183
     184  m_depthToDisparityB = NULL;
     185#endif
    162186}
    163187
     
    837861#if H_MV
    838862  m_layerId              = pSrc->m_layerId;
     863  // GT: Copying of several other values might be be missing here, or is above not necessary?
    839864#endif
    840865  m_eSliceType           = pSrc->m_eSliceType;
     
    14911516    }
    14921517  }
     1518#if H_3D_GEN
     1519  for( Int i = 0; i < MAX_NUM_LAYERS; i++ )  {
    14931520#if H_3D_IV_MERGE
    1494   for( Int i = 0; i < MAX_NUM_LAYERS; i++ )
    1495   {
    1496     m_ivMvPredFlag[ i ] = false;
     1521    m_ivMvPredFlag         [ i ] = false;
     1522#endif
     1523#if H_3D_VSP
     1524    m_viewSynthesisPredFlag[ i ] = false;
     1525#endif
     1526#if H_3D_NBDV_REF
     1527    m_depthRefinementFlag  [ i ] = false;
     1528#endif
    14971529  }
    14981530#endif
     
    22782310  } 
    22792311}
     2312Void TComSlice::setDepthToDisparityLUTs()
     2313{
     2314  Bool setupLUT = false;
     2315  Int layerIdInVPS = getVPS()->getLayerIdInNuh( m_layerId );
     2316
     2317#if H_3D_VSP
     2318  setupLUT = setupLUT || getVPS()->getViewSynthesisPredFlag( layerIdInVPS);
     2319#endif
     2320
     2321#if H_3D_NBDV_REF
     2322  setupLUT = setupLUT || getVPS()->getDepthRefinementFlag( layerIdInVPS );
     2323#endif
     2324
     2325  if( !setupLUT )
     2326    return;
     2327
     2328  /// GT: Allocation should be moved to a better place later;
     2329  if ( m_depthToDisparityB == NULL )
     2330  {
     2331    m_depthToDisparityB = new Int*[ getViewIndex() ];
     2332    for ( Int i = 0; i < getViewIndex(); i++ )
     2333    {
     2334      m_depthToDisparityB[ i ] = new Int[ Int(1 << g_bitDepthY) ];
     2335    }
     2336  }
     2337
     2338  if ( m_depthToDisparityF == NULL )
     2339  {
     2340    m_depthToDisparityF= new Int*[ getViewIndex() ];
     2341    for ( Int i = 0; i < getViewIndex(); i++ )
     2342    {
     2343      m_depthToDisparityF[ i ] = new Int[ Int(1 << g_bitDepthY) ];
     2344    }
     2345  }
     2346
     2347  assert( m_depthToDisparityB != NULL );
     2348  assert( m_depthToDisparityF != NULL );
     2349
     2350  TComSPS* sps = getSPS();
     2351
     2352  Int log2Div = g_bitDepthY - 1 + sps->getCamParPrecision();
     2353
     2354  Bool camParaSH = m_pcSPS->hasCamParInSliceHeader();
     2355
     2356  Int* codScale     = camParaSH ? m_aaiCodedScale [ 0 ] : sps->getCodedScale    ();
     2357  Int* codOffset    = camParaSH ? m_aaiCodedOffset[ 0 ] : sps->getCodedOffset   ();
     2358  Int* invCodScale  = camParaSH ? m_aaiCodedScale [ 1 ] : sps->getInvCodedScale ();
     2359  Int* invCodOffset = camParaSH ? m_aaiCodedOffset[ 1 ] : sps->getInvCodedOffset();
     2360
     2361  for (Int i = 0; i <= ( getViewIndex() - 1); i++)
     2362  {
     2363    for ( Int d = 0; d <= ( ( 1 << g_bitDepthY ) - 1 ); d++ )
     2364    {
     2365      Int offset =    ( codOffset  [ i ] << g_bitDepthY ) + ( ( 1 << log2Div ) >> 1 );         
     2366      m_depthToDisparityB[ i ][ d ] = ( codScale [ i ] * d + offset ) >> log2Div;
     2367
     2368      Int invOffset = ( invCodOffset[ i ] << g_bitDepthY ) + ( ( 1 << log2Div ) >> 1 );         
     2369      m_depthToDisparityF[ i ][ d ] = ( invCodScale[ i ] * d + invOffset ) >> log2Div;
     2370    }
     2371  }
     2372}
    22802373#endif
    22812374#endif
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TComSlice.h

    r479 r486  
    540540  Bool        m_ivMvPredFlag             [ MAX_NUM_LAYERS ];
    541541#endif
     542#if H_3D_VSP
     543  Bool        m_viewSynthesisPredFlag    [ MAX_NUM_LAYERS ];
     544#endif
     545#if H_3D_NBDV_REF
     546  Bool        m_depthRefinementFlag      [ MAX_NUM_LAYERS ];
     547#endif
    542548#endif
    543549public:
     
    676682  Void    setIvMvPredFlag     ( Int layerIdInVps, Bool val )  { m_ivMvPredFlag[ layerIdInVps ] = val; }
    677683  Bool    getIvMvPredFlag     ( Int layerIdInVps )            { return m_ivMvPredFlag[ layerIdInVps ]; };
     684#endif
     685#if H_3D_VSP
     686  Void    setViewSynthesisPredFlag  ( Int layerIdInVps, Bool val )  { m_viewSynthesisPredFlag[ layerIdInVps ] = val; }
     687  Bool    getViewSynthesisPredFlag  ( Int layerIdInVps )            { return m_viewSynthesisPredFlag[ layerIdInVps ]; };
     688#endif
     689#if H_3D_NBDV_REF
     690  Void    setDepthRefinementFlag  ( Int layerIdInVps, Bool val )  { m_depthRefinementFlag[ layerIdInVps ] = val; }
     691  Bool    getDepthRefinementFlag  ( Int layerIdInVps )            { return m_depthRefinementFlag[ layerIdInVps ]; };
    678692#endif
    679693#endif
     
    14951509#if H_3D_GEN
    14961510  TComPic*   m_ivPicsCurrPoc [2][MAX_NUM_LAYERS]; 
     1511  Int**      m_depthToDisparityB;
     1512  Int**      m_depthToDisparityF;
    14971513#endif
    14981514#endif
     
    17761792#if H_3D_GEN
    17771793  Void    setIvPicLists( TComPicLists* m_ivPicLists );
     1794  Void    setDepthToDisparityLUTs();
     1795
     1796  Int* getDepthToDisparityB( Int refViewIdx ) { return m_depthToDisparityB[ refViewIdx ]; };
     1797  Int* getDepthToDisparityF( Int refViewIdx ) { return m_depthToDisparityF[ refViewIdx ]; };
     1798 
    17781799#endif
    17791800
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TypeDef.h

    r479 r486  
    8888                                              // QC_CU_NBDV_D0181
    8989                                              // SEC_DEFAULT_DV_D0112
     90#define H_3D_NBDV_REF                     1   // Depth oriented neighboring block disparity derivation
     91                                              // MTK_D0156
     92                                              // MERL_VSP_NBDV_RefVId_Fix_D0166
     93#define H_3D_VSP                          0   // Depth oriented neighboring block disparity derivation
    9094
    9195#define H_3D_IV_MERGE                     1   // Inter-view motion merge candidate
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r479 r486  
    954954    {
    955955#if H_3D
    956 #if H_3D_IV_MERGE
     956#if H_3D_GEN
    957957      for( Int layer = 0; layer <= pcVPS->getMaxLayers() - 1; layer++ )
    958958      {
     
    961961          if ( !( pcVPS->getDepthId( layer ) == 1 ) )
    962962          {
    963             READ_FLAG( uiCode, "ivMvPredFlag[i]"); pcVPS->setIvMvPredFlag( layer, uiCode == 1 ? true : false );
     963#if H_3D_IV_MERGE
     964            READ_FLAG( uiCode, "iv_mv_pred_flag[i]");          pcVPS->setIvMvPredFlag         ( layer, uiCode == 1 ? true : false );
     965#endif
     966#if H_3D_NBDV_REF
     967            READ_FLAG( uiCode, "depth_refinement_flag[i]");    pcVPS->setDepthRefinementFlag  ( layer, uiCode == 1 ? true : false );
     968#endif
     969#if H_3D_VSP
     970            READ_FLAG( uiCode, "view_synthesis_pred_flag[i]"); pcVPS->setViewSynthesisPredFlag( layer, uiCode == 1 ? true : false );
     971#endif
    964972          }         
    965973        }       
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibDecoder/TDecCu.cpp

    r478 r486  
    292292      m_ppcCU[uiDepth]->setPartSizeSubParts( SIZE_2Nx2N, 0, uiDepth );     
    293293#if H_3D_NBDV_REF
    294       if(pcCU->getSlice()->getSPS()->getUseDVPRefine())  //Notes from QC: please check the condition for DoNBDV. Remove this comment once it is done.
     294      if(pcCU->getSlice()->getVPS()->getDepthRefinementFlag( pcCU->getSlice()->getLayerIdInVps() ))  //Notes from QC: please check the condition for DoNBDV. Remove this comment once it is done.
    295295        DvInfo.bDV = m_ppcCU[uiDepth]->getDisMvpCandNBDV(&DvInfo, true);
    296296      else
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibDecoder/TDecGop.cpp

    r479 r486  
    159159  }
    160160#endif
     161#if H_3D_GEN
     162  pcSlice->setDepthToDisparityLUTs();
     163#endif
    161164  m_pcSbacDecoders[0].load(m_pcSbacDecoder);
    162165  m_pcSliceDecoder->decompressSlice( ppcSubstreams, rpcPic, m_pcSbacDecoder, m_pcSbacDecoders);
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibEncoder/TEncCavlc.cpp

    r481 r486  
    750750      {
    751751#if H_3D_IV_MERGE
    752         WRITE_FLAG( pcVPS->getIvMvPredFlag(layer) ? 1 : 0 , "ivMvPredFlag[i]");
     752        WRITE_FLAG( pcVPS->getIvMvPredFlag         (layer) ? 1 : 0 , "iv_mv_pred_flag[i]");
     753#endif
     754#if H_3D_NBDV_REF
     755        WRITE_FLAG( pcVPS->getDepthRefinementFlag  (layer) ? 1 : 0 , "depth_refinement_flag[i]");
     756#endif
     757#if H_3D_VSP
     758        WRITE_FLAG( pcVPS->getViewSynthesisPredFlag(layer) ? 1 : 0 , "view_synthesis_pred_flag[i]");
    753759#endif
    754760      }         
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibEncoder/TEncCu.cpp

    r476 r486  
    473473          rpcTempCU->setPartSizeSubParts( SIZE_2Nx2N, 0, uiDepth );     
    474474#if H_3D_NBDV_REF
    475           if(m_pcSlice->getSPS()->getUseDVPRefine())  //Notes from QC: please check the condition for DoNBDV. Remove this comment once it is done.
     475          if(rpcTempCU->getSlice()->getVPS()->getDepthRefinementFlag( rpcTempCU->getSlice()->getLayerIdInVps()))
    476476            DvInfo.bDV = rpcTempCU->getDisMvpCandNBDV(&DvInfo, true);
    477477          else
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibEncoder/TEncGOP.cpp

    r481 r486  
    10481048        pcPic->setNumDdvCandPics(pcPic->getDisCandRefPictures(iColPoc));
    10491049      }
     1050#if H_3D_GEN
     1051      pcSlice->setDepthToDisparityLUTs();
     1052
     1053#endif
    10501054#endif
    10511055    while(nextCUAddr<uiRealEndAddress) // determine slice boundaries
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibEncoder/TEncSlice.cpp

    r481 r486  
    544544  rpcSlice->setSliceSegmentArgument ( m_pcCfg->getSliceSegmentArgument() );
    545545#if H_3D_IV_MERGE
    546   rpcSlice->setMaxNumMergeCand      ( m_pcCfg->getMaxNumMergeCand()   + ( rpcSlice->getVPS()->getIvMvPredFlag( rpcSlice->getLayerIdInVps() ) ? 1 : 0 ) );
     546   rpcSlice->setMaxNumMergeCand      ( m_pcCfg->getMaxNumMergeCand()   + ( rpcSlice->getVPS()->getIvMvPredFlag( rpcSlice->getLayerIdInVps() ) ? 1 : 0 ) );
    547547#else
    548548  rpcSlice->setMaxNumMergeCand        ( m_pcCfg->getMaxNumMergeCand()        );
Note: See TracChangeset for help on using the changeset viewer.