From 6675e33109adf1c763436dc46a0afc2e87435aa2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20Dr=C3=B6ge?= Date: Fri, 3 Jul 2015 13:07:20 +0200 Subject: [PATCH] sbcpay: Attach payload directly to the output instead of copying --- gst/rtp/gstrtpsbcpay.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/gst/rtp/gstrtpsbcpay.c b/gst/rtp/gstrtpsbcpay.c index 7c4d3da..1b455ca 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; -- 2.7.4