Incorrect AU Boundary Detection in Multi-Slice H.264 Content
Summary: In GStreamer 'bad' plugins, there is an issue with handling multi-slice H.264 content, specifically regarding the Access Unit (AU) boundary detection. This problem affects content that contains multiple slices within a single frame, resulting in incorrect processing and potential decoding errors.
Description: The issue was identified while processing multi-slice H.264 content from ITU's draft conformance suite for AVC (specifically, files from FM1_BT_B.zip and FM1_FT_E.zip). The parser failed to accurately identify AU boundaries in these multi-slice scenarios, leading to errors such as 'Error Macro Blocks' reported by the decoder.
Upon investigation, it was found that the current implementation in the gst_h264_parse_handle_frame function does not handle AU boundary detection optimally for multi-slice content. This results in improper frame parsing and subsequent decoding errors.
Steps to Reproduce:
Download and extract H.264 content from the following ITU links:
- https://www.itu.int/wftp3/av-arch/jvt-site/draft_conformance/AVCv1/FM1_BT_B.zip
- https://www.itu.int/wftp3/av-arch/jvt-site/draft_conformance/AVCv1/FM1_FT_E.zip
Play the extracted .264 files using a GStreamer pipeline that includes the relevant bad plugins for H.264 parsing and decoding. Observe the decoder output, noting any error macro blocks or related parsing issues.