[Bug 741263] videodecoder: implement caps query

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Sun Dec 14 03:19:18 PST 2014


https://bugzilla.gnome.org/show_bug.cgi?id=741263
  GStreamer | gst-plugins-base | unspecified

Sebastian Dröge (slomo) <slomo> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
 Attachment #292408|none                        |needs-work
             status|                            |

--- Comment #8 from Sebastian Dröge (slomo) <slomo at coaxion.net> 2014-12-14 11:19:16 UTC ---
Review of attachment 292408:
 --> (https://bugzilla.gnome.org/review?bug=741263&attachment=292408)

You probably want to do all the same for audio btw :)

::: gst-libs/gst/video/gstvideoutilsprivate.c
@@ +37,3 @@
+  gint i, j;
+
+  for (i = 0; i < gst_caps_get_size (templ_caps); i++) {

Put gst_caps_get_size() out of the loop

@@ +41,3 @@
+        gst_structure_get_name_id (gst_caps_get_structure (templ_caps, i));
+
+    for (j = 0; j < gst_caps_get_size (caps); j++) {

And here

@@ +91,3 @@
       gst_pad_get_pad_template_caps (sinkpad);
+  if (filter) {
+    GstCaps *our_src_caps = gst_pad_query_caps (srcpad, NULL);

This potentially reverses the query direction. E.g. querying the srcpad can
cause a query on the peer of the sinkpad... while a few lines below you also
query the peer of the srcpad. If you're unlucky this can lead to an infinite
loop of queries.

Do you mean gst_pad_get_current_caps() here? Or just use the template caps as
below? Why do you need to intersect with the srcpad caps at all? :)

@@ +100,3 @@
+    allowed =
+        gst_caps_intersect_full (peer_caps, our_src_caps,
+        GST_CAPS_INTERSECT_FIRST);

peer_query_caps() can return GST_CAPS_ANY if there is no peer and filter, so
you need to intersect with the template caps here at least.

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