Changeset 1278 in SHVCSoftware for branches/SHM-dev


Ignore:
Timestamp:
16 Jul 2015, 03:40:33 (9 years ago)
Author:
seregin
Message:

use right slice pointer after parameter set activation

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/SHM-dev/source/Lib/TLibDecoder/TDecTop.cpp

    r1275 r1278  
    13181318        UChar *buf = new UChar[len];
    13191319
    1320         UInt64 uiPos = (UInt64) m_apcSlicePilot->getPOC() * uiWidth * uiHeight * 3 / 2;
     1320        UInt64 uiPos = (UInt64) pcSlice->getPOC() * uiWidth * uiHeight * 3 / 2;
    13211321        if( is16bit )
    13221322        {
     
    14101410#endif
    14111411
    1412     if ( m_layerId == 0 && m_apcSlicePilot->getRapPicFlag() && getNoClrasOutputFlag() )
     1412    if ( m_layerId == 0 && pcSlice->getRapPicFlag() && getNoClrasOutputFlag() )
    14131413    {
    14141414      for (UInt i = 0; i < vps->getMaxLayers(); i++)
     
    14251425    m_pcPic->setCurrAuFlag( true );
    14261426
    1427     if( m_pcPic->getLayerId() > 0 && m_apcSlicePilot->isIDR() && !m_nonBaseIdrPresentFlag )
     1427    if( m_pcPic->getLayerId() > 0 && pcSlice->isIDR() && !m_nonBaseIdrPresentFlag )
    14281428    {
    14291429      // IDR picture with nuh_layer_id > 0 present
    14301430      m_nonBaseIdrPresentFlag = true;
    1431       m_nonBaseIdrType = (m_apcSlicePilot->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_W_RADL);
     1431      m_nonBaseIdrType = (pcSlice->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_W_RADL);
    14321432    }
    14331433    else
    14341434    {
    1435       if( m_apcSlicePilot->getNalUnitType() != NAL_UNIT_CODED_SLICE_IDR_W_RADL )
     1435      if( pcSlice->getNalUnitType() != NAL_UNIT_CODED_SLICE_IDR_W_RADL )
    14361436      {
    14371437        // Picture with nal_unit_type not equal IDR_W_RADL present
    14381438        m_picNonIdrWithRadlPresentFlag = true;
    14391439      }
    1440       if( m_apcSlicePilot->getNalUnitType() != NAL_UNIT_CODED_SLICE_IDR_N_LP )
     1440      if( pcSlice->getNalUnitType() != NAL_UNIT_CODED_SLICE_IDR_N_LP )
    14411441      {
    14421442        // Picture with nal_unit_type not equal IDR_N_LP present
     
    14471447    {
    14481448      m_checkPocRestrictionsForCurrAu = true;
    1449       m_pocResetIdcOrCurrAu = m_apcSlicePilot->getPocResetIdc();
     1449      m_pocResetIdcOrCurrAu = pcSlice->getPocResetIdc();
    14501450      if( m_pcPic->getLayerId() == 0 )
    14511451      {
    14521452        // Base layer picture is present
    14531453        m_baseLayerPicPresentFlag = true;
    1454         if( m_apcSlicePilot->isIRAP() )
     1454        if( pcSlice->isIRAP() )
    14551455        {
    14561456          // Base layer picture is IRAP
    14571457          m_baseLayerIrapFlag = true;
    14581458        }
    1459         if( m_apcSlicePilot->isIDR() )
     1459        if( pcSlice->isIDR() )
    14601460        {
    14611461          // Base layer picture is IDR
     
    14691469            and vps_base_layer_internal_flag is equal to 1, the value of poc_reset_idc shall not be equal to 2
    14701470            for any picture in the access unit. */
    1471             assert( m_apcSlicePilot->getPocResetIdc() != 2 );
     1471            assert( pcSlice->getPocResetIdc() != 2 );
    14721472          }
    14731473        }
     
    14771477    {
    14781478      // The value of poc_reset_idc of all coded pictures that are present in the bitstream in an access unit shall be the same.
    1479       assert( m_pocResetIdcOrCurrAu == m_apcSlicePilot->getPocResetIdc() );
     1479      assert( m_pocResetIdcOrCurrAu == pcSlice->getPocResetIdc() );
    14801480
    14811481      /* When the picture in an access unit with nuh_layer_id equal to 0 is an IRAP picture and vps_base_layer_internal_flag is equal to 1
    14821482      and there is at least one other picture in the same access unit that is not an IRAP picture,
    14831483      the value of poc_reset_idc shall be equal to 1 or 2 for all pictures in the access unit. */
    1484       if( m_baseLayerPicPresentFlag && m_baseLayerIrapFlag && !m_apcSlicePilot->isIRAP() && vps->getBaseLayerInternalFlag() )
    1485       {
    1486         assert( m_apcSlicePilot->getPocResetIdc() == 1 || m_apcSlicePilot->getPocResetIdc() == 2 );
     1484      if( m_baseLayerPicPresentFlag && m_baseLayerIrapFlag && !pcSlice->isIRAP() && vps->getBaseLayerInternalFlag() )
     1485      {
     1486        assert( pcSlice->getPocResetIdc() == 1 || pcSlice->getPocResetIdc() == 2 );
    14871487      }
    14881488
     
    14901490      vps_base_layer_internal_flag is equal to 1 and there is at least one non-IDR picture in the same access unit,
    14911491      the value of poc_reset_idc shall be equal to 2 for all pictures in the access unit. */
    1492       if( m_baseLayerPicPresentFlag && m_baseLayerIdrFlag && !m_apcSlicePilot->isIDR() && vps->getBaseLayerInternalFlag() )
    1493       {
    1494         assert( m_apcSlicePilot->getPocResetIdc() == 2 );
     1492      if( m_baseLayerPicPresentFlag && m_baseLayerIdrFlag && !pcSlice->isIDR() && vps->getBaseLayerInternalFlag() )
     1493      {
     1494        assert( pcSlice->getPocResetIdc() == 2 );
    14951495      }
    14961496
     
    15041504        ))
    15051505      {
    1506         assert( m_apcSlicePilot->getPocResetIdc() == 1 || m_apcSlicePilot->getPocResetIdc() == 2 );
     1506        assert( pcSlice->getPocResetIdc() == 1 || pcSlice->getPocResetIdc() == 2 );
    15071507      }
    15081508    }
Note: See TracChangeset for help on using the changeset viewer.