Ignore:
Timestamp:
1 Nov 2012, 19:22:41 (12 years ago)
Author:
mitsubishi-htm
Message:

Initial integration of VSP into HTM 4.0.1. The version used for JCT3V-B0102 at Shanghai meeting.

  • VC9 project/solution files updated. Other Visual C++ project/solution files are not updated.
  • Linux make file updated.

TODO

  • A second release is expected to include some bug fix and improvements on the interface, e.g. to move switches from macro definition to the configuration file.
  • A third release is expected after being integrated within HTM 5.x, which is to be used for CE1.h anchor.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibCommon/TComSlice.cpp

    r101 r166  
    114114{
    115115  m_aiNumRefIdx[0] = m_aiNumRefIdx[1] = m_aiNumRefIdx[2] = 0;
     116
     117#if FORCE_REF_VSP
     118  m_iRefIdxVsp[0] = m_iRefIdxVsp[1] = NOT_VALID;
     119#endif
    116120 
    117121  initEqualRef();
     
    139143  resetWpScalingLC(m_weightPredTableLC);
    140144  initWpAcDcParam();
     145
     146#if VSP_SLICE_HEADER
     147  m_bVspFlag = false;
     148#endif
    141149}
    142150
     
    185193  m_numEntryPointOffsets = 0;
    186194#endif
     195#if VSP_SLICE_HEADER
     196  m_bVspFlag = false;
     197#endif
     198
    187199}
    188200
     
    407419}
    408420
     421#if VSP_N
     422Void TComSlice::setRefPicListMvc( TComList<TComPic*>& rcListPic, std::vector<TComPic*>& rapcInterViewRefPics, TComPic* pcVspPic )
     423#else
    409424Void TComSlice::setRefPicListMvc( TComList<TComPic*>& rcListPic, std::vector<TComPic*>& rapcInterViewRefPics )
     425#endif
    410426{
    411427  if( m_eSliceType == I_SLICE )
     
    422438  TComPic*  RefPicSetLtCurr [16];
    423439  TComPic*  RefPicSetIvCurr [16];
     440#if VSP_N
     441  TComPic*  RefPicSetVspCurr [16] = {NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}; //for Linux comp
     442#endif
    424443
    425444  UInt NumPocStCurr0 = 0;
     
    427446  UInt NumPocLtCurr  = 0;
    428447  UInt NumPocIvCurr  = 0;
     448#if VSP_N
     449  UInt NumPocVspCurr  = 0;
     450#endif
    429451
    430452  Int i;
     
    474496    NumPocIvCurr++;
    475497  }
     498#if VSP_N
     499  if( pcVspPic )
     500  {
     501    pcRefPic = pcVspPic;
     502    pcRefPic->setIsLongTerm( 0 );
     503    pcRefPic->getPicYuvRec()->extendPicBorder();
     504    RefPicSetVspCurr[NumPocVspCurr] = pcRefPic;
     505    NumPocVspCurr++;
     506  }
     507#endif
    476508
    477509  // ref_pic_list_init
     
    481513
    482514  assert( (NumPocStCurr0 + NumPocStCurr1 + NumPocLtCurr + NumPocIvCurr) == getNumPocTotalCurrMvc() );
     515#if VSP_N
     516  Int numRpsCurrTempList0 = max( (num_ref_idx_l0_active_minus1 + 1), (NumPocStCurr0 + NumPocStCurr1 + NumPocLtCurr + NumPocIvCurr + NumPocVspCurr) );
     517  Int numRpsCurrTempList1 = max( (num_ref_idx_l1_active_minus1 + 1), (NumPocStCurr0 + NumPocStCurr1 + NumPocLtCurr + NumPocIvCurr + NumPocVspCurr) );
     518#else
    483519  Int numRpsCurrTempList0 = max( (num_ref_idx_l0_active_minus1 + 1), (NumPocStCurr0 + NumPocStCurr1 + NumPocLtCurr + NumPocIvCurr) );
    484520  Int numRpsCurrTempList1 = max( (num_ref_idx_l1_active_minus1 + 1), (NumPocStCurr0 + NumPocStCurr1 + NumPocLtCurr + NumPocIvCurr) );
     521#endif
    485522
    486523  assert( numRpsCurrTempList0 <= 16 );
     
    509546  for( cIdx = 0; cIdx <= num_ref_idx_l0_active_minus1; cIdx ++ )
    510547  {
     548#if VSP_N
     549    if( pcVspPic && cIdx == num_ref_idx_l0_active_minus1 )
     550    {
     551      m_apcRefPicList[0][cIdx] = RefPicSetVspCurr[0];
     552#if FORCE_REF_VSP
     553      m_iRefIdxVsp[0] = cIdx;
     554#endif
     555    }
     556    else
     557      m_apcRefPicList[0][cIdx] = m_RefPicListModification.getRefPicListModificationFlagL0() ? refPicListTemp0[ m_RefPicListModification.getRefPicSetIdxL0(cIdx) ] : refPicListTemp0[cIdx];
     558#else
    511559    m_apcRefPicList[0][cIdx] = m_RefPicListModification.getRefPicListModificationFlagL0() ? refPicListTemp0[ m_RefPicListModification.getRefPicSetIdxL0(cIdx) ] : refPicListTemp0[cIdx];
     560#endif
    512561  }
    513562  if( m_eSliceType == P_SLICE )
     
    520569    for( cIdx = 0; cIdx <= num_ref_idx_l1_active_minus1; cIdx ++ )
    521570    {
     571#if VSP_N
     572      if( pcVspPic && cIdx == num_ref_idx_l1_active_minus1 )
     573      {
     574        m_apcRefPicList[1][cIdx] = RefPicSetVspCurr[0];
     575#if FORCE_REF_VSP
     576        m_iRefIdxVsp[1] = cIdx;
     577#endif
     578      }
     579      else
     580        m_apcRefPicList[1][cIdx] = m_RefPicListModification.getRefPicListModificationFlagL1() ? refPicListTemp1[ m_RefPicListModification.getRefPicSetIdxL1(cIdx) ] : refPicListTemp1[cIdx];
     581#else
    522582      m_apcRefPicList[1][cIdx] = m_RefPicListModification.getRefPicListModificationFlagL1() ? refPicListTemp1[ m_RefPicListModification.getRefPicSetIdxL1(cIdx) ] : refPicListTemp1[cIdx];
     583#endif
    523584    }
    524585  }
Note: See TracChangeset for help on using the changeset viewer.