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

José Alburquerque jaalburquerque at cox.net
Sun Sep 9 04:01:22 PDT 2012


On Sep 9, 2012, at 4:19 AM, José Alburquerque <jaalburquerque at cox.net> wrote:

> 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.

Sorry, I'm just wrong here.  Though the C types are not available, having one from C code is possible because the plug-ins are created using the GType system.  Registering the wrapping functions for plug-ins is thus still vital upon initialization.

You're better off using C.  I hope I didn't give you false hopes.

-Jose

> 
> 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é
> 
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel



More information about the gstreamer-devel mailing list