Как скопировать из одного буфера в другой в gstreamer?

Я пытаюсь скопировать из исходного буфера buf (в функции chain) в другой буфер, созданный с помощью:

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
задан 23 February 2012 в 16:47

2 ответа

GstBuffer *buffer;
glong size;
size = GST_BUFFER_SIZE(inp);
buffer = gst_buffer_new();
GST_BUFFER_SIZE(buffer) = size;
GST_BUFFER_MALLOCDATA(buffer) = g_malloc(size);
GST_BUFFER_DATA(buffer) = GST_BUFFER_MALLOCDATA(buffer);
buffer = GST_BUFFER_DATA(inp);

// Теперь вы можете использовать данные, указанные буфером, чтобы записать их в файл, используя fwrite

0
ответ дан 23 February 2012 в 16:47

Вместо того, чтобы записывать данные, которыми управляет GstBuffer, вы перезаписываете сам объект GstBuffer последним вызовом memcpy. Вместо этого вы хотите написать GST_BUFFER_DATA (buffer).

С учетом вышесказанного, если вы просто хотите новый буфер с теми же данными, было бы проще использовать функцию gst_buffer_copy().

0
ответ дан 23 February 2012 в 16:47

Другие вопросы по тегам:

Похожие вопросы: