[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