From: David S. <ds...@pd...> - 2004-04-01 00:40:39
|
CVS Root: /home/cvs/gstreamer Module: gstreamer Changes by: ds Date: Wed Mar 31 2004 16:40:38 PST Log message: * gst/gstbuffer.c: (gst_buffer_join): Add function gst_buffer_join() to eventually deprecate gst_buffer_merge(). (bug: #136408) * gst/gstbuffer.h: Modified files: . : ChangeLog gst : gstbuffer.c gstbuffer.h Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.375&r2=1.376 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstbuffer.c.diff?r1=1.83&r2=1.84 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstbuffer.h.diff?r1=1.71&r2=1.72 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /home/cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.375 retrieving revision 1.376 diff -u -d -r1.375 -r1.376 --- a/ChangeLog 31 Mar 2004 21:49:18 -0000 1.375 +++ b/ChangeLog 1 Apr 2004 00:40:25 -0000 1.376 @@ -1,5 +1,11 @@ 2004-03-31 David Schleef <ds...@sc...> + * gst/gstbuffer.c: (gst_buffer_join): Add function gst_buffer_join() + to eventually deprecate gst_buffer_merge(). (bug: #136408) + * gst/gstbuffer.h: + +2004-03-31 David Schleef <ds...@sc...> * gst/gstvalue.c: (gst_value_union_int_int_range), (gst_value_union_int_range_int_range), (gst_value_can_union), (gst_value_union), (_gst_value_initialize): Add some union Index: gstbuffer.c RCS file: /home/cvs/gstreamer/gstreamer/gst/gstbuffer.c,v retrieving revision 1.83 retrieving revision 1.84 diff -u -d -r1.83 -r1.84 --- a/gstbuffer.c 26 Mar 2004 03:46:16 -0000 1.83 +++ b/gstbuffer.c 1 Apr 2004 00:40:26 -0000 1.84 @@ -318,8 +318,11 @@ * buffers. The original source buffers will not be modified or * unref'd. * - * Internally is nothing more than a specialized gst_buffer_span(), - * so the same optimizations can occur. + * WARNING: Incorrect use of this function can lead to memory leaks. + * It is recommended to use gst_buffer_join() instead of this function. + * + * If the buffers point to contiguous areas of memory, the buffer + * is created without copying the data. * Returns: the new #GstBuffer that's the concatenation of the source buffers. */ @@ -335,6 +338,33 @@ } /** + * gst_buffer_join: + * @buf1: a first source #GstBuffer to merge. + * @buf2: the second source #GstBuffer to merge. + * Create a new buffer that is the concatenation of the two source + * buffers. The original buffers are unreferenced. + * Returns: the new #GstBuffer that's the concatenation of the source buffers. + */ +GstBuffer * +gst_buffer_join (GstBuffer * buf1, GstBuffer * buf2) +{ + GstBuffer *result; + /* we're just a specific case of the more general gst_buffer_span() */ + result = gst_buffer_span (buf1, 0, buf2, buf1->size + buf2->size); + gst_buffer_unref (buf1); + gst_buffer_unref (buf2); + return result; +} +/** * gst_buffer_is_span_fast: * @buf1: a first source #GstBuffer. * @buf2: the second source #GstBuffer. Index: gstbuffer.h RCS file: /home/cvs/gstreamer/gstreamer/gst/gstbuffer.h,v retrieving revision 1.71 retrieving revision 1.72 diff -u -d -r1.71 -r1.72 --- a/gstbuffer.h 15 Mar 2004 14:43:21 -0000 1.71 +++ b/gstbuffer.h 1 Apr 2004 00:40:26 -0000 1.72 @@ -138,6 +138,7 @@ /* merge, span, or append two buffers, intelligently */ GstBuffer* gst_buffer_merge (GstBuffer *buf1, GstBuffer *buf2); +GstBuffer* gst_buffer_join (GstBuffer *buf1, GstBuffer *buf2); gboolean gst_buffer_is_span_fast (GstBuffer *buf1, GstBuffer *buf2); GstBuffer* gst_buffer_span (GstBuffer *buf1, guint32 offset, GstBuffer *buf2, guint32 len); |