rtpopusdepay: minor perf improvements
authorTim-Philipp Müller <tim@centricular.com>
Wed, 24 May 2017 15:32:30 +0000 (16:32 +0100)
committerTim-Philipp Müller <tim@centricular.com>
Wed, 24 May 2017 15:41:45 +0000 (16:41 +0100)
Use the ::process_rtp_packet() vfunc to avoid mapping the
RTP buffer twice.

gst_rtp_buffer_get_payload_buffer() returns a new sub-buffer
which will always be writable, so no need to make it writable.

gst/rtp/gstrtpopusdepay.c

index 293371f..f672339 100644 (file)
@@ -52,7 +52,7 @@ GST_STATIC_PAD_TEMPLATE ("src",
     );
 
 static GstBuffer *gst_rtp_opus_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp_buffer);
 static gboolean gst_rtp_opus_depay_setcaps (GstRTPBaseDepayload * depayload,
     GstCaps * caps);
 
@@ -77,7 +77,7 @@ gst_rtp_opus_depay_class_init (GstRTPOpusDepayClass * klass)
       "Extracts Opus audio from RTP packets",
       "Danilo Cesar Lemes de Paula <danilo.cesar@collabora.co.uk>");
 
-  gstbasertpdepayload_class->process = gst_rtp_opus_depay_process;
+  gstbasertpdepayload_class->process_rtp_packet = gst_rtp_opus_depay_process;
   gstbasertpdepayload_class->set_caps = gst_rtp_opus_depay_setcaps;
 
   GST_DEBUG_CATEGORY_INIT (rtpopusdepay_debug, "rtpopusdepay", 0,
@@ -140,16 +140,13 @@ gst_rtp_opus_depay_setcaps (GstRTPBaseDepayload * depayload, GstCaps * caps)
 }
 
 static GstBuffer *
-gst_rtp_opus_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_opus_depay_process (GstRTPBaseDepayload * depayload,
+    GstRTPBuffer * rtp_buffer)
 {
   GstBuffer *outbuf;
-  GstRTPBuffer rtpbuf = { NULL, };
 
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtpbuf);
-  outbuf = gst_rtp_buffer_get_payload_buffer (&rtpbuf);
-  gst_rtp_buffer_unmap (&rtpbuf);
+  outbuf = gst_rtp_buffer_get_payload_buffer (rtp_buffer);
 
-  outbuf = gst_buffer_make_writable (outbuf);
   gst_rtp_drop_non_audio_meta (depayload, outbuf);
 
   return outbuf;