Como copiar de um buffer para outro no gstreamer?

3

Eu estou tentando copiar do buffer original buf (na função chain ) para outro buffer criado usando:

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

Mas recebo uma falha de segmentação. Há algo de errado aqui?

    
por varun 23.02.2012 / 07:34

2 respostas

2

Em vez de gravar os dados que o GstBuffer está gerenciando, você está sobrescrevendo o objeto GstBuffer com a chamada memcpy final. Em vez disso, você deseja gravar em GST_BUFFER_DATA (buffer) .

Com isso dito, se você quiser apenas um novo buffer com os mesmos dados, parece mais fácil usar apenas a função gst_buffer_copy() .

    
por James Henstridge 23.02.2012 / 11:17
0
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);

// Agora você pode usar os dados apontados pelo buffer para dizer escrevê-lo em um arquivo usando fwrite

    
por Deepak 19.02.2014 / 11:19

Tags