2012-02-23 162 views
0

我对Gstreamer非常陌生。我正在编写一个插件来将YUV视频的高度降低2倍。当我尝试将数据从buf(参数链)复制到_chain()函数中的另一个缓冲区时,出现分段错误,如下所示:在Gstreamer中将YUV视频帧从一个缓冲区复制到另一个缓冲区

GstBuffer * buffer;

glong size;

size = GST_BUFFER_SIZE(buf);

buffer = gst_buffer_new();

GST_BUFFER_SIZE(buffer)= size;

GST_BUFFER_MALLOCDATA(buffer)= g_malloc(size);

GST_BUFFER_DATA(buffer)= GST_BUFFER_MALLOCDATA(buffer);

memcpy(buffer,buf,size);

请帮助一个新手:) 谢谢

回答

3

您是复制在缓冲区对象!尝试使用:

 
buffer = gst_buffer_new_and_alloc(size); 
memcpy(GST_BUFFER_DATA(buffer),GST_BUFFER_DATA(buf),size); 

你也可以做

 
buffer = gst_buffer_copy(buf); 
GST_BUFFER_SIZE (buffer) = size;