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

在Gstreamer中将YUV视频帧从一个缓冲区复制到另一个缓冲区,gstreamer,Gstreamer,我对Gstreamer非常陌生。我正在编写一个插件,将YUV视频的高度降低2。当我尝试将数据从buf(参数到链)复制到_chain()函数中的另一个缓冲区时,出现分段错误,如下所示: GstBuffer*缓冲区 glong大小 大小=GST\u缓冲区大小(buf) buffer=gst_buffer_new() GST_BUFFER_SIZE(BUFFER)=大小 GST_BUFFER_MALLOCDATA(BUFFER)=g_malloc(size) GST_BUFFER_DATA(BUFFE

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

GstBuffer*缓冲区

glong大小

大小=GST\u缓冲区大小(buf)

buffer=gst_buffer_new()

GST_BUFFER_SIZE(BUFFER)=大小

GST_BUFFER_MALLOCDATA(BUFFER)=g_malloc(size)

GST_BUFFER_DATA(BUFFER)=GST_BUFFER_MALLOCDATA(BUFFER)

memcpy(缓冲区、buf、大小)

请帮助一个新手:)
谢谢

您正在通过缓冲区对象进行复制!尝试使用:

buffer = gst_buffer_new_and_alloc(size); memcpy(GST_BUFFER_DATA(buffer),GST_BUFFER_DATA(buf),size); 缓冲区=gst\u缓冲区\u新建\u和\u分配(大小); memcpy(GST\U缓冲区数据(缓冲区)、GST\U缓冲区数据(buf)、大小); 你也可以这样做

buffer = gst_buffer_copy(buf); GST_BUFFER_SIZE (buffer) = size; 缓冲区=商品及服务税缓冲区副本(buf); GST_BUFFER_SIZE(BUFFER)=大小;
您正在复制缓冲区对象!尝试使用:

buffer = gst_buffer_new_and_alloc(size); memcpy(GST_BUFFER_DATA(buffer),GST_BUFFER_DATA(buf),size); 缓冲区=gst\u缓冲区\u新建\u和\u分配(大小); memcpy(GST\U缓冲区数据(缓冲区)、GST\U缓冲区数据(buf)、大小); 你也可以这样做

buffer = gst_buffer_copy(buf); GST_BUFFER_SIZE (buffer) = size; 缓冲区=商品及服务税缓冲区副本(buf); GST_BUFFER_SIZE(BUFFER)=大小;