[Bug 698712] playbin: autoplug video decoder and sink based on caps features
GStreamer (bugzilla.gnome.org)
bugzilla at gnome.org
Mon Apr 29 02:56:42 PDT 2013
https://bugzilla.gnome.org/show_bug.cgi?id=698712
GStreamer | gst-plugins-base | git
Sebastian Dröge <slomo> changed:
What |Removed |Added
----------------------------------------------------------------------------
Attachment #242622|none |needs-work
status| |
--- Comment #50 from Sebastian Dröge <slomo at circular-chaos.org> 2013-04-29 09:56:36 UTC ---
Review of attachment 242622:
--> (https://bugzilla.gnome.org/review?bug=698712&attachment=242622)
::: gst/playback/gstplaybin2.c
@@ +3393,3 @@
+
+ if (!gst_caps_can_intersect (d_caps, s_caps))
+ continue;
Optimization idea: You can combine this with the structure_can_intersect() call
in the other loop
@@ +3446,3 @@
+ if (gst_caps_features_is_equal (d_features, s_features) &&
+ gst_structure_can_intersect (d_struct, s_struct))
+ n_common++;
Here you're counting the number of compatible GstStructure combinations of
these two elements. Not sure if that is the number we want to look at, e.g.
consider the following:
- decoder A has one structure per GstVideoFormat per GstCapsFeatures. Say it
supports 5 GstVideoFormats, and for each of these 3 GstCapsFeatures:
"EGLImage", "GLTextureUploadMeta", "VASurface". This gives you 15 structures
- decoder B supports the same GstCapsFeatures and GstVideoFormats, but has only
3 structures
Which one is better? Your algorithm would say A is better but I'd say that both
should be equivalent. I think what we should count here is (of all structures
that are compatible) the number of distinct caps features that are supported by
both. Which would be 3 in both cases of my example.
@@ +3574,2 @@
/* Check if we already have an audio/video sink and if this is the case
* put it as the first element of the array */
This here btw is part of the non-auto*sink sink selection I meant
--
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.
More information about the gstreamer-bugs
mailing list