Opened 3 years ago

Last modified 19 months ago

#1334 new defect

Reference decoder sometimes skips RADLs

Reported by: jackh Owned by:
Priority: minor Milestone:
Component: HM Version: HM-16.1
Keywords: Cc: ksuehring, davidf, karlsharman, jct-vc@…

Description

This ticket is related to #1333.

TDecTop::xDecodeSlice() contains the following section of code:

  // exit when a new picture is found
  if (!m_apcSlicePilot->getDependentSliceSegmentFlag() && (m_apcSlicePilot->getSliceCurStartCtuTsAddr() == 0 && !m_bFirstSliceInPicture) )
  {
    if (m_prevPOC >= m_pocRandomAccess)
    {
      m_prevPOC = m_apcSlicePilot->getPOC();
#if ENC_DEC_TRACE
      //rewind the trace counter since we didn't actually decode the slice
      g_nSymbolCounter = originalSymbolCount;
#endif
      return true;
    }
    m_prevPOC = m_apcSlicePilot->getPOC();
  }

The line if (m_prevPOC >= m_pocRandomAccess) doesn't discriminate between RASLs and RADLs, so can lead to RADLs being skipped in error. I don't think there's any need for this conditional, as RASLs will be skipped by the if statement just above which calls isRandomAccessSkipPicture(). I would therefore suggest that the above section of code be changed to:

  // exit when a new picture is found
  if (!m_apcSlicePilot->getDependentSliceSegmentFlag() && (m_apcSlicePilot->getSliceCurStartCtuTsAddr() == 0 && !m_bFirstSliceInPicture) )
  {
    m_prevPOC = m_apcSlicePilot->getPOC();
#if ENC_DEC_TRACE
    //rewind the trace counter since we didn't actually decode the slice
    g_nSymbolCounter = originalSymbolCount;
#endif
    return true;
    m_prevPOC = m_apcSlicePilot->getPOC();
  }

Change History (9)

comment:1 Changed 3 years ago by DefaultCC Plugin

  • Cc ksuehring davidf karlsharman jct-vc@… added

comment:2 Changed 3 years ago by jackh

Sorry, that should be:

// exit when a new picture is found
  if (!m_apcSlicePilot->getDependentSliceSegmentFlag() && (m_apcSlicePilot->getSliceCurStartCtuTsAddr() == 0 && !m_bFirstSliceInPicture) )
  {
    m_prevPOC = m_apcSlicePilot->getPOC();
#if ENC_DEC_TRACE
    //rewind the trace counter since we didn't actually decode the slice
    g_nSymbolCounter = originalSymbolCount;
#endif
    return true;
  }

comment:3 Changed 3 years ago by ksuehring

  • Milestone changed from HM-16.2 to HM-17.0

comment:4 Changed 3 years ago by ksuehring

  • Milestone changed from HM-16.3 to HM-next

comment:5 Changed 3 years ago by ksuehring

  • Milestone changed from HM-16.4 to HM-next

comment:6 Changed 3 years ago by ksuehring

  • Milestone changed from HM-next to HM-16.5

comment:7 Changed 2 years ago by ksuehring

  • Milestone changed from HM-16.5 to HM-next

comment:8 Changed 2 years ago by ksuehring

  • Milestone changed from HM-16.6 to HM-16.7

comment:9 Changed 19 months ago by ksuehring

  • Milestone HM-16.7 deleted
Note: See TracTickets for help on using tickets.

This list contains all users that will be notified about changes made to this ticket.

These roles will be notified: Reporter, Owner, Subscriber, Participant

  • David Flynn(Subscriber, Always)
  • Jack Haughton(Reporter, Participant)
  • jct-vc@…(Subscriber)
  • Karl Sharman(Subscriber, Always)
  • Karsten Suehring(Subscriber, Participant, Always)