Changeset 1367 in SHVCSoftware for branches/SHM-dev


Ignore:
Timestamp:
22 Jul 2015, 04:38:38 (9 years ago)
Author:
seregin
Message:

port rev 4484

Location:
branches/SHM-dev/source/Lib
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/SHM-dev/source/Lib/TLibCommon/TComSlice.cpp

    r1365 r1367  
    6161, m_iAssociatedIRAP               ( 0 )
    6262, m_iAssociatedIRAPType           ( NAL_UNIT_INVALID )
    63 , m_pcRPS                         ( 0 )
    64 , m_LocalRPS                      ( )
    65 , m_iBDidx                        ( 0 )
     63, m_pRPS                          ( 0 )
     64, m_localRPS                      ( )
     65, m_rpsIdx                        ( 0 )
    6666, m_RefPicListModification        ( )
    6767, m_eNalUnitType                  ( NAL_UNIT_CODED_SLICE_IDR_W_RADL )
     
    417417  {
    418418#endif
    419   for(i=0; i < m_pcRPS->getNumberOfNegativePictures(); i++)
    420   {
    421     if(m_pcRPS->getUsed(i))
    422     {
    423       pcRefPic = xGetRefPic(rcListPic, getPOC()+m_pcRPS->getDeltaPOC(i));
     419  for(i=0; i < m_pRPS->getNumberOfNegativePictures(); i++)
     420  {
     421    if(m_pRPS->getUsed(i))
     422    {
     423      pcRefPic = xGetRefPic(rcListPic, getPOC()+m_pRPS->getDeltaPOC(i));
    424424      pcRefPic->setIsLongTerm(0);
    425425      pcRefPic->getPicYuvRec()->extendPicBorder();
     
    430430  }
    431431
    432   for(; i < m_pcRPS->getNumberOfNegativePictures()+m_pcRPS->getNumberOfPositivePictures(); i++)
    433   {
    434     if(m_pcRPS->getUsed(i))
    435     {
    436       pcRefPic = xGetRefPic(rcListPic, getPOC()+m_pcRPS->getDeltaPOC(i));
     432  for(; i < m_pRPS->getNumberOfNegativePictures()+m_pRPS->getNumberOfPositivePictures(); i++)
     433  {
     434    if(m_pRPS->getUsed(i))
     435    {
     436      pcRefPic = xGetRefPic(rcListPic, getPOC()+m_pRPS->getDeltaPOC(i));
    437437      pcRefPic->setIsLongTerm(0);
    438438      pcRefPic->getPicYuvRec()->extendPicBorder();
     
    443443  }
    444444
    445   for(i = m_pcRPS->getNumberOfNegativePictures()+m_pcRPS->getNumberOfPositivePictures()+m_pcRPS->getNumberOfLongtermPictures()-1; i > m_pcRPS->getNumberOfNegativePictures()+m_pcRPS->getNumberOfPositivePictures()-1 ; i--)
    446   {
    447     if(m_pcRPS->getUsed(i))
    448     {
    449       pcRefPic = xGetLongTermRefPic(rcListPic, m_pcRPS->getPOC(i), m_pcRPS->getCheckLTMSBPresent(i));
     445  for(i = m_pRPS->getNumberOfNegativePictures()+m_pRPS->getNumberOfPositivePictures()+m_pRPS->getNumberOfLongtermPictures()-1; i > m_pRPS->getNumberOfNegativePictures()+m_pRPS->getNumberOfPositivePictures()-1 ; i--)
     446  {
     447    if(m_pRPS->getUsed(i))
     448    {
     449      pcRefPic = xGetLongTermRefPic(rcListPic, m_pRPS->getPOC(i), m_pRPS->getCheckLTMSBPresent(i));
    450450      pcRefPic->setIsLongTerm(1);
    451451      pcRefPic->getPicYuvRec()->extendPicBorder();
     
    455455    if(pcRefPic==NULL)
    456456    {
    457       pcRefPic = xGetLongTermRefPic(rcListPic, m_pcRPS->getPOC(i), m_pcRPS->getCheckLTMSBPresent(i));
    458     }
    459     pcRefPic->setCheckLTMSBPresent(m_pcRPS->getCheckLTMSBPresent(i));
     457      pcRefPic = xGetLongTermRefPic(rcListPic, m_pRPS->getPOC(i), m_pRPS->getCheckLTMSBPresent(i));
     458    }
     459    pcRefPic->setCheckLTMSBPresent(m_pRPS->getCheckLTMSBPresent(i));
    460460  }
    461461#if SVC_EXTENSION
     
    701701#endif
    702702  }
    703   for(UInt i=0; i < m_pcRPS->getNumberOfNegativePictures()+ m_pcRPS->getNumberOfPositivePictures() + m_pcRPS->getNumberOfLongtermPictures(); i++)
    704   {
    705     if(m_pcRPS->getUsed(i))
     703  for(UInt i=0; i < m_pRPS->getNumberOfNegativePictures()+ m_pRPS->getNumberOfPositivePictures() + m_pRPS->getNumberOfLongtermPictures(); i++)
     704  {
     705    if(m_pRPS->getUsed(i))
    706706    {
    707707      numRpsCurrTempList++;
     
    10221022  memcpy( m_interLayerPredLayerIdc, pSrc->m_interLayerPredLayerIdc, sizeof( m_interLayerPredLayerIdc ) );
    10231023#endif
    1024   m_pcRPS                = pSrc->m_pcRPS;
     1024  m_pRPS                = pSrc->m_pRPS;
    10251025  m_iLastIDR             = pSrc->m_iLastIDR;
    10261026
     
    16351635  Int nrOfNegativePictures = 0;
    16361636  Int nrOfPositivePictures = 0;
    1637   TComReferencePictureSet* pcRPS = this->getLocalRPS();
    1638   (*pcRPS)=TComReferencePictureSet();
     1637  TComReferencePictureSet* pLocalRPS = this->getLocalRPS();
     1638  (*pLocalRPS)=TComReferencePictureSet();
    16391639
    16401640  Bool irapIsInRPS = false; // Used when bEfficientFieldIRAPEnabled==true
     
    16701670        // and should be added to the explicit Reference Picture Set
    16711671#if SVC_POC
    1672         pcRPS->setDeltaPOC(k, deltaPOC);
     1672        pLocalRPS->setDeltaPOC(k, deltaPOC);
    16731673#else
    1674         pcRPS->setDeltaPOC(k, pReferencePictureSet->getDeltaPOC(i));
    1675 #endif
    1676         pcRPS->setUsed(k, pReferencePictureSet->getUsed(i) && (!isRAP));
     1674        pLocalRPS->setDeltaPOC(k, pReferencePictureSet->getDeltaPOC(i));
     1675#endif
     1676        pLocalRPS->setUsed(k, pReferencePictureSet->getUsed(i) && (!isRAP));
    16771677        if (bEfficientFieldIRAPEnabled)
    16781678        {
    16791679#if SVC_POC
    1680           pcRPS->setUsed(k, pcRPS->getUsed(k) && !(bUseRecoveryPoint && this->getPOC() > pocRandomAccess && this->getPOC() + deltaPOC < pocRandomAccess) );
     1680          pLocalRPS->setUsed(k, pLocalRPS->getUsed(k) && !(bUseRecoveryPoint && this->getPOC() > pocRandomAccess && this->getPOC() + deltaPOC < pocRandomAccess) );
    16811681#else
    1682           pcRPS->setUsed(k, pcRPS->getUsed(k) && !(bUseRecoveryPoint && this->getPOC() > pocRandomAccess && this->getPOC() + pReferencePictureSet->getDeltaPOC(i) < pocRandomAccess) );
    1683 #endif
    1684         }
    1685 
    1686         if(pcRPS->getDeltaPOC(k) < 0)
     1682          pLocalRPS->setUsed(k, pLocalRPS->getUsed(k) && !(bUseRecoveryPoint && this->getPOC() > pocRandomAccess && this->getPOC() + pReferencePictureSet->getDeltaPOC(i) < pocRandomAccess) );
     1683#endif
     1684        }
     1685
     1686        if(pLocalRPS->getDeltaPOC(k) < 0)
    16871687        {
    16881688          nrOfNegativePictures++;
     
    17111711      if(rpcPic->getPicSym()->getSlice(0)->getPOC() == this->getAssociatedIRAPPOC() && this->getAssociatedIRAPPOC() == this->getPOC()+1)
    17121712      {
    1713         pcRPS->setDeltaPOC(k, 1);
    1714         pcRPS->setUsed(k, true);
     1713        pLocalRPS->setDeltaPOC(k, 1);
     1714        pLocalRPS->setUsed(k, true);
    17151715        nrOfPositivePictures++;
    17161716        k ++;
     
    17191719    }
    17201720  }
    1721   pcRPS->setNumberOfNegativePictures(nrOfNegativePictures);
    1722   pcRPS->setNumberOfPositivePictures(nrOfPositivePictures);
    1723   pcRPS->setNumberOfPictures(nrOfNegativePictures+nrOfPositivePictures);
     1721  pLocalRPS->setNumberOfNegativePictures(nrOfNegativePictures);
     1722  pLocalRPS->setNumberOfPositivePictures(nrOfPositivePictures);
     1723  pLocalRPS->setNumberOfPictures(nrOfNegativePictures+nrOfPositivePictures);
    17241724  // This is a simplistic inter rps example. A smarter encoder will look for a better reference RPS to do the
    17251725  // inter RPS prediction with.  Here we just use the reference used by pReferencePictureSet.
     
    17311731    )
    17321732  {
    1733     pcRPS->setInterRPSPrediction(false);
    1734     pcRPS->setNumRefIdc(0);
     1733    pLocalRPS->setInterRPSPrediction(false);
     1734    pLocalRPS->setNumRefIdc(0);
    17351735  }
    17361736  else
     
    17451745      Int deltaPOC = ((i != iRefPics)? pcRefRPS->getDeltaPOC(i) : 0);  // check if the reference abs POC is >= 0
    17461746      Int iRefIdc = 0;
    1747       for (j=0; j < pcRPS->getNumberOfPictures(); j++) // loop through the  pictures in the new RPS
    1748       {
    1749         if ( (deltaPOC + deltaRPS) == pcRPS->getDeltaPOC(j))
    1750         {
    1751           if (pcRPS->getUsed(j))
     1747      for (j=0; j < pLocalRPS->getNumberOfPictures(); j++) // loop through the  pictures in the new RPS
     1748      {
     1749        if ( (deltaPOC + deltaRPS) == pLocalRPS->getDeltaPOC(j))
     1750        {
     1751          if (pLocalRPS->getUsed(j))
    17521752          {
    17531753            iRefIdc = 1;
     
    17591759        }
    17601760      }
    1761       pcRPS->setRefIdc(i, iRefIdc);
     1761      pLocalRPS->setRefIdc(i, iRefIdc);
    17621762      iNewIdc++;
    17631763    }
    1764     pcRPS->setInterRPSPrediction(true);
    1765     pcRPS->setNumRefIdc(iNewIdc);
    1766     pcRPS->setDeltaRPS(deltaRPS);
    1767     pcRPS->setDeltaRIdxMinus1(pReferencePictureSet->getDeltaRIdxMinus1() + this->getSPS()->getRPSList()->getNumberOfReferencePictureSets() - this->getRPSidx());
    1768   }
    1769 
    1770   this->setRPS(pcRPS);
     1764    pLocalRPS->setInterRPSPrediction(true);
     1765    pLocalRPS->setNumRefIdc(iNewIdc);
     1766    pLocalRPS->setDeltaRPS(deltaRPS);
     1767    pLocalRPS->setDeltaRIdxMinus1(pReferencePictureSet->getDeltaRIdxMinus1() + this->getSPS()->getRPSList()->getNumberOfReferencePictureSets() - this->getRPSidx());
     1768  }
     1769
     1770  this->setRPS(pLocalRPS);
    17711771  this->setRPSidx(-1);
    17721772}
     
    38463846  Int numPocBeforeCurr = 0;
    38473847
    3848   for( UInt i = 0; i < m_pcRPS->getNumberOfNegativePictures(); i++ )
    3849   {
    3850     if( m_pcRPS->getUsed(i) )
     3848  for( UInt i = 0; i < m_pRPS->getNumberOfNegativePictures(); i++ )
     3849  {
     3850    if( m_pRPS->getUsed(i) )
    38513851    {
    38523852      numPocBeforeCurr++;
  • branches/SHM-dev/source/Lib/TLibCommon/TComSlice.h

    r1366 r1367  
    20252025  Int                        m_iAssociatedIRAP;
    20262026  NalUnitType                m_iAssociatedIRAPType;
    2027   const TComReferencePictureSet*   m_pcRPS;
    2028   TComReferencePictureSet    m_LocalRPS;
    2029   Int                        m_iBDidx;
     2027  const TComReferencePictureSet* m_pRPS;             //< pointer to RPS, either in the SPS or the local RPS in the same slice header
     2028  TComReferencePictureSet    m_localRPS;             //< RPS when present in slice header
     2029  Int                        m_rpsIdx;               //< index of used RPS in the SPS or -1 for local RPS in the slice header
    20302030  TComRefPicListModification m_RefPicListModification;
    20312031  NalUnitType                m_eNalUnitType;         ///< Nal unit type for the slice
     
    21702170  Void                        setSaoEnabledFlag(ChannelType chType, Bool s)          {m_saoEnabledFlag[chType] =s;                                   }
    21712171  Bool                        getSaoEnabledFlag(ChannelType chType) const            { return m_saoEnabledFlag[chType];                              }
    2172   Void                        setRPS( const TComReferencePictureSet *pcRPS )         { m_pcRPS = pcRPS;                                              }
    2173   const TComReferencePictureSet*    getRPS()                                               { return m_pcRPS;                                               }
    2174   TComReferencePictureSet*    getLocalRPS()                                          { return &m_LocalRPS;                                           }
    2175 
    2176   Void                        setRPSidx( Int iBDidx )                                { m_iBDidx = iBDidx;                                            }
    2177   Int                         getRPSidx() const                                      { return m_iBDidx;                                              }
     2172  Void                        setRPS( const TComReferencePictureSet *pcRPS )         { m_pRPS = pcRPS;                                               }
     2173  const TComReferencePictureSet* getRPS()                                            { return m_pRPS;                                                }
     2174  TComReferencePictureSet*    getLocalRPS()                                          { return &m_localRPS;                                           }
     2175
     2176  Void                        setRPSidx( Int rpsIdx )                                { m_rpsIdx = rpsIdx;                                            }
     2177  Int                         getRPSidx() const                                      { return m_rpsIdx;                                              }
    21782178  TComRefPicListModification* getRefPicListModification()                            { return &m_RefPicListModification;                             }
    21792179  Void                        setLastIDR(Int iIDRPOC)                                { m_iLastIDR = iIDRPOC;                                         }
  • branches/SHM-dev/source/Lib/TLibEncoder/TEncGOP.cpp

    r1366 r1367  
    19261926#endif
    19271927    m_pcEncTop->selectReferencePictureSet(pcSlice, pocCurr, iGOPid);
    1928 //    pcSlice->getRPS()->setNumberOfLongtermPictures(0);
    19291928    if (!m_pcCfg->getEfficientFieldIRAPEnabled())
    19301929    {
Note: See TracChangeset for help on using the changeset viewer.