/* FIXME: alloc memory from PA if possible */
gint framesize = gst_audio_iec61937_frame_size (&sink->ringbuffer->spec);
GstBuffer *out;
+ guint8 *indata, *outdata;
+ gsize insize, outsize;
+ gboolean res;
if (framesize <= 0)
return NULL;
out = gst_buffer_new_and_alloc (framesize);
- if (!gst_audio_iec61937_payload (GST_BUFFER_DATA (buf),
- GST_BUFFER_SIZE (buf), GST_BUFFER_DATA (out),
- GST_BUFFER_SIZE (out), &sink->ringbuffer->spec)) {
+ indata = gst_buffer_map (buf, &insize, NULL, GST_MAP_READ);
+ outdata = gst_buffer_map (out, &outsize, NULL, GST_MAP_WRITE);
+
+ res = gst_audio_iec61937_payload (indata, insize,
+ outdata, outsize, &sink->ringbuffer->spec);
+
+ gst_buffer_unmap (buf, indata, insize);
+ gst_buffer_unmap (out, outdata, outsize);
+
+ if (!res) {
gst_buffer_unref (out);
return NULL;
}
- gst_buffer_copy_metadata (out, buf, GST_BUFFER_COPY_ALL);
+ gst_buffer_copy_into (out, buf, GST_BUFFER_COPY_METADATA, 0, -1);
return out;
}
outsize = gst_adapter_available (rtph264depay->adapter);
outbuf = gst_adapter_take_buffer (rtph264depay->adapter, outsize);
- outdata = GST_BUFFER_DATA (outbuf);
+ outdata = gst_buffer_map (outbuf, NULL, NULL, GST_MAP_WRITE);
GST_DEBUG_OBJECT (rtph264depay, "output %d bytes", outsize);
outdata[2] = (outsize >> 8);
outdata[3] = (outsize);
}
+ gst_buffer_unmap (outbuf, outdata, -1);
gst_rtp_h264_depay_handle_nal (rtph264depay, outbuf,
rtph264depay->fu_timestamp, rtph264depay->fu_marker);