GNOME Bugzilla – Bug 708222
tsparse: Pushes unparsed data immediately on the srcpad
Last modified: 2013-09-30 08:41:41 UTC
The rather standard pipeline shown later in this report results in a couple of warnings and report of an internal flow problem. I beleive the cause may be rooted in the mpegtsmuxer, but it me also be in other plugins. Here are the warnings reported: (gst-launch-1.0:14875): GStreamer-WARNING **: gstpad.c:3911:gst_pad_push_data:<mpegtsparse2-0:src> Got data flow before stream-start event (gst-launch-1.0:14875): GStreamer-WARNING **: gstpad.c:3916:gst_pad_push_data:<mpegtsparse2-0:src> Got data flow before segment event (gst-launch-1.0:14875): GStreamer-WARNING **: gstpad.c:3680:gst_pad_chain_data_unchecked:<queue4:sink> Got data flow before stream-start event (gst-launch-1.0:14875): GStreamer-WARNING **: gstpad.c:3685:gst_pad_chain_data_unchecked:<queue4:sink> Got data flow before segment event (gst-launch-1.0:14875): GStreamer-WARNING **: gstpad.c:3911:gst_pad_push_data:<queue4:src> Got data flow before stream-start event (gst-launch-1.0:14875): GStreamer-WARNING **: gstpad.c:3916:gst_pad_push_data:<queue4:src> Got data flow before segment event (gst-launch-1.0:14875): GStreamer-WARNING **: gstpad.c:3680:gst_pad_chain_data_unchecked:<tcpserversink0:sink> Got data flow before stream-start event (gst-launch-1.0:14875): GStreamer-WARNING **: gstpad.c:3685:gst_pad_chain_data_unchecked:<tcpserversink0:sink> Got data flow before segment event WARNING: from element /GstPipeline:pipeline0/GstTCPServerSink:tcpserversink0: Internal data flow problem. Additional debug info: gstbasesink.c(3264): gst_base_sink_chain_unlocked (): /GstPipeline:pipeline0/GstTCPServerSink:tcpserversink0: Received buffer without a new-segment. Assuming timestamps start from 0. The pipeline used is this (gstreamer version 1.1.4) #!/bin/sh RAWAUDIO='audio/x-raw, rate=(int)44100, channels=(int)2' ENCAUDIO='audio/mpeg,mpegversion=4, stream-format=adts' RAWVIDEO='video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)1/1' ENCVIDEO='video/x-h264, alignment=au, stream-format=byte-stream, profile=(string)main' /usr/local/bin/gst-launch-1.0 -v \ audiotestsrc is-live=true !\ queue !\ $RAWAUDIO !\ audioconvert !\ faac bitrate=128000 !\ $ENCAUDIO !\ queue !\ muxer. videotestsrc is-live=true !\ $RAWVIDEO !\ queue !\ x264enc tune=zerolatency bitrate=2000 !\ $ENCVIDEO !\ h264parse !\ queue !\ mpegtsmux name=muxer !\ tsparse !\ queue !\ tcpserversink host=0.0.0.0 port=5012 sync-method=2 The issue was first reported here http://lists.freedesktop.org/archives/gstreamer-devel/2013-September/042967.html and then commented by Tim-Philipp suggesting creating a bug report.
Problem here is that tsparse immediately pushes data as is out of it normal srcpad, even before it received enough TS packets to start parsing. And only after that it would set up caps and everything on the pad.
Created attachment 255933 [details] [review] mpegtsparse: Queue buffers until we have enough to know the caps
commit d7c7f54734d04f226e6b3524962a246144d0ffd2 Author: Sebastian Dröge <slomo@circular-chaos.org> Date: Fri Sep 27 16:10:54 2013 +0200 mpegtsparse: Queue buffers until we have enough to know the caps https://bugzilla.gnome.org/show_bug.cgi?id=708222