gstbuffer.h   gstbuffer.h 
skipping to change at line 40 skipping to change at line 40
G_BEGIN_DECLS G_BEGIN_DECLS
typedef struct _GstBuffer GstBuffer; typedef struct _GstBuffer GstBuffer;
typedef struct _GstBufferClass GstBufferClass; typedef struct _GstBufferClass GstBufferClass;
/** /**
* GST_BUFFER_TRACE_NAME: * GST_BUFFER_TRACE_NAME:
* *
* The name used for tracing memory allocations. * The name used for tracing memory allocations.
*/ */
#define GST_BUFFER_TRACE_NAME "GstBuffer" #define GST_BUFFER_TRACE_NAME "GstBuffer"
#define GST_TYPE_BUFFER (gst_buffer_get_type ()) #define GST_TYPE_BUFFER (gst_buffer_get_type())
#define GST_IS_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_BUFFER)) #define GST_IS_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_BUFFER))
#define GST_IS_BUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE (( klass), GST_TYPE_BUFFER)) #define GST_IS_BUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE (( klass), GST_TYPE_BUFFER))
#define GST_BUFFER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_BUFFER, GstBufferClass)) #define GST_BUFFER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_BUFFER, GstBufferClass))
#define GST_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_BUFFER, GstBuffer)) #define GST_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_BUFFER, GstBuffer))
#define GST_BUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST (( klass), GST_TYPE_BUFFER, GstBufferClass)) #define GST_BUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST (( klass), GST_TYPE_BUFFER, GstBufferClass))
#define GST_BUFFER_CAST(obj) ((GstBuffer *)(obj)) #define GST_BUFFER_CAST(obj) ((GstBuffer *)(obj))
/** /**
* GST_BUFFER_FLAGS: * GST_BUFFER_FLAGS:
* @buf: a #GstBuffer. * @buf: a #GstBuffer.
skipping to change at line 88 skipping to change at line 88
* Clears a buffer flag. * Clears a buffer flag.
*/ */
#define GST_BUFFER_FLAG_UNSET(buf,flag) GST_MINI_OBJECT_FLAG_UNSET (buf, flag) #define GST_BUFFER_FLAG_UNSET(buf,flag) GST_MINI_OBJECT_FLAG_UNSET (buf, flag)
/** /**
* GST_BUFFER_DATA: * GST_BUFFER_DATA:
* @buf: a #GstBuffer. * @buf: a #GstBuffer.
* *
* A pointer to the data element of this buffer. * A pointer to the data element of this buffer.
*/ */
#define GST_BUFFER_DATA(buf) (GST_BUFFER_CAST(buf)->data) #define GST_BUFFER_DATA(buf) (GST_BUFFER_CAST(buf)->data )
/** /**
* GST_BUFFER_SIZE: * GST_BUFFER_SIZE:
* @buf: a #GstBuffer. * @buf: a #GstBuffer.
* *
* The size in bytes of the data in this buffer. * The size in bytes of the data in this buffer.
*/ */
#define GST_BUFFER_SIZE(buf) (GST_BUFFER_CAST(buf)->size) #define GST_BUFFER_SIZE(buf) (GST_BUFFER_CAST(buf)->size )
/** /**
* GST_BUFFER_TIMESTAMP: * GST_BUFFER_TIMESTAMP:
* @buf: a #GstBuffer.: * @buf: a #GstBuffer.:
* *
* The timestamp in nanoseconds (as a #GstClockTime) of the data in the buf fer. * The timestamp in nanoseconds (as a #GstClockTime) of the data in the buf fer.
* Value will be %GST_CLOCK_TIME_NONE if the timestamp is unknown. * Value will be %GST_CLOCK_TIME_NONE if the timestamp is unknown.
* *
*/ */
#define GST_BUFFER_TIMESTAMP(buf) (GST_BUFFER_CAST(buf)->times tamp) #define GST_BUFFER_TIMESTAMP(buf) (GST_BUFFER_CAST(buf)->time stamp)
/** /**
* GST_BUFFER_DURATION: * GST_BUFFER_DURATION:
* @buf: a #GstBuffer. * @buf: a #GstBuffer.
* *
* The duration in nanoseconds (as a #GstClockTime) of the data in the buff er. * The duration in nanoseconds (as a #GstClockTime) of the data in the buff er.
* Value will be %GST_CLOCK_TIME_NONE if the duration is unknown. * Value will be %GST_CLOCK_TIME_NONE if the duration is unknown.
*/ */
#define GST_BUFFER_DURATION(buf) (GST_BUFFER_CAST(buf)->durat ion) #define GST_BUFFER_DURATION(buf) (GST_BUFFER_CAST(buf)->dura tion)
/** /**
* GST_BUFFER_CAPS: * GST_BUFFER_CAPS:
* @buf: a #GstBuffer. * @buf: a #GstBuffer.
* *
* The caps for this buffer. * The caps for this buffer.
*/ */
#define GST_BUFFER_CAPS(buf) (GST_BUFFER_CAST(buf)->caps) #define GST_BUFFER_CAPS(buf) (GST_BUFFER_CAST(buf)->caps )
/** /**
* GST_BUFFER_OFFSET: * GST_BUFFER_OFFSET:
* @buf: a #GstBuffer. * @buf: a #GstBuffer.
* *
* The offset in the source file of the beginning of this buffer. * The offset in the source file of the beginning of this buffer.
*/ */
#define GST_BUFFER_OFFSET(buf) (GST_BUFFER_CAST(buf)->offse t) #define GST_BUFFER_OFFSET(buf) (GST_BUFFER_CAST(buf)->offs et)
/** /**
* GST_BUFFER_OFFSET_END: * GST_BUFFER_OFFSET_END:
* @buf: a #GstBuffer. * @buf: a #GstBuffer.
* *
* The offset in the source file of the end of this buffer. * The offset in the source file of the end of this buffer.
*/ */
#define GST_BUFFER_OFFSET_END(buf) (GST_BUFFER_CAST(buf)->offse t_end) #define GST_BUFFER_OFFSET_END(buf) (GST_BUFFER_CAST(buf)->offs et_end)
/** /**
* GST_BUFFER_MALLOCDATA: * GST_BUFFER_MALLOCDATA:
* @buf: a #GstBuffer. * @buf: a #GstBuffer.
* *
* A pointer to any data allocated for this buffer using g_malloc(). If thi s is * A pointer to any data allocated for this buffer using g_malloc(). If thi s is
* non-NULL, this memory will be freed at the end of the buffer's lifecycle * non-NULL, this memory will be freed at the end of the buffer's lifecycle
* (i.e. when its refcount becomes zero). * (i.e. when its refcount becomes zero).
*/ */
#define GST_BUFFER_MALLOCDATA(buf) (GST_BUFFER_CAST(buf)->mallo c_data) #define GST_BUFFER_MALLOCDATA(buf) (GST_BUFFER_CAST(buf)->mall oc_data)
/** /**
* GST_BUFFER_FREE_FUNC: * GST_BUFFER_FREE_FUNC:
* @buf: a #GstBuffer. * @buf: a #GstBuffer.
* *
* A pointer to a function that will be called on the buffer's malloc_data when * A pointer to a function that will be called on the buffer's malloc_data when
* this buffer is finalized. Defaults to g_free(). * this buffer is finalized. Defaults to g_free().
* *
* Note that the free function only affects the buffer's malloc_data; if th e * Note that the free function only affects the buffer's malloc_data; if th e
* buffer's malloc_data is %NULL, the function will not be called. * buffer's malloc_data is %NULL, the function will not be called.
* *
* Since: 0.10.22 * Since: 0.10.22
*/ */
#define GST_BUFFER_FREE_FUNC(buf) (GST_BUFFER_CAST(buf)->free_ func) #define GST_BUFFER_FREE_FUNC(buf) (GST_BUFFER_CAST(buf)->free _func)
/** /**
* GST_BUFFER_OFFSET_NONE: * GST_BUFFER_OFFSET_NONE:
* *
* Constant for no-offset return results. * Constant for no-offset return results.
*/ */
#define GST_BUFFER_OFFSET_NONE ((guint64)-1) #define GST_BUFFER_OFFSET_NONE ((guint64)-1)
/** /**
* GST_BUFFER_DURATION_IS_VALID: * GST_BUFFER_DURATION_IS_VALID:
* @buffer: a #GstBuffer * @buffer: a #GstBuffer
* *
* Tests if the duration is known. * Tests if the duration is known.
*/ */
#define GST_BUFFER_DURATION_IS_VALID(buffer) (GST_CLOCK_TIME_IS_VALID (GS T_BUFFER_DURATION (buffer))) #define GST_BUFFER_DURATION_IS_VALID(buffer) (GST_CLOCK_TIME_IS_VALID (G ST_BUFFER_DURATION (buffer)))
/** /**
* GST_BUFFER_TIMESTAMP_IS_VALID: * GST_BUFFER_TIMESTAMP_IS_VALID:
* @buffer: a #GstBuffer * @buffer: a #GstBuffer
* *
* Tests if the timestamp is known. * Tests if the timestamp is known.
*/ */
#define GST_BUFFER_TIMESTAMP_IS_VALID(buffer) (GST_CLOCK_TIME_IS_VALID (GS T_BUFFER_TIMESTAMP (buffer))) #define GST_BUFFER_TIMESTAMP_IS_VALID(buffer) (GST_CLOCK_TIME_IS_VALID (G ST_BUFFER_TIMESTAMP (buffer)))
/** /**
* GST_BUFFER_OFFSET_IS_VALID: * GST_BUFFER_OFFSET_IS_VALID:
* @buffer: a #GstBuffer * @buffer: a #GstBuffer
* *
* Tests if the start offset is known. * Tests if the start offset is known.
*/ */
#define GST_BUFFER_OFFSET_IS_VALID(buffer) (GST_BUFFER_OFFSET (buffer) != GST_BUFFER_OFFSET_NONE) #define GST_BUFFER_OFFSET_IS_VALID(buffer) (GST_BUFFER_OFFSET (buffer) != GST_BUFFER_OFFSET_NONE)
/** /**
* GST_BUFFER_OFFSET_END_IS_VALID: * GST_BUFFER_OFFSET_END_IS_VALID:
* @buffer: a #GstBuffer * @buffer: a #GstBuffer
* *
* Tests if the end offset is known. * Tests if the end offset is known.
*/ */
#define GST_BUFFER_OFFSET_END_IS_VALID(buffer) (GST_BUFFER_OFFSET_END (buff er) != GST_BUFFER_OFFSET_NONE) #define GST_BUFFER_OFFSET_END_IS_VALID(buffer) (GST_BUFFER_OFFSET_END (buf fer) != GST_BUFFER_OFFSET_NONE)
/** /**
* GST_BUFFER_IS_DISCONT: * GST_BUFFER_IS_DISCONT:
* @buffer: a #GstBuffer * @buffer: a #GstBuffer
* *
* Tests if the buffer marks a discontinuity in the stream. * Tests if the buffer marks a discontinuity in the stream.
* *
* Since: 0.10.9 * Since: 0.10.9
*/ */
#define GST_BUFFER_IS_DISCONT(buffer) (GST_BUFFER_FLAG_IS_SET (buffer, GST _BUFFER_FLAG_DISCONT)) #define GST_BUFFER_IS_DISCONT(buffer) (GST_BUFFER_FLAG_IS_SET (buffer, GS T_BUFFER_FLAG_DISCONT))
/** /**
* GstBufferFlag: * GstBufferFlag:
* @GST_BUFFER_FLAG_READONLY: the buffer is read-only. This means the data of * @GST_BUFFER_FLAG_READONLY: the buffer is read-only. This means the data of
* the buffer should not be modified. The metadata might still be modified. * the buffer should not be modified. The metadata might still be modified.
* @GST_BUFFER_FLAG_PREROLL: the buffer is part of a preroll and should not be * @GST_BUFFER_FLAG_PREROLL: the buffer is part of a preroll and should not be
* displayed. * displayed.
* @GST_BUFFER_FLAG_DISCONT: the buffer marks a discontinuity in the stream . * @GST_BUFFER_FLAG_DISCONT: the buffer marks a discontinuity in the stream .
* This typically occurs after a seek or a dropped buffer from a live or * This typically occurs after a seek or a dropped buffer from a live or
* network source. * network source.
* @GST_BUFFER_FLAG_IN_CAPS: the buffer has been added as a field in a #Gst Caps. * @GST_BUFFER_FLAG_IN_CAPS: the buffer has been added as a field in a #Gst Caps.
* @GST_BUFFER_FLAG_GAP: the buffer has been created to fill a gap in the * @GST_BUFFER_FLAG_GAP: the buffer has been created to fill a gap in the
* stream and contains media neutral data (elements can switch to optimized code * stream and contains media neutral data (elements can switch to optimized code
* path that ignores the buffer content). * path that ignores the buffer content).
* @GST_BUFFER_FLAG_DELTA_UNIT: this unit cannot be decoded independently. * @GST_BUFFER_FLAG_DELTA_UNIT: this unit cannot be decoded independently.
* @GST_BUFFER_FLAG_MEDIA1: a flag whose use is specific to the caps of the * @GST_BUFFER_FLAG_MEDIA1: a flag whose use is specific to the caps of the
buffer. buffer. Since: 0.10.23.
* Since: 0.10.23 * @GST_BUFFER_FLAG_MEDIA2: a flag whose use is specific to the caps of the
* @GST_BUFFER_FLAG_MEDIA2: a flag whose use is specific to the caps of the buffer. Since: 0.10.23.
buffer. * @GST_BUFFER_FLAG_MEDIA3: a flag whose use is specific to the caps of the
* Since: 0.10.23 buffer. Since: 0.10.23.
* @GST_BUFFER_FLAG_MEDIA3: a flag whose use is specific to the caps of the
buffer.
* Since: 0.10.23
* @GST_BUFFER_FLAG_LAST: additional flags can be added starting from this flag. * @GST_BUFFER_FLAG_LAST: additional flags can be added starting from this flag.
* *
* A set of buffer flags used to describe properties of a #GstBuffer. * A set of buffer flags used to describe properties of a #GstBuffer.
*/ */
typedef enum { typedef enum {
GST_BUFFER_FLAG_READONLY = GST_MINI_OBJECT_FLAG_READONLY, GST_BUFFER_FLAG_READONLY = GST_MINI_OBJECT_FLAG_READONLY,
GST_BUFFER_FLAG_PREROLL = (GST_MINI_OBJECT_FLAG_LAST << 0), GST_BUFFER_FLAG_PREROLL = (GST_MINI_OBJECT_FLAG_LAST << 0),
GST_BUFFER_FLAG_DISCONT = (GST_MINI_OBJECT_FLAG_LAST << 1), GST_BUFFER_FLAG_DISCONT = (GST_MINI_OBJECT_FLAG_LAST << 1),
GST_BUFFER_FLAG_IN_CAPS = (GST_MINI_OBJECT_FLAG_LAST << 2), GST_BUFFER_FLAG_IN_CAPS = (GST_MINI_OBJECT_FLAG_LAST << 2),
GST_BUFFER_FLAG_GAP = (GST_MINI_OBJECT_FLAG_LAST << 3), GST_BUFFER_FLAG_GAP = (GST_MINI_OBJECT_FLAG_LAST << 3),
skipping to change at line 260 skipping to change at line 257
* For video frames, this is the frame number of this buffer. * For video frames, this is the frame number of this buffer.
* For audio samples, this is the offset of the first sample in this bu ffer. * For audio samples, this is the offset of the first sample in this bu ffer.
* For file data or compressed data this is the byte offset of the firs t * For file data or compressed data this is the byte offset of the firs t
* byte in this buffer. * byte in this buffer.
* @offset_end: the last offset contained in this buffer. It has the same * @offset_end: the last offset contained in this buffer. It has the same
* format as @offset. * format as @offset.
* @malloc_data: a pointer to the allocated memory associated with this buf fer. * @malloc_data: a pointer to the allocated memory associated with this buf fer.
* When the buffer is freed, this data will freed with @free_func. * When the buffer is freed, this data will freed with @free_func.
* @free_func: a custom function that will be called with @malloc_data, def aults * @free_func: a custom function that will be called with @malloc_data, def aults
* to g_free(). Since 0.10.22. * to g_free(). Since 0.10.22.
* @parent: the parent buffer if this is a subbuffer. Since 0.10.26.
* *
* The structure of a #GstBuffer. Use the associated macros to access the p ublic * The structure of a #GstBuffer. Use the associated macros to access the p ublic
* variables. * variables.
*/ */
struct _GstBuffer { struct _GstBuffer {
GstMiniObject mini_object; GstMiniObject mini_object;
/*< public >*/ /* with COW */ /*< public >*/ /* with COW */
/* pointer to data and its size */ /* pointer to data and its size */
guint8 *data; guint8 *data;
guint size; guint size;
/* timestamp */ /* timestamp */
GstClockTime timestamp; GstClockTime timestamp;
GstClockTime duration; GstClockTime duration;
/* the media type of this buffer */ /* the media type of this buffer */
GstCaps *caps; GstCaps *caps;
/* media specific offset */ /* media specific offset */
guint64 offset; guint64 offset;
guint64 offset_end; guint64 offset_end;
guint8 *malloc_data; guint8 *malloc_data;
/* ABI Added */
GFreeFunc free_func; GFreeFunc free_func;
GstBuffer *parent;
/*< private >*/ /*< private >*/
gpointer _gst_reserved[GST_PADDING - 1]; gpointer _gst_reserved[GST_PADDING - 2];
}; };
struct _GstBufferClass { struct _GstBufferClass {
GstMiniObjectClass mini_object_class; GstMiniObjectClass mini_object_class;
}; };
GType gst_buffer_get_type (void); GType gst_buffer_get_type (void);
/* allocation */ /* allocation */
GstBuffer * gst_buffer_new (void); GstBuffer * gst_buffer_new (void);
skipping to change at line 315 skipping to change at line 315
* @data: The data (a #guint8 *) to set on the buffer. * @data: The data (a #guint8 *) to set on the buffer.
* @size: The size (in bytes, as a #guint) of the data being set. * @size: The size (in bytes, as a #guint) of the data being set.
* *
* A convenience function to set the data and size on a buffer. * A convenience function to set the data and size on a buffer.
* This will replace any existing data pointer set on this buffer, but will * This will replace any existing data pointer set on this buffer, but will
* not change GST_BUFFER_MALLOCDATA(), if any. Callers should ensure that * not change GST_BUFFER_MALLOCDATA(), if any. Callers should ensure that
* GST_BUFFER_MALLOCDATA() is non-NULL, or should free that and set it to N ULL. * GST_BUFFER_MALLOCDATA() is non-NULL, or should free that and set it to N ULL.
* *
* No checks are done on the data or size arguments passed. * No checks are done on the data or size arguments passed.
*/ */
#define gst_buffer_set_data(buf, data, size) \ #define gst_buffer_set_data(buf, data, size) \
G_STMT_START { \ G_STMT_START { \
GST_BUFFER_DATA (buf) = data; \ GST_BUFFER_DATA (buf) = data; \
GST_BUFFER_SIZE (buf) = size; \ GST_BUFFER_SIZE (buf) = size; \
} G_STMT_END } G_STMT_END
/* refcounting */ /* refcounting */
/** /**
* gst_buffer_ref: * gst_buffer_ref:
* @buf: a #GstBuffer. * @buf: a #GstBuffer.
* *
* Increases the refcount of the given buffer by one. * Increases the refcount of the given buffer by one.
* *
* Note that the refcount affects the writeability * Note that the refcount affects the writeability
* of @buf and its metadata, see gst_buffer_is_writable() and * of @buf and its metadata, see gst_buffer_is_writable() and
* gst_buffer_is_metadata_writable(). It is * gst_buffer_is_metadata_writable(). It is
* important to note that keeping additional references to * important to note that keeping additional references to
* GstBuffer instances can potentially increase the number * GstBuffer instances can potentially increase the number
* of memcpy operations in a pipeline. * of memcpy operations in a pipeline.
* *
* Returns: @buf * Returns: (transfer full): @buf
*/ */
#ifdef _FOOL_GTK_DOC_ #ifdef _FOOL_GTK_DOC_
G_INLINE_FUNC GstBuffer * gst_buffer_ref (GstBuffer * buf); G_INLINE_FUNC GstBuffer * gst_buffer_ref (GstBuffer * buf);
#endif #endif
static inline GstBuffer * static inline GstBuffer *
gst_buffer_ref (GstBuffer * buf) gst_buffer_ref (GstBuffer * buf)
{ {
return (GstBuffer *) gst_mini_object_ref (GST_MINI_OBJECT_CAST (buf)); return (GstBuffer *) gst_mini_object_ref (GST_MINI_OBJECT_CAST (buf));
} }
/** /**
* gst_buffer_unref: * gst_buffer_unref:
* @buf: a #GstBuffer. * @buf: (transfer full): a #GstBuffer.
* *
* Decreases the refcount of the buffer. If the refcount reaches 0, the buf fer * Decreases the refcount of the buffer. If the refcount reaches 0, the buf fer
* will be freed. If GST_BUFFER_MALLOCDATA() is non-NULL, this pointer will * will be freed. If GST_BUFFER_MALLOCDATA() is non-NULL, this pointer will
* also be freed at this time. * also be freed at this time.
*/ */
#ifdef _FOOL_GTK_DOC_ #ifdef _FOOL_GTK_DOC_
G_INLINE_FUNC void gst_buffer_unref (GstBuffer * buf); G_INLINE_FUNC void gst_buffer_unref (GstBuffer * buf);
#endif #endif
static inline void static inline void
skipping to change at line 373 skipping to change at line 373
} }
/* copy buffer */ /* copy buffer */
/** /**
* gst_buffer_copy: * gst_buffer_copy:
* @buf: a #GstBuffer. * @buf: a #GstBuffer.
* *
* Create a copy of the given buffer. This will also make a newly allocated * Create a copy of the given buffer. This will also make a newly allocated
* copy of the data the source buffer contains. * copy of the data the source buffer contains.
* *
* Returns: a new copy of @buf. * Returns: (transfer full): a new copy of @buf.
*/ */
#ifdef _FOOL_GTK_DOC_ #ifdef _FOOL_GTK_DOC_
G_INLINE_FUNC GstBuffer * gst_buffer_copy (const GstBuffer * buf); G_INLINE_FUNC GstBuffer * gst_buffer_copy (const GstBuffer * buf);
#endif #endif
static inline GstBuffer * static inline GstBuffer *
gst_buffer_copy (const GstBuffer * buf) gst_buffer_copy (const GstBuffer * buf)
{ {
return GST_BUFFER (gst_mini_object_copy (GST_MINI_OBJECT_CAST (buf))); return GST_BUFFER (gst_mini_object_copy (GST_MINI_OBJECT_CONST_CAST (buf) ));
} }
/** /**
* GstBufferCopyFlags: * GstBufferCopyFlags:
* @GST_BUFFER_COPY_FLAGS: flag indicating that buffer flags should be copi ed * @GST_BUFFER_COPY_FLAGS: flag indicating that buffer flags should be copi ed
* @GST_BUFFER_COPY_TIMESTAMPS: flag indicating that buffer timestamp, dura tion, * @GST_BUFFER_COPY_TIMESTAMPS: flag indicating that buffer timestamp, dura tion,
* offset and offset_end should be copied * offset and offset_end should be copied
* @GST_BUFFER_COPY_CAPS: flag indicating that buffer caps should be copied * @GST_BUFFER_COPY_CAPS: flag indicating that buffer caps should be copied
* *
* A set of flags that can be provided to the gst_buffer_copy_metadata() * A set of flags that can be provided to the gst_buffer_copy_metadata()
skipping to change at line 426 skipping to change at line 426
/** /**
* gst_buffer_is_writable: * gst_buffer_is_writable:
* @buf: a #GstBuffer * @buf: a #GstBuffer
* *
* Tests if you can safely write data into a buffer's data array or validly * Tests if you can safely write data into a buffer's data array or validly
* modify the caps and timestamp metadata. Metadata in a GstBuffer is alway s * modify the caps and timestamp metadata. Metadata in a GstBuffer is alway s
* writable, but it is only safe to change it when there is only one owner * writable, but it is only safe to change it when there is only one owner
* of the buffer - ie, the refcount is 1. * of the buffer - ie, the refcount is 1.
*/ */
#define gst_buffer_is_writable(buf) gst_mini_object_is_w ritable (GST_MINI_OBJECT_CAST (buf)) #define gst_buffer_is_writable(buf) gst_mini_object_is_writable (GST_MINI_OBJECT_CAST (buf))
/** /**
* gst_buffer_make_writable: * gst_buffer_make_writable:
* @buf: a #GstBuffer * @buf: (transfer full): a #GstBuffer
* *
* Makes a writable buffer from the given buffer. If the source buffer is * Makes a writable buffer from the given buffer. If the source buffer is
* already writable, this will simply return the same buffer. A copy will * already writable, this will simply return the same buffer. A copy will
* otherwise be made using gst_buffer_copy(). * otherwise be made using gst_buffer_copy().
*
* Returns: (transfer full): a writable buffer which may or may not be the
* same as @buf
*/ */
#define gst_buffer_make_writable(buf) GST_BUFFER_CAST (gst _mini_object_make_writable (GST_MINI_OBJECT_CAST (buf))) #define gst_buffer_make_writable(buf) GST_BUFFER_CAST (gst_mini_o bject_make_writable (GST_MINI_OBJECT_CAST (buf)))
/* Ensure that the metadata of the buffer is writable, even if the buffer d ata /* Ensure that the metadata of the buffer is writable, even if the buffer d ata
* isn't */ * isn't */
gboolean gst_buffer_is_metadata_writable (GstBuffer *buf); gboolean gst_buffer_is_metadata_writable (GstBuffer *buf);
GstBuffer* gst_buffer_make_metadata_writable (GstBuffer *buf); GstBuffer* gst_buffer_make_metadata_writable (GstBuffer *buf);
/** /**
* gst_buffer_replace: * gst_buffer_replace:
* @obuf: pointer to a pointer to a #GstBuffer to be replaced. * @obuf: (inout) (transfer full): pointer to a pointer to a #GstBuffer to
* @nbuf: pointer to a #GstBuffer that will replace the buffer pointed to b be
y * replaced.
* @obuf. * @nbuf: (transfer none) (allow-none): pointer to a #GstBuffer that will
* replace the buffer pointed to by @obuf.
* *
* Modifies a pointer to a #Gstbuffer to point to a different #GstBuffer. T he * Modifies a pointer to a #GstBuffer to point to a different #GstBuffer. T he
* modification is done atomically (so this is useful for ensuring thread s afety * modification is done atomically (so this is useful for ensuring thread s afety
* in some cases), and the reference counts are updated appropriately (the old * in some cases), and the reference counts are updated appropriately (the old
* buffer is unreffed, the new is reffed). * buffer is unreffed, the new is reffed).
* *
* Either @nbuf or the #GstBuffer pointed to by @obuf may be NULL. * Either @nbuf or the #GstBuffer pointed to by @obuf may be NULL.
*/ */
#define gst_buffer_replace(obuf,nbuf) \ #define gst_buffer_replace(obuf,nbuf) \
G_STMT_START { G_STMT_START {
\ \
GstBuffer **___obufaddr = (GstBuffer **)(obuf); \ GstBuffer **___obufaddr = (GstBuffer **)(obuf); \
gst_mini_object_replace ((GstMiniObject **)___obufaddr, \ gst_mini_object_replace ((GstMiniObject **)___obufaddr, \
GST_MINI_OBJECT_CAST (nbuf)); \ GST_MINI_OBJECT_CAST (nbuf)); \
} G_STMT_END } G_STMT_END
GstCaps* gst_buffer_get_caps (GstBuffer *buffer); GstCaps* gst_buffer_get_caps (GstBuffer *buffer);
void gst_buffer_set_caps (GstBuffer *buffer, GstCaps void gst_buffer_set_caps (GstBuffer *buffer, GstCaps
*caps); *caps);
/* creating a subbuffer */ /* creating a subbuffer */
GstBuffer* gst_buffer_create_sub (GstBuffer *parent, guint of fset, guint size); GstBuffer* gst_buffer_create_sub (GstBuffer *parent, guint o ffset, guint size);
/* span, two buffers, intelligently */ /* span, two buffers, intelligently */
gboolean gst_buffer_is_span_fast (GstBuffer *buf1, GstBuffer gboolean gst_buffer_is_span_fast (GstBuffer *buf1, GstBuffer
*buf2); *buf2);
GstBuffer* gst_buffer_span (GstBuffer *buf1, guint32 of GstBuffer* gst_buffer_span (GstBuffer *buf1, guint32 o
fset, GstBuffer *buf2, guint32 len); ffset, GstBuffer *buf2, guint32 len);
/** /**
* gst_value_set_buffer: * gst_value_set_buffer:
* @v: a #GstValue to receive the data * @v: a #GValue to receive the data
* @b: a #GstBuffer to assign to the GstValue * @b: (transfer none): a #GstBuffer to assign to the GstValue
* *
* Sets @b as the value of @v. Caller retains reference to buffer. * Sets @b as the value of @v. Caller retains reference to buffer.
*/ */
#define gst_value_set_buffer(v,b) gst_value_set_mini_o bject(v, GST_MINI_OBJECT_CAST(b)) #define gst_value_set_buffer(v,b) gst_value_set_mini_object(v , GST_MINI_OBJECT_CAST(b))
/** /**
* gst_value_take_buffer: * gst_value_take_buffer:
* @v: a #GstValue to receive the data * @v: a #GValue to receive the data
* @b: a #GstBuffer to assign to the GstValue * @b: (transfer full): a #GstBuffer to assign to the GstValue
* *
* Sets @b as the value of @v. Caller gives away reference to buffer. * Sets @b as the value of @v. Caller gives away reference to buffer.
*/ */
#define gst_value_take_buffer(v,b) gst_value_take_mini_ object(v, GST_MINI_OBJECT_CAST(b)) #define gst_value_take_buffer(v,b) gst_value_take_mini_object( v, GST_MINI_OBJECT_CAST(b))
/** /**
* gst_value_get_buffer: * gst_value_get_buffer:
* @v: a #GstValue to qeury * @v: a #GValue to query
* *
* Receives a #GstBuffer as the value of @v. Does not return a reference to * Receives a #GstBuffer as the value of @v. Does not return a reference to
* the buffer, so the pointer is only valid for as long as the caller owns * the buffer, so the pointer is only valid for as long as the caller owns
* a reference to @v. * a reference to @v.
*
* Returns: (transfer none): buffer
*/ */
#define gst_value_get_buffer(v) GST_BUFFER_CAST (gst _value_get_mini_object(v)) #define gst_value_get_buffer(v) GST_BUFFER_CAST (gst_value_ get_mini_object(v))
G_END_DECLS G_END_DECLS
#endif /* __GST_BUFFER_H__ */ #endif /* __GST_BUFFER_H__ */
 End of changes. 49 change blocks. 
70 lines changed or deleted 76 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/