slomo gstreamer: gstreamer/ gstreamer/gst/
[email protected] Tue, 9 Dec 2008 07:45:51 -0800 (PST)
| Newsgroups | gmane.comp.video.gstreamer.cvs |
|---|---|
| Message-ID | <[email protected]> |
CVS Root: /cvs/gstreamer
Module: gstreamer
Changes by: slomo
Date: Tue Dec 09 2008 15:45:51 UTC
Log message:
* gst/gstutils.c: (gst_element_get_compatible_pad):
Check if the caps of the pads are compatible before returning
a pad and claiming it is compatible. This, among other things,
fixes a bug with gst-launch where an incompatible pad is chosen
and linking fails. Fixes bug #544003.
Modified files:
. : ChangeLog
gst : gstutils.c
Links:
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.4188&r2=1.4189
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstutils.c.diff?r1=1.189&r2=1.190
====Begin Diffs====
Index: ChangeLog
===================================================================
RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v
retrieving revision 1.4188
retrieving revision 1.4189
diff -u -d -r1.4188 -r1.4189
--- ChangeLog 9 Dec 2008 14:46:21 -0000 1.4188
+++ ChangeLog 9 Dec 2008 15:45:34 -0000 1.4189
@@ -1,5 +1,13 @@
2008-12-09 Sebastian Dröge <[email protected]>
+ * gst/gstutils.c: (gst_element_get_compatible_pad):
+ Check if the caps of the pads are compatible before returning
+ a pad and claiming it is compatible. This, among other things,
+ fixes a bug with gst-launch where an incompatible pad is chosen
+ and linking fails. Fixes bug #544003.
+
+2008-12-09 Sebastian Dröge <[email protected]>
* libs/gst/check/gstcheck.c: (gst_check_init):
Revert accidentially commited patch for bug #404631 which
tries to print a backtrace if a testcase is terminated by
Index: gstutils.c
RCS file: /cvs/gstreamer/gstreamer/gst/gstutils.c,v
retrieving revision 1.189
retrieving revision 1.190
diff -u -d -r1.189 -r1.190
--- gstutils.c 4 Nov 2008 13:56:37 -0000 1.189
+++ gstutils.c 9 Dec 2008 15:45:36 -0000 1.190
@@ -941,8 +941,6 @@
GstPad *foundpad = NULL;
gboolean done;
- /* FIXME check for caps compatibility */
-
g_return_val_if_fail (GST_IS_ELEMENT (element), NULL);
g_return_val_if_fail (GST_IS_PAD (pad), NULL);
@@ -972,21 +970,38 @@
peer = gst_pad_get_peer (current);
if (peer == NULL && gst_pad_can_link (pad, current)) {
+ GstCaps *temp, *temp2, *intersection;
- GST_CAT_DEBUG (GST_CAT_ELEMENT_PADS,
- "found existing unlinked pad %s:%s",
- GST_DEBUG_PAD_NAME (current));
+ /* Now check if the two pads' caps are compatible */
+ temp = gst_pad_get_caps (pad);
+ if (caps) {
+ intersection = gst_caps_intersect (temp, caps);
+ gst_caps_unref (temp);
+ } else {
+ intersection = temp;
+ }
- gst_iterator_free (pads);
+ temp = gst_pad_get_caps (current);
+ temp2 = gst_caps_intersect (temp, intersection);
+ gst_caps_unref (temp);
+ gst_caps_unref (intersection);
- return current;
- } else {
- GST_CAT_DEBUG (GST_CAT_ELEMENT_PADS, "unreffing pads");
+ intersection = temp2;
- gst_object_unref (current);
- if (peer)
- gst_object_unref (peer);
+ if (!gst_caps_is_empty (intersection)) {
+ GST_CAT_DEBUG (GST_CAT_ELEMENT_PADS,
+ "found existing unlinked compatible pad %s:%s",
+ GST_DEBUG_PAD_NAME (current));
+ gst_iterator_free (pads);
+ return current;
}
+ GST_CAT_DEBUG (GST_CAT_ELEMENT_PADS, "unreffing pads");
+ gst_object_unref (current);
+ if (peer)
+ gst_object_unref (peer);
break;
}
case GST_ITERATOR_DONE:
@@ -1145,8 +1160,8 @@
GstStaticPadTemplate *template = (GstStaticPadTemplate *) templates->data;
if (template->direction == GST_PAD_SRC) {
- if (gst_caps_is_always_compatible (gst_static_caps_get (&template->
- static_caps), caps))
+ if (gst_caps_is_always_compatible (gst_static_caps_get
+ (&template->static_caps), caps))
return TRUE;
}
templates = g_list_next (templates);
------------------------------------------------------------------------------
SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
The future of the web can't happen without you. Join us at MIX09 to help
pave the way to the Next Web now. Learn more and register at
http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/
_______________________________________________
gstreamer-cvs-verbose mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gstreamer-cvs-verbose