Changeset 189 in 3DVCSoftware for trunk/source/Lib/TLibCommon/TComPic.cpp


Ignore:
Timestamp:
18 Nov 2012, 22:11:37 (12 years ago)
Author:
tech
Message:

Reintegrated branch 4.1-dev0 Rev. 188.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/Lib/TLibCommon/TComPic.cpp

    r100 r189  
    8181  m_aaiCodedScale     = 0;
    8282  m_aaiCodedOffset    = 0;
     83#if OL_QTLIMIT_PREDCODING_B0068
     84  m_bReduceBitsQTL    = 0;
     85#endif
     86#if QC_SIMPLE_NBDV_B0047
     87  m_bRapCheck = false;
     88  m_eRapRefList = REF_PIC_LIST_0;
     89  m_uiRapRefIdx = 0;
     90#endif
     91
    8392}
    8493
     
    480489  }
    481490}
     491#if QC_SIMPLE_NBDV_B0047
     492Bool TComPic::getDisCandRefPictures(Int iColPOC)
     493{
     494  UInt uiTempLayerCurr=7;
     495  TComSlice* currSlice = getCurrSlice();
     496  UInt iPOCCurr=currSlice->getPOC();
     497  UInt iPOCDiff = 255;
     498  Bool  bRAP=false;
     499  Bool bCheck = false;
     500  Int MaxRef = currSlice->getNumRefIdx(RefPicList(0));
     501  RefPicList eRefPicList = REF_PIC_LIST_0 ;
     502  if(currSlice->isInterB())
     503  {
     504    if(currSlice->getNumRefIdx(RefPicList(0))< currSlice->getNumRefIdx(RefPicList(1)))
     505      MaxRef = currSlice->getNumRefIdx(RefPicList(1));
     506  }
     507  for(Int lpRef = 0; lpRef < MaxRef; lpRef++)
     508  {
     509    for(Int lpNr = 0; lpNr < (currSlice->isInterB() ? 2: 1); lpNr ++)
     510    {
     511      eRefPicList = RefPicList(0);
     512      if(currSlice->isInterB())
     513        eRefPicList = RefPicList(lpNr==0 ? (currSlice->getColDir()): (1-currSlice->getColDir()));
     514      if(iColPOC == currSlice->getRefPOC(eRefPicList, lpRef))
     515        continue;
     516      if(lpRef >= currSlice->getNumRefIdx(eRefPicList)||(currSlice->getViewId() != currSlice->getRefPic( eRefPicList, lpRef)->getViewId()))
     517        continue;
     518      Int iTempPoc = currSlice->getRefPic(eRefPicList, lpRef)->getPOC();
     519      UInt uiTempLayer = currSlice->getRefPic(eRefPicList, lpRef)->getCurrSlice()->getTLayer();
     520      Int iTempDiff = (iTempPoc > iPOCCurr) ? (iTempPoc - iPOCCurr): (iPOCCurr - iTempPoc);
     521      bRAP = (currSlice->getRefPic(eRefPicList, lpRef)->getCurrSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDV? 1:0);
     522      if( bRAP)
     523      {
     524         bCheck = true;
     525         this->setRapRefIdx(lpRef);
     526         this->setRapRefList(eRefPicList);
     527         return bCheck;
     528      }
     529      if(uiTempLayerCurr > uiTempLayer)
     530      {
     531        bCheck = true;
     532        if(uiTempLayerCurr == uiTempLayer)
     533        {
     534          if(iPOCDiff > iTempDiff)
     535          {
     536            iPOCDiff=iTempDiff;
     537            if(iPOCDiff < 255)
     538            {
     539              this->setRapRefIdx(lpRef);
     540              this->setRapRefList(eRefPicList);
     541            }
     542          }
     543        }
     544        else
     545        {
     546          iPOCDiff=iTempDiff;
     547          uiTempLayerCurr = uiTempLayer;
     548          this->setRapRefIdx(lpRef);
     549          this->setRapRefList(eRefPicList);
     550        }
     551      }
     552    }
     553  }
     554  return bCheck;
     555}
     556#endif
    482557
    483558#if HHI_INTERVIEW_SKIP
Note: See TracChangeset for help on using the changeset viewer.