Buffers是gstreamer中数据传输的基本数据单元,#GstBuffer提供了用来定义流内存区域的所有数据状态。gstreamer支持sub-buffers,允许一个帧的部分区域,变成他自己的帧。通过恰当使用这种机制可以保证内存空间不丢失。 gstreamer通过gst_buffer_new()来创建新的buffer,一个buffer创建后会给它分配内存区,设置buffer数据的大小。下面的代码,创建了一个buffer,用来抓取特定高度、宽度和bpp的视频帧。
GstBuffer *buffer;
gint size, width, height, bpp;
* ... *
size = width * height * bpp;
buffer = gst_buffer_new ();
GST_BUFFER_SIZE (buffer) = size;
GST_BUFFER_MALLOCDATA (buffer) = g_malloc (size);
GST_BUFFER_DATA (buffer) = GST_BUFFER_MALLOCDATA (buffer);
* ... * * *
参考链接:http://hi.baidu.com/zhupan19851230/blog/item/108339ab626e9fbeca130cc2.html