"pipeline is prerolling" debug strategy?

Matt Pekar mpekar at raineyelectronics.com
Thu Aug 9 11:00:16 PDT 2012


I run this in response to user input:

void display_pipeline_in_chrome(GstElement *pipeline) {
const char* temp_filename = "gst_bin_graph_tmp";

char dot_command[1024];
char chrome_command[1024];

const char* DIR = getenv("GST_DEBUG_DUMP_DOT_DIR");
//GstDebugGraphDetails output_flags =
GstDebugGraphDetails(GST_DEBUG_GRAPH_SHOW_MEDIA_TYPE |
GST_DEBUG_GRAPH_SHOW_STATES | GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS);
GstDebugGraphDetails output_flags =
GstDebugGraphDetails(GST_DEBUG_GRAPH_SHOW_ALL);
GST_DEBUG_BIN_TO_DOT_FILE(GST_BIN(pipeline), output_flags, temp_filename);

snprintf(dot_command, sizeof(dot_command), "dot -Tpng %s/%s.dot -o
%s/%s.png", DIR, temp_filename, DIR, temp_filename);
snprintf(chrome_command, sizeof(chrome_command), "google-chrome %s/%s.png",
DIR, temp_filename);

system(dot_command);
system(chrome_command);
}

It displays the whole pipeline as an image in Chrome, using the Gstreamer
debug output from graphviz.

However, that usually isn't enough to tell what's wrong.  For example, I
recently had a pipeline along these lines:

appsrc ! ffmpegcolorspace ! theoraenc ! rtptheorapay ! udpsink

This pipeline looked fine in the graph output, so to debug it I used the
GST_DEBUG environment variable on each element in the pipeline, starting at
the top:

GST_DEBUG=appsrc:5
--kill and restart
GST_DEBUG=ffmpegcolorspace:5
--kill and restart
GST_DEBUG=theoraenc:5
--ahhh theoraenc is dropping buffers...

Doing this one step at a time let me discover which element was blocking.
 It turns out the problem was I wasn't timestamping the appsrc buffers, and
therefore theoraenc was just dropping them.

On Thu, Aug 9, 2012 at 12:38 PM, Eric Montellese <
eric.montellese at videon-central.com> wrote:

> Folks, in development I've run into various malformed or buggy pipelines
> that give this output:
>
> gst-launch  launch ! a ! pipeline
> Setting pipeline to PAUSED ...
> Pipeline is PREROLLING ...
>
> Generally I have debugged these issues through a mixture of brute force
> and intuition (looking for common sorts of problems, etc).
>
> But perhaps there is a better way to determine which element has held up
> the pipeline?  Some swanky debug command I'm totally unaware of that shows
> the buffers in-flight perhaps?
>
> Any advice?
>
> Thanks,
> Eric
>
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20120809/2cc435cc/attachment.html>


More information about the gstreamer-devel mailing list