Changeset 380 in SHVCSoftware


Ignore:
Timestamp:
4 Sep 2013, 09:46:07 (11 years ago)
Author:
nokia
Message:

updated decoder random access in accordance with HM12.0 and fixed related SEI crash problem

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

Legend:

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

    r378 r380  
    4242
    4343#define SYNTAX_BYTES                     10      ///< number of bytes taken by syntaxes per 4x4 block [RefIdxL0(1byte), RefIdxL1(1byte), MVxL0(2bytes), MVyL0(2bytes), MVxL1(2bytes), MVyL1(2bytes)]
     44
     45#define HM12_RANDOM_ACCESS               1
     46#define RANDOM_ACCESS_SEI_FIX            1
    4447
    4548#if SVC_EXTENSION
  • branches/SHM-3.1-dev/source/Lib/TLibDecoder/TDecTop.cpp

    r377 r380  
    7777  m_pBLSyntaxFile = NULL;
    7878#endif
    79 
     79#if HM12_RANDOM_ACCESS
     80  m_prevSliceSkipped = false;
     81  m_skippedPOC = 0;
     82#endif
    8083}
    8184
     
    620623#endif
    621624
     625#if HM12_RANDOM_ACCESS
     626  // set POC for dependent slices in skipped pictures
     627  if(m_apcSlicePilot->getDependentSliceSegmentFlag() && m_prevSliceSkipped)
     628  {
     629    m_apcSlicePilot->setPOC(m_skippedPOC);
     630  }
     631#endif
     632
    622633  // Skip pictures due to random access
    623634  if (isRandomAccessSkipPicture(iSkipFrame, iPOCLastDisplay))
    624635  {
     636#if HM12_RANDOM_ACCESS
     637    m_prevSliceSkipped = true;
     638    m_skippedPOC = m_apcSlicePilot->getPOC();
     639#endif
    625640    return false;
    626641  }
     
    628643  if (isSkipPictureForBLA(iPOCLastDisplay))
    629644  {
     645#if HM12_RANDOM_ACCESS
     646    m_prevSliceSkipped = true;
     647    m_skippedPOC = m_apcSlicePilot->getPOC();
     648#endif
    630649    return false;
    631650  }
     651
     652#if HM12_RANDOM_ACCESS
     653  // clear previous slice skipped flag
     654  m_prevSliceSkipped = false;
     655#endif
    632656
    633657  // exit when a new picture is found
     
    11351159  if(nalUnitType == NAL_UNIT_SUFFIX_SEI)
    11361160  {
     1161#if RANDOM_ACCESS_SEI_FIX
     1162    if (m_prevSliceSkipped) // No need to decode SEI messages of a skipped access unit
     1163    {
     1164      return;
     1165    }
     1166#endif
    11371167#if M0043_LAYERS_PRESENT_SEI
    11381168    m_seiReader.parseSEImessage( bs, m_pcPic->getSEIs(), nalUnitType, m_parameterSetManagerDecoder[m_layerId].getActiveVPS(), m_parameterSetManagerDecoder[m_layerId].getActiveSPS() );
  • branches/SHM-3.1-dev/source/Lib/TLibDecoder/TDecTop.h

    r377 r380  
    107107  Bool                    m_bFirstSliceInSequence;
    108108#endif
     109#if HM12_RANDOM_ACCESS
     110  Bool                    m_prevSliceSkipped;
     111  Int                     m_skippedPOC;
     112#endif
    109113
    110114#if SVC_EXTENSION
Note: See TracChangeset for help on using the changeset viewer.