2000-09-13 19:04:55 +00:00
|
|
|
<!-- ##### SECTION Title ##### -->
|
2000-10-22 16:30:25 +00:00
|
|
|
GstBufferPool
|
2000-09-13 19:04:55 +00:00
|
|
|
|
|
|
|
<!-- ##### SECTION Short_Description ##### -->
|
2000-10-22 16:30:25 +00:00
|
|
|
Create buffers from a pool
|
2000-09-13 19:04:55 +00:00
|
|
|
|
|
|
|
<!-- ##### SECTION Long_Description ##### -->
|
|
|
|
<para>
|
2000-10-22 16:30:25 +00:00
|
|
|
A bufferpool is used to create buffers in an efficient way. En element
|
|
|
|
can maintain a bufferpool with a fixed number of buffers. This will reduce
|
|
|
|
the g_malloc and g_free overhead.
|
2000-09-13 19:04:55 +00:00
|
|
|
</para>
|
|
|
|
<para>
|
2000-10-22 16:30:25 +00:00
|
|
|
A bufferpool can also be used to implement direct access. A bufferpool can be
|
|
|
|
sent from one element to another so that the latter can directly write into
|
|
|
|
the memory of the element that maintains the bufferpool. This can greatly reduce
|
|
|
|
the number of memcpy operations.
|
2000-09-13 19:04:55 +00:00
|
|
|
</para>
|
2001-04-18 20:16:53 +00:00
|
|
|
<para>
|
|
|
|
A bufferpool is created with gst_buffer_pool_new(). You'll have to set the
|
|
|
|
buffer allocation and destroy function afterwards with gst_buffer_pool_set_create_function() and
|
|
|
|
gst_buffer_pool_set_destroy_function().
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
To create a buffer from the bufferpool use gst_buffer_pool_new_buffer(), which is
|
|
|
|
functionally equivalent to gst_buffer_new_from_pool().
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
When the buffer is unreffed and has reached a refcount of 0, the bufferpools destroy
|
|
|
|
function is called with the buffer as an argument.
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
A bufferpool can store private data in the buffer it creates with the GST_BUFFER_POOL_PRIVATE()
|
|
|
|
macro. To check it a buffer was made by a specific bufferpool, use the GST_BUFFER_BUFFERPOOL()
|
|
|
|
macro to get it's bufferpool.
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
Destroy the bufferpool with gst_buffer_pool_destroy().
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
A bufferpool can be requested from a pad with the gst_pad_get_bufferpool() function.
|
|
|
|
</para>
|
2000-09-13 19:04:55 +00:00
|
|
|
|
2000-10-22 16:30:25 +00:00
|
|
|
<!-- ##### SECTION See_Also ##### -->
|
2000-09-13 19:04:55 +00:00
|
|
|
<para>
|
2001-04-18 20:16:53 +00:00
|
|
|
#GstBuffer, #GstPad
|
2000-09-13 19:04:55 +00:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<!-- ##### STRUCT GstBufferPool ##### -->
|
|
|
|
<para>
|
|
|
|
|
|
|
|
</para>
|
|
|
|
|
2000-10-22 16:30:25 +00:00
|
|
|
@new_buffer:
|
|
|
|
@new_user_data:
|
|
|
|
@destroy_user_data:
|
|
|
|
@destroy_buffer:
|
2000-09-13 19:04:55 +00:00
|
|
|
|
|
|
|
<!-- ##### USER_FUNCTION GstBufferPoolCreateFunction ##### -->
|
|
|
|
<para>
|
2000-11-07 21:24:12 +00:00
|
|
|
The function called when a buffer has to be created for this pool.
|
2000-09-13 19:04:55 +00:00
|
|
|
</para>
|
|
|
|
|
2000-11-07 21:24:12 +00:00
|
|
|
@pool: the pool from which to create the buffer
|
|
|
|
@user_data: any user data
|
|
|
|
@Returns: a new buffer from the pool
|
2000-09-13 19:04:55 +00:00
|
|
|
|
|
|
|
|
|
|
|
<!-- ##### USER_FUNCTION GstBufferPoolDestroyFunction ##### -->
|
|
|
|
<para>
|
2000-11-07 21:24:12 +00:00
|
|
|
This function will be called when the given buffer has to be returned to
|
|
|
|
the pool.
|
2000-09-13 19:04:55 +00:00
|
|
|
</para>
|
|
|
|
|
2000-11-07 21:24:12 +00:00
|
|
|
@pool: the pool to return the buffer to
|
|
|
|
@buffer: the buffer to return
|
|
|
|
@user_data: any user data
|
2000-09-13 19:04:55 +00:00
|
|
|
|
|
|
|
|
|
|
|
<!-- ##### FUNCTION gst_buffer_pool_new ##### -->
|
|
|
|
<para>
|
|
|
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
@Returns:
|
|
|
|
|
|
|
|
|
|
|
|
<!-- ##### FUNCTION gst_buffer_pool_new_buffer ##### -->
|
|
|
|
<para>
|
|
|
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
@pool:
|
|
|
|
@Returns:
|
|
|
|
|
|
|
|
|
|
|
|
<!-- ##### FUNCTION gst_buffer_pool_destroy_buffer ##### -->
|
|
|
|
<para>
|
|
|
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
@pool:
|
|
|
|
@buffer:
|
|
|
|
|
|
|
|
|
|
|
|
<!-- ##### FUNCTION gst_buffer_pool_set_create_function ##### -->
|
|
|
|
<para>
|
|
|
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
@pool:
|
|
|
|
@create:
|
|
|
|
@user_data:
|
|
|
|
|
|
|
|
|
|
|
|
<!-- ##### FUNCTION gst_buffer_pool_set_destroy_function ##### -->
|
|
|
|
<para>
|
|
|
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
@pool:
|
|
|
|
@destroy:
|
|
|
|
@user_data:
|
|
|
|
|
|
|
|
|
|
|
|
<!-- ##### FUNCTION gst_buffer_pool_destroy ##### -->
|
|
|
|
<para>
|
|
|
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
@pool:
|
|
|
|
|
|
|
|
|