Changeset 693 in 3DVCSoftware


Ignore:
Timestamp:
13 Nov 2013, 08:14:41 (10 years ago)
Author:
sharpjp-htm
Message:

Integration of F0105

Location:
branches/HTM-8.2-dev1-Sharp
Files:
3 added
8 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-8.2-dev1-Sharp/source/Lib/TLibCommon/TComPrediction.cpp

    r666 r693  
    784784  if( cDistparity.bDV )
    785785  {
     786#if SHARP_ARP_REF_CHECK_F0105
     787    Int arpRefIdx = pcCU->getSlice()->getFirstTRefIdx(eRefPicList);
     788    if( dW > 0 && pcCU->getSlice()->getRefPic( eRefPicList, arpRefIdx )->getPOC()!= pcCU->getSlice()->getPOC() )
     789#else
    786790    if( dW > 0 && pcCU->getSlice()->getRefPic( eRefPicList, 0 )->getPOC()!= pcCU->getSlice()->getPOC() )
     791#endif
    787792    {
    788793      bTobeScaled = true;
     
    790795
    791796    pcPicYuvBaseCol =  pcCU->getSlice()->getBaseViewRefPic( pcCU->getSlice()->getPOC(),                              cDistparity.m_aVIdxCan );
     797
     798#if SHARP_ARP_REF_CHECK_F0105
     799    pcPicYuvBaseRef =  pcCU->getSlice()->getBaseViewRefPic( pcCU->getSlice()->getRefPic( eRefPicList, arpRefIdx )->getPOC(), cDistparity.m_aVIdxCan );
     800
     801    if (!pcCU->getSlice()->getArpRefPicAvailable( eRefPicList, cDistparity.m_aVIdxCan))
     802#else
    792803    pcPicYuvBaseRef =  pcCU->getSlice()->getBaseViewRefPic( pcCU->getSlice()->getRefPic( eRefPicList, 0 )->getPOC(), cDistparity.m_aVIdxCan );
    793    
     804
    794805    if( ( !pcPicYuvBaseCol || pcPicYuvBaseCol->getPOC() != pcCU->getSlice()->getPOC() ) || ( !pcPicYuvBaseRef || pcPicYuvBaseRef->getPOC() != pcCU->getSlice()->getRefPic( eRefPicList, 0 )->getPOC() ) )
     806#endif
    795807    {
    796808      dW = 0;
     
    799811    else
    800812    {
     813#if SHARP_ARP_REF_CHECK_F0105
     814      assert( pcPicYuvBaseCol->getPOC() == pcCU->getSlice()->getPOC() && pcPicYuvBaseRef->getPOC() == pcCU->getSlice()->getRefPic( eRefPicList, arpRefIdx )->getPOC() );
     815#else
    801816      assert( pcPicYuvBaseCol->getPOC() == pcCU->getSlice()->getPOC() && pcPicYuvBaseRef->getPOC() == pcCU->getSlice()->getRefPic( eRefPicList, 0 )->getPOC() );
     817#endif
    802818    }
    803819
     
    870886
    871887  assert(dW > 0);
     888#if SHARP_ARP_REF_CHECK_F0105
     889  if (!pcCU->getSlice()->getArpRefPicAvailable( eRefPicList, pcPicYuvBaseCol->getViewIndex()))
     890  {
     891    dW = 0;
     892  }
     893#endif
    872894  Int uiLCUAddr,uiAbsPartAddr;
    873895  Int irefPUX = pcCU->getCUPelX() + g_auiRasterToPelX[g_auiZscanToRaster[uiPartAddr]] + iWidth/2  + ((cDMv.getHor() + 2)>>2);
  • branches/HTM-8.2-dev1-Sharp/source/Lib/TLibCommon/TComSlice.cpp

    r666 r693  
    751751    if ( this->getNumRefIdx( RefPicList( uiRefListIdx ) ) == 0)
    752752        continue;
     753#if !SHARP_ARP_REF_CHECK_F0105
     754// move the following to setARPStepNum() to define ARP related thing in ARP function.
    753755#if QC_MTK_INTERVIEW_ARP_F0123_F0108
    754756     for(Int i = 0; i < this->getNumRefIdx(RefPicList(uiRefListIdx)); i++ )
     
    760762       }
    761763     }
     764#endif
    762765#endif
    763766    Bool bZeroIdxLtFlag = this->getRefPic(RefPicList(uiRefListIdx), 0)->getIsLongTerm();
     
    28402843
    28412844#if H_3D_ARP
     2845#if SHARP_ARP_REF_CHECK_F0105
     2846Void TComSlice::setARPStepNum( TComPicLists*ivPicLists )
     2847#else
    28422848Void TComSlice::setARPStepNum()                                 
    2843 {
     2849#endif
     2850{
     2851#if SHARP_ARP_REF_CHECK_F0105
     2852  Bool tempRefPicInListsFlag = false;
     2853#else
    28442854  Bool bAllIvRef = true;
     2855#endif
    28452856#if QC_MTK_INTERVIEW_ARP_F0123_F0108
    28462857  if(!getVPS()->getUseAdvRP(getLayerId()) || this->isIRAP())
     
    28532864  else
    28542865  {
     2866#if SHARP_ARP_REF_CHECK_F0105
     2867    setFirstTRefIdx (REF_PIC_LIST_0, -1);
     2868    setFirstTRefIdx (REF_PIC_LIST_1, -1);
     2869    for ( Int refListIdx = 0; refListIdx < ((m_eSliceType==B_SLICE) ? 2 : 1); refListIdx++ )
     2870    {
     2871      for(Int i = 0; i < getNumRefIdx(RefPicList(refListIdx)); i++ )
     2872      {
     2873        if ( getRefPic(RefPicList(refListIdx), i)->getPOC() != getPOC() )
     2874        {
     2875          setFirstTRefIdx (RefPicList(refListIdx), i);
     2876          break;
     2877        }
     2878      }
     2879    }
     2880    tempRefPicInListsFlag = getFirstTRefIdx(REF_PIC_LIST_0) >= 0 || getFirstTRefIdx(REF_PIC_LIST_1) >= 0;
     2881    m_nARPStepNum = tempRefPicInListsFlag ? getVPS()->getARPStepNum(getLayerId()) : 0;
     2882#else
    28552883    for( Int iRefListId = 0; iRefListId < 2; iRefListId++ )
    28562884    {
     
    28752903    }
    28762904    m_nARPStepNum = !bAllIvRef ? getVPS()->getARPStepNum(getLayerId()) : 0;
    2877   }
     2905#endif
     2906  }
     2907#if SHARP_ARP_REF_CHECK_F0105
     2908  if (tempRefPicInListsFlag)
     2909  {
     2910    for ( Int refListIdx = 0; refListIdx < ((m_eSliceType==B_SLICE) ? 2 : 1); refListIdx++ )
     2911    {
     2912      RefPicList eRefPicList = RefPicList( refListIdx );
     2913      Int prevPOC = getRefPic(eRefPicList, getFirstTRefIdx(eRefPicList) )->getPOC();
     2914      for( Int i = 0; i < getNumActiveRefLayerPics(); i++ )
     2915      {
     2916        Int layerIdInNuh = getRefPicLayerId( i );
     2917        Int viewIdx = getVPS()->getViewId( layerIdInNuh );
     2918        TComPic*pcPicPrev = ivPicLists->getPic(viewIdx, 0, prevPOC);
     2919        if (getFirstTRefIdx(eRefPicList) >= 0 && pcPicPrev && pcPicPrev->getSlice( 0 )->isReferenced())
     2920        {
     2921          m_arpRefPicAvailable[eRefPicList][layerIdInNuh] = true;
     2922        }
     2923        else
     2924        {
     2925          m_arpRefPicAvailable[eRefPicList][layerIdInNuh] = false;
     2926        }
     2927      }
     2928    }
     2929  }
     2930#endif
    28782931}
    28792932#endif
  • branches/HTM-8.2-dev1-Sharp/source/Lib/TLibCommon/TComSlice.h

    r666 r693  
    17301730#endif
    17311731#if H_3D_ARP
     1732#if SHARP_ARP_REF_CHECK_F0105
     1733  Bool m_arpRefPicAvailable[2][MAX_NUM_LAYERS];
     1734#endif
    17321735  TComList<TComPic*> * m_pBaseViewRefPicList[MAX_NUM_LAYERS];
    17331736  UInt                 m_nARPStepNum;
     
    18211824#if H_3D_ARP
    18221825  Void      setBaseViewRefPicList( TComList<TComPic*> *pListPic, Int iViewIdx )      { m_pBaseViewRefPicList[iViewIdx] = pListPic;                   }
     1826#if SHARP_ARP_REF_CHECK_F0105
     1827  Void      setARPStepNum( TComPicLists*ivPicLists );
     1828#else
    18231829  Void      setARPStepNum();                                 
     1830#endif
    18241831  TComPic*  getBaseViewRefPic    ( UInt uiPOC , Int iViewIdx )                       { return xGetRefPic( *m_pBaseViewRefPicList[iViewIdx], uiPOC ); }
    18251832  UInt      getARPStepNum( )                                                         { return m_nARPStepNum;                                         } 
     
    20262033  Void      setFirstTRefIdx        ( RefPicList e, Int i )         { m_aiFirstTRefIdx[e]    = i;      }
    20272034#endif
     2035#if SHARP_ARP_REF_CHECK_F0105
     2036  Bool      getArpRefPicAvailable( RefPicList e, Int viewIdx) {return m_arpRefPicAvailable[e][getVPS()->getLayerIdInNuh(viewIdx, 0)]; }
     2037#endif
    20282038  Void      setIsDepth            ( Bool isDepth )   { m_isDepth = isDepth; }
    20292039  Bool      getIsDepth            ()                 { return m_isDepth; }
  • branches/HTM-8.2-dev1-Sharp/source/Lib/TLibCommon/TypeDef.h

    r676 r693  
    209209#define QC_MTK_INTERVIEW_ARP_F0123_F0108  1 //JCT3V-F0123; JCT3V-F0108
    210210#define QC_MTK_INTERVIEW_ARP_F0123_F0108  1 //JCT3V-F0123; JCT3V-F0108
     211#define SHARP_ARP_REF_CHECK_F0105         1 // ARP reference picture selection and DPB check
    211212#define LGE_ARP_CTX_F0161 1 //JCT3V-F0161
    212213#endif
  • branches/HTM-8.2-dev1-Sharp/source/Lib/TLibDecoder/TDecTop.cpp

    r655 r693  
    951951    pcSlice->setRefPicList     ( tempRefPicLists, usedAsLongTerm, numPocTotalCurr, true );
    952952#if H_3D_ARP
     953#if SHARP_ARP_REF_CHECK_F0105
     954    pcSlice->setARPStepNum(m_ivPicLists);
     955#else
    953956    pcSlice->setARPStepNum();
     957#endif
    954958    if( pcSlice->getARPStepNum() > 1 )
    955959    {
  • branches/HTM-8.2-dev1-Sharp/source/Lib/TLibEncoder/TEncGOP.cpp

    r655 r693  
    724724#if H_3D_ARP
    725725    //GT: This seems to be broken when layerId in vps is not equal to layerId in nuh
     726#if SHARP_ARP_REF_CHECK_F0105
     727    pcSlice->setARPStepNum(m_ivPicLists);
     728#else
    726729    pcSlice->setARPStepNum();
     730#endif
    727731    if(pcSlice->getARPStepNum() > 1)
    728732    {
Note: See TracChangeset for help on using the changeset viewer.