guint payload_len, hdr_len, offset;
guint len_offs;
GstClockTime timestamp;
- gpointer bufdata;
- guint8 *data;
- gsize bufsize;
+ GstRTPBuffer rtpbuf;
depay = GST_RTP_ASF_DEPAY (depayload);
do {
guint packet_len;
++ gsize plen;
/* packet header is at least 4 bytes */
if (payload_len < 4)
return NULL;
/* we need to pad with zeroes to packet_size if it's smaller */
- bufdata = gst_buffer_map (outbuf, &bufsize, NULL, GST_MAP_READ);
- g_assert (packet_len == bufsize);
- packet_len = bufsize;
- if (packet_len < depay->packet_size) {
- if (GST_BUFFER_SIZE (outbuf) < depay->packet_size) {
++ plen = gst_buffer_get_size (outbuf);
++ if (plen < depay->packet_size) {
GstBuffer *tmp;
- gint plen = GST_BUFFER_SIZE (outbuf);
GST_LOG_OBJECT (depay, "padding buffer size %d to packet size %d",
- packet_len, depay->packet_size);
+ plen, depay->packet_size);
++
tmp = gst_buffer_new_and_alloc (depay->packet_size);
- gst_buffer_copy_into (tmp, outbuf, GST_BUFFER_COPY_ALL, 0, packet_len);
- gst_buffer_unmap (outbuf, bufdata, bufsize);
- memcpy (GST_BUFFER_DATA (tmp), GST_BUFFER_DATA (outbuf), plen);
- gst_buffer_copy_metadata (tmp, outbuf, GST_BUFFER_COPY_ALL);
++ gst_buffer_copy_into (tmp, outbuf, GST_BUFFER_COPY_ALL, 0, plen);
gst_buffer_unref (outbuf);
outbuf = tmp;
- memset (GST_BUFFER_DATA (outbuf) + plen, 0, depay->packet_size - plen);
+
- bufdata = gst_buffer_map (outbuf, &bufsize, NULL, GST_MAP_WRITE);
- data = (guint8 *) bufdata;
- memset (data + packet_len, 0, depay->packet_size - packet_len);
- gst_rtp_asf_depay_set_padding (depay, outbuf,
- depay->packet_size - packet_len);
++ gst_buffer_memset (outbuf, plen, 0, depay->packet_size - plen);
+ gst_rtp_asf_depay_set_padding (depay, outbuf, depay->packet_size - plen);
}
- gst_buffer_set_caps (outbuf, GST_PAD_CAPS (depayload->srcpad));
-
if (!S)
GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DELTA_UNIT);