| On Thu, Jan 08, 2004 at 04:10:00PM +0100, Julien MOUTTE wrote: |
| > |
| > Hi David, |
| > |
| > I'd like to implement bufferpools again in x[v]imagesink asap.. Could |
| > you please point me to a template/doc on how to do that ? |
| > |
| > The best for me would be a simple testcase showing how to use the buffer |
| > free methods to replace bufferpools. |
| |
| |
| x[v]imagesink should call gst_pad_set_bufferalloc_function() on |
| their sink pads with a bufferalloc implementation. This bufferalloc |
| function is to allocate buffers that _peers_ will send _to_ that pad. |
| |
| A trivial version of a bufferalloc function, i.e., one that just |
| allocates normal buffers: |
| |
| static GstBuffer * |
| gst_ximagesink_sink_bufferalloc (GstPad *pad, guint64 offset, guint |
| size) |
| { |
| GstBuffer *buffer; |
| |
| buffer = gst_buffer_new_and_alloc (size); |
| GST_DATA_FREE_FUNC (data) = gst_ximagesink_buffer_free; |
| GST_BUFFER_POOL_PRIVATE (data) = ximagesink; /* whatever */ |
| |
| return buffer; |
| } |
| |
| static void |
| gst_ximagesink_buffer_free (GstData *data) |
| { |
| g_free (GST_BUFFER_DATA (data)); |
| } |
| |
| The hard part is going through each element, and every time it |
| allocates a buffer using gst_buffer_new_and_alloc () that is then |
| sent to a sink pad, the call should be replaced with |
| gst_pad_alloc_buffer (sinkpad, offset, size). |
| |
| |
| |
| dave... |
| |
| |
| |
| ------------------------------------------------------- |
| This SF.net email is sponsored by: Perforce Software. |
| Perforce is the Fast Software Configuration Management System offering |
| advanced branching capabilities and atomic changes on 50+ platforms. |
| Free Eval! http://www.perforce.com/perforce/loadprog.html |
| _______________________________________________ |
| gstreamer-devel mailing list |
| gstreamer-devel@lists.sourceforge.net |
| https://lists.sourceforge.net/lists/listinfo/gstreamer-devel |