﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
1334	Reference decoder sometimes skips RADLs	jackh		"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();
  }
}}}"	defect	new	minor		HM	HM-16.1			ksuehring davidf karlsharman jct-vc@…
