[Bug 668627] New: [h264parse] conversion avc/au to byte-stream/au broken

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Tue Jan 24 17:00:34 PST 2012


https://bugzilla.gnome.org/show_bug.cgi?id=668627
  GStreamer | gst-plugins-bad | git

           Summary: [h264parse] conversion avc/au to byte-stream/au broken
    Classification: Platform
           Product: GStreamer
           Version: git
        OS/Version: All
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: gst-plugins-bad
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: jonas at hallerud.se
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---


Created an attachment (id=206046)
 --> (https://bugzilla.gnome.org/attachment.cgi?id=206046)
h264 stream in mp4 container that cannot be parsed properly

Conversion from packetized au aligned avc streams to au aligned byte streams is
broken.

* For avc, split_packetized is always set to TRUE with the comment: "if input
!= output, and input is avc, must split before anything else".
* avc packets are split in gst_h264_parse_chain and NALUs passed separately to
baseparse chain
* baseparse chain calls gst_h264_parse_check_valid_frame with one NALU from
packet
* check_valid_frame knows that it has a complete NALU and returns success
* NAL collection code is useless when input is packetized.
gst_h264_parse_collect_nal doesn't function and its return value is ignored in
check_valid_frame.
* baseparse think we have a full frame and pushes it. In reality we have one
NALU only.
* pushed "frame" *always* consist of one NALU. Regardless of negotiated
alignment (au/nal) we always get nal. src caps is lying which causes downstream
elements to fail.

The attached sample triggers these problems:

gst-launch -v filesrc location=output.mp4 ! qtdemux ! h264parse !
video/x-h264,stream-format=byte-stream,alignment=au ! fakesink

* result is nal aligned, not au
* many pushed buffers/nals lacks timestamps
* SPS/PPS from codec_data are injected before first IDR NALU (4th), in the
middle of first AU. According to spec, AU delimiter is always first NAL in AU
if present. SPS/PPS should go after it, before the two SEIs that reference the
SPS/PPS.

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list