Changeset 535 in SHVCSoftware


Ignore:
Timestamp:
5 Jan 2014, 22:04:10 (11 years ago)
Author:
qualcomm
Message:

Bug-fix for r526.

From: Adarsh K. Ramasubramonian <aramasub@…>

Location:
branches/SHM-4.1-dev/source/Lib
Files:
2 edited

Legend:

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

    r533 r535  
    973973  Void    setSubLayerDpbInfoPresentFlag(Int i, Int j, Bool x) {m_subLayerDpbInfoPresentFlag[i][j] = x;    }
    974974
    975   Int     getMaxVpsDecPicBufferingMinus1(Int i, Int k, Int j)         { return m_maxVpsDecPicBufferingMinus1[i][k][j]; }
     975  // For the 0-th output layer set, use the date from the active SPS for base layer.
     976  Int     getMaxVpsDecPicBufferingMinus1(Int i, Int k, Int j)         { assert(i != 0); return m_maxVpsDecPicBufferingMinus1[i][k][j]; }
    976977  Void    setMaxVpsDecPicBufferingMinus1(Int i, Int k, Int j, Int x) { m_maxVpsDecPicBufferingMinus1[i][k][j] = x;    }
    977978
    978   Int     getMaxVpsNumReorderPics(Int i, Int j)         { return m_maxVpsNumReorderPics[i][j]; }
     979  Int     getMaxVpsNumReorderPics(Int i, Int j)         { assert(i != 0); return m_maxVpsNumReorderPics[i][j]; }
    979980  Void    setMaxVpsNumReorderPics(Int i, Int j, Int x) { m_maxVpsNumReorderPics[i][j] = x;    }
    980981
    981   Int     getMaxVpsLatencyIncreasePlus1(Int i, Int j)         { return m_maxVpsLatencyIncreasePlus1[i][j]; }
     982  Int     getMaxVpsLatencyIncreasePlus1(Int i, Int j)         { assert(i != 0); return m_maxVpsLatencyIncreasePlus1[i][j]; }
    982983  Void    setMaxVpsLatencyIncreasePlus1(Int i, Int j, Int x) { m_maxVpsLatencyIncreasePlus1[i][j] = x;    }
    983984
  • branches/SHM-4.1-dev/source/Lib/TLibDecoder/TDecTop.cpp

    r533 r535  
    178178    {
    179179#if USE_DPB_SIZE_TABLE
    180       TComVPS *vps = slice->getVPS();
    181       // SHM decoders will use DPB size table in the VPS to determine the number of reorder pictures.
    182       numReorderPics[temporalLayer] = vps->getMaxVpsNumReorderPics( getCommonDecoderParams()->getOutputLayerSetIdx() , temporalLayer);
     180      if( getCommonDecoderParams()->getOutputLayerSetIdx() == 0 )
     181      {
     182        assert( this->getLayerId() == 0 );
     183        numReorderPics[temporalLayer] = pcSPS->getNumReorderPics(temporalLayer);
     184      }
     185      else
     186      {
     187        TComVPS *vps = slice->getVPS();
     188        // SHM decoders will use DPB size table in the VPS to determine the number of reorder pictures.
     189        numReorderPics[temporalLayer] = vps->getMaxVpsNumReorderPics( getCommonDecoderParams()->getOutputLayerSetIdx() , temporalLayer);
     190      }
    183191#else
    184192      numReorderPics[temporalLayer] = pcSPS->getNumReorderPics(temporalLayer);
     
    274282  {
    275283#if USE_DPB_SIZE_TABLE
    276     TComVPS *vps = pcSlice->getVPS();
    277     // SHM decoders will use DPB size table in the VPS to determine the number of reorder pictures.
    278     numReorderPics[temporalLayer] = vps->getMaxVpsNumReorderPics( getCommonDecoderParams()->getOutputLayerSetIdx() , temporalLayer);
     284    if( getCommonDecoderParams()->getOutputLayerSetIdx() == 0 )
     285    {
     286      assert( this->getLayerId() == 0 );
     287      numReorderPics[temporalLayer] = pcSlice->getSPS()->getNumReorderPics(temporalLayer);
     288    }
     289    else
     290    {
     291      TComVPS *vps = pcSlice->getVPS();
     292      // SHM decoders will use DPB size table in the VPS to determine the number of reorder pictures.
     293      numReorderPics[temporalLayer] = vps->getMaxVpsNumReorderPics( getCommonDecoderParams()->getOutputLayerSetIdx() , temporalLayer);
     294    }
    279295#else
    280296    numReorderPics[temporalLayer] = pcSlice->getSPS()->getNumReorderPics(temporalLayer);
     
    283299
    284300#if USE_DPB_SIZE_TABLE
    285   m_iMaxRefPicNum = pcSlice->getVPS()->getMaxVpsDecPicBufferingMinus1( getCommonDecoderParams()->getOutputLayerSetIdx(), pcSlice->getLayerId(), pcSlice->getTLayer() ) + 1; // m_uiMaxDecPicBuffering has the space for the picture currently being decoded
     301  if( getCommonDecoderParams()->getOutputLayerSetIdx() == 0 )
     302  {
     303    assert( this->getLayerId() == 0 );
     304    m_iMaxRefPicNum = pcSlice->getSPS()->getMaxDecPicBuffering(pcSlice->getTLayer());     // m_uiMaxDecPicBuffering has the space for the picture currently being decoded
     305  }
     306  else
     307  {
     308    m_iMaxRefPicNum = pcSlice->getVPS()->getMaxVpsDecPicBufferingMinus1( getCommonDecoderParams()->getOutputLayerSetIdx(), pcSlice->getLayerId(), pcSlice->getTLayer() ) + 1; // m_uiMaxDecPicBuffering has the space for the picture currently being decoded
     309  }
    286310#else
    287311  m_iMaxRefPicNum = pcSlice->getSPS()->getMaxDecPicBuffering(pcSlice->getTLayer());     // m_uiMaxDecPicBuffering has the space for the picture currently being decoded
Note: See TracChangeset for help on using the changeset viewer.