Changeset 747 in SHVCSoftware for branches


Ignore:
Timestamp:
25 Apr 2014, 21:32:38 (11 years ago)
Author:
qualcomm
Message:

Implementation of adoption JCTVC_Q0177 related to EOS
MACRO: Q0177_EOS_CHECKS
Checks include:

  • LayerId of EOS NALU should be 0, gives warning if not and ignore the NAL.
  • An EOS NALU shall be the last NALU except an EOB NALU
  • After EOS, the next AU must be IRAP AU

Submitted by Hendry (fhendry@…)

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

Legend:

Unmodified
Added
Removed
  • branches/SHM-6-dev/source/Lib/TLibCommon/TypeDef.h

    r744 r747  
    5050
    5151#define Q0177_SPS_TEMP_NESTING_FIX       1      ///< JCTVC-Q0177; Fix the inference value of sps_temporal_id_nesting_flag when it is not present
     52#define Q0177_EOS_CHECKS                 1      ///< JCTVC-Q0177; Put checks on handling EOS
    5253#define Q0142_POC_LSB_NOT_PRESENT        1      ///< JCTVC-Q0142; Add constraint checking on the value of poc_reset_idc and poc_lsb_val
    5354#define Q0146_SSH_EXT_DATA_BIT           1      ///< JCTVC-Q0146; Bug-fix -- the SSH_EXT_DATA_BIT can have any value -- not required to be 1
  • branches/SHM-6-dev/source/Lib/TLibDecoder/TDecTop.cpp

    r740 r747  
    8585  m_isNoOutputPriorPics = false;
    8686#endif
     87#if Q0177_EOS_CHECKS
     88  m_isLastNALWasEos = false;
     89#endif
    8790#if NO_CLRAS_OUTPUT_FLAG
    8891  m_noClrasOutputFlag          = false;
     
    20762079#endif
    20772080      xDecodeVPS();
     2081#if Q0177_EOS_CHECKS
     2082      m_isLastNALWasEos = false;
     2083#endif
    20782084#if AVC_BASE
    20792085      if( m_parameterSetManagerDecoder.getPrefetchedVPS(0)->getAvcBaseLayerFlag() )
     
    21142120    case NAL_UNIT_PREFIX_SEI:
    21152121    case NAL_UNIT_SUFFIX_SEI:
     2122#if Q0177_EOS_CHECKS
     2123      if ( nalu.m_nalUnitType == NAL_UNIT_SUFFIX_SEI )
     2124      {
     2125        assert( m_isLastNALWasEos == false );
     2126      }
     2127#endif
    21162128      xDecodeSEI( nalu.m_Bitstream, nalu.m_nalUnitType );
    21172129      return false;
     
    21332145    case NAL_UNIT_CODED_SLICE_RASL_N:
    21342146    case NAL_UNIT_CODED_SLICE_RASL_R:
     2147#if Q0177_EOS_CHECKS
     2148      if (nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_TRAIL_R || nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_TRAIL_N ||
     2149          nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_TSA_R || nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_TSA_N ||
     2150          nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_STSA_R || nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_STSA_N ||
     2151          nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_RADL_R || nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_RADL_N ||
     2152          nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_RASL_R || nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_RASL_N )
     2153      {
     2154        assert( m_isLastNALWasEos == false );
     2155      }
     2156      else
     2157      {
     2158        m_isLastNALWasEos = false;
     2159      }
     2160#endif
    21352161#if SVC_EXTENSION
    21362162      return xDecodeSlice(nalu, iSkipFrame, iPOCLastDisplay, curLayerId, bNewPOC);
     
    21412167     
    21422168    case NAL_UNIT_EOS:
     2169#if Q0177_EOS_CHECKS
     2170      assert( m_isLastNALWasEos == false );
     2171      //Check layer id of the nalu. if it is not 0, give a warning message and just return without doing anything.
     2172      if (nalu.m_layerId > 0)
     2173      {
     2174        printf( "\nThis bitstream has EOS with non-zero layer id.\n" );
     2175        return false;
     2176      }
     2177      m_isLastNALWasEos = true;
     2178#endif
    21432179      m_associatedIRAPType = NAL_UNIT_INVALID;
    21442180      m_pocCRA = 0;
     
    21662202     
    21672203    case NAL_UNIT_FILLER_DATA:
     2204#if Q0177_EOS_CHECKS
     2205      assert( m_isLastNALWasEos == false );
     2206#endif
    21682207      return false;
    21692208     
  • branches/SHM-6-dev/source/Lib/TLibDecoder/TDecTop.h

    r711 r747  
    162162  Bool                    m_craNoRaslOutputFlag;    //value of variable NoRaslOutputFlag of the last CRA pic
    163163#endif
     164#if Q0177_EOS_CHECKS
     165  Bool                    m_isLastNALWasEos;
     166#endif
    164167
    165168#if SVC_EXTENSION
Note: See TracChangeset for help on using the changeset viewer.