mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-10-07 11:12:17 +00:00
rtph263pdepay: Simplify code a bit and do less direct memcpy and let GstBuffer do that for us
This commit is contained in:
parent
8b0d11a0ee
commit
9ceb15bcf8
1 changed files with 13 additions and 15 deletions
|
@ -305,37 +305,35 @@ gst_rtp_h263p_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
|
||||||
/* frame is completed: append to previous, push it out */
|
/* frame is completed: append to previous, push it out */
|
||||||
guint len, padlen;
|
guint len, padlen;
|
||||||
guint avail;
|
guint avail;
|
||||||
GstMapInfo map;
|
GstBuffer *padbuf;
|
||||||
|
|
||||||
GST_LOG_OBJECT (depayload, "Frame complete");
|
GST_LOG_OBJECT (depayload, "Frame complete");
|
||||||
|
|
||||||
|
outbuf =
|
||||||
|
gst_rtp_buffer_get_payload_subbuffer (&rtp, header_len, payload_len);
|
||||||
|
gst_adapter_push (rtph263pdepay->adapter, outbuf);
|
||||||
|
outbuf = NULL;
|
||||||
|
|
||||||
avail = gst_adapter_available (rtph263pdepay->adapter);
|
avail = gst_adapter_available (rtph263pdepay->adapter);
|
||||||
len = avail + payload_len;
|
len = avail + payload_len;
|
||||||
padlen = (len % 4) + 4;
|
padlen = (len % 4) + 4;
|
||||||
|
|
||||||
outbuf = gst_buffer_new_and_alloc (len + padlen);
|
outbuf = gst_adapter_take_buffer (rtph263pdepay->adapter, avail);
|
||||||
|
if (padlen) {
|
||||||
gst_buffer_map (outbuf, &map, GST_MAP_WRITE);
|
padbuf = gst_buffer_new_and_alloc (padlen);
|
||||||
memset (map.data + len, 0, padlen);
|
gst_buffer_memset (padbuf, 0, 0, padlen);
|
||||||
|
outbuf = gst_buffer_append (outbuf, padbuf);
|
||||||
/* prepend previous data */
|
|
||||||
if (avail > 0) {
|
|
||||||
gst_adapter_copy (rtph263pdepay->adapter, map.data, 0, avail);
|
|
||||||
gst_adapter_flush (rtph263pdepay->adapter, avail);
|
|
||||||
}
|
}
|
||||||
memcpy (map.data + avail, payload, payload_len);
|
|
||||||
gst_buffer_unmap (outbuf, &map);
|
|
||||||
gst_rtp_buffer_unmap (&rtp);
|
gst_rtp_buffer_unmap (&rtp);
|
||||||
|
|
||||||
return outbuf;
|
return outbuf;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
/* frame not completed: store in adapter */
|
/* frame not completed: store in adapter */
|
||||||
outbuf = gst_buffer_new_and_alloc (payload_len);
|
|
||||||
|
|
||||||
GST_LOG_OBJECT (depayload, "Frame incomplete, storing %d", payload_len);
|
GST_LOG_OBJECT (depayload, "Frame incomplete, storing %d", payload_len);
|
||||||
gst_buffer_fill (outbuf, 0, payload, payload_len);
|
|
||||||
|
|
||||||
|
outbuf =
|
||||||
|
gst_rtp_buffer_get_payload_subbuffer (&rtp, header_len, payload_len);
|
||||||
gst_adapter_push (rtph263pdepay->adapter, outbuf);
|
gst_adapter_push (rtph263pdepay->adapter, outbuf);
|
||||||
gst_rtp_buffer_unmap (&rtp);
|
gst_rtp_buffer_unmap (&rtp);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue