Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/GStreamer/gst-plugins-good.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2015-07-03 14:07:20 +0300
committerSebastian Dröge <sebastian@centricular.com>2015-07-03 15:00:04 +0300
commit6675e33109adf1c763436dc46a0afc2e87435aa2 (patch)
tree62035683bb437b4a61529b67d926fcfd3700f35a
parentef8d630a5983e7708321e2fad786d167c2a68da9 (diff)
sbcpay: Attach payload directly to the output instead of copying
-rw-r--r--gst/rtp/gstrtpsbcpay.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/gst/rtp/gstrtpsbcpay.c b/gst/rtp/gstrtpsbcpay.c
index 7c4d3dab2..1b455ca6b 100644
--- a/gst/rtp/gstrtpsbcpay.c
+++ b/gst/rtp/gstrtpsbcpay.c
@@ -160,7 +160,7 @@ gst_rtp_sbc_pay_flush_buffers (GstRtpSBCPay * sbcpay)
GstRTPBuffer rtp = GST_RTP_BUFFER_INIT;
guint available;
guint max_payload;
- GstBuffer *outbuf;
+ GstBuffer *outbuf, *paybuf;
guint8 *payload_data;
guint frame_count;
guint payload_length;
@@ -183,8 +183,7 @@ gst_rtp_sbc_pay_flush_buffers (GstRtpSBCPay * sbcpay)
if (payload_length == 0) /* Nothing to send */
return GST_FLOW_OK;
- outbuf = gst_rtp_buffer_new_allocate (payload_length +
- RTP_SBC_PAYLOAD_HEADER_SIZE, 0, 0);
+ outbuf = gst_rtp_buffer_new_allocate (RTP_SBC_PAYLOAD_HEADER_SIZE, 0, 0);
/* get payload */
gst_rtp_buffer_map (outbuf, GST_MAP_WRITE, &rtp);
@@ -197,12 +196,10 @@ gst_rtp_sbc_pay_flush_buffers (GstRtpSBCPay * sbcpay)
memset (payload, 0, sizeof (struct rtp_payload));
payload->frame_count = frame_count;
- gst_adapter_copy (sbcpay->adapter, payload_data +
- RTP_SBC_PAYLOAD_HEADER_SIZE, 0, payload_length);
-
gst_rtp_buffer_unmap (&rtp);
- gst_adapter_flush (sbcpay->adapter, payload_length);
+ paybuf = gst_adapter_take_buffer_fast (sbcpay->adapter, payload_length);
+ outbuf = gst_buffer_append (outbuf, paybuf);
/* FIXME: what about duration? */
GST_BUFFER_PTS (outbuf) = sbcpay->timestamp;