在Gstreamer中将YUV视频帧从一个缓冲区复制到另一个缓冲区

时间:2012-02-23 06:15:01

标签: gstreamer

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

GstBuffer * buffer;

glong size;

size = GST_BUFFER_SIZE(buf);

buffer = gst_buffer_new();

GST_BUFFER_SIZE(缓冲区)=大小;

GST_BUFFER_MALLOCDATA(缓冲区)= g_malloc(size);

GST_BUFFER_DATA(缓冲区)= GST_BUFFER_MALLOCDATA(缓冲区);

的memcpy(缓冲区buf,大小);

请帮助新手:) 谢谢

1 个答案:

答案 0 :(得分: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;