[v 0.10] Gst::init() is slow

José Alburquerque jaalburquerque at cox.net
Sun Sep 9 01:19:31 PDT 2012


On Sun, 2012-09-09 at 09:46 +0300, Jiergir Ogoerg wrote:
> Thanks,
> To my desktop app startup time is critical, so, if I switch to the Gst
> C interface do you think the gst_init() would never take longer than
> say 200 milliseconds? Or is it nonetheless possible for it to take
> much longer like over 1-2 seconds in some cases?

Actually, I think I spoke too soon in my last post.

I was just thinking things through more thoroughly and since plug-in
types are not accessible in C.  It may be possible to register the
wrapping functions for these plug-in types later (when they are
constructed) and not at startup (in Gst::init()) since it is not
possible to have these plug-in types from some C code and then try to
wrap them in a C++ wrapper which is why we go through the process of
loading the plug-ins and registering the wrapping functions in the first
place.  It may not even be necessary to register wrapping functions for
these plug-in types.

If the above is so, startup time (Gst::init()) will probably never be
more than the 100ms you mentioned.

I'll be looking into this this week at the end of which a new release
should be out.  If it this is doable, I'll include it in that release.

In the meanwhile, however, I'm sure that using C will never have such a
slow start-up time.  gst_init() does not load all the possible plug-ins
as gstreamermm does right now.
> 
> 
> On Sun, Sep 9, 2012 at 7:37 AM, José Alburquerque
> <jaalburquerque at cox.net> wrote:
>         On Sat, 2012-09-08 at 13:19 +0300, Jiergir Ogoerg wrote:
>         > Hi,
>         > Gst::init() takes like 100+ ms, on rare occasions it takes
>         even
>         > longer, like over 2-4 seconds. Is it normal?
>         
>         
>         Probably.  The reason is that Gst::init() not only initializes
>         GStreamer, it also initializes glibmm (which it relies on) and
>         registers
>         methods that wrap C types to correct C++ types for all the
>         GStreamer
>         GObject and GstMiniObject derived types and all the GStreamer
>         plug-in
>         types that gstreamermm makes available to be used in a C++
>         way.  In the
>         process, it must load all the plug-ins that gstreamermm makes
>         available
>         (this is probably the most time consuming part though only for
>         the
>         execution for which the plug-ins have not been loaded; the
>         rest of the
>         executions wont experience so much a delay).  We know of no
>         other way to
>         ensure that the C objects handled are correctly differentiated
>         and
>         treated as appropriate C++ classes.
>         
>         >
>         > To combat this I do Gst::init() in another pthread for my
>         gui app to
>         > show up instantly as usually.
>         >
>         > Using Ubuntu 12.04 amd64.
>         > Intel Core i5.
>         
>         > _______________________________________________
>         > gstreamer-devel mailing list
>         > gstreamer-devel at lists.freedesktop.org
>         >
>         http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>         
>         
>         --
>         José
>         
>         _______________________________________________
>         gstreamer-devel mailing list
>         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

-- 
José



More information about the gstreamer-devel mailing list