- if (G_UNLIKELY (to_free)) {
- outbuf = gst_buffer_new ();
- gst_buffer_take_memory (outbuf, -1,
- gst_memory_new_wrapped (0, to_free, g_free,
- (payload - to_free) + length, payload - to_free, length));
- to_free = NULL;
- } else {
- guint8 *data;
-
- outbuf = gst_buffer_new_and_alloc (length);
- data = gst_buffer_map (outbuf, NULL, NULL, GST_MAP_WRITE);
- memcpy (data, payload, length);
- gst_buffer_unmap (outbuf, data, -1);
- }
+ outbuf =
+ gst_buffer_copy_region (payload_buffer, GST_BUFFER_COPY_ALL,
+ payload - map.data, length);