[gstreamer-bugs] [Bug 407282] [decodebin2] autoplug-sort signal has GList ** parameter

GStreamer (bugzilla.gnome.org) bugzilla-daemon at bugzilla.gnome.org
Sat Mar 3 08:01:28 PST 2007


Do not reply to this via email (we are currently unable to handle email
responses and they get discarded).  You can add comments to this bug at
http://bugzilla.gnome.org/show_bug.cgi?id=407282

  GStreamer | gst-plugins-base | Ver: HEAD CVS


René Stadler changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |mail at renestadler.de




------- Comment #5 from René Stadler  2007-03-03 15:59 UTC -------
(In reply to comment #4)
...
> Unfortunately the above patch doesn't work though, because a _copy_ of the
> GValueArray will be passed to the callback. Only way to prevent this is to use
> G_TYPE_POINTER again, which defeats half of the purpose of the proposed change
> *sigh*.

I'm getting the impression that it's better to avoid the current design of the
autoplug-sort signal altogether.  I don't see the point of letting an app sort
the list of compatible factories: decodebin2 takes the list (which was possibly
mutated by a signal handler) and tries to create elements from it until it
finds one that actually has a sink pad, is able to switch to the READY state
and can be linked to the discovered pad.  Now I'm wondering: Doesn't this
succeed for the very first element factory most of the time?  How about doing
this instead:

Rename the autoplug-sort signal to autoplug-select (or something).  Keep the
caps and factory list/array as paramters, but make the signal return a factory
instead of a boolean.  Where autoplug-sort is emitted, emit autoplug-select
instead, with the caps and the factory list as before (except for the list
being const of course).  Try to plug using the returned factory (dismiss the
pad on a NULL return, like -sort does with a FALSE return).  On failure, remove
the failed factory from the list and emit the signal again (until a proper
element is found or the list is exhausted).


-- 
Configure bugmail: http://bugzilla.gnome.org/userprefs.cgi?tab=email




More information about the Gstreamer-bugs mailing list