[Bug 712605] New: h264parse: Broken conversion avc/au to byte-stream/nal

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Mon Nov 18 07:39:49 PST 2013


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

           Summary: h264parse: Broken conversion avc/au to byte-stream/nal
    Classification: Platform
           Product: GStreamer
           Version: 1.2.1
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: gst-plugins-bad
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: aurelien.zanelli at parrot.com
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---


Created an attachment (id=260140)
 --> (https://bugzilla.gnome.org/attachment.cgi?id=260140)
Sintel-720p broken conversion backtrace

I try to play Sintel-720p
(http://ftp.nluug.nl/pub/graphics/blender/demo/movies/Sintel.2010.720p.mkv)
using the following pipeline:

$ gst-launch-1.0 filesrc location=/mnt/nfs/Sintel.2010.720p.mkv ! matroskademux
! h264parse ! video/x-h264,stream-format=byte-stream,alignment=nal ! fakesink

and i get a SIGSEGV in h264parse (backtrace is attached).

The cause seems to be this block of code:
(from gst/videoparsers/gsth264parse.c:gst_h264_parse_handle_frame_packetized()
)

> while (parse_res == GST_H264_PARSER_OK) {
>   GST_DEBUG_OBJECT (h264parse, "AVC nal offset %d", nalu.offset + nalu.size);
>
>   /* either way, have a look at it */
>   gst_h264_parse_process_nal (h264parse, &nalu);
>
>   /* dispatch per NALU if needed */
>   if (h264parse->split_packetized) {
>     /* note we don't need to come up with a sub-buffer, since
>      * subsequent code only considers input buffer's metadata.
>      * Real data is either taken from input by baseclass or
>      * a replacement output buffer is provided anyway. */
>     gst_h264_parse_parse_frame (parse, frame);
>     ret = gst_base_parse_finish_frame (parse, frame, nl + nalu.size);
>     left -= nl + nalu.size;
>   }
> 
>   parse_res = gst_h264_parser_identify_nalu_avc (h264parse->nalparser,
>       map.data, nalu.offset + nalu.size, map.size, nl, &nalu);
> }

The first call of gst_base_parse_finish_frame() clear the frame->buffer field.
The second iteration causes the segfault by calling
gst_h264_parse_parse_frame() with frame->buffer = NULL.

At this moment, i'm not sure how to solve the problem,

-- 
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