"pipeline is prerolling" debug strategy?

Stefan Sauer ensonic at hora-obscura.de
Fri Aug 10 01:05:13 PDT 2012


On 08/09/2012 10:23 PM, Matt Pekar wrote:
> 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.

For that you can use gst-tracelib.
http://cgit.freedesktop.org/~ensonic/gst-tracelib/
<http://cgit.freedesktop.org/%7Eensonic/gst-tracelib/>

Stefan

>
> On Thu, Aug 9, 2012 at 3:02 PM, Stefan Sauer <ensonic at hora-obscura.de
> <mailto: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
>>     <mailto: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
>>         <mailto:gstreamer-devel at lists.freedesktop.org>
>>         http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>
>>
>>
>>
>>     _______________________________________________
>>     gstreamer-devel mailing list
>>     gstreamer-devel at lists.freedesktop.org <mailto:gstreamer-devel at lists.freedesktop.org>
>>     http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
>
>     _______________________________________________
>     gstreamer-devel mailing list
>     gstreamer-devel at lists.freedesktop.org
>     <mailto:gstreamer-devel at lists.freedesktop.org>
>     http://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/20120810/2d3d3d05/attachment.html>


More information about the gstreamer-devel mailing list