After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 708222 - tsparse: Pushes unparsed data immediately on the srcpad
tsparse: Pushes unparsed data immediately on the srcpad
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
1.1.4
Other Linux
: Normal normal
: 1.2.1
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2013-09-17 10:37 UTC by Peter Maersk-Moller
Modified: 2013-09-30 08:41 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
mpegtsparse: Queue buffers until we have enough to know the caps (2.19 KB, patch)
2013-09-27 14:11 UTC, Sebastian Dröge (slomo)
committed Details | Review

Description Peter Maersk-Moller 2013-09-17 10:37:05 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.
Comment 1 Sebastian Dröge (slomo) 2013-09-27 14:01:45 UTC
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.
Comment 2 Sebastian Dröge (slomo) 2013-09-27 14:11:23 UTC
Created attachment 255933 [details] [review]
mpegtsparse: Queue buffers until we have enough to know the caps
Comment 3 Sebastian Dröge (slomo) 2013-09-28 11:15:50 UTC
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