Ignore:
Timestamp:
12 Aug 2013, 11:11:06 (11 years ago)
Author:
mediatek-htm
Message:

Integration of JCT3V-E0172. The MACRO is "MTK_RVS_BUGFIX_E0172".

By Na Zhang (na.zhang@…)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-DEV-2.0-dev1-Mediatek/source/Lib/TLibCommon/TComPic.cpp

    r539 r566  
    655655}
    656656#endif
     657#if MTK_NBDV_TN_FIX_E0172
     658Void TComPic::checkTemporalIVRef()
     659{
     660  TComSlice* currSlice = getSlice(getCurrSliceIdx());
     661  const Int numCandPics = this->getNumDdvCandPics();
     662  for(Int curCandPic = 0; curCandPic < numCandPics; curCandPic++)
     663  {
     664    RefPicList eCurRefPicList   = REF_PIC_LIST_0 ;
     665    Int        curCandPicRefIdx = 0;
     666    if( curCandPic == 0 )
     667    {
     668      eCurRefPicList   = RefPicList(currSlice->isInterB() ? 1-currSlice->getColFromL0Flag() : 0);
     669      curCandPicRefIdx = currSlice->getColRefIdx();
     670    }
     671    else                 
     672    {
     673      eCurRefPicList   = this->getRapRefList();
     674      curCandPicRefIdx = this->getRapRefIdx();
     675    }
     676    TComPic* pcCandColPic = currSlice->getRefPic( eCurRefPicList, curCandPicRefIdx);
     677    TComSlice* pcCandColSlice = pcCandColPic->getSlice(0);// currently only support single slice
     678
     679    if(!pcCandColSlice->isIntra())
     680    {
     681      for( Int iColRefDir = 0; iColRefDir < (pcCandColSlice->isInterB() ? 2: 1); iColRefDir ++ )
     682      {
     683        for( Int iColRefIdx =0; iColRefIdx < pcCandColSlice->getNumRefIdx(( RefPicList )iColRefDir ); iColRefIdx++)
     684        {
     685          m_abTIVRINCurrRL[curCandPic][iColRefDir][iColRefIdx] = false;
     686          Int iColViewIdx    = pcCandColSlice->getViewIndex();
     687          Int iColRefViewIdx = pcCandColSlice->getRefPic( ( RefPicList )iColRefDir, iColRefIdx)->getViewIndex();
     688          if(iColViewIdx == iColRefViewIdx)
     689            continue;
     690
     691          for(Int iCurrRefDir = 0;(iCurrRefDir < (currSlice->isInterB() ? 2: 1)) && (m_abTIVRINCurrRL[curCandPic][iColRefDir][iColRefIdx] == false ); iCurrRefDir++)
     692          {
     693            for( Int iCurrRefIdx =0; iCurrRefIdx < currSlice->getNumRefIdx(( RefPicList )iCurrRefDir ); iCurrRefIdx++)
     694            {
     695              if( currSlice->getRefPic( ( RefPicList )iCurrRefDir, iCurrRefIdx )->getViewIndex() == iColRefViewIdx )
     696              { 
     697                m_abTIVRINCurrRL[curCandPic][iColRefDir][iColRefIdx] = true;
     698                break;
     699              }
     700            }
     701          }
     702        }
     703      }
     704    }
     705  }
     706}
     707Bool TComPic::isTempIVRefValid(Int currCandPic, Int iColRefDir, Int iColRefIdx)
     708{
     709  return m_abTIVRINCurrRL[currCandPic][iColRefDir][iColRefIdx];
     710}
     711#endif
    657712//! \}
Note: See TracChangeset for help on using the changeset viewer.