From: <sl...@ke...> - 2008-05-13 07:11:14
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: slomo Date: Tue May 13 2008 07:11:19 UTC Log message: Patch by: Sjoerd Simons <sjoerd at luon dot net> * libs/gst/base/gstbasetransform.c: (gst_base_transform_buffer_alloc): Check the caps of the buffer returned by gst_pad_alloc_buffer() and fall back to default negotiation in the chain function if the caps are different from what was requested. Fixes bug #526768. Modified files: . : ChangeLog libs/gst/base : gstbasetransform.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.3845&r2=1.3846 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/libs/gst/base/gstbasetransform.c.diff?r1=1.113&r2=1.114 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.3845 retrieving revision 1.3846 diff -u -d -r1.3845 -r1.3846 --- ChangeLog 9 May 2008 20:48:21 -0000 1.3845 +++ ChangeLog 13 May 2008 07:11:03 -0000 1.3846 @@ -1,3 +1,13 @@ +2008-05-13 Sebastian Dröge <sl...@ci...> + + Patch by: Sjoerd Simons <sjoerd at luon dot net> + * libs/gst/base/gstbasetransform.c: + (gst_base_transform_buffer_alloc): + Check the caps of the buffer returned by gst_pad_alloc_buffer() and + fall back to default negotiation in the chain function if the caps + are different from what was requested. Fixes bug #526768. 2008-05-09 Tim-Philipp Müller <tim.muller at collabora co uk> * gst/gstsegment.c: Index: gstbasetransform.c RCS file: /cvs/gstreamer/gstreamer/libs/gst/base/gstbasetransform.c,v retrieving revision 1.113 retrieving revision 1.114 diff -u -d -r1.113 -r1.114 --- gstbasetransform.c 8 May 2008 05:55:34 -0000 1.113 +++ gstbasetransform.c 13 May 2008 07:11:05 -0000 1.114 @@ -1214,6 +1214,13 @@ && gst_pad_peer_accept_caps (trans->srcpad, caps)) { /* ...by seeing if the downstream elements can handle this */ res = gst_pad_alloc_buffer (trans->srcpad, offset, size, caps, buf); + if (res == GST_FLOW_OK + && !gst_caps_is_equal (caps, GST_BUFFER_CAPS (*buf))) { + /* In case downstream wants to see something different, ignore this + * buffer and leave it to the chain function to renegotiate */ + gst_buffer_replace (buf, NULL); + } } else { /* If not fall back on the default handler and let things be * renegotiated in the chain function */ |