"pipeline is prerolling" debug strategy?
Matt Pekar
mpekar at raineyelectronics.com
Thu Aug 9 13:23:14 PDT 2012
Something relatively simple that may help is a "buffers_received" integer
property that keeps track of how many buffers have passed through an
element. With that users could see which element the stream was halting
on. It could also help detect balance issues (say on a tee where one sink
is too slow), or to see where frames are being dropped.
On Thu, Aug 9, 2012 at 3:02 PM, Stefan Sauer <ensonic at hora-obscura.de>wrote:
> On 08/09/2012 08:00 PM, Matt Pekar wrote:
>
> 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);
>
> FYI: you can also use xdg-open to open it with a suitable viewer. Also
> using svg is sometimes better when zooming.
>
>
> system(dot_command);
> system(chrome_command);
> }
>
> It displays the whole pipeline as an image in Chrome, using the
> Gstreamer debug output from graphviz.
>
>
> Thing worth looking for in the graph are:
> * disconnected elements (obvious)
> * pads with uppercase 'F' (= flushing) (missing flush stop or activation)
> * not negotiated elements (some elements have a long list of caps, instead
> simple caps)
>
> If there are good ideas how, the graphs can be improved to highlight more
> issues, let us know.
>
> Stefan
>
>
> 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
>>
>>
>
>
> _______________________________________________
> gstreamer-devel mailing listgstreamer-devel at lists.freedesktop.orghttp://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
>
>
> _______________________________________________
> 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/212c203b/attachment-0001.html>
More information about the gstreamer-devel
mailing list