Changeset 629 in 3DVCSoftware for branches/HTM-8.2-dev0-MediaTek/source/Lib


Ignore:
Timestamp:
23 Sep 2013, 08:46:50 (11 years ago)
Author:
chang
Message:

Added H_3D_FCO for flexible coding order (FCO).
The results can be seen under codingresults/3D_8.1_vs_fco_only.xls.
The configuration files for FCO are located at cfg/3D-HEVC/NonCTC/fco.

Location:
branches/HTM-8.2-dev0-MediaTek/source/Lib
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-8.2-dev0-MediaTek/source/Lib/TLibCommon/TComDataCU.cpp

    r622 r629  
    35693569    UInt uiPartIdxCenter;
    35703570    xDeriveCenterIdx( uiPUIdx, uiPartIdxCenter );   
     3571#if H_3D_FCO
     3572    TComPic * pcTexturePic = m_pcSlice->getTexturePic();
     3573    TComDataCU *pcTextureCU = 0;
     3574    if ( pcTexturePic )
     3575        pcTextureCU = pcTexturePic->getCU( getAddr() );
     3576#else
    35713577    TComDataCU *pcTextureCU = m_pcSlice->getTexturePic()->getCU( getAddr() );
     3578#endif
    35723579 
     3580#if H_3D_FCO
     3581    if ( pcTextureCU && pcTexturePic->getReconMark() && !pcTextureCU->isIntra( uiPartIdxCenter ) )
     3582#else
    35733583    if ( pcTextureCU && !pcTextureCU->isIntra( uiPartIdxCenter ) )
     3584#endif
    35743585    {
    35753586      pcTextureCU->getMvField( pcTextureCU, uiPartIdxCenter, REF_PIC_LIST_0, pcMvFieldNeighbours[iCount<<1] );
     
    55625573
    55635574#if H_3D_NBDV_REF
    5564           TComPic* picDepth = NULL;         
     5575          TComPic* picDepth = NULL;   
     5576#if H_3D_FCO_VSP_DONBDV
     5577          picDepth  = getSlice()->getIvPic(true, getSlice()->getViewIndex() );
     5578          if ( picDepth->getPicYuvRec() != NULL  ) 
     5579          {
     5580            cColMv.setZero();
     5581          }
     5582          else // Go back with virtual depth
     5583          {
     5584            picDepth = getSlice()->getIvPic( true, iTargetViewIdx );
     5585          }
     5586
     5587          assert(picDepth != NULL);
     5588#else
    55655589          picDepth = getSlice()->getIvPic( true, iTargetViewIdx );
    55665590          assert(picDepth != NULL);
     5591#endif
    55675592          if (picDepth && bDepthRefine)
    55685593            estimateDVFromDM(iTargetViewIdx, uiPartIdx, picDepth, uiPartAddr, &cColMv );
     
    56625687          pDInfo->m_aVIdxCan = cIDVInfo.m_aVIdxCan[iList][ curPos ];
    56635688#if H_3D_NBDV_REF
     5689#if H_3D_FCO_VSP_DONBDV
     5690          TComPic* picDepth  = NULL;
     5691
     5692          picDepth  = getSlice()->getIvPic(true, getSlice()->getViewIndex() );
     5693          if ( picDepth->getPicYuvRec() != NULL ) 
     5694          {
     5695            cDispVec.setZero();
     5696          }
     5697          else // Go back with virtual depth
     5698          {
     5699            picDepth = getSlice()->getIvPic( true, pDInfo->m_aVIdxCan );
     5700          }
     5701
     5702          assert(picDepth != NULL);
     5703#else
    56645704          TComPic* picDepth = getSlice()->getIvPic( true, pDInfo->m_aVIdxCan );
    56655705          assert(picDepth!=NULL);
     5706#endif
    56665707
    56675708          if (picDepth && bDepthRefine)
     
    57075748#if H_3D_NBDV_REF
    57085749    TComPic* picDepth = NULL;
     5750#if H_3D_FCO_VSP_DONBDV
     5751    picDepth  = getSlice()->getIvPic(true, getSlice()->getViewIndex() );
     5752    if ( picDepth->getPicYuvRec() != NULL ) 
     5753    {
     5754      defaultDV.setZero();
     5755    }
     5756    else // Go back with virtual depth
     5757    {
     5758      picDepth = getSlice()->getIvPic( true, viewIndex );
     5759    }
     5760
     5761    assert(picDepth != NULL);
     5762#else
    57095763    picDepth = getSlice()->getIvPic( true, viewIndex );
    57105764    assert(picDepth!=NULL);
    5711 
     5765#endif
    57125766    if (picDepth && bDepthRefine)
    57135767    {
     
    58125866          TComPic* picDepth = NULL;
    58135867          assert(getSlice()->getRefPic(eRefPicList, refId)->getPOC() == getSlice()->getPOC());         
     5868#if H_3D_FCO_VSP_DONBDV
     5869          picDepth  = getSlice()->getIvPic(true, getSlice()->getViewIndex() );
     5870          if ( picDepth->getPicYuvRec() != NULL ) 
     5871          {
     5872            cMvPred.setZero();
     5873          }
     5874          else// Go back with virtual depth
     5875          {
     5876            picDepth = getSlice()->getIvPic (true, refViewIdx );
     5877          }
     5878          assert(picDepth != NULL);
     5879#else
    58145880          picDepth   = getSlice()->getIvPic (true, refViewIdx );
    58155881          assert(picDepth != NULL);
    5816 
     5882#endif
    58175883          UInt uiPartIdx = 0;   //Notes from MTK: Please confirm that using 0 as partition index and partition address is correct for CU-level DoNBDV
    58185884          UInt uiPartAddr = 0;  //QC: confirmed
  • branches/HTM-8.2-dev0-MediaTek/source/Lib/TLibCommon/TComPic.cpp

    r608 r629  
    118118  memcpy(m_numReorderPics, numReorderPics, MAX_TLAYER*sizeof(Int));
    119119
     120  /* initialize the texture to depth reference status */
     121#if H_3D_FCO
     122  for (int j=0; j<2; j++)
     123  {
     124      for (int i=0; i<MAX_NUM_REF; i++)
     125      {
     126          m_aiTexToDepRef[j][i] = -1;
     127      }
     128  }
     129#endif
     130
    120131  return;
    121132}
     
    722733  TComSlice* pcCurrSlice = getSlice(getCurrSliceIdx());
    723734  TComPic* pcTextPic = pcCurrSlice->getTexturePic();
     735#if H_3D_FCO
     736  if ( pcTextPic )
     737  {
     738#endif
     739
    724740  TComSlice* pcTextSlice = pcTextPic->getSlice(0); // currently only support single slice
    725741
     
    743759
    744760  }
     761#if H_3D_FCO
     762  }
     763#endif
     764
    745765}
    746766
  • branches/HTM-8.2-dev0-MediaTek/source/Lib/TLibCommon/TComPrediction.cpp

    r622 r629  
    731731  // Get depth reference
    732732  Int       depthRefViewIdx = pcCU->getDvInfo(uiPartAddr).m_aVIdxCan;
     733#if H_3D_FCO_VSP_DONBDV
     734  TComPic* pRefPicBaseDepth = 0;
     735  Bool     bIsCurrDepthCoded = false;
     736  pRefPicBaseDepth  = pcCU->getSlice()->getIvPic( true, pcCU->getSlice()->getViewIndex() );
     737  if ( pRefPicBaseDepth->getPicYuvRec() != NULL  )
     738  {
     739    bIsCurrDepthCoded = true;
     740  }
     741  else
     742  {
     743    pRefPicBaseDepth = pcCU->getSlice()->getIvPic (true, depthRefViewIdx );
     744  }
     745#else
    733746  TComPic* pRefPicBaseDepth = pcCU->getSlice()->getIvPic (true, depthRefViewIdx );
     747#endif
    734748  assert(pRefPicBaseDepth != NULL);
    735749  TComPicYuv* pcBaseViewDepthPicYuv = pRefPicBaseDepth->getPicYuvRec();
     
    751765  TComMv cDv  = pcCU->getDvInfo(uiPartAddr).m_acNBDV;
    752766  pcCU->clipMv(cDv);
     767
     768#if H_3D_FCO_VSP_DONBDV
     769  if ( bIsCurrDepthCoded )
     770  {
     771      cDv.setZero();
     772  }
     773#endif
    753774
    754775#if NTT_VSP_COMMON_E0207_E0208
  • branches/HTM-8.2-dev0-MediaTek/source/Lib/TLibCommon/TypeDef.h

    r622 r629  
    139139                                              // FIX_SDC_ENC_RD_WVSO_D0163
    140140                                              // MTK_SAMPLE_BASED_SDC_D0110
    141 
     141#define H_3D_FCO                          1   // Flexible coding order for 3D
    142142
    143143
     
    186186#define NTT_VSP_ADAPTIVE_SPLIT_E0207      1 // adaptive sub-PU partitioning in VSP, JCT3V-E0207
    187187#endif
     188#endif
     189
     190#if H_3D_FCO
     191#define H_3D_FCO_VSP_DONBDV               0   // Adaptive depth reference for flexible coding order
     192#else
     193#define H_3D_FCO_VSP_DONBDV               0   // Adaptive depth reference for flexible coding order
    188194#endif
    189195
  • branches/HTM-8.2-dev0-MediaTek/source/Lib/TLibDecoder/TDecTop.cpp

    r622 r629  
    978978#if H_3D
    979979    pcSlice->setIvPicLists( m_ivPicLists );         
    980 #if H_3D_IV_MERGE   
     980#if H_3D_IV_MERGE
     981#if H_3D_FCO
     982    //assert( !getIsDepth() );
     983#else
    981984    assert( !getIsDepth() || ( pcSlice->getTexturePic() != 0 ) );
     985#endif
    982986#endif   
    983987#endif
  • branches/HTM-8.2-dev0-MediaTek/source/Lib/TLibEncoder/TEncGOP.cpp

    r622 r629  
    913913
    914914    // SAIT_VSO_EST_A0033
     915#if H_3D_FCO
     916    Bool flagRec;
     917    flagRec =  ((m_pcEncTop->getIvPicLists()->getPicYuv( pcSlice->getViewIndex(), false, pcSlice->getPOC(), true) == NULL) ? false: true);
     918    pcRdCost->setVideoRecPicYuv( m_pcEncTop->getIvPicLists()->getPicYuv( pcSlice->getViewIndex(), false, pcSlice->getPOC(), flagRec ) );
     919    pcRdCost->setDepthPicYuv   ( m_pcEncTop->getIvPicLists()->getPicYuv( pcSlice->getViewIndex(), true, pcSlice->getPOC(), false ) );
     920#else
    915921    pcRdCost->setVideoRecPicYuv( m_pcEncTop->getIvPicLists()->getPicYuv( pcSlice->getViewIndex(), false , pcSlice->getPOC(), true ) );
    916922    pcRdCost->setDepthPicYuv   ( m_pcEncTop->getIvPicLists()->getPicYuv( pcSlice->getViewIndex(), true  , pcSlice->getPOC(), false ) );
     923#endif
    917924
    918925    // LGE_WVSO_A0119
  • branches/HTM-8.2-dev0-MediaTek/source/Lib/TLibEncoder/TEncSearch.cpp

    r622 r629  
    28662866        for( UInt dmmType = 0; dmmType < DMM_NUM_TYPE; dmmType++ )
    28672867        {
     2868#if H_3D_FCO
     2869            TComPic* picTexture  = pcCU->getSlice()->getIvPic(false, pcCU->getSlice()->getViewIndex() );
     2870            if ( !picTexture->getReconMark() && (DMM3_IDX == dmmType || DMM4_IDX == dmmType ) )
     2871            {
     2872                continue;
     2873            }
     2874#endif
    28682875          UInt uiTabIdx = 0;
    28692876          TComWedgelet* biSegmentation = NULL;
Note: See TracChangeset for help on using the changeset viewer.