Skip to content

Draft: h265parse: Use backlog to identify AU boundary

Daniel Morin requested to merge dmorin/gstreamer:improve_h265parse into main

This change synchronize h265parse with h264parse by using a backlog to identify AU boundary.

This change rely on slice header details to identify the first vcl nal.

Currently there's still a regressions on:

  • Fluster:JCT-VC-MV-HEVC test suite (7/9 new failures)
  • Fluster: JCT-VC-HEVC_V1 test suite, (1/143 new failures)

Know limitations: Since we rely on slice headers details to identify the first vcl nal we need to succeed at parsing the slice header. At the moment h265parser fail to parse sps for upper layer (nuh_layer_id > 0). More specifically we need a more complete implementation of Annexe F.

Referring to ITU-T Rec h.265, F.7.3.2.2.1 more logic is required to exact correctly sps_max_sub_layers_minus1 or sps_ext_or_max_sub_layers_minus1.

GstH265ParserResult
gst_h265_parse_sps (GstH265Parser * parser, GstH265NalUnit * nalu,
    GstH265SPS * sps, gboolean parse_vui_params)
{
...
  READ_UINT8 (&nr, sps->max_sub_layers_minus1, 3);
  CHECK_ALLOWED (sps->max_sub_layers_minus1, 0, 6);
}

I believe this issue is causing regression on JCT-VC-MV-HEVC

For JCT-VC-HEVC-V1 failure is on TILES_B_Cisco_1, but I haven't investigated the cause.

Merge request reports