скопировать видеокадры YUV из одного буфера в другой в Gstreamer - PullRequest
0 голосов
/ 23 февраля 2012

Я чрезвычайно новичок в Gstreamer. Я пишу плагин, чтобы уменьшить высоту видео YUV на 2. Я получаю ошибку сегментации, когда пытаюсь скопировать данные из буфера (аргумент в цепочку) в другой буфер в функции _chain () следующим образом:

GstBuffer * buffer;

Размер Glong;

размер = GST_BUFFER_SIZE (buf);

buffer = gst_buffer_new ();

GST_BUFFER_SIZE (буфер) = размер;

GST_BUFFER_MALLOCDATA (буфер) = g_malloc (размер);

GST_BUFFER_DATA (буфер) = GST_BUFFER_MALLOCDATA (буфер);

тетср (буфер, ЬиЙ, размер);

Пожалуйста, помогите новичку :) Спасибо

1 Ответ

3 голосов
/ 26 февраля 2012

Вы копируете объект буфера!Попробуйте использовать:

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;
...