Ignore:
Timestamp:
18 Jun 2013, 05:16:27 (11 years ago)
Author:
mediatek-htm
Message:

Integration of 3D-HEVC merge related coding tools:
Inter-view motion merge candidate
HHI_INTER_VIEW_MOTION_PRED
SAIT_IMPROV_MOTION_PRED_M24829, improved inter-view motion vector prediction
QC_MRG_CANS_B0048 , JCT3V-B0048, B0086, B0069
OL_DISMV_POS_B0069 , different pos for disparity MV candidate, B0069
MTK_INTERVIEW_MERGE_A0049 , second part
QC_AMVP_MRG_UNIFY_IVCAN_C0051
TEXTURE MERGING CANDIDATE , JCT3V-C0137

Notes: Two configurations are added:
PredDepthMapGen : 1
MultiviewMvPred : 7

From: yiwen.chen@… (MediaTek)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-DEV-0.3-dev2/source/App/TAppEncoder/TAppEncTop.cpp

    r446 r476  
    128128    m_frameRcvd                 .push_back(0);
    129129    m_acTEncTopList             .push_back(new TEncTop);
     130#if H_3D_IV_MERGE
     131//    m_acTEncDepthTopList        .push_back(new TEncTop);
     132#endif
    130133    m_acTVideoIOYuvInputFileList.push_back(new TVideoIOYuv);
    131134    m_acTVideoIOYuvReconFileList.push_back(new TVideoIOYuv);
    132135    m_picYuvRec                 .push_back(new TComList<TComPicYuv*>) ;
    133 
     136#if H_3D_IV_MERGE
     137    //m_acTEncDepthTopList[iViewIdx]->setFrameRate                    ( m_iFrameRate );
     138    //m_acTEncDepthTopList[iViewIdx]->setFrameSkip                    ( m_FrameSkip );
     139    //m_acTEncDepthTopList[iViewIdx]->setSourceWidth                  ( m_iSourceWidth );
     140    //m_acTEncDepthTopList[iViewIdx]->setSourceHeight                 ( m_iSourceHeight );
     141    //m_acTEncDepthTopList[iViewIdx]->setCroppingMode                 ( m_croppingMode );
     142    //m_acTEncDepthTopList[iViewIdx]->setCropLeft                     ( m_cropLeft );
     143    //m_acTEncDepthTopList[iViewIdx]->setCropRight                    ( m_cropRight );
     144    //m_acTEncDepthTopList[iViewIdx]->setCropTop                      ( m_cropTop );
     145    //m_acTEncDepthTopList[iViewIdx]->setCropBottom                   ( m_cropBottom );
     146    //m_acTEncDepthTopList[iViewIdx]->setFrameToBeEncoded             ( m_iFrameToBeEncoded );
     147    //m_acTEncDepthTopList[iViewIdx]->setViewId                       ( iViewIdx );
     148    //m_acTEncDepthTopList[iViewIdx]->setIsDepth                      ( true );
     149
     150    //m_acTEncDepthTopList[iViewIdx]->setViewOrderIdx                 ( m_cCameraData.getViewOrderIndex()[ iViewIdx ] );
     151
     152    //m_acTEncDepthTopList[iViewIdx]->setLayerId                      ( layerId );
     153
     154#endif
    134155    m_ivPicLists.push_back( m_acTEncTopList[ layer ]->getListPic()  );
    135156    TEncTop& m_cTEncTop = *m_acTEncTopList[ layer ];  // It is not a member, but this name helps avoiding code duplication !!!
     
    143164    m_cTEncTop.setIsDepth                      ( isDepth );
    144165    //====== Camera Parameters =========
     166#if H_3D_IV_MERGE
     167      //m_acTEncDepthTopList[iViewIdx]->setCamParPrecision              ( 0 );
     168      //m_acTEncDepthTopList[iViewIdx]->setCamParInSliceHeader          ( false );
     169      //m_acTEncDepthTopList[iViewIdx]->setCodedScale                   ( 0 );
     170      //m_acTEncDepthTopList[iViewIdx]->setCodedOffset                  ( 0 );
     171#endif
    145172    m_cTEncTop.setCameraParameters             ( &m_cCameraData );     
    146173    m_cTEncTop.setCamParPrecision              ( isDepth ? false : m_cCameraData.getCamParsCodedPrecision  () );
     
    166193    m_cTEncTop.setDWeight                      ( isDepth ? m_iDWeight             : 0     );
    167194#endif // H_3D_VSO
     195#if H_3D_IV_MERGE
     196    m_cTEncTop.setMultiviewMvPredMode          ( m_uiMultiviewMvPredMode     );
     197    m_cTEncTop.setPredDepthMapGeneration       ( m_uiPredDepthMapGeneration );
     198#endif
    168199#endif // H_3D
    169200
     
    189220 
    190221  //====== Coding Structure ========
     222#if H_3D_IV_MERGE
     223      //m_acTEncDepthTopList[iViewIdx]->setIntraPeriod                  ( m_iIntraPeriod );
     224      //m_acTEncDepthTopList[iViewIdx]->setDecodingRefreshType          ( m_iDecodingRefreshType );
     225      //m_acTEncDepthTopList[iViewIdx]->setGOPSize                      ( m_iGOPSize );
     226      //m_acTEncDepthTopList[iViewIdx]->setGopList                      ( m_GOPListsMvc[iViewIdx] );
     227      //m_acTEncDepthTopList[iViewIdx]->setExtraRPSs                    ( m_extraRPSs[iViewIdx] );
     228#endif
    191229  m_cTEncTop.setIntraPeriod                  ( m_iIntraPeriod );
    192230  m_cTEncTop.setDecodingRefreshType          ( m_iDecodingRefreshType );
     
    207245    m_cTEncTop.setNumReorderPics             ( m_numReorderPics[i], i );
    208246    m_cTEncTop.setMaxDecPicBuffering         ( m_maxDecPicBuffering[i], i );
    209   }
     247#if H_3D_IV_MERGE
     248        m_acTEncDepthTopList[iViewIdx]->setNumReorderPics             ( m_numReorderPics[iViewIdx][i], i );
     249        m_acTEncDepthTopList[iViewIdx]->setMaxDecPicBuffering         ( m_maxDecPicBuffering[iViewIdx][i], i );
     250#endif
     251  }
     252#if H_3D_IV_MERGE
     253      m_acTEncDepthTopList[iViewIdx]->setQP                           ( m_aiQP[1] );
     254
     255      m_acTEncDepthTopList[iViewIdx]->setTemporalLayerQPOffset        ( m_aiTLayerQPOffset );
     256      m_acTEncDepthTopList[iViewIdx]->setPad                          ( m_aiPad );
     257
     258      m_acTEncDepthTopList[iViewIdx]->setMaxTempLayer                 ( m_maxTempLayer[iViewIdx] );
     259
     260      m_acTEncDepthTopList[iViewIdx]->setDisInter4x4                  ( m_bDisInter4x4);
     261
     262      m_acTEncDepthTopList[iViewIdx]->setUseNSQT( m_enableNSQT );
     263      m_acTEncDepthTopList[iViewIdx]->setUseAMP( m_enableAMP );
     264#endif
    210265#endif
    211266  for( UInt uiLoop = 0; uiLoop < MAX_TLAYER; ++uiLoop )
    212267  {
    213268    m_cTEncTop.setLambdaModifier( uiLoop, m_adLambdaModifier[ uiLoop ] );
     269#if H_3D_IV_MERGE
     270//        m_acTEncDepthTopList[iViewIdx]->setLambdaModifier( uiLoop, m_adLambdaModifier[ uiLoop ] );
     271#endif
    214272  }
    215273#if H_MV
     
    231289 
    232290  //====== Loop/Deblock Filter ========
     291#if H_3D_IV_MERGE
     292      //m_acTEncDepthTopList[iViewIdx]->setLoopFilterDisable            ( m_abLoopFilterDisable[1]   );
     293      //m_acTEncDepthTopList[iViewIdx]->setLoopFilterOffsetInAPS        ( m_loopFilterOffsetInAPS );
     294      //m_acTEncDepthTopList[iViewIdx]->setLoopFilterBetaOffset         ( m_loopFilterBetaOffsetDiv2  );
     295      //m_acTEncDepthTopList[iViewIdx]->setLoopFilterTcOffset           ( m_loopFilterTcOffsetDiv2    );
     296      //m_acTEncDepthTopList[iViewIdx]->setDeblockingFilterControlPresent( m_DeblockingFilterControlPresent);
     297#endif
    233298#if H_MV
    234299  m_cTEncTop.setLoopFilterDisable            ( m_bLoopFilterDisable[layer]);
     
    604669  for(Int layer=0; layer<m_numberOfLayers; layer++)
    605670  {
     671#if H_3D_IV_MERGE
     672    m_acTEncTopList[layer]->init(this );
     673#else
    606674    m_acTEncTopList[layer]->init( );
     675#endif
    607676  }
    608677#else
     
    10321101}
    10331102#endif
     1103#if H_3D_IV_MERGE
     1104TComPic* TAppEncTop::xGetPicFromView( Int viewIdx, Int poc, Bool isDepth )
     1105{
     1106  assert( ( viewIdx >= 0 ) && ( viewIdx < m_iNumberOfViews ) );
     1107
     1108  TComList<TComPic*>* apcListPic =  m_acTEncTopList[(isDepth ? 1 : 0) + viewIdx * 2]->getListPic() ;
     1109
     1110 
     1111
     1112  TComPic* pcPic = NULL;
     1113  for(TComList<TComPic*>::iterator it=apcListPic->begin(); it!=apcListPic->end(); it++)
     1114  {
     1115    if( (*it)->getPOC() == poc )
     1116    {
     1117      pcPic = *it ;
     1118      break ;
     1119    }
     1120  }
     1121
     1122  return pcPic;
     1123};
     1124#endif
    10341125//! \}
Note: See TracChangeset for help on using the changeset viewer.