rtp: depayloaders: implement process_rtp_packet() vfunc
authorTim-Philipp Müller <tim@centricular.com>
Sun, 12 Jul 2015 13:27:15 +0000 (14:27 +0100)
committerTim-Philipp Müller <tim@centricular.com>
Sun, 12 Jul 2015 13:28:29 +0000 (14:28 +0100)
For more optimised RTP packet handling: means we don't
need to map the input buffer again but can just re-use
the mapping the base class has already done.

https://bugzilla.gnome.org/show_bug.cgi?id=750235

40 files changed:
gst/rtp/gstrtpL16depay.c
gst/rtp/gstrtpL24depay.c
gst/rtp/gstrtpac3depay.c
gst/rtp/gstrtpamrdepay.c
gst/rtp/gstrtpbvdepay.c
gst/rtp/gstrtpceltdepay.c
gst/rtp/gstrtpdvdepay.c
gst/rtp/gstrtpg722depay.c
gst/rtp/gstrtpg723depay.c
gst/rtp/gstrtpg726depay.c
gst/rtp/gstrtpg729depay.c
gst/rtp/gstrtpgsmdepay.c
gst/rtp/gstrtpgstdepay.c
gst/rtp/gstrtph261depay.c
gst/rtp/gstrtph263depay.c
gst/rtp/gstrtph263pdepay.c
gst/rtp/gstrtph264depay.c
gst/rtp/gstrtpilbcdepay.c
gst/rtp/gstrtpj2kdepay.c
gst/rtp/gstrtpjpegdepay.c
gst/rtp/gstrtpklvdepay.c
gst/rtp/gstrtpmp1sdepay.c
gst/rtp/gstrtpmp2tdepay.c
gst/rtp/gstrtpmp4adepay.c
gst/rtp/gstrtpmp4gdepay.c
gst/rtp/gstrtpmp4vdepay.c
gst/rtp/gstrtpmpadepay.c
gst/rtp/gstrtpmparobustdepay.c
gst/rtp/gstrtpmpvdepay.c
gst/rtp/gstrtppcmadepay.c
gst/rtp/gstrtppcmudepay.c
gst/rtp/gstrtpqcelpdepay.c
gst/rtp/gstrtpqdmdepay.c
gst/rtp/gstrtpsbcdepay.c
gst/rtp/gstrtpsirendepay.c
gst/rtp/gstrtpspeexdepay.c
gst/rtp/gstrtpsv3vdepay.c
gst/rtp/gstrtptheoradepay.c
gst/rtp/gstrtpvorbisdepay.c
gst/rtp/gstrtpvp8depay.c

index 667a64a..0f6b2b4 100644 (file)
@@ -84,7 +84,7 @@ G_DEFINE_TYPE (GstRtpL16Depay, gst_rtp_L16_depay, GST_TYPE_RTP_BASE_DEPAYLOAD);
 static gboolean gst_rtp_L16_depay_setcaps (GstRTPBaseDepayload * depayload,
     GstCaps * caps);
 static GstBuffer *gst_rtp_L16_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 
 static void
 gst_rtp_L16_depay_class_init (GstRtpL16DepayClass * klass)
@@ -96,7 +96,7 @@ gst_rtp_L16_depay_class_init (GstRtpL16DepayClass * klass)
   gstrtpbasedepayload_class = (GstRTPBaseDepayloadClass *) klass;
 
   gstrtpbasedepayload_class->set_caps = gst_rtp_L16_depay_setcaps;
-  gstrtpbasedepayload_class->process = gst_rtp_L16_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_L16_depay_process;
 
   gst_element_class_add_pad_template (gstelement_class,
       gst_static_pad_template_get (&gst_rtp_L16_depay_src_template));
@@ -225,26 +225,24 @@ no_clockrate:
 }
 
 static GstBuffer *
-gst_rtp_L16_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_L16_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
 {
   GstRtpL16Depay *rtpL16depay;
   GstBuffer *outbuf;
   gint payload_len;
   gboolean marker;
-  GstRTPBuffer rtp = { NULL };
 
   rtpL16depay = GST_RTP_L16_DEPAY (depayload);
 
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
-  payload_len = gst_rtp_buffer_get_payload_len (&rtp);
+  payload_len = gst_rtp_buffer_get_payload_len (rtp);
 
   if (payload_len <= 0)
     goto empty_packet;
 
   GST_DEBUG_OBJECT (rtpL16depay, "got payload of %d bytes", payload_len);
 
-  outbuf = gst_rtp_buffer_get_payload_buffer (&rtp);
-  marker = gst_rtp_buffer_get_marker (&rtp);
+  outbuf = gst_rtp_buffer_get_payload_buffer (rtp);
+  marker = gst_rtp_buffer_get_marker (rtp);
 
   if (marker) {
     /* mark talk spurt with RESYNC */
@@ -259,8 +257,6 @@ gst_rtp_L16_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
     goto reorder_failed;
   }
 
-  gst_rtp_buffer_unmap (&rtp);
-
   return outbuf;
 
   /* ERRORS */
@@ -268,14 +264,12 @@ empty_packet:
   {
     GST_ELEMENT_WARNING (rtpL16depay, STREAM, DECODE,
         ("Empty Payload."), (NULL));
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 reorder_failed:
   {
     GST_ELEMENT_ERROR (rtpL16depay, STREAM, DECODE,
         ("Channel reordering failed."), (NULL));
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 }
index 7b5ef0c..d1f1365 100644 (file)
@@ -73,7 +73,7 @@ G_DEFINE_TYPE (GstRtpL24Depay, gst_rtp_L24_depay, GST_TYPE_RTP_BASE_DEPAYLOAD);
 static gboolean gst_rtp_L24_depay_setcaps (GstRTPBaseDepayload * depayload,
     GstCaps * caps);
 static GstBuffer *gst_rtp_L24_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 
 static void
 gst_rtp_L24_depay_class_init (GstRtpL24DepayClass * klass)
@@ -85,7 +85,7 @@ gst_rtp_L24_depay_class_init (GstRtpL24DepayClass * klass)
   gstrtpbasedepayload_class = (GstRTPBaseDepayloadClass *) klass;
 
   gstrtpbasedepayload_class->set_caps = gst_rtp_L24_depay_setcaps;
-  gstrtpbasedepayload_class->process = gst_rtp_L24_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_L24_depay_process;
 
   gst_element_class_add_pad_template (gstelement_class,
       gst_static_pad_template_get (&gst_rtp_L24_depay_src_template));
@@ -203,26 +203,24 @@ no_clockrate:
 }
 
 static GstBuffer *
-gst_rtp_L24_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_L24_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
 {
   GstRtpL24Depay *rtpL24depay;
   GstBuffer *outbuf;
   gint payload_len;
   gboolean marker;
-  GstRTPBuffer rtp = { NULL };
 
   rtpL24depay = GST_RTP_L24_DEPAY (depayload);
 
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
-  payload_len = gst_rtp_buffer_get_payload_len (&rtp);
+  payload_len = gst_rtp_buffer_get_payload_len (rtp);
 
   if (payload_len <= 0)
     goto empty_packet;
 
   GST_DEBUG_OBJECT (rtpL24depay, "got payload of %d bytes", payload_len);
 
-  outbuf = gst_rtp_buffer_get_payload_buffer (&rtp);
-  marker = gst_rtp_buffer_get_marker (&rtp);
+  outbuf = gst_rtp_buffer_get_payload_buffer (rtp);
+  marker = gst_rtp_buffer_get_marker (rtp);
 
   if (marker) {
     /* mark talk spurt with RESYNC */
@@ -237,8 +235,6 @@ gst_rtp_L24_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
     goto reorder_failed;
   }
 
-  gst_rtp_buffer_unmap (&rtp);
-
   return outbuf;
 
   /* ERRORS */
@@ -246,14 +242,12 @@ empty_packet:
   {
     GST_ELEMENT_WARNING (rtpL24depay, STREAM, DECODE,
         ("Empty Payload."), (NULL));
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 reorder_failed:
   {
     GST_ELEMENT_ERROR (rtpL24depay, STREAM, DECODE,
         ("Channel reordering failed."), (NULL));
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 }
index e8a05c9..2839b8d 100644 (file)
@@ -67,7 +67,7 @@ G_DEFINE_TYPE (GstRtpAC3Depay, gst_rtp_ac3_depay, GST_TYPE_RTP_BASE_DEPAYLOAD);
 static gboolean gst_rtp_ac3_depay_setcaps (GstRTPBaseDepayload * depayload,
     GstCaps * caps);
 static GstBuffer *gst_rtp_ac3_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 
 static void
 gst_rtp_ac3_depay_class_init (GstRtpAC3DepayClass * klass)
@@ -89,7 +89,7 @@ gst_rtp_ac3_depay_class_init (GstRtpAC3DepayClass * klass)
       "Wim Taymans <wim.taymans@gmail.com>");
 
   gstrtpbasedepayload_class->set_caps = gst_rtp_ac3_depay_setcaps;
-  gstrtpbasedepayload_class->process = gst_rtp_ac3_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_ac3_depay_process;
 
   GST_DEBUG_CATEGORY_INIT (rtpac3depay_debug, "rtpac3depay", 0,
       "AC3 Audio RTP Depayloader");
@@ -123,22 +123,19 @@ gst_rtp_ac3_depay_setcaps (GstRTPBaseDepayload * depayload, GstCaps * caps)
 }
 
 static GstBuffer *
-gst_rtp_ac3_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_ac3_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
 {
   GstRtpAC3Depay *rtpac3depay;
   GstBuffer *outbuf;
-  GstRTPBuffer rtp = { NULL, };
   guint8 *payload;
   guint16 FT, NF;
 
   rtpac3depay = GST_RTP_AC3_DEPAY (depayload);
 
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
-
-  if (gst_rtp_buffer_get_payload_len (&rtp) < 2)
+  if (gst_rtp_buffer_get_payload_len (rtp) < 2)
     goto empty_packet;
 
-  payload = gst_rtp_buffer_get_payload (&rtp);
+  payload = gst_rtp_buffer_get_payload (rtp);
 
   /* strip off header
    *
@@ -154,9 +151,7 @@ gst_rtp_ac3_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
   GST_DEBUG_OBJECT (rtpac3depay, "FT: %d, NF: %d", FT, NF);
 
   /* We don't bother with fragmented packets yet */
-  outbuf = gst_rtp_buffer_get_payload_subbuffer (&rtp, 2, -1);
-
-  gst_rtp_buffer_unmap (&rtp);
+  outbuf = gst_rtp_buffer_get_payload_subbuffer (rtp, 2, -1);
 
   if (outbuf)
     GST_DEBUG_OBJECT (rtpac3depay, "pushing buffer of size %" G_GSIZE_FORMAT,
@@ -169,7 +164,6 @@ empty_packet:
   {
     GST_ELEMENT_WARNING (rtpac3depay, STREAM, DECODE,
         ("Empty Payload."), (NULL));
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 }
index 4b53843..79e6420 100644 (file)
@@ -124,7 +124,7 @@ static GstStaticPadTemplate gst_rtp_amr_depay_src_template =
 static gboolean gst_rtp_amr_depay_setcaps (GstRTPBaseDepayload * depayload,
     GstCaps * caps);
 static GstBuffer *gst_rtp_amr_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 
 #define gst_rtp_amr_depay_parent_class parent_class
 G_DEFINE_TYPE (GstRtpAMRDepay, gst_rtp_amr_depay, GST_TYPE_RTP_BASE_DEPAYLOAD);
@@ -148,7 +148,7 @@ gst_rtp_amr_depay_class_init (GstRtpAMRDepayClass * klass)
       "Extracts AMR or AMR-WB audio from RTP packets (RFC 3267)",
       "Wim Taymans <wim.taymans@gmail.com>");
 
-  gstrtpbasedepayload_class->process = gst_rtp_amr_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_amr_depay_process;
   gstrtpbasedepayload_class->set_caps = gst_rtp_amr_depay_setcaps;
 
   GST_DEBUG_CATEGORY_INIT (rtpamrdepay_debug, "rtpamrdepay", 0,
@@ -281,13 +281,12 @@ static const gint wb_frame_size[16] = {
 };
 
 static GstBuffer *
-gst_rtp_amr_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_amr_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
 {
   GstRtpAMRDepay *rtpamrdepay;
   const gint *frame_size;
   GstBuffer *outbuf = NULL;
   gint payload_len;
-  GstRTPBuffer rtp = { NULL };
   GstMapInfo map;
 
   rtpamrdepay = GST_RTP_AMR_DEPAY (depayload);
@@ -298,8 +297,6 @@ gst_rtp_amr_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
   else
     frame_size = wb_frame_size;
 
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
-
   /* when we get here, 1 channel, 8000/16000 Hz, octet aligned, no CRC,
    * no robust sorting, no interleaving data is to be depayloaded */
   {
@@ -308,13 +305,13 @@ gst_rtp_amr_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
     gint amr_len;
     gint ILL, ILP;
 
-    payload_len = gst_rtp_buffer_get_payload_len (&rtp);
+    payload_len = gst_rtp_buffer_get_payload_len (rtp);
 
     /* need at least 2 bytes for the header */
     if (payload_len < 2)
       goto too_small;
 
-    payload = gst_rtp_buffer_get_payload (&rtp);
+    payload = gst_rtp_buffer_get_payload (rtp);
 
     /* depay CMR. The CMR is used by the sender to request
      * a new encoding mode.
@@ -419,7 +416,7 @@ gst_rtp_amr_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
     /* we can set the duration because each packet is 20 milliseconds */
     GST_BUFFER_DURATION (outbuf) = num_packets * 20 * GST_MSECOND;
 
-    if (gst_rtp_buffer_get_marker (&rtp)) {
+    if (gst_rtp_buffer_get_marker (rtp)) {
       /* marker bit marks a buffer after a talkspurt. */
       GST_DEBUG_OBJECT (depayload, "marker bit was set");
       GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_RESYNC);
@@ -429,7 +426,6 @@ gst_rtp_amr_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
         gst_buffer_get_size (outbuf));
   }
 
-  gst_rtp_buffer_unmap (&rtp);
   return outbuf;
 
   /* ERRORS */
@@ -466,7 +462,6 @@ wrong_length_2:
 bad_packet:
   {
     /* no fatal error */
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 }
index 13efebb..75cea9a 100644 (file)
@@ -56,7 +56,7 @@ GST_STATIC_PAD_TEMPLATE ("src",
     );
 
 static GstBuffer *gst_rtp_bv_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 static gboolean gst_rtp_bv_depay_setcaps (GstRTPBaseDepayload * depayload,
     GstCaps * caps);
 
@@ -82,7 +82,7 @@ gst_rtp_bv_depay_class_init (GstRTPBVDepayClass * klass)
       "Extracts BroadcomVoice audio from RTP packets (RFC 4298)",
       "Wim Taymans <wim.taymans@collabora.co.uk>");
 
-  gstrtpbasedepayload_class->process = gst_rtp_bv_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_bv_depay_process;
   gstrtpbasedepayload_class->set_caps = gst_rtp_bv_depay_setcaps;
 }
 
@@ -155,22 +155,18 @@ wrong_rate:
 }
 
 static GstBuffer *
-gst_rtp_bv_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_bv_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
 {
   GstBuffer *outbuf;
   gboolean marker;
-  GstRTPBuffer rtp = { NULL, };
 
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
-
-  marker = gst_rtp_buffer_get_marker (&rtp);
+  marker = gst_rtp_buffer_get_marker (rtp);
 
   GST_DEBUG ("process : got %" G_GSIZE_FORMAT " bytes, mark %d ts %u seqn %d",
-      gst_buffer_get_size (buf), marker,
-      gst_rtp_buffer_get_timestamp (&rtp), gst_rtp_buffer_get_seq (&rtp));
+      gst_buffer_get_size (rtp->buffer), marker,
+      gst_rtp_buffer_get_timestamp (rtp), gst_rtp_buffer_get_seq (rtp));
 
-  outbuf = gst_rtp_buffer_get_payload_buffer (&rtp);
-  gst_rtp_buffer_unmap (&rtp);
+  outbuf = gst_rtp_buffer_get_payload_buffer (rtp);
 
   if (marker && outbuf) {
     /* mark start of talkspurt with RESYNC */
index bb6e42c..6f23104 100644 (file)
@@ -65,7 +65,7 @@ GST_STATIC_PAD_TEMPLATE ("src",
     );
 
 static GstBuffer *gst_rtp_celt_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 static gboolean gst_rtp_celt_depay_setcaps (GstRTPBaseDepayload * depayload,
     GstCaps * caps);
 
@@ -95,7 +95,7 @@ gst_rtp_celt_depay_class_init (GstRtpCELTDepayClass * klass)
       "Extracts CELT audio from RTP packets",
       "Wim Taymans <wim.taymans@gmail.com>");
 
-  gstrtpbasedepayload_class->process = gst_rtp_celt_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_celt_depay_process;
   gstrtpbasedepayload_class->set_caps = gst_rtp_celt_depay_setcaps;
 }
 
@@ -193,7 +193,7 @@ no_clockrate:
 }
 
 static GstBuffer *
-gst_rtp_celt_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_celt_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
 {
   GstBuffer *outbuf = NULL;
   guint8 *payload;
@@ -203,28 +203,25 @@ gst_rtp_celt_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
   GstClockTime framesize_ns = 0, timestamp;
   guint n = 0;
   GstRtpCELTDepay *rtpceltdepay;
-  GstRTPBuffer rtp = { NULL, };
 
   rtpceltdepay = GST_RTP_CELT_DEPAY (depayload);
   clock_rate = depayload->clock_rate;
   frame_size = rtpceltdepay->frame_size;
   framesize_ns = gst_util_uint64_scale_int (frame_size, GST_SECOND, clock_rate);
 
-  timestamp = GST_BUFFER_PTS (buf);
-
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
+  timestamp = GST_BUFFER_PTS (rtp->buffer);
 
   GST_LOG_OBJECT (depayload,
       "got %" G_GSIZE_FORMAT " bytes, mark %d ts %u seqn %d",
-      gst_buffer_get_size (buf), gst_rtp_buffer_get_marker (&rtp),
-      gst_rtp_buffer_get_timestamp (&rtp), gst_rtp_buffer_get_seq (&rtp));
+      gst_buffer_get_size (rtp->buffer), gst_rtp_buffer_get_marker (rtp),
+      gst_rtp_buffer_get_timestamp (rtp), gst_rtp_buffer_get_seq (rtp));
 
   GST_LOG_OBJECT (depayload, "got clock-rate=%d, frame_size=%d, "
       "_ns=%" GST_TIME_FORMAT ", timestamp=%" GST_TIME_FORMAT, clock_rate,
       frame_size, GST_TIME_ARGS (framesize_ns), GST_TIME_ARGS (timestamp));
 
-  payload = gst_rtp_buffer_get_payload (&rtp);
-  payload_len = gst_rtp_buffer_get_payload_len (&rtp);
+  payload = gst_rtp_buffer_get_payload (rtp);
+  payload_len = gst_rtp_buffer_get_payload_len (rtp);
 
   /* first count how many bytes are consumed by the size headers and make offset
    * point to the first data byte */
@@ -249,7 +246,7 @@ gst_rtp_celt_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
       total_size += s + 1;
     } while (s == 0xff);
 
-    outbuf = gst_rtp_buffer_get_payload_subbuffer (&rtp, offset, size);
+    outbuf = gst_rtp_buffer_get_payload_subbuffer (rtp, offset, size);
     offset += size;
 
     if (frame_size != -1 && clock_rate != -1) {
@@ -263,7 +260,6 @@ gst_rtp_celt_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
 
     gst_rtp_base_depayload_push (depayload, outbuf);
   }
-  gst_rtp_buffer_unmap (&rtp);
 
   return NULL;
 }
index fd738c4..7c83517 100644 (file)
@@ -75,7 +75,7 @@ static GstStateChangeReturn
 gst_rtp_dv_depay_change_state (GstElement * element, GstStateChange transition);
 
 static GstBuffer *gst_rtp_dv_depay_process (GstRTPBaseDepayload * base,
-    GstBuffer * in);
+    GstRTPBuffer * rtp);
 static gboolean gst_rtp_dv_depay_setcaps (GstRTPBaseDepayload * depayload,
     GstCaps * caps);
 
@@ -106,7 +106,7 @@ gst_rtp_dv_depay_class_init (GstRTPDVDepayClass * klass)
       "Depayloads DV from RTP packets (RFC 3189)",
       "Marcel Moreaux <marcelm@spacelabs.nl>, Wim Taymans <wim.taymans@gmail.com>");
 
-  gstrtpbasedepayload_class->process =
+  gstrtpbasedepayload_class->process_rtp_packet =
       GST_DEBUG_FUNCPTR (gst_rtp_dv_depay_process);
   gstrtpbasedepayload_class->set_caps =
       GST_DEBUG_FUNCPTR (gst_rtp_dv_depay_setcaps);
@@ -286,7 +286,7 @@ calculate_difblock_location (guint8 * block)
  * NTSC.
  */
 static GstBuffer *
-gst_rtp_dv_depay_process (GstRTPBaseDepayload * base, GstBuffer * in)
+gst_rtp_dv_depay_process (GstRTPBaseDepayload * base, GstRTPBuffer * rtp)
 {
   GstBuffer *out = NULL;
   guint8 *payload;
@@ -294,16 +294,13 @@ gst_rtp_dv_depay_process (GstRTPBaseDepayload * base, GstBuffer * in)
   guint payload_len, location;
   GstRTPDVDepay *dvdepay = GST_RTP_DV_DEPAY (base);
   gboolean marker;
-  GstRTPBuffer rtp = { NULL, };
   GstMapInfo map;
 
-  gst_rtp_buffer_map (in, GST_MAP_READ, &rtp);
-
-  marker = gst_rtp_buffer_get_marker (&rtp);
+  marker = gst_rtp_buffer_get_marker (rtp);
 
   /* Check if the received packet contains (the start of) a new frame, we do
    * this by checking the RTP timestamp. */
-  rtp_ts = gst_rtp_buffer_get_timestamp (&rtp);
+  rtp_ts = gst_rtp_buffer_get_timestamp (rtp);
 
   /* we cannot copy the packet yet if the marker is set, we will do that below
    * after taking out the data */
@@ -317,8 +314,8 @@ gst_rtp_dv_depay_process (GstRTPBaseDepayload * base, GstBuffer * in)
   }
 
   /* Extract the payload */
-  payload_len = gst_rtp_buffer_get_payload_len (&rtp);
-  payload = gst_rtp_buffer_get_payload (&rtp);
+  payload_len = gst_rtp_buffer_get_payload_len (rtp);
+  payload = gst_rtp_buffer_get_payload (rtp);
 
   /* copy all DIF chunks in their place. */
   gst_buffer_map (dvdepay->acc, &map, GST_MAP_READWRITE);
@@ -350,7 +347,6 @@ gst_rtp_dv_depay_process (GstRTPBaseDepayload * base, GstBuffer * in)
     payload += 80;
     payload_len -= 80;
   }
-  gst_rtp_buffer_unmap (&rtp);
   gst_buffer_unmap (dvdepay->acc, &map);
 
   if (marker) {
index c77fb95..021e9a3 100644 (file)
@@ -66,7 +66,7 @@ G_DEFINE_TYPE (GstRtpG722Depay, gst_rtp_g722_depay,
 static gboolean gst_rtp_g722_depay_setcaps (GstRTPBaseDepayload * depayload,
     GstCaps * caps);
 static GstBuffer *gst_rtp_g722_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 
 static void
 gst_rtp_g722_depay_class_init (GstRtpG722DepayClass * klass)
@@ -91,7 +91,7 @@ gst_rtp_g722_depay_class_init (GstRtpG722DepayClass * klass)
       "Wim Taymans <wim.taymans@gmail.com>");
 
   gstrtpbasedepayload_class->set_caps = gst_rtp_g722_depay_setcaps;
-  gstrtpbasedepayload_class->process = gst_rtp_g722_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_g722_depay_process;
 }
 
 static void
@@ -214,28 +214,24 @@ no_clockrate:
 }
 
 static GstBuffer *
-gst_rtp_g722_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_g722_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
 {
   GstRtpG722Depay *rtpg722depay;
   GstBuffer *outbuf;
   gint payload_len;
   gboolean marker;
-  GstRTPBuffer rtp = { NULL };
 
   rtpg722depay = GST_RTP_G722_DEPAY (depayload);
 
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
-
-  payload_len = gst_rtp_buffer_get_payload_len (&rtp);
+  payload_len = gst_rtp_buffer_get_payload_len (rtp);
 
   if (payload_len <= 0)
     goto empty_packet;
 
   GST_DEBUG_OBJECT (rtpg722depay, "got payload of %d bytes", payload_len);
 
-  outbuf = gst_rtp_buffer_get_payload_buffer (&rtp);
-  marker = gst_rtp_buffer_get_marker (&rtp);
-  gst_rtp_buffer_unmap (&rtp);
+  outbuf = gst_rtp_buffer_get_payload_buffer (rtp);
+  marker = gst_rtp_buffer_get_marker (rtp);
 
   if (marker && outbuf) {
     /* mark talk spurt with RESYNC */
@@ -249,7 +245,6 @@ empty_packet:
   {
     GST_ELEMENT_WARNING (rtpg722depay, STREAM, DECODE,
         ("Empty Payload."), (NULL));
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 }
index fb726f2..c66473c 100644 (file)
@@ -75,7 +75,7 @@ GST_STATIC_PAD_TEMPLATE ("src",
 static gboolean gst_rtp_g723_depay_setcaps (GstRTPBaseDepayload * depayload,
     GstCaps * caps);
 static GstBuffer *gst_rtp_g723_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 
 #define gst_rtp_g723_depay_parent_class parent_class
 G_DEFINE_TYPE (GstRtpG723Depay, gst_rtp_g723_depay,
@@ -103,7 +103,7 @@ gst_rtp_g723_depay_class_init (GstRtpG723DepayClass * klass)
       "Extracts G.723 audio from RTP packets (RFC 3551)",
       "Wim Taymans <wim.taymans@gmail.com>");
 
-  gstrtpbasedepayload_class->process = gst_rtp_g723_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_g723_depay_process;
   gstrtpbasedepayload_class->set_caps = gst_rtp_g723_depay_setcaps;
 }
 
@@ -171,19 +171,16 @@ wrong_clock_rate:
 
 
 static GstBuffer *
-gst_rtp_g723_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_g723_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
 {
   GstRtpG723Depay *rtpg723depay;
   GstBuffer *outbuf = NULL;
   gint payload_len;
   gboolean marker;
-  GstRTPBuffer rtp = { NULL };
 
   rtpg723depay = GST_RTP_G723_DEPAY (depayload);
 
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
-
-  payload_len = gst_rtp_buffer_get_payload_len (&rtp);
+  payload_len = gst_rtp_buffer_get_payload_len (rtp);
 
   /* At least 4 bytes */
   if (payload_len < 4)
@@ -191,9 +188,8 @@ gst_rtp_g723_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
 
   GST_LOG_OBJECT (rtpg723depay, "payload len %d", payload_len);
 
-  outbuf = gst_rtp_buffer_get_payload_buffer (&rtp);
-  marker = gst_rtp_buffer_get_marker (&rtp);
-  gst_rtp_buffer_unmap (&rtp);
+  outbuf = gst_rtp_buffer_get_payload_buffer (rtp);
+  marker = gst_rtp_buffer_get_marker (rtp);
 
   if (marker) {
     /* marker bit starts talkspurt */
@@ -215,7 +211,6 @@ too_small:
 bad_packet:
   {
     /* no fatal error */
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 }
index a6175eb..7bab5be 100644 (file)
@@ -82,7 +82,7 @@ static void gst_rtp_g726_depay_set_property (GObject * object, guint prop_id,
     const GValue * value, GParamSpec * pspec);
 
 static GstBuffer *gst_rtp_g726_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 static gboolean gst_rtp_g726_depay_setcaps (GstRTPBaseDepayload * depayload,
     GstCaps * caps);
 
@@ -122,7 +122,7 @@ gst_rtp_g726_depay_class_init (GstRtpG726DepayClass * klass)
       "Extracts G.726 audio from RTP packets",
       "Axis Communications <dev-gstreamer@axis.com>");
 
-  gstrtpbasedepayload_class->process = gst_rtp_g726_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_g726_depay_process;
   gstrtpbasedepayload_class->set_caps = gst_rtp_g726_depay_setcaps;
 }
 
@@ -207,26 +207,23 @@ unknown_encoding:
 
 
 static GstBuffer *
-gst_rtp_g726_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_g726_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
 {
   GstRtpG726Depay *depay;
   GstBuffer *outbuf = NULL;
   gboolean marker;
-  GstRTPBuffer rtp = { NULL };
 
   depay = GST_RTP_G726_DEPAY (depayload);
 
-  gst_rtp_buffer_map (buf, GST_MAP_READWRITE, &rtp);
-
-  marker = gst_rtp_buffer_get_marker (&rtp);
+  marker = gst_rtp_buffer_get_marker (rtp);
 
   GST_DEBUG ("process : got %" G_GSIZE_FORMAT " bytes, mark %d ts %u seqn %d",
-      gst_buffer_get_size (buf), marker,
-      gst_rtp_buffer_get_timestamp (&rtp), gst_rtp_buffer_get_seq (&rtp));
+      gst_buffer_get_size (rtp->buffer), marker,
+      gst_rtp_buffer_get_timestamp (rtp), gst_rtp_buffer_get_seq (rtp));
 
   if (depay->aal2 || depay->force_aal2) {
     /* AAL2, we can just copy the bytes */
-    outbuf = gst_rtp_buffer_get_payload_buffer (&rtp);
+    outbuf = gst_rtp_buffer_get_payload_buffer (rtp);
     if (!outbuf)
       goto bad_len;
   } else {
@@ -234,10 +231,10 @@ gst_rtp_g726_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
     guint len;
     GstMapInfo map;
 
-    in = gst_rtp_buffer_get_payload (&rtp);
-    len = gst_rtp_buffer_get_payload_len (&rtp);
+    in = gst_rtp_buffer_get_payload (rtp);
+    len = gst_rtp_buffer_get_payload_len (rtp);
 
-    outbuf = gst_rtp_buffer_get_payload_buffer (&rtp);
+    outbuf = gst_rtp_buffer_get_payload_buffer (rtp);
     if (!outbuf)
       goto bad_len;
     outbuf = gst_buffer_make_writable (outbuf);
@@ -334,8 +331,6 @@ gst_rtp_g726_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
     gst_buffer_unmap (outbuf, &map);
   }
 
-  gst_rtp_buffer_unmap (&rtp);
-
   if (marker) {
     /* mark start of talkspurt with RESYNC */
     GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_RESYNC);
@@ -345,10 +340,8 @@ gst_rtp_g726_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
 
 bad_len:
   {
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
-
 }
 
 static void
index 8a9c977..2ad96c8 100644 (file)
@@ -73,7 +73,7 @@ GST_STATIC_PAD_TEMPLATE ("src",
 static gboolean gst_rtp_g729_depay_setcaps (GstRTPBaseDepayload * depayload,
     GstCaps * caps);
 static GstBuffer *gst_rtp_g729_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 
 #define gst_rtp_g729_depay_parent_class parent_class
 G_DEFINE_TYPE (GstRtpG729Depay, gst_rtp_g729_depay,
@@ -101,7 +101,7 @@ gst_rtp_g729_depay_class_init (GstRtpG729DepayClass * klass)
       "Extracts G.729 audio from RTP packets (RFC 3551)",
       "Laurent Glayal <spglegle@yahoo.fr>");
 
-  gstrtpbasedepayload_class->process = gst_rtp_g729_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_g729_depay_process;
   gstrtpbasedepayload_class->set_caps = gst_rtp_g729_depay_setcaps;
 }
 
@@ -168,19 +168,16 @@ wrong_clock_rate:
 }
 
 static GstBuffer *
-gst_rtp_g729_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_g729_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
 {
   GstRtpG729Depay *rtpg729depay;
   GstBuffer *outbuf = NULL;
   gint payload_len;
   gboolean marker;
-  GstRTPBuffer rtp = { NULL };
 
   rtpg729depay = GST_RTP_G729_DEPAY (depayload);
 
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
-
-  payload_len = gst_rtp_buffer_get_payload_len (&rtp);
+  payload_len = gst_rtp_buffer_get_payload_len (rtp);
 
   /* At least 2 bytes (CNG from G729 Annex B) */
   if (payload_len < 2) {
@@ -195,10 +192,8 @@ gst_rtp_g729_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
     GST_LOG_OBJECT (rtpg729depay, "G729 payload contains CNG frame");
   }
 
-  outbuf = gst_rtp_buffer_get_payload_buffer (&rtp);
-  marker = gst_rtp_buffer_get_marker (&rtp);
-
-  gst_rtp_buffer_unmap (&rtp);
+  outbuf = gst_rtp_buffer_get_payload_buffer (rtp);
+  marker = gst_rtp_buffer_get_marker (rtp);
 
   if (marker) {
     /* marker bit starts talkspurt */
@@ -214,7 +209,6 @@ gst_rtp_g729_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
 bad_packet:
   {
     /* no fatal error */
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 }
index 96b30cf..69ac618 100644 (file)
@@ -57,7 +57,7 @@ static GstStaticPadTemplate gst_rtp_gsm_depay_sink_template =
     );
 
 static GstBuffer *gst_rtp_gsm_depay_process (GstRTPBaseDepayload * _depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 static gboolean gst_rtp_gsm_depay_setcaps (GstRTPBaseDepayload * _depayload,
     GstCaps * caps);
 
@@ -82,7 +82,7 @@ gst_rtp_gsm_depay_class_init (GstRTPGSMDepayClass * klass)
       "RTP GSM depayloader", "Codec/Depayloader/Network/RTP",
       "Extracts GSM audio from RTP packets", "Zeeshan Ali <zeenix@gmail.com>");
 
-  gstrtpbase_depayload_class->process = gst_rtp_gsm_depay_process;
+  gstrtpbase_depayload_class->process_rtp_packet = gst_rtp_gsm_depay_process;
   gstrtpbase_depayload_class->set_caps = gst_rtp_gsm_depay_setcaps;
 
   GST_DEBUG_CATEGORY_INIT (rtpgsmdepay_debug, "rtpgsmdepay", 0,
@@ -117,23 +117,18 @@ gst_rtp_gsm_depay_setcaps (GstRTPBaseDepayload * depayload, GstCaps * caps)
 }
 
 static GstBuffer *
-gst_rtp_gsm_depay_process (GstRTPBaseDepayload * _depayload, GstBuffer * buf)
+gst_rtp_gsm_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
 {
   GstBuffer *outbuf = NULL;
   gboolean marker;
-  GstRTPBuffer rtp = { NULL };
 
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
-
-  marker = gst_rtp_buffer_get_marker (&rtp);
+  marker = gst_rtp_buffer_get_marker (rtp);
 
   GST_DEBUG ("process : got %" G_GSIZE_FORMAT " bytes, mark %d ts %u seqn %d",
-      gst_buffer_get_size (buf), marker,
-      gst_rtp_buffer_get_timestamp (&rtp), gst_rtp_buffer_get_seq (&rtp));
-
-  outbuf = gst_rtp_buffer_get_payload_buffer (&rtp);
+      gst_buffer_get_size (rtp->buffer), marker,
+      gst_rtp_buffer_get_timestamp (rtp), gst_rtp_buffer_get_seq (rtp));
 
-  gst_rtp_buffer_unmap (&rtp);
+  outbuf = gst_rtp_buffer_get_payload_buffer (rtp);
 
   if (marker && outbuf) {
     /* mark start of talkspurt with RESYNC */
index 621aa47..d4c771e 100644 (file)
@@ -59,7 +59,7 @@ static void gst_rtp_gst_depay_reset (GstRtpGSTDepay * rtpgstdepay, gboolean
 static gboolean gst_rtp_gst_depay_setcaps (GstRTPBaseDepayload * depayload,
     GstCaps * caps);
 static GstBuffer *gst_rtp_gst_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 
 static void
 gst_rtp_gst_depay_class_init (GstRtpGSTDepayClass * klass)
@@ -91,7 +91,7 @@ gst_rtp_gst_depay_class_init (GstRtpGSTDepayClass * klass)
 
   gstrtpbasedepayload_class->handle_event = gst_rtp_gst_depay_handle_event;
   gstrtpbasedepayload_class->set_caps = gst_rtp_gst_depay_setcaps;
-  gstrtpbasedepayload_class->process = gst_rtp_gst_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_gst_depay_process;
 }
 
 static void
@@ -397,30 +397,27 @@ store_event (GstRtpGSTDepay * rtpgstdepay, GstEvent * event)
 }
 
 static GstBuffer *
-gst_rtp_gst_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_gst_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
 {
   GstRtpGSTDepay *rtpgstdepay;
   GstBuffer *subbuf, *outbuf = NULL;
   gint payload_len;
   guint8 *payload;
   guint CV, frag_offset, avail, offset;
-  GstRTPBuffer rtp = { NULL };
 
   rtpgstdepay = GST_RTP_GST_DEPAY (depayload);
 
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
-
-  payload_len = gst_rtp_buffer_get_payload_len (&rtp);
+  payload_len = gst_rtp_buffer_get_payload_len (rtp);
 
   if (payload_len <= 8)
     goto empty_packet;
 
-  if (GST_BUFFER_IS_DISCONT (buf)) {
+  if (GST_BUFFER_IS_DISCONT (rtp->buffer)) {
     GST_WARNING_OBJECT (rtpgstdepay, "DISCONT, clear adapter");
     gst_adapter_clear (rtpgstdepay->adapter);
   }
 
-  payload = gst_rtp_buffer_get_payload (&rtp);
+  payload = gst_rtp_buffer_get_payload (rtp);
 
   /* strip off header
    *
@@ -440,11 +437,11 @@ gst_rtp_gst_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
     goto wrong_frag;
 
   /* subbuffer skipping the 8 header bytes */
-  subbuf = gst_rtp_buffer_get_payload_subbuffer (&rtp, 8, -1);
+  subbuf = gst_rtp_buffer_get_payload_subbuffer (rtp, 8, -1);
   gst_adapter_push (rtpgstdepay->adapter, subbuf);
 
   offset = 0;
-  if (gst_rtp_buffer_get_marker (&rtp)) {
+  if (gst_rtp_buffer_get_marker (rtp)) {
     guint avail;
     GstCaps *outcaps;
 
@@ -525,7 +522,6 @@ gst_rtp_gst_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
       outbuf = NULL;
     }
   }
-  gst_rtp_buffer_unmap (&rtp);
 
   return outbuf;
 
@@ -534,13 +530,11 @@ empty_packet:
   {
     GST_ELEMENT_WARNING (rtpgstdepay, STREAM, DECODE,
         ("Empty Payload."), (NULL));
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 wrong_frag:
   {
     gst_adapter_clear (rtpgstdepay->adapter);
-    gst_rtp_buffer_unmap (&rtp);
     GST_LOG_OBJECT (rtpgstdepay, "wrong fragment, skipping");
     return NULL;
   }
@@ -548,14 +542,12 @@ no_caps:
   {
     GST_WARNING_OBJECT (rtpgstdepay, "failed to parse caps");
     gst_buffer_unref (outbuf);
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 no_event:
   {
     GST_WARNING_OBJECT (rtpgstdepay, "failed to parse event");
     gst_buffer_unref (outbuf);
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 missing_caps:
@@ -563,7 +555,6 @@ missing_caps:
     GST_ELEMENT_WARNING (rtpgstdepay, STREAM, DECODE,
         ("Missing caps %u.", CV), (NULL));
     gst_buffer_unref (outbuf);
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 }
index f1a271c..0c9680c 100644 (file)
@@ -79,7 +79,7 @@ G_DEFINE_TYPE (GstRtpH261Depay, gst_rtp_h261_depay,
 #define parent_class gst_rtp_h261_depay_parent_class
 
 static GstBuffer *
-gst_rtp_h261_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_h261_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
 {
   GstRtpH261Depay *depay;
   GstBuffer *outbuf = NULL;
@@ -88,28 +88,24 @@ gst_rtp_h261_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
   const guint header_len = GST_RTP_H261_PAYLOAD_HEADER_LEN;
   gboolean marker;
   GstRtpH261PayHeader *header;
-  GstRTPBuffer rtp = GST_RTP_BUFFER_INIT;
 
   depay = GST_RTP_H261_DEPAY (depayload);
 
-  if (GST_BUFFER_IS_DISCONT (buf)) {
+  if (GST_BUFFER_IS_DISCONT (rtp->buffer)) {
     GST_DEBUG_OBJECT (depay, "Discont buffer, flushing adapter");
     gst_adapter_clear (depay->adapter);
     depay->leftover = NO_LEFTOVER;
     depay->start = FALSE;
   }
 
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
+  payload_len = gst_rtp_buffer_get_payload_len (rtp);
+  payload = gst_rtp_buffer_get_payload (rtp);
 
-  payload_len = gst_rtp_buffer_get_payload_len (&rtp);
-  payload = gst_rtp_buffer_get_payload (&rtp);
-
-  marker = gst_rtp_buffer_get_marker (&rtp);
+  marker = gst_rtp_buffer_get_marker (rtp);
 
   if (payload_len < 4) {
     GST_WARNING_OBJECT (depay,
         "Dropping packet with payload length invalid length");
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 
@@ -148,12 +144,12 @@ gst_rtp_h261_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
   if (header->ebit == 0) {
     /* H.261 stream ends on byte boundary, take entire packet */
     gst_adapter_push (depay->adapter,
-        gst_rtp_buffer_get_payload_subbuffer (&rtp, header_len, payload_len));
+        gst_rtp_buffer_get_payload_subbuffer (rtp, header_len, payload_len));
   } else {
     /* Take the entire buffer except for the last byte, which will be kept to
      * merge with next packet */
     gst_adapter_push (depay->adapter,
-        gst_rtp_buffer_get_payload_subbuffer (&rtp, header_len,
+        gst_rtp_buffer_get_payload_subbuffer (rtp, header_len,
             payload_len - 1));
     depay->leftover = payload[payload_len - 1] & (0xFF << header->ebit);
   }
@@ -186,7 +182,6 @@ skip:
       depay->start = TRUE;
     }
   }
-  gst_rtp_buffer_unmap (&rtp);
 
   return outbuf;
 }
@@ -270,7 +265,7 @@ gst_rtp_h261_depay_class_init (GstRtpH261DepayClass * klass)
       "Extracts H261 video from RTP packets (RFC 4587)",
       "Stian Selnes <stian@pexip.com>");
 
-  gstrtpbasedepayload_class->process = gst_rtp_h261_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_h261_depay_process;
   gstrtpbasedepayload_class->set_caps = gst_rtp_h261_depay_setcaps;
 
   gobject_class->dispose = gst_rtp_h261_depay_dispose;
index 41b0fc4..8f94bd6 100644 (file)
@@ -77,7 +77,7 @@ static GstStateChangeReturn gst_rtp_h263_depay_change_state (GstElement *
     element, GstStateChange transition);
 
 static GstBuffer *gst_rtp_h263_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 gboolean gst_rtp_h263_depay_setcaps (GstRTPBaseDepayload * filter,
     GstCaps * caps);
 
@@ -110,7 +110,7 @@ gst_rtp_h263_depay_class_init (GstRtpH263DepayClass * klass)
       "Philippe Kalaf <philippe.kalaf@collabora.co.uk>, "
       "Edward Hervey <bilboed@bilboed.com>");
 
-  gstrtpbasedepayload_class->process = gst_rtp_h263_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_h263_depay_process;
   gstrtpbasedepayload_class->set_caps = gst_rtp_h263_depay_setcaps;
 }
 
@@ -204,7 +204,7 @@ gst_rtp_h263_depay_setcaps (GstRTPBaseDepayload * filter, GstCaps * caps)
 }
 
 static GstBuffer *
-gst_rtp_h263_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_h263_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
 {
   GstRtpH263Depay *rtph263depay;
   GstBuffer *outbuf;
@@ -214,12 +214,11 @@ gst_rtp_h263_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
   guint SBIT, EBIT;
   gboolean F, P, M;
   gboolean I;
-  GstRTPBuffer rtp = { NULL };
 
   rtph263depay = GST_RTP_H263_DEPAY (depayload);
 
   /* flush remaining data on discont */
-  if (GST_BUFFER_IS_DISCONT (buf)) {
+  if (GST_BUFFER_IS_DISCONT (rtp->buffer)) {
     GST_LOG_OBJECT (depayload, "Discont buffer, flushing adapter");
     gst_adapter_clear (rtph263depay->adapter);
     rtph263depay->offset = 0;
@@ -227,12 +226,10 @@ gst_rtp_h263_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
     rtph263depay->start = FALSE;
   }
 
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
+  payload_len = gst_rtp_buffer_get_payload_len (rtp);
+  payload = gst_rtp_buffer_get_payload (rtp);
 
-  payload_len = gst_rtp_buffer_get_payload_len (&rtp);
-  payload = gst_rtp_buffer_get_payload (&rtp);
-
-  M = gst_rtp_buffer_get_marker (&rtp);
+  M = gst_rtp_buffer_get_marker (rtp);
 
   if (payload_len < 1)
     goto too_small;
@@ -346,13 +343,13 @@ gst_rtp_h263_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
     GstBuffer *tmp;
 
     /* Take the entire buffer */
-    tmp = gst_rtp_buffer_get_payload_subbuffer (&rtp, header_len, payload_len);
+    tmp = gst_rtp_buffer_get_payload_subbuffer (rtp, header_len, payload_len);
     gst_adapter_push (rtph263depay->adapter, tmp);
   } else {
     GstBuffer *tmp;
 
     /* Take the entire buffer except for the last byte */
-    tmp = gst_rtp_buffer_get_payload_subbuffer (&rtp, header_len,
+    tmp = gst_rtp_buffer_get_payload_subbuffer (rtp, header_len,
         payload_len - 1);
     gst_adapter_push (rtph263depay->adapter, tmp);
 
@@ -395,7 +392,6 @@ skip:
       rtph263depay->start = TRUE;
     }
   }
-  gst_rtp_buffer_unmap (&rtp);
 
   return NULL;
 
@@ -403,7 +399,6 @@ too_small:
   {
     GST_ELEMENT_WARNING (rtph263depay, STREAM, DECODE,
         ("Packet payload was too small"), (NULL));
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 }
index 9fc95a8..d794b07 100644 (file)
@@ -89,7 +89,7 @@ static GstStateChangeReturn gst_rtp_h263p_depay_change_state (GstElement *
     element, GstStateChange transition);
 
 static GstBuffer *gst_rtp_h263p_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 gboolean gst_rtp_h263p_depay_setcaps (GstRTPBaseDepayload * filter,
     GstCaps * caps);
 
@@ -118,7 +118,7 @@ gst_rtp_h263p_depay_class_init (GstRtpH263PDepayClass * klass)
       "Extracts H263/+/++ video from RTP packets (RFC 4629)",
       "Wim Taymans <wim.taymans@gmail.com>");
 
-  gstrtpbasedepayload_class->process = gst_rtp_h263p_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_h263p_depay_process;
   gstrtpbasedepayload_class->set_caps = gst_rtp_h263p_depay_setcaps;
 
   GST_DEBUG_CATEGORY_INIT (rtph263pdepay_debug, "rtph263pdepay", 0,
@@ -230,7 +230,8 @@ no_caps:
 }
 
 static GstBuffer *
-gst_rtp_h263p_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_h263p_depay_process (GstRTPBaseDepayload * depayload,
+    GstRTPBuffer * rtp)
 {
   GstRtpH263PDepay *rtph263pdepay;
   GstBuffer *outbuf;
@@ -239,28 +240,25 @@ gst_rtp_h263p_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
   gboolean P, V, M;
   guint header_len;
   guint8 PLEN, PEBIT;
-  GstRTPBuffer rtp = { NULL };
 
   rtph263pdepay = GST_RTP_H263P_DEPAY (depayload);
 
   /* flush remaining data on discont */
-  if (GST_BUFFER_IS_DISCONT (buf)) {
+  if (GST_BUFFER_IS_DISCONT (rtp->buffer)) {
     GST_LOG_OBJECT (depayload, "DISCONT, flushing adapter");
     gst_adapter_clear (rtph263pdepay->adapter);
     rtph263pdepay->wait_start = TRUE;
   }
 
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
-
-  payload_len = gst_rtp_buffer_get_payload_len (&rtp);
+  payload_len = gst_rtp_buffer_get_payload_len (rtp);
   header_len = 2;
 
   if (payload_len < header_len)
     goto too_small;
 
-  payload = gst_rtp_buffer_get_payload (&rtp);
+  payload = gst_rtp_buffer_get_payload (rtp);
 
-  M = gst_rtp_buffer_get_marker (&rtp);
+  M = gst_rtp_buffer_get_marker (rtp);
 
   /*  0                   1
    *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
@@ -316,7 +314,7 @@ gst_rtp_h263p_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
     GST_LOG_OBJECT (depayload, "Frame complete");
 
     outbuf =
-        gst_rtp_buffer_get_payload_subbuffer (&rtp, header_len, payload_len);
+        gst_rtp_buffer_get_payload_subbuffer (rtp, header_len, payload_len);
     gst_adapter_push (rtph263pdepay->adapter, outbuf);
     outbuf = NULL;
 
@@ -330,18 +328,15 @@ gst_rtp_h263p_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
       gst_buffer_memset (padbuf, 0, 0, padlen);
       outbuf = gst_buffer_append (outbuf, padbuf);
     }
-    gst_rtp_buffer_unmap (&rtp);
 
     return outbuf;
-
   } else {
     /* frame not completed: store in adapter */
     GST_LOG_OBJECT (depayload, "Frame incomplete, storing %d", payload_len);
 
     outbuf =
-        gst_rtp_buffer_get_payload_subbuffer (&rtp, header_len, payload_len);
+        gst_rtp_buffer_get_payload_subbuffer (rtp, header_len, payload_len);
     gst_adapter_push (rtph263pdepay->adapter, outbuf);
-    gst_rtp_buffer_unmap (&rtp);
   }
   return NULL;
 
@@ -349,13 +344,11 @@ too_small:
   {
     GST_ELEMENT_WARNING (rtph263pdepay, STREAM, DECODE,
         ("Packet payload was too small"), (NULL));
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 waiting_start:
   {
     GST_DEBUG_OBJECT (rtph263pdepay, "waiting for picture start");
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 }
index b45a720..0a6248c 100644 (file)
@@ -85,7 +85,7 @@ static GstStateChangeReturn gst_rtp_h264_depay_change_state (GstElement *
     element, GstStateChange transition);
 
 static GstBuffer *gst_rtp_h264_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 static gboolean gst_rtp_h264_depay_setcaps (GstRTPBaseDepayload * filter,
     GstCaps * caps);
 static gboolean gst_rtp_h264_depay_handle_event (GstRTPBaseDepayload * depay,
@@ -115,7 +115,7 @@ gst_rtp_h264_depay_class_init (GstRtpH264DepayClass * klass)
       "Wim Taymans <wim.taymans@gmail.com>");
   gstelement_class->change_state = gst_rtp_h264_depay_change_state;
 
-  gstrtpbasedepayload_class->process = gst_rtp_h264_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_h264_depay_process;
   gstrtpbasedepayload_class->set_caps = gst_rtp_h264_depay_setcaps;
   gstrtpbasedepayload_class->handle_event = gst_rtp_h264_depay_handle_event;
 }
@@ -828,17 +828,16 @@ gst_rtp_h264_push_fragmentation_unit (GstRtpH264Depay * rtph264depay,
 }
 
 static GstBuffer *
-gst_rtp_h264_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_h264_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
 {
   GstRtpH264Depay *rtph264depay;
   GstBuffer *outbuf = NULL;
   guint8 nal_unit_type;
-  GstRTPBuffer rtp = { NULL };
 
   rtph264depay = GST_RTP_H264_DEPAY (depayload);
 
   /* flush remaining data on discont */
-  if (GST_BUFFER_IS_DISCONT (buf)) {
+  if (GST_BUFFER_IS_DISCONT (rtp->buffer)) {
     gst_adapter_clear (rtph264depay->adapter);
     rtph264depay->wait_start = TRUE;
     rtph264depay->current_fu_type = 0;
@@ -854,13 +853,11 @@ gst_rtp_h264_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
     GstClockTime timestamp;
     gboolean marker;
 
-    timestamp = GST_BUFFER_PTS (buf);
+    timestamp = GST_BUFFER_PTS (rtp->buffer);
 
-    gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
-
-    payload_len = gst_rtp_buffer_get_payload_len (&rtp);
-    payload = gst_rtp_buffer_get_payload (&rtp);
-    marker = gst_rtp_buffer_get_marker (&rtp);
+    payload_len = gst_rtp_buffer_get_payload_len (rtp);
+    payload = gst_rtp_buffer_get_payload (rtp);
+    marker = gst_rtp_buffer_get_marker (rtp);
 
     GST_DEBUG_OBJECT (rtph264depay, "receiving %d bytes", payload_len);
 
@@ -1080,7 +1077,6 @@ gst_rtp_h264_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
         break;
       }
     }
-    gst_rtp_buffer_unmap (&rtp);
   }
 
   return outbuf;
@@ -1089,27 +1085,23 @@ gst_rtp_h264_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
 empty_packet:
   {
     GST_DEBUG_OBJECT (rtph264depay, "empty packet");
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 undefined_type:
   {
     GST_ELEMENT_WARNING (rtph264depay, STREAM, DECODE,
         (NULL), ("Undefined packet type"));
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 waiting_start:
   {
     GST_DEBUG_OBJECT (rtph264depay, "waiting for start");
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 not_implemented:
   {
     GST_ELEMENT_ERROR (rtph264depay, STREAM, FORMAT,
         (NULL), ("NAL unit type %d not supported yet", nal_unit_type));
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 }
index fc728bd..2fdd451 100644 (file)
@@ -65,7 +65,7 @@ static void gst_ilbc_depay_get_property (GObject * object,
     guint prop_id, GValue * value, GParamSpec * pspec);
 
 static GstBuffer *gst_rtp_ilbc_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 static gboolean gst_rtp_ilbc_depay_setcaps (GstRTPBaseDepayload * depayload,
     GstCaps * caps);
 
@@ -120,7 +120,7 @@ gst_rtp_ilbc_depay_class_init (GstRTPiLBCDepayClass * klass)
       "Extracts iLBC audio from RTP packets (RFC 3952)",
       "Philippe Kalaf <philippe.kalaf@collabora.co.uk>");
 
-  gstrtpbasedepayload_class->process = gst_rtp_ilbc_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_ilbc_depay_process;
   gstrtpbasedepayload_class->set_caps = gst_rtp_ilbc_depay_setcaps;
 }
 
@@ -170,23 +170,18 @@ gst_rtp_ilbc_depay_setcaps (GstRTPBaseDepayload * depayload, GstCaps * caps)
 }
 
 static GstBuffer *
-gst_rtp_ilbc_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_ilbc_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
 {
   GstBuffer *outbuf;
   gboolean marker;
-  GstRTPBuffer rtp = { NULL };
 
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
-
-  marker = gst_rtp_buffer_get_marker (&rtp);
+  marker = gst_rtp_buffer_get_marker (rtp);
 
   GST_DEBUG ("process : got %" G_GSIZE_FORMAT " bytes, mark %d ts %u seqn %d",
-      gst_buffer_get_size (buf), marker,
-      gst_rtp_buffer_get_timestamp (&rtp), gst_rtp_buffer_get_seq (&rtp));
-
-  outbuf = gst_rtp_buffer_get_payload_buffer (&rtp);
+      gst_buffer_get_size (rtp->buffer), marker,
+      gst_rtp_buffer_get_timestamp (rtp), gst_rtp_buffer_get_seq (rtp));
 
-  gst_rtp_buffer_unmap (&rtp);
+  outbuf = gst_rtp_buffer_get_payload_buffer (rtp);
 
   if (marker && outbuf) {
     /* mark start of talkspurt with RESYNC */
index 9829258..b278a85 100644 (file)
@@ -78,7 +78,7 @@ gst_rtp_j2k_depay_change_state (GstElement * element,
 static gboolean gst_rtp_j2k_depay_setcaps (GstRTPBaseDepayload * depayload,
     GstCaps * caps);
 static GstBuffer *gst_rtp_j2k_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 
 static void
 gst_rtp_j2k_depay_class_init (GstRtpJ2KDepayClass * klass)
@@ -109,7 +109,7 @@ gst_rtp_j2k_depay_class_init (GstRtpJ2KDepayClass * klass)
   gstelement_class->change_state = gst_rtp_j2k_depay_change_state;
 
   gstrtpbasedepayload_class->set_caps = gst_rtp_j2k_depay_setcaps;
-  gstrtpbasedepayload_class->process = gst_rtp_j2k_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_j2k_depay_process;
 
   GST_DEBUG_CATEGORY_INIT (rtpj2kdepay_debug, "rtpj2kdepay", 0,
       "J2K Video RTP Depayloader");
@@ -426,27 +426,24 @@ done:
 }
 
 static GstBuffer *
-gst_rtp_j2k_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_j2k_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
 {
   GstRtpJ2KDepay *rtpj2kdepay;
   guint8 *payload;
   guint MHF, mh_id, frag_offset, tile, payload_len, j2klen;
   gint gap;
   guint32 rtptime;
-  GstRTPBuffer rtp = { NULL };
 
   rtpj2kdepay = GST_RTP_J2K_DEPAY (depayload);
 
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
-
-  payload = gst_rtp_buffer_get_payload (&rtp);
-  payload_len = gst_rtp_buffer_get_payload_len (&rtp);
+  payload = gst_rtp_buffer_get_payload (rtp);
+  payload_len = gst_rtp_buffer_get_payload_len (rtp);
 
   /* we need at least a header */
   if (payload_len < 8)
     goto empty_packet;
 
-  rtptime = gst_rtp_buffer_get_timestamp (&rtp);
+  rtptime = gst_rtp_buffer_get_timestamp (rtp);
 
   /* new timestamp marks new frame */
   if (rtpj2kdepay->last_rtptime != rtptime) {
@@ -543,7 +540,7 @@ gst_rtp_j2k_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
     }
     /* and push in pu adapter */
     GST_DEBUG_OBJECT (rtpj2kdepay, "push pu of size %u in adapter", j2klen);
-    pu_frag = gst_rtp_buffer_get_payload_subbuffer (&rtp, 8, -1);
+    pu_frag = gst_rtp_buffer_get_payload_subbuffer (rtp, 8, -1);
     gst_adapter_push (rtpj2kdepay->pu_adapter, pu_frag);
 
     if (MHF & 2) {
@@ -556,12 +553,11 @@ gst_rtp_j2k_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
   }
 
   /* marker bit finishes the frame */
-  if (gst_rtp_buffer_get_marker (&rtp)) {
+  if (gst_rtp_buffer_get_marker (rtp)) {
     GST_DEBUG_OBJECT (rtpj2kdepay, "marker set, last buffer");
     /* then flush frame */
     gst_rtp_j2k_depay_flush_frame (depayload);
   }
-  gst_rtp_buffer_unmap (&rtp);
 
   return NULL;
 
@@ -570,7 +566,6 @@ empty_packet:
   {
     GST_ELEMENT_WARNING (rtpj2kdepay, STREAM, DECODE,
         ("Empty Payload."), (NULL));
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 wrong_mh_id:
@@ -579,7 +574,6 @@ wrong_mh_id:
         ("Invalid mh_id %u, expected %u", mh_id, rtpj2kdepay->last_mh_id),
         (NULL));
     gst_rtp_j2k_depay_clear_pu (rtpj2kdepay);
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 }
index 57055e8..81a62cc 100644 (file)
@@ -77,7 +77,7 @@ static GstStateChangeReturn gst_rtp_jpeg_depay_change_state (GstElement *
 static gboolean gst_rtp_jpeg_depay_setcaps (GstRTPBaseDepayload * depayload,
     GstCaps * caps);
 static GstBuffer *gst_rtp_jpeg_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 
 static void
 gst_rtp_jpeg_depay_class_init (GstRtpJPEGDepayClass * klass)
@@ -105,7 +105,7 @@ gst_rtp_jpeg_depay_class_init (GstRtpJPEGDepayClass * klass)
   gstelement_class->change_state = gst_rtp_jpeg_depay_change_state;
 
   gstrtpbasedepayload_class->set_caps = gst_rtp_jpeg_depay_setcaps;
-  gstrtpbasedepayload_class->process = gst_rtp_jpeg_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_jpeg_depay_process;
 
   GST_DEBUG_CATEGORY_INIT (rtpjpegdepay_debug, "rtpjpegdepay", 0,
       "JPEG Video RTP Depayloader");
@@ -487,7 +487,7 @@ gst_rtp_jpeg_depay_setcaps (GstRTPBaseDepayload * depayload, GstCaps * caps)
 }
 
 static GstBuffer *
-gst_rtp_jpeg_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_jpeg_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
 {
   GstRtpJPEGDepay *rtpjpegdepay;
   GstBuffer *outbuf;
@@ -498,23 +498,21 @@ gst_rtp_jpeg_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
   guint type, width, height;
   guint16 dri, precision, length;
   guint8 *qtable;
-  GstRTPBuffer rtp = { NULL };
 
   rtpjpegdepay = GST_RTP_JPEG_DEPAY (depayload);
 
-  if (GST_BUFFER_IS_DISCONT (buf)) {
+  if (GST_BUFFER_IS_DISCONT (rtp->buffer)) {
     GST_DEBUG_OBJECT (depayload, "DISCONT, reset adapter");
     gst_adapter_clear (rtpjpegdepay->adapter);
     rtpjpegdepay->discont = TRUE;
   }
 
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
-  payload_len = gst_rtp_buffer_get_payload_len (&rtp);
+  payload_len = gst_rtp_buffer_get_payload_len (rtp);
 
   if (payload_len < 8)
     goto empty_packet;
 
-  payload = gst_rtp_buffer_get_payload (&rtp);
+  payload = gst_rtp_buffer_get_payload (rtp);
   header_len = 0;
 
   /*  0                   1                   2                   3
@@ -674,11 +672,11 @@ gst_rtp_jpeg_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
 
   /* take JPEG data, push in the adapter */
   GST_DEBUG_OBJECT (rtpjpegdepay, "pushing data at offset %d", header_len);
-  outbuf = gst_rtp_buffer_get_payload_subbuffer (&rtp, header_len, -1);
+  outbuf = gst_rtp_buffer_get_payload_subbuffer (rtp, header_len, -1);
   gst_adapter_push (rtpjpegdepay->adapter, outbuf);
   outbuf = NULL;
 
-  if (gst_rtp_buffer_get_marker (&rtp)) {
+  if (gst_rtp_buffer_get_marker (rtp)) {
     guint avail;
     guint8 end[2];
     GstMapInfo map;
@@ -717,8 +715,6 @@ gst_rtp_jpeg_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
     GST_DEBUG_OBJECT (rtpjpegdepay, "returning %u bytes", avail);
   }
 
-  gst_rtp_buffer_unmap (&rtp);
-
   return outbuf;
 
   /* ERRORS */
@@ -726,20 +722,17 @@ empty_packet:
   {
     GST_ELEMENT_WARNING (rtpjpegdepay, STREAM, DECODE,
         ("Empty Payload."), (NULL));
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 invalid_dimension:
   {
     GST_ELEMENT_WARNING (rtpjpegdepay, STREAM, FORMAT,
         ("Invalid Dimension %dx%d.", width, height), (NULL));
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 no_qtable:
   {
     GST_WARNING_OBJECT (rtpjpegdepay, "no qtable");
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 invalid_packet:
@@ -747,7 +740,6 @@ invalid_packet:
     GST_WARNING_OBJECT (rtpjpegdepay, "invalid packet");
     gst_adapter_flush (rtpjpegdepay->adapter,
         gst_adapter_available (rtpjpegdepay->adapter));
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 }
index 12d3de0..c7c5634 100644 (file)
@@ -67,7 +67,7 @@ static GstStateChangeReturn gst_rtp_klv_depay_change_state (GstElement *
 static gboolean gst_rtp_klv_depay_setcaps (GstRTPBaseDepayload * depayload,
     GstCaps * caps);
 static GstBuffer *gst_rtp_klv_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 
 static void gst_rtp_klv_depay_reset (GstRtpKlvDepay * klvdepay);
 
@@ -98,7 +98,7 @@ gst_rtp_klv_depay_class_init (GstRtpKlvDepayClass * klass)
   rtpbasedepayload_class = (GstRTPBaseDepayloadClass *) klass;
 
   rtpbasedepayload_class->set_caps = gst_rtp_klv_depay_setcaps;
-  rtpbasedepayload_class->process = gst_rtp_klv_depay_process;
+  rtpbasedepayload_class->process_rtp_packet = gst_rtp_klv_depay_process;
 }
 
 static void
@@ -252,10 +252,9 @@ incomplete_klv_packet:
 /* We're trying to be pragmatic here, not quite as strict as the spec wants
  * us to be with regard to marker bits and resyncing after packet loss */
 static GstBuffer *
-gst_rtp_klv_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_klv_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
 {
   GstRtpKlvDepay *klvdepay = GST_RTP_KLV_DEPAY (depayload);
-  GstRTPBuffer rtp = { NULL };
   GstBuffer *payload, *outbuf = NULL;
   gboolean marker, start = FALSE, maybe_start;
   guint32 rtp_ts;
@@ -263,19 +262,17 @@ gst_rtp_klv_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
   guint payload_len;
 
   /* Ignore DISCONT on first buffer and on buffers following a discont */
-  if (GST_BUFFER_IS_DISCONT (buf) && klvdepay->last_rtp_ts != -1) {
+  if (GST_BUFFER_IS_DISCONT (rtp->buffer) && klvdepay->last_rtp_ts != -1) {
     GST_WARNING_OBJECT (klvdepay, "DISCONT, need to resync");
     gst_rtp_klv_depay_reset (klvdepay);
   }
 
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
-
-  payload_len = gst_rtp_buffer_get_payload_len (&rtp);
+  payload_len = gst_rtp_buffer_get_payload_len (rtp);
 
   /* marker bit signals last fragment of a KLV unit */
-  marker = gst_rtp_buffer_get_marker (&rtp);
+  marker = gst_rtp_buffer_get_marker (rtp);
 
-  seq = gst_rtp_buffer_get_seq (&rtp);
+  seq = gst_rtp_buffer_get_seq (rtp);
 
   /* packet directly after one with marker bit set => start */
   start = klvdepay->last_marker_seq != -1
@@ -283,7 +280,7 @@ gst_rtp_klv_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
 
   /* deduce start of new KLV unit in case sender doesn't set marker bits
    * (it's not like the spec is ambiguous about that, but what can you do) */
-  rtp_ts = gst_rtp_buffer_get_timestamp (&rtp);
+  rtp_ts = gst_rtp_buffer_get_timestamp (rtp);
 
   maybe_start = klvdepay->last_rtp_ts == -1 || klvdepay->last_rtp_ts != rtp_ts;
 
@@ -295,7 +292,7 @@ gst_rtp_klv_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
     guint64 v_len;
     gsize len_size;
 
-    data = gst_rtp_buffer_get_payload (&rtp);
+    data = gst_rtp_buffer_get_payload (rtp);
     if (GST_READ_UINT32_BE (data) == 0x060e2b34 &&
         klv_get_vlen (data + 16, payload_len - 16, &v_len, &len_size)) {
       if (16 + len_size + v_len == payload_len) {
@@ -332,7 +329,7 @@ gst_rtp_klv_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
   if (start && !marker)
     outbuf = gst_rtp_klv_depay_process_data (klvdepay);
 
-  payload = gst_rtp_buffer_get_payload_buffer (&rtp);
+  payload = gst_rtp_buffer_get_payload_buffer (rtp);
   gst_adapter_push (klvdepay->adapter, payload);
 
   if (marker)
@@ -340,8 +337,6 @@ gst_rtp_klv_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
 
 done:
 
-  gst_rtp_buffer_unmap (&rtp);
-
   return outbuf;
 }
 
index 63545e7..59dd003 100644 (file)
@@ -66,7 +66,7 @@ G_DEFINE_TYPE (GstRtpMP1SDepay, gst_rtp_mp1s_depay,
 static gboolean gst_rtp_mp1s_depay_setcaps (GstRTPBaseDepayload * depayload,
     GstCaps * caps);
 static GstBuffer *gst_rtp_mp1s_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 
 static void
 gst_rtp_mp1s_depay_class_init (GstRtpMP1SDepayClass * klass)
@@ -77,7 +77,7 @@ gst_rtp_mp1s_depay_class_init (GstRtpMP1SDepayClass * klass)
   gstelement_class = (GstElementClass *) klass;
   gstrtpbasedepayload_class = (GstRTPBaseDepayloadClass *) klass;
 
-  gstrtpbasedepayload_class->process = gst_rtp_mp1s_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_mp1s_depay_process;
   gstrtpbasedepayload_class->set_caps = gst_rtp_mp1s_depay_setcaps;
 
   gst_element_class_add_pad_template (gstelement_class,
@@ -118,14 +118,11 @@ gst_rtp_mp1s_depay_setcaps (GstRTPBaseDepayload * depayload, GstCaps * caps)
 }
 
 static GstBuffer *
-gst_rtp_mp1s_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_mp1s_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
 {
   GstBuffer *outbuf;
-  GstRTPBuffer rtp = { NULL };
 
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
-  outbuf = gst_rtp_buffer_get_payload_buffer (&rtp);
-  gst_rtp_buffer_unmap (&rtp);
+  outbuf = gst_rtp_buffer_get_payload_buffer (rtp);
 
   if (outbuf)
     GST_DEBUG ("gst_rtp_mp1s_depay_chain: pushing buffer of size %"
index 345d906..da73db6 100644 (file)
@@ -74,7 +74,7 @@ G_DEFINE_TYPE (GstRtpMP2TDepay, gst_rtp_mp2t_depay,
 static gboolean gst_rtp_mp2t_depay_setcaps (GstRTPBaseDepayload * depayload,
     GstCaps * caps);
 static GstBuffer *gst_rtp_mp2t_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 
 static void gst_rtp_mp2t_depay_set_property (GObject * object, guint prop_id,
     const GValue * value, GParamSpec * pspec);
@@ -92,7 +92,7 @@ gst_rtp_mp2t_depay_class_init (GstRtpMP2TDepayClass * klass)
   gstelement_class = (GstElementClass *) klass;
   gstrtpbasedepayload_class = (GstRTPBaseDepayloadClass *) klass;
 
-  gstrtpbasedepayload_class->process = gst_rtp_mp2t_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_mp2t_depay_process;
   gstrtpbasedepayload_class->set_caps = gst_rtp_mp2t_depay_setcaps;
 
   gobject_class->set_property = gst_rtp_mp2t_depay_set_property;
@@ -146,17 +146,15 @@ gst_rtp_mp2t_depay_setcaps (GstRTPBaseDepayload * depayload, GstCaps * caps)
 }
 
 static GstBuffer *
-gst_rtp_mp2t_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_mp2t_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
 {
   GstRtpMP2TDepay *rtpmp2tdepay;
   GstBuffer *outbuf;
   gint payload_len, leftover;
-  GstRTPBuffer rtp = { NULL };
 
   rtpmp2tdepay = GST_RTP_MP2T_DEPAY (depayload);
 
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
-  payload_len = gst_rtp_buffer_get_payload_len (&rtp);
+  payload_len = gst_rtp_buffer_get_payload_len (rtp);
 
   if (G_UNLIKELY (payload_len <= rtpmp2tdepay->skip_first_bytes))
     goto empty_packet;
@@ -179,10 +177,9 @@ gst_rtp_mp2t_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
   }
 
   outbuf =
-      gst_rtp_buffer_get_payload_subbuffer (&rtp,
+      gst_rtp_buffer_get_payload_subbuffer (rtp,
       rtpmp2tdepay->skip_first_bytes, payload_len);
 
-  gst_rtp_buffer_unmap (&rtp);
   if (outbuf)
     GST_DEBUG ("gst_rtp_mp2t_depay_chain: pushing buffer of size %"
         G_GSIZE_FORMAT, gst_buffer_get_size (outbuf));
@@ -194,7 +191,6 @@ empty_packet:
   {
     GST_ELEMENT_WARNING (rtpmp2tdepay, STREAM, DECODE,
         (NULL), ("Packet was empty"));
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 }
index 8aa22a0..09c6f24 100644 (file)
@@ -64,7 +64,7 @@ static void gst_rtp_mp4a_depay_finalize (GObject * object);
 static gboolean gst_rtp_mp4a_depay_setcaps (GstRTPBaseDepayload * depayload,
     GstCaps * caps);
 static GstBuffer *gst_rtp_mp4a_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 
 static GstStateChangeReturn gst_rtp_mp4a_depay_change_state (GstElement *
     element, GstStateChange transition);
@@ -85,7 +85,7 @@ gst_rtp_mp4a_depay_class_init (GstRtpMP4ADepayClass * klass)
 
   gstelement_class->change_state = gst_rtp_mp4a_depay_change_state;
 
-  gstrtpbasedepayload_class->process = gst_rtp_mp4a_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_mp4a_depay_process;
   gstrtpbasedepayload_class->set_caps = gst_rtp_mp4a_depay_setcaps;
 
   gst_element_class_add_pad_template (gstelement_class,
@@ -293,30 +293,28 @@ gst_rtp_mp4a_depay_setcaps (GstRTPBaseDepayload * depayload, GstCaps * caps)
 }
 
 static GstBuffer *
-gst_rtp_mp4a_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_mp4a_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
 {
   GstRtpMP4ADepay *rtpmp4adepay;
   GstBuffer *outbuf;
-  GstRTPBuffer rtp = { NULL };
   GstMapInfo map;
 
   rtpmp4adepay = GST_RTP_MP4A_DEPAY (depayload);
 
   /* flush remaining data on discont */
-  if (GST_BUFFER_IS_DISCONT (buf)) {
+  if (GST_BUFFER_IS_DISCONT (rtp->buffer)) {
     gst_adapter_clear (rtpmp4adepay->adapter);
   }
 
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
-  outbuf = gst_rtp_buffer_get_payload_buffer (&rtp);
+  outbuf = gst_rtp_buffer_get_payload_buffer (rtp);
 
   outbuf = gst_buffer_make_writable (outbuf);
-  GST_BUFFER_PTS (outbuf) = GST_BUFFER_PTS (buf);
+  GST_BUFFER_PTS (outbuf) = GST_BUFFER_PTS (rtp->buffer);
   gst_adapter_push (rtpmp4adepay->adapter, outbuf);
 
   /* RTP marker bit indicates the last packet of the AudioMuxElement => create
    * and push a buffer */
-  if (gst_rtp_buffer_get_marker (&rtp)) {
+  if (gst_rtp_buffer_get_marker (rtp)) {
     guint avail;
     guint i;
     guint8 *data;
@@ -394,7 +392,6 @@ gst_rtp_mp4a_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
     gst_buffer_unmap (outbuf, &map);
     gst_buffer_unref (outbuf);
   }
-  gst_rtp_buffer_unmap (&rtp);
   return NULL;
 
   /* ERRORS */
@@ -404,7 +401,6 @@ wrong_size:
         ("Packet did not validate"), ("wrong packet size"));
     gst_buffer_unmap (outbuf, &map);
     gst_buffer_unref (outbuf);
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 }
index 3819c8a..15e6873 100644 (file)
@@ -134,7 +134,7 @@ static void gst_rtp_mp4g_depay_finalize (GObject * object);
 static gboolean gst_rtp_mp4g_depay_setcaps (GstRTPBaseDepayload * depayload,
     GstCaps * caps);
 static GstBuffer *gst_rtp_mp4g_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 static gboolean gst_rtp_mp4g_depay_handle_event (GstRTPBaseDepayload * filter,
     GstEvent * event);
 
@@ -157,7 +157,7 @@ gst_rtp_mp4g_depay_class_init (GstRtpMP4GDepayClass * klass)
 
   gstelement_class->change_state = gst_rtp_mp4g_depay_change_state;
 
-  gstrtpbasedepayload_class->process = gst_rtp_mp4g_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_mp4g_depay_process;
   gstrtpbasedepayload_class->set_caps = gst_rtp_mp4g_depay_setcaps;
   gstrtpbasedepayload_class->handle_event = gst_rtp_mp4g_depay_handle_event;
 
@@ -418,22 +418,21 @@ gst_rtp_mp4g_depay_queue (GstRtpMP4GDepay * rtpmp4gdepay, GstBuffer * outbuf)
 }
 
 static GstBuffer *
-gst_rtp_mp4g_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_mp4g_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
 {
   GstRtpMP4GDepay *rtpmp4gdepay;
   GstBuffer *outbuf = NULL;
   GstClockTime timestamp;
-  GstRTPBuffer rtp = { NULL };
 
   rtpmp4gdepay = GST_RTP_MP4G_DEPAY (depayload);
 
   /* flush remaining data on discont */
-  if (GST_BUFFER_IS_DISCONT (buf)) {
+  if (GST_BUFFER_IS_DISCONT (rtp->buffer)) {
     GST_DEBUG_OBJECT (rtpmp4gdepay, "received DISCONT");
     gst_adapter_clear (rtpmp4gdepay->adapter);
   }
 
-  timestamp = GST_BUFFER_PTS (buf);
+  timestamp = GST_BUFFER_PTS (rtp->buffer);
 
   {
     gint payload_len, payload_AU;
@@ -443,14 +442,13 @@ gst_rtp_mp4g_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
     guint AU_size, AU_index, AU_index_delta, payload_AU_size;
     gboolean M;
 
-    gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
-    payload_len = gst_rtp_buffer_get_payload_len (&rtp);
-    payload = gst_rtp_buffer_get_payload (&rtp);
+    payload_len = gst_rtp_buffer_get_payload_len (rtp);
+    payload = gst_rtp_buffer_get_payload (rtp);
 
     GST_DEBUG_OBJECT (rtpmp4gdepay, "received payload of %d", payload_len);
 
-    rtptime = gst_rtp_buffer_get_timestamp (&rtp);
-    M = gst_rtp_buffer_get_marker (&rtp);
+    rtptime = gst_rtp_buffer_get_timestamp (rtp);
+    M = gst_rtp_buffer_get_marker (rtp);
 
     if (rtpmp4gdepay->sizelength > 0) {
       gint num_AU_headers, AU_headers_bytes, i;
@@ -650,7 +648,7 @@ gst_rtp_mp4g_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
         /* collect stuff in the adapter, strip header from payload and push in
          * the adapter */
         outbuf =
-            gst_rtp_buffer_get_payload_subbuffer (&rtp, payload_AU, AU_size);
+            gst_rtp_buffer_get_payload_subbuffer (rtp, payload_AU, AU_size);
         gst_adapter_push (rtpmp4gdepay->adapter, outbuf);
 
         if (M) {
@@ -682,7 +680,7 @@ gst_rtp_mp4g_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
       }
     } else {
       /* push complete buffer in adapter */
-      outbuf = gst_rtp_buffer_get_payload_subbuffer (&rtp, 0, payload_len);
+      outbuf = gst_rtp_buffer_get_payload_subbuffer (rtp, 0, payload_len);
       gst_adapter_push (rtpmp4gdepay->adapter, outbuf);
 
       /* if this was the last packet of the VOP, create and push a buffer */
@@ -696,13 +694,11 @@ gst_rtp_mp4g_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
         GST_DEBUG ("gst_rtp_mp4g_depay_chain: pushing buffer of size %"
             G_GSIZE_FORMAT, gst_buffer_get_size (outbuf));
 
-        gst_rtp_buffer_unmap (&rtp);
         return outbuf;
       }
     }
   }
 
-  gst_rtp_buffer_unmap (&rtp);
   return NULL;
 
   /* ERRORS */
@@ -710,7 +706,6 @@ short_payload:
   {
     GST_ELEMENT_WARNING (rtpmp4gdepay, STREAM, DECODE,
         ("Packet payload was too short."), (NULL));
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 }
index 3ff58d5..144cb39 100644 (file)
@@ -61,7 +61,7 @@ static void gst_rtp_mp4v_depay_finalize (GObject * object);
 static gboolean gst_rtp_mp4v_depay_setcaps (GstRTPBaseDepayload * depayload,
     GstCaps * caps);
 static GstBuffer *gst_rtp_mp4v_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 
 static GstStateChangeReturn gst_rtp_mp4v_depay_change_state (GstElement *
     element, GstStateChange transition);
@@ -81,7 +81,7 @@ gst_rtp_mp4v_depay_class_init (GstRtpMP4VDepayClass * klass)
 
   gstelement_class->change_state = gst_rtp_mp4v_depay_change_state;
 
-  gstrtpbasedepayload_class->process = gst_rtp_mp4v_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_mp4v_depay_process;
   gstrtpbasedepayload_class->set_caps = gst_rtp_mp4v_depay_setcaps;
 
   gst_element_class_add_pad_template (gstelement_class,
@@ -159,23 +159,21 @@ gst_rtp_mp4v_depay_setcaps (GstRTPBaseDepayload * depayload, GstCaps * caps)
 }
 
 static GstBuffer *
-gst_rtp_mp4v_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_mp4v_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
 {
   GstRtpMP4VDepay *rtpmp4vdepay;
   GstBuffer *pbuf, *outbuf = NULL;
-  GstRTPBuffer rtp = { NULL };
   gboolean marker;
 
   rtpmp4vdepay = GST_RTP_MP4V_DEPAY (depayload);
 
   /* flush remaining data on discont */
-  if (GST_BUFFER_IS_DISCONT (buf))
+  if (GST_BUFFER_IS_DISCONT (rtp->buffer))
     gst_adapter_clear (rtpmp4vdepay->adapter);
 
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
-  pbuf = gst_rtp_buffer_get_payload_buffer (&rtp);
-  marker = gst_rtp_buffer_get_marker (&rtp);
-  gst_rtp_buffer_unmap (&rtp);
+  pbuf = gst_rtp_buffer_get_payload_buffer (rtp);
+  marker = gst_rtp_buffer_get_marker (rtp);
+  gst_rtp_buffer_unmap (rtp);
 
   gst_adapter_push (rtpmp4vdepay->adapter, pbuf);
 
index b77ac06..367d403 100644 (file)
@@ -55,7 +55,7 @@ G_DEFINE_TYPE (GstRtpMPADepay, gst_rtp_mpa_depay, GST_TYPE_RTP_BASE_DEPAYLOAD);
 static gboolean gst_rtp_mpa_depay_setcaps (GstRTPBaseDepayload * depayload,
     GstCaps * caps);
 static GstBuffer *gst_rtp_mpa_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 
 static void
 gst_rtp_mpa_depay_class_init (GstRtpMPADepayClass * klass)
@@ -80,7 +80,7 @@ gst_rtp_mpa_depay_class_init (GstRtpMPADepayClass * klass)
       "Wim Taymans <wim.taymans@gmail.com>");
 
   gstrtpbasedepayload_class->set_caps = gst_rtp_mpa_depay_setcaps;
-  gstrtpbasedepayload_class->process = gst_rtp_mpa_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_mpa_depay_process;
 }
 
 static void
@@ -111,11 +111,10 @@ gst_rtp_mpa_depay_setcaps (GstRTPBaseDepayload * depayload, GstCaps * caps)
 }
 
 static GstBuffer *
-gst_rtp_mpa_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_mpa_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
 {
   GstRtpMPADepay *rtpmpadepay;
   GstBuffer *outbuf;
-  GstRTPBuffer rtp = { NULL };
   gint payload_len;
 #if 0
   guint8 *payload;
@@ -125,9 +124,7 @@ gst_rtp_mpa_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
 
   rtpmpadepay = GST_RTP_MPA_DEPAY (depayload);
 
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
-
-  payload_len = gst_rtp_buffer_get_payload_len (&rtp);
+  payload_len = gst_rtp_buffer_get_payload_len (rtp);
 
   if (payload_len <= 4)
     goto empty_packet;
@@ -146,8 +143,8 @@ gst_rtp_mpa_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
 #endif
 
   /* subbuffer skipping the 4 header bytes */
-  outbuf = gst_rtp_buffer_get_payload_subbuffer (&rtp, 4, -1);
-  marker = gst_rtp_buffer_get_marker (&rtp);
+  outbuf = gst_rtp_buffer_get_payload_subbuffer (rtp, 4, -1);
+  marker = gst_rtp_buffer_get_marker (rtp);
 
   if (marker) {
     /* mark start of talkspurt with RESYNC */
@@ -157,8 +154,6 @@ gst_rtp_mpa_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
       "gst_rtp_mpa_depay_chain: pushing buffer of size %" G_GSIZE_FORMAT "",
       gst_buffer_get_size (outbuf));
 
-  gst_rtp_buffer_unmap (&rtp);
-
   /* FIXME, we can push half mpeg frames when they are split over multiple
    * RTP packets */
   return outbuf;
@@ -168,7 +163,6 @@ empty_packet:
   {
     GST_ELEMENT_WARNING (rtpmpadepay, STREAM, DECODE,
         ("Empty Payload."), (NULL));
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 }
index 3df1c3b..02155e5 100644 (file)
@@ -77,7 +77,7 @@ static GstStateChangeReturn gst_rtp_mpa_robust_change_state (GstElement *
 static gboolean gst_rtp_mpa_robust_depay_setcaps (GstRTPBaseDepayload *
     depayload, GstCaps * caps);
 static GstBuffer *gst_rtp_mpa_robust_depay_process (GstRTPBaseDepayload *
-    depayload, GstBuffer * buf);
+    depayload, GstRTPBuffer * rtp);
 
 static void
 gst_rtp_mpa_robust_depay_finalize (GObject * object)
@@ -122,7 +122,8 @@ gst_rtp_mpa_robust_depay_class_init (GstRtpMPARobustDepayClass * klass)
       "Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>");
 
   gstrtpbasedepayload_class->set_caps = gst_rtp_mpa_robust_depay_setcaps;
-  gstrtpbasedepayload_class->process = gst_rtp_mpa_robust_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet =
+      gst_rtp_mpa_robust_depay_process;
 }
 
 static void
@@ -641,7 +642,7 @@ gst_rtp_mpa_robust_depay_submit_adu (GstRtpMPARobustDepay * rtpmpadepay,
 
 static GstBuffer *
 gst_rtp_mpa_robust_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf)
+    GstRTPBuffer * rtp)
 {
   GstRtpMPARobustDepay *rtpmpadepay;
   gint payload_len, offset;
@@ -649,19 +650,17 @@ gst_rtp_mpa_robust_depay_process (GstRTPBaseDepayload * depayload,
   gboolean cont, dtype;
   guint av, size;
   GstClockTime timestamp;
-  GstRTPBuffer rtp = { NULL };
+  GstBuffer *buf;
 
   rtpmpadepay = GST_RTP_MPA_ROBUST_DEPAY (depayload);
 
-  timestamp = GST_BUFFER_PTS (buf);
-
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
+  timestamp = GST_BUFFER_PTS (rtp->buffer);
 
-  payload_len = gst_rtp_buffer_get_payload_len (&rtp);
+  payload_len = gst_rtp_buffer_get_payload_len (rtp);
   if (payload_len <= 1)
     goto short_read;
 
-  payload = gst_rtp_buffer_get_payload (&rtp);
+  payload = gst_rtp_buffer_get_payload (rtp);
   offset = 0;
   GST_LOG_OBJECT (rtpmpadepay, "payload_len: %d", payload_len);
 
@@ -701,7 +700,7 @@ gst_rtp_mpa_robust_depay_process (GstRTPBaseDepayload * depayload,
     GST_LOG_OBJECT (rtpmpadepay, "offset %d has cont: %d, dtype: %d, size: %d",
         offset, cont, dtype, size);
 
-    buf = gst_rtp_buffer_get_payload_subbuffer (&rtp, offset,
+    buf = gst_rtp_buffer_get_payload_subbuffer (rtp, offset,
         MIN (size, payload_len));
 
     if (cont) {
@@ -745,7 +744,6 @@ gst_rtp_mpa_robust_depay_process (GstRTPBaseDepayload * depayload,
     /* timestamp applies to first payload, no idea for subsequent ones */
     timestamp = GST_CLOCK_TIME_NONE;
   }
-  gst_rtp_buffer_unmap (&rtp);
 
   return NULL;
 
@@ -754,7 +752,6 @@ short_read:
   {
     GST_ELEMENT_WARNING (rtpmpadepay, STREAM, DECODE,
         (NULL), ("Packet contains invalid data"));
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 }
index e65df92..223b661 100644 (file)
@@ -57,7 +57,7 @@ G_DEFINE_TYPE (GstRtpMPVDepay, gst_rtp_mpv_depay, GST_TYPE_RTP_BASE_DEPAYLOAD);
 static gboolean gst_rtp_mpv_depay_setcaps (GstRTPBaseDepayload * depayload,
     GstCaps * caps);
 static GstBuffer *gst_rtp_mpv_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 
 static void
 gst_rtp_mpv_depay_class_init (GstRtpMPVDepayClass * klass)
@@ -79,7 +79,7 @@ gst_rtp_mpv_depay_class_init (GstRtpMPVDepayClass * klass)
       "Wim Taymans <wim.taymans@gmail.com>");
 
   gstrtpbasedepayload_class->set_caps = gst_rtp_mpv_depay_setcaps;
-  gstrtpbasedepayload_class->process = gst_rtp_mpv_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_mpv_depay_process;
 
   GST_DEBUG_CATEGORY_INIT (rtpmpvdepay_debug, "rtpmpvdepay", 0,
       "MPEG Video RTP Depayloader");
@@ -114,23 +114,20 @@ gst_rtp_mpv_depay_setcaps (GstRTPBaseDepayload * depayload, GstCaps * caps)
 }
 
 static GstBuffer *
-gst_rtp_mpv_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_mpv_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
 {
   GstRtpMPVDepay *rtpmpvdepay;
   GstBuffer *outbuf = NULL;
-  GstRTPBuffer rtp = { NULL };
 
   rtpmpvdepay = GST_RTP_MPV_DEPAY (depayload);
 
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
-
   {
     gint payload_len, payload_header;
     guint8 *payload;
     guint8 T;
 
-    payload_len = gst_rtp_buffer_get_payload_len (&rtp);
-    payload = gst_rtp_buffer_get_payload (&rtp);
+    payload_len = gst_rtp_buffer_get_payload_len (rtp);
+    payload = gst_rtp_buffer_get_payload (rtp);
     payload_header = 0;
 
     if (payload_len <= 4)
@@ -169,7 +166,7 @@ gst_rtp_mpv_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
       payload += 4;
     }
 
-    outbuf = gst_rtp_buffer_get_payload_subbuffer (&rtp, payload_header, -1);
+    outbuf = gst_rtp_buffer_get_payload_subbuffer (rtp, payload_header, -1);
 
     if (outbuf) {
       GST_DEBUG_OBJECT (rtpmpvdepay,
@@ -178,8 +175,6 @@ gst_rtp_mpv_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
     }
   }
 
-  gst_rtp_buffer_unmap (&rtp);
-
   return outbuf;
 
   /* ERRORS */
@@ -187,8 +182,6 @@ empty_packet:
   {
     GST_ELEMENT_WARNING (rtpmpvdepay, STREAM, DECODE,
         (NULL), ("Empty payload."));
-    gst_rtp_buffer_unmap (&rtp);
-    gst_buffer_unref (buf);
     return NULL;
   }
 }
index 8f96250..3d17101 100644 (file)
@@ -60,7 +60,7 @@ GST_STATIC_PAD_TEMPLATE ("src",
     );
 
 static GstBuffer *gst_rtp_pcma_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 static gboolean gst_rtp_pcma_depay_setcaps (GstRTPBaseDepayload * depayload,
     GstCaps * caps);
 
@@ -87,7 +87,7 @@ gst_rtp_pcma_depay_class_init (GstRtpPcmaDepayClass * klass)
       "Extracts PCMA audio from RTP packets",
       "Edgard Lima <edgard.lima@indt.org.br>, Zeeshan Ali <zeenix@gmail.com>");
 
-  gstrtpbasedepayload_class->process = gst_rtp_pcma_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_pcma_depay_process;
   gstrtpbasedepayload_class->set_caps = gst_rtp_pcma_depay_setcaps;
 }
 
@@ -124,24 +124,20 @@ gst_rtp_pcma_depay_setcaps (GstRTPBaseDepayload * depayload, GstCaps * caps)
 }
 
 static GstBuffer *
-gst_rtp_pcma_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_pcma_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
 {
   GstBuffer *outbuf = NULL;
   gboolean marker;
   guint len;
-  GstRTPBuffer rtp = { NULL };
 
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
-
-  marker = gst_rtp_buffer_get_marker (&rtp);
+  marker = gst_rtp_buffer_get_marker (rtp);
 
   GST_DEBUG ("process : got %" G_GSIZE_FORMAT " bytes, mark %d ts %u seqn %d",
-      gst_buffer_get_size (buf), marker,
-      gst_rtp_buffer_get_timestamp (&rtp), gst_rtp_buffer_get_seq (&rtp));
+      gst_buffer_get_size (rtp->buffer), marker,
+      gst_rtp_buffer_get_timestamp (rtp), gst_rtp_buffer_get_seq (rtp));
 
-  len = gst_rtp_buffer_get_payload_len (&rtp);
-  outbuf = gst_rtp_buffer_get_payload_buffer (&rtp);
-  gst_rtp_buffer_unmap (&rtp);
+  len = gst_rtp_buffer_get_payload_len (rtp);
+  outbuf = gst_rtp_buffer_get_payload_buffer (rtp);
 
   if (outbuf) {
     GST_BUFFER_DURATION (outbuf) =
@@ -153,7 +149,6 @@ gst_rtp_pcma_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
     }
   }
 
-
   return outbuf;
 }
 
index e75c282..8d4bb90 100644 (file)
@@ -61,7 +61,7 @@ GST_STATIC_PAD_TEMPLATE ("src",
     );
 
 static GstBuffer *gst_rtp_pcmu_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 static gboolean gst_rtp_pcmu_depay_setcaps (GstRTPBaseDepayload * depayload,
     GstCaps * caps);
 
@@ -88,7 +88,7 @@ gst_rtp_pcmu_depay_class_init (GstRtpPcmuDepayClass * klass)
       "Extracts PCMU audio from RTP packets",
       "Edgard Lima <edgard.lima@indt.org.br>, Zeeshan Ali <zeenix@gmail.com>");
 
-  gstrtpbasedepayload_class->process = gst_rtp_pcmu_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_pcmu_depay_process;
   gstrtpbasedepayload_class->set_caps = gst_rtp_pcmu_depay_setcaps;
 }
 
@@ -125,24 +125,20 @@ gst_rtp_pcmu_depay_setcaps (GstRTPBaseDepayload * depayload, GstCaps * caps)
 }
 
 static GstBuffer *
-gst_rtp_pcmu_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_pcmu_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
 {
   GstBuffer *outbuf = NULL;
   guint len;
   gboolean marker;
-  GstRTPBuffer rtp = { NULL };
 
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
-
-  marker = gst_rtp_buffer_get_marker (&rtp);
+  marker = gst_rtp_buffer_get_marker (rtp);
 
   GST_DEBUG ("process : got %" G_GSIZE_FORMAT " bytes, mark %d ts %u seqn %d",
-      gst_buffer_get_size (buf), marker,
-      gst_rtp_buffer_get_timestamp (&rtp), gst_rtp_buffer_get_seq (&rtp));
+      gst_buffer_get_size (rtp->buffer), marker,
+      gst_rtp_buffer_get_timestamp (rtp), gst_rtp_buffer_get_seq (rtp));
 
-  len = gst_rtp_buffer_get_payload_len (&rtp);
-  outbuf = gst_rtp_buffer_get_payload_buffer (&rtp);
-  gst_rtp_buffer_unmap (&rtp);
+  len = gst_rtp_buffer_get_payload_len (rtp);
+  outbuf = gst_rtp_buffer_get_payload_buffer (rtp);
 
   if (outbuf) {
     GST_BUFFER_DURATION (outbuf) =
index a5f791f..b835fee 100644 (file)
@@ -74,7 +74,7 @@ static void gst_rtp_qcelp_depay_finalize (GObject * object);
 static gboolean gst_rtp_qcelp_depay_setcaps (GstRTPBaseDepayload * depayload,
     GstCaps * caps);
 static GstBuffer *gst_rtp_qcelp_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 
 #define gst_rtp_qcelp_depay_parent_class parent_class
 G_DEFINE_TYPE (GstRtpQCELPDepay, gst_rtp_qcelp_depay,
@@ -93,7 +93,7 @@ gst_rtp_qcelp_depay_class_init (GstRtpQCELPDepayClass * klass)
 
   gobject_class->finalize = gst_rtp_qcelp_depay_finalize;
 
-  gstrtpbasedepayload_class->process = gst_rtp_qcelp_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_qcelp_depay_process;
   gstrtpbasedepayload_class->set_caps = gst_rtp_qcelp_depay_setcaps;
 
   gst_element_class_add_pad_template (gstelement_class,
@@ -248,7 +248,8 @@ create_erasure_buffer (GstRtpQCELPDepay * depay)
 }
 
 static GstBuffer *
-gst_rtp_qcelp_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_qcelp_depay_process (GstRTPBaseDepayload * depayload,
+    GstRTPBuffer * rtp)
 {
   GstRtpQCELPDepay *depay;
   GstBuffer *outbuf;
@@ -256,20 +257,17 @@ gst_rtp_qcelp_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
   guint payload_len, offset, index;
   guint8 *payload;
   guint LLL, NNN;
-  GstRTPBuffer rtp = { NULL };
 
   depay = GST_RTP_QCELP_DEPAY (depayload);
 
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
-
-  payload_len = gst_rtp_buffer_get_payload_len (&rtp);
+  payload_len = gst_rtp_buffer_get_payload_len (rtp);
 
   if (payload_len < 2)
     goto too_small;
 
-  timestamp = GST_BUFFER_PTS (buf);
+  timestamp = GST_BUFFER_PTS (rtp->buffer);
 
-  payload = gst_rtp_buffer_get_payload (&rtp);
+  payload = gst_rtp_buffer_get_payload (rtp);
 
   /*  0 1 2 3 4 5 6 7
    * +-+-+-+-+-+-+-+-+
@@ -351,7 +349,7 @@ gst_rtp_qcelp_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
       outbuf = create_erasure_buffer (depay);
     } else {
       /* each frame goes into its buffer */
-      outbuf = gst_rtp_buffer_get_payload_subbuffer (&rtp, offset, frame_len);
+      outbuf = gst_rtp_buffer_get_payload_subbuffer (rtp, offset, frame_len);
     }
 
     GST_BUFFER_PTS (outbuf) = timestamp;
@@ -393,7 +391,6 @@ gst_rtp_qcelp_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
     flush_packets (depay);
   }
 
-  gst_rtp_buffer_unmap (&rtp);
   return NULL;
 
   /* ERRORS */
@@ -401,28 +398,24 @@ too_small:
   {
     GST_ELEMENT_WARNING (depay, STREAM, DECODE,
         (NULL), ("QCELP RTP payload too small (%d)", payload_len));
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 invalid_lll:
   {
     GST_ELEMENT_WARNING (depay, STREAM, DECODE,
         (NULL), ("QCELP RTP invalid LLL received (%d)", LLL));
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 invalid_nnn:
   {
     GST_ELEMENT_WARNING (depay, STREAM, DECODE,
         (NULL), ("QCELP RTP invalid NNN received (%d)", NNN));
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 invalid_frame:
   {
     GST_ELEMENT_WARNING (depay, STREAM, DECODE,
         (NULL), ("QCELP RTP invalid frame received"));
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 }
index 3049f9b..063bbef 100644 (file)
@@ -60,7 +60,7 @@ static GstStateChangeReturn gst_rtp_qdm2_depay_change_state (GstElement *
     element, GstStateChange transition);
 
 static GstBuffer *gst_rtp_qdm2_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 gboolean gst_rtp_qdm2_depay_setcaps (GstRTPBaseDepayload * filter,
     GstCaps * caps);
 
@@ -75,7 +75,7 @@ gst_rtp_qdm2_depay_class_init (GstRtpQDM2DepayClass * klass)
   gstelement_class = (GstElementClass *) klass;
   gstrtpbasedepayload_class = (GstRTPBaseDepayloadClass *) klass;
 
-  gstrtpbasedepayload_class->process = gst_rtp_qdm2_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_qdm2_depay_process;
   gstrtpbasedepayload_class->set_caps = gst_rtp_qdm2_depay_setcaps;
 
   gobject_class->finalize = gst_rtp_qdm2_depay_finalize;
@@ -223,12 +223,11 @@ add_packet (GstRtpQDM2Depay * depay, guint32 pid, guint32 len, guint8 * data)
 }
 
 static GstBuffer *
-gst_rtp_qdm2_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_qdm2_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
 {
   GstRtpQDM2Depay *rtpqdm2depay;
   GstBuffer *outbuf = NULL;
   guint16 seq;
-  GstRTPBuffer rtp = { NULL };
 
   rtpqdm2depay = GST_RTP_QDM2_DEPAY (depayload);
 
@@ -238,20 +237,19 @@ gst_rtp_qdm2_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
     guint avail;
     guint pos = 0;
 
-    gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
-    payload_len = gst_rtp_buffer_get_payload_len (&rtp);
+    payload_len = gst_rtp_buffer_get_payload_len (rtp);
     if (payload_len < 3)
       goto bad_packet;
 
-    payload = gst_rtp_buffer_get_payload (&rtp);
-    seq = gst_rtp_buffer_get_seq (&rtp);
+    payload = gst_rtp_buffer_get_payload (rtp);
+    seq = gst_rtp_buffer_get_seq (rtp);
     if (G_UNLIKELY (seq != rtpqdm2depay->nextseq)) {
       GST_DEBUG ("GAP in sequence number, Resetting data !");
       /* Flush previous data */
       flush_data (rtpqdm2depay);
       /* And store new timestamp */
       rtpqdm2depay->ptimestamp = rtpqdm2depay->timestamp;
-      rtpqdm2depay->timestamp = GST_BUFFER_PTS (buf);
+      rtpqdm2depay->timestamp = GST_BUFFER_PTS (rtp->buffer);
       /* And that previous data will be pushed at the bottom */
     }
     rtpqdm2depay->nextseq = seq + 1;
@@ -273,7 +271,7 @@ gst_rtp_qdm2_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
           GST_DEBUG ("Headers");
           /* Store the incoming timestamp */
           rtpqdm2depay->ptimestamp = rtpqdm2depay->timestamp;
-          rtpqdm2depay->timestamp = GST_BUFFER_PTS (buf);
+          rtpqdm2depay->timestamp = GST_BUFFER_PTS (rtp->buffer);
           /* flush the internal data if needed */
           flush_data (rtpqdm2depay);
           if (G_UNLIKELY (!rtpqdm2depay->configured)) {
@@ -362,7 +360,6 @@ gst_rtp_qdm2_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
     }
   }
 
-  gst_rtp_buffer_unmap (&rtp);
   return outbuf;
 
   /* ERRORS */
@@ -370,7 +367,6 @@ bad_packet:
   {
     GST_ELEMENT_WARNING (rtpqdm2depay, STREAM, DECODE,
         (NULL), ("Packet was too short"));
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 }
index 28c00fc..c0f61b7 100644 (file)
@@ -59,7 +59,7 @@ static void gst_rtp_sbc_depay_finalize (GObject * object);
 static gboolean gst_rtp_sbc_depay_setcaps (GstRTPBaseDepayload * base,
     GstCaps * caps);
 static GstBuffer *gst_rtp_sbc_depay_process (GstRTPBaseDepayload * base,
-    GstBuffer * in);
+    GstRTPBuffer * rtp);
 
 static void
 gst_rtp_sbc_depay_class_init (GstRtpSbcDepayClass * klass)
@@ -72,7 +72,7 @@ gst_rtp_sbc_depay_class_init (GstRtpSbcDepayClass * klass)
   gobject_class->finalize = gst_rtp_sbc_depay_finalize;
 
   gstbasertpdepayload_class->set_caps = gst_rtp_sbc_depay_setcaps;
-  gstbasertpdepayload_class->process = gst_rtp_sbc_depay_process;
+  gstbasertpdepayload_class->process_rtp_packet = gst_rtp_sbc_depay_process;
 
   gst_element_class_add_pad_template (element_class,
       gst_static_pad_template_get (&gst_rtp_sbc_depay_src_template));
@@ -189,30 +189,27 @@ bad_caps:
 }
 
 static GstBuffer *
-gst_rtp_sbc_depay_process (GstRTPBaseDepayload * base, GstBuffer * in)
+gst_rtp_sbc_depay_process (GstRTPBaseDepayload * base, GstRTPBuffer * rtp)
 {
   GstRtpSbcDepay *depay = GST_RTP_SBC_DEPAY (base);
   GstBuffer *data = NULL;
-  GstRTPBuffer rtp = { NULL };
 
   gboolean fragment, start, last;
   guint8 nframes;
   guint8 *payload;
   guint payload_len;
 
-  gst_rtp_buffer_map (in, GST_MAP_READ, &rtp);
-
   GST_LOG_OBJECT (depay, "Got %" G_GSIZE_FORMAT " bytes",
-      gst_buffer_get_size (in));
+      gst_buffer_get_size (rtp->buffer));
 
-  if (gst_rtp_buffer_get_marker (&rtp)) {
+  if (gst_rtp_buffer_get_marker (rtp)) {
     /* Marker isn't supposed to be set */
     GST_WARNING_OBJECT (depay, "Marker bit was set");
     goto bad_packet;
   }
 
-  payload = gst_rtp_buffer_get_payload (&rtp);
-  payload_len = gst_rtp_buffer_get_payload_len (&rtp);
+  payload = gst_rtp_buffer_get_payload (rtp);
+  payload_len = gst_rtp_buffer_get_payload_len (rtp);
 
   fragment = payload[0] & 0x80;
   start = payload[0] & 0x40;
@@ -222,7 +219,7 @@ gst_rtp_sbc_depay_process (GstRTPBaseDepayload * base, GstBuffer * in)
   payload += 1;
   payload_len -= 1;
 
-  data = gst_rtp_buffer_get_payload_subbuffer (&rtp, 1, -1);
+  data = gst_rtp_buffer_get_payload_subbuffer (rtp, 1, -1);
 
   if (fragment) {
     /* Got a packet with a fragment */
@@ -270,7 +267,6 @@ gst_rtp_sbc_depay_process (GstRTPBaseDepayload * base, GstBuffer * in)
   }
 
 out:
-  gst_rtp_buffer_unmap (&rtp);
   return data;
 
 bad_packet:
index 541041b..9258d83 100644 (file)
@@ -47,7 +47,7 @@ GST_STATIC_PAD_TEMPLATE ("sink",
     );
 
      static GstBuffer *gst_rtp_siren_depay_process (GstRTPBaseDepayload *
-    depayload, GstBuffer * buf);
+    depayload, GstRTPBuffer * rtp);
      static gboolean gst_rtp_siren_depay_setcaps (GstRTPBaseDepayload *
     depayload, GstCaps * caps);
 
@@ -62,7 +62,7 @@ G_DEFINE_TYPE (GstRTPSirenDepay, gst_rtp_siren_depay,
   gstelement_class = (GstElementClass *) klass;
   gstrtpbasedepayload_class = (GstRTPBaseDepayloadClass *) klass;
 
-  gstrtpbasedepayload_class->process = gst_rtp_siren_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_siren_depay_process;
   gstrtpbasedepayload_class->set_caps = gst_rtp_siren_depay_setcaps;
 
   gst_element_class_add_pad_template (gstelement_class,
@@ -101,14 +101,12 @@ gst_rtp_siren_depay_setcaps (GstRTPBaseDepayload * depayload, GstCaps * caps)
 }
 
 static GstBuffer *
-gst_rtp_siren_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_siren_depay_process (GstRTPBaseDepayload * depayload,
+    GstRTPBuffer * rtp)
 {
   GstBuffer *outbuf;
-  GstRTPBuffer rtp = { NULL };
 
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
-  outbuf = gst_rtp_buffer_get_payload_buffer (&rtp);
-  gst_rtp_buffer_unmap (&rtp);
+  outbuf = gst_rtp_buffer_get_payload_buffer (rtp);
 
   return outbuf;
 }
index efe7357..9f28f9f 100644 (file)
@@ -58,7 +58,7 @@ GST_STATIC_PAD_TEMPLATE ("src",
     );
 
 static GstBuffer *gst_rtp_speex_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 static gboolean gst_rtp_speex_depay_setcaps (GstRTPBaseDepayload * depayload,
     GstCaps * caps);
 
@@ -74,7 +74,7 @@ gst_rtp_speex_depay_class_init (GstRtpSPEEXDepayClass * klass)
   gstelement_class = (GstElementClass *) klass;
   gstrtpbasedepayload_class = (GstRTPBaseDepayloadClass *) klass;
 
-  gstrtpbasedepayload_class->process = gst_rtp_speex_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_speex_depay_process;
   gstrtpbasedepayload_class->set_caps = gst_rtp_speex_depay_setcaps;
 
   gst_element_class_add_pad_template (gstelement_class,
@@ -195,21 +195,18 @@ no_clockrate:
 }
 
 static GstBuffer *
-gst_rtp_speex_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_speex_depay_process (GstRTPBaseDepayload * depayload,
+    GstRTPBuffer * rtp)
 {
   GstBuffer *outbuf = NULL;
-  GstRTPBuffer rtp = { NULL };
-
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
 
   GST_DEBUG ("process : got %" G_GSIZE_FORMAT " bytes, mark %d ts %u seqn %d",
-      gst_buffer_get_size (buf),
-      gst_rtp_buffer_get_marker (&rtp),
-      gst_rtp_buffer_get_timestamp (&rtp), gst_rtp_buffer_get_seq (&rtp));
+      gst_buffer_get_size (rtp->buffer),
+      gst_rtp_buffer_get_marker (rtp),
+      gst_rtp_buffer_get_timestamp (rtp), gst_rtp_buffer_get_seq (rtp));
 
   /* nothing special to be done */
-  outbuf = gst_rtp_buffer_get_payload_buffer (&rtp);
-  gst_rtp_buffer_unmap (&rtp);
+  outbuf = gst_rtp_buffer_get_payload_buffer (rtp);
 
   if (outbuf)
     GST_BUFFER_DURATION (outbuf) = 20 * GST_MSECOND;
index aeaa63e..57ab5e8 100644 (file)
@@ -56,7 +56,7 @@ static GstStateChangeReturn gst_rtp_sv3v_depay_change_state (GstElement *
     element, GstStateChange transition);
 
 static GstBuffer *gst_rtp_sv3v_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 gboolean gst_rtp_sv3v_depay_setcaps (GstRTPBaseDepayload * filter,
     GstCaps * caps);
 
@@ -71,7 +71,7 @@ gst_rtp_sv3v_depay_class_init (GstRtpSV3VDepayClass * klass)
   gstelement_class = (GstElementClass *) klass;
   gstrtpbasedepayload_class = (GstRTPBaseDepayloadClass *) klass;
 
-  gstrtpbasedepayload_class->process = gst_rtp_sv3v_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_sv3v_depay_process;
   gstrtpbasedepayload_class->set_caps = gst_rtp_sv3v_depay_setcaps;
 
   gobject_class->finalize = gst_rtp_sv3v_depay_finalize;
@@ -125,7 +125,7 @@ gst_rtp_sv3v_depay_setcaps (GstRTPBaseDepayload * filter, GstCaps * caps)
 }
 
 static GstBuffer *
-gst_rtp_sv3v_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_sv3v_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
 {
   GstRtpSV3VDepay *rtpsv3vdepay;
   static struct
@@ -147,17 +147,15 @@ gst_rtp_sv3v_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
   gboolean C, S, E;
   GstBuffer *outbuf = NULL;
   guint16 seq;
-  GstRTPBuffer rtp = { NULL };
 
   rtpsv3vdepay = GST_RTP_SV3V_DEPAY (depayload);
 
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
 
   /* flush on sequence number gaps */
-  seq = gst_rtp_buffer_get_seq (&rtp);
+  seq = gst_rtp_buffer_get_seq (rtp);
 
   GST_DEBUG ("timestamp %" GST_TIME_FORMAT ", sequence number:%d",
-      GST_TIME_ARGS (GST_BUFFER_PTS (buf)), seq);
+      GST_TIME_ARGS (GST_BUFFER_PTS (rtp->buffer)), seq);
 
   if (seq != rtpsv3vdepay->nextseq) {
     GST_DEBUG ("Sequence discontinuity, clearing adapter");
@@ -165,13 +163,13 @@ gst_rtp_sv3v_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
   }
   rtpsv3vdepay->nextseq = seq + 1;
 
-  payload_len = gst_rtp_buffer_get_payload_len (&rtp);
+  payload_len = gst_rtp_buffer_get_payload_len (rtp);
   if (payload_len < 3)
     goto bad_packet;
 
-  payload = gst_rtp_buffer_get_payload (&rtp);
+  payload = gst_rtp_buffer_get_payload (rtp);
 
-  M = gst_rtp_buffer_get_marker (&rtp);
+  M = gst_rtp_buffer_get_marker (rtp);
 
   /* This is all a guess:
    *                      1 1 1 1 1 1
@@ -255,7 +253,7 @@ gst_rtp_sv3v_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
 
     GST_DEBUG ("Storing incoming payload");
     /* store data in adapter, stip off 2 bytes header */
-    tmpbuf = gst_rtp_buffer_get_payload_subbuffer (&rtp, 2, -1);
+    tmpbuf = gst_rtp_buffer_get_payload_subbuffer (rtp, 2, -1);
     gst_adapter_push (rtpsv3vdepay->adapter, tmpbuf);
 
     if (G_UNLIKELY (M)) {
@@ -269,7 +267,6 @@ gst_rtp_sv3v_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
   }
 
 beach:
-  gst_rtp_buffer_unmap (&rtp);
   return outbuf;
 
   /* ERRORS */
@@ -277,7 +274,6 @@ bad_packet:
   {
     GST_ELEMENT_WARNING (rtpsv3vdepay, STREAM, DECODE,
         (NULL), ("Packet was too short"));
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 }
index ccfe12d..1322dc7 100644 (file)
@@ -66,7 +66,7 @@ G_DEFINE_TYPE (GstRtpTheoraDepay, gst_rtp_theora_depay,
 static gboolean gst_rtp_theora_depay_setcaps (GstRTPBaseDepayload * depayload,
     GstCaps * caps);
 static GstBuffer *gst_rtp_theora_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 static gboolean gst_rtp_theora_depay_packet_lost (GstRTPBaseDepayload *
     depayload, GstEvent * event);
 
@@ -85,7 +85,7 @@ gst_rtp_theora_depay_class_init (GstRtpTheoraDepayClass * klass)
 
   gobject_class->finalize = gst_rtp_theora_depay_finalize;
 
-  gstrtpbasedepayload_class->process = gst_rtp_theora_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_theora_depay_process;
   gstrtpbasedepayload_class->set_caps = gst_rtp_theora_depay_setcaps;
   gstrtpbasedepayload_class->packet_lost = gst_rtp_theora_depay_packet_lost;
 
@@ -388,7 +388,8 @@ gst_rtp_theora_depay_switch_codebook (GstRtpTheoraDepay * rtptheoradepay,
 }
 
 static GstBuffer *
-gst_rtp_theora_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_theora_depay_process (GstRTPBaseDepayload * depayload,
+    GstRTPBuffer * rtp)
 {
   GstRtpTheoraDepay *rtptheoradepay;
   GstBuffer *outbuf;
@@ -397,14 +398,11 @@ gst_rtp_theora_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
   guint8 *payload, *to_free = NULL;
   guint32 header, ident;
   guint8 F, TDT, packets;
-  GstRTPBuffer rtp = { NULL };
   guint length;
 
   rtptheoradepay = GST_RTP_THEORA_DEPAY (depayload);
 
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
-
-  payload_len = gst_rtp_buffer_get_payload_len (&rtp);
+  payload_len = gst_rtp_buffer_get_payload_len (rtp);
 
   GST_DEBUG_OBJECT (depayload, "got RTP packet of size %d", payload_len);
 
@@ -412,7 +410,7 @@ gst_rtp_theora_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
   if (G_UNLIKELY (payload_len < 4))
     goto packet_short;
 
-  payload = gst_rtp_buffer_get_payload (&rtp);
+  payload = gst_rtp_buffer_get_payload (rtp);
 
   header = GST_READ_UINT32_BE (payload);
   /*
@@ -477,7 +475,7 @@ gst_rtp_theora_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
     /* first assembled packet, reuse 2 bytes to store the length */
     headerskip = (F == 1 ? 4 : 6);
     /* skip header and length. */
-    vdata = gst_rtp_buffer_get_payload_subbuffer (&rtp, headerskip, -1);
+    vdata = gst_rtp_buffer_get_payload_subbuffer (rtp, headerskip, -1);
 
     GST_DEBUG_OBJECT (depayload, "assemble theora packet");
     gst_adapter_push (rtptheoradepay->adapter, vdata);
@@ -576,7 +574,6 @@ gst_rtp_theora_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
 out:
 no_output:
 
-  gst_rtp_buffer_unmap (&rtp);
   g_free (to_free);
   return NULL;
 
index 313a6ed..fd80c09 100644 (file)
@@ -63,7 +63,7 @@ G_DEFINE_TYPE (GstRtpVorbisDepay, gst_rtp_vorbis_depay,
 static gboolean gst_rtp_vorbis_depay_setcaps (GstRTPBaseDepayload * depayload,
     GstCaps * caps);
 static GstBuffer *gst_rtp_vorbis_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 
 static void gst_rtp_vorbis_depay_finalize (GObject * object);
 
@@ -85,7 +85,7 @@ gst_rtp_vorbis_depay_class_init (GstRtpVorbisDepayClass * klass)
 
   gstelement_class->change_state = gst_rtp_vorbis_depay_change_state;
 
-  gstrtpbasedepayload_class->process = gst_rtp_vorbis_depay_process;
+  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_vorbis_depay_process;
   gstrtpbasedepayload_class->set_caps = gst_rtp_vorbis_depay_setcaps;
 
   gst_element_class_add_pad_template (gstelement_class,
@@ -436,7 +436,8 @@ gst_rtp_vorbis_depay_switch_codebook (GstRtpVorbisDepay * rtpvorbisdepay,
 }
 
 static GstBuffer *
-gst_rtp_vorbis_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
+gst_rtp_vorbis_depay_process (GstRTPBaseDepayload * depayload,
+    GstRTPBuffer * rtp)
 {
   GstRtpVorbisDepay *rtpvorbisdepay;
   GstBuffer *outbuf;
@@ -445,14 +446,11 @@ gst_rtp_vorbis_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
   guint8 *payload, *to_free = NULL;
   guint32 header, ident;
   guint8 F, VDT, packets;
-  GstRTPBuffer rtp = { NULL };
   guint length;
 
   rtpvorbisdepay = GST_RTP_VORBIS_DEPAY (depayload);
 
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
-
-  payload_len = gst_rtp_buffer_get_payload_len (&rtp);
+  payload_len = gst_rtp_buffer_get_payload_len (rtp);
 
   GST_DEBUG_OBJECT (depayload, "got RTP packet of size %d", payload_len);
 
@@ -460,7 +458,7 @@ gst_rtp_vorbis_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
   if (G_UNLIKELY (payload_len < 4))
     goto packet_short;
 
-  payload = gst_rtp_buffer_get_payload (&rtp);
+  payload = gst_rtp_buffer_get_payload (rtp);
 
   header = GST_READ_UINT32_BE (payload);
   /*
@@ -528,7 +526,7 @@ gst_rtp_vorbis_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
     /* first assembled packet, reuse 2 bytes to store the length */
     headerskip = (F == 1 ? 4 : 6);
     /* skip header and length. */
-    vdata = gst_rtp_buffer_get_payload_subbuffer (&rtp, headerskip, -1);
+    vdata = gst_rtp_buffer_get_payload_subbuffer (rtp, headerskip, -1);
 
     GST_DEBUG_OBJECT (depayload, "assemble vorbis packet");
     gst_adapter_push (rtpvorbisdepay->adapter, vdata);
@@ -619,13 +617,10 @@ gst_rtp_vorbis_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
 
   g_free (to_free);
 
-  gst_rtp_buffer_unmap (&rtp);
-
   return NULL;
 
 no_output:
   {
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
   /* ERORRS */
@@ -633,27 +628,23 @@ switch_failed:
   {
     GST_ELEMENT_WARNING (rtpvorbisdepay, STREAM, DECODE,
         (NULL), ("Could not switch codebooks"));
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 packet_short:
   {
     GST_ELEMENT_WARNING (rtpvorbisdepay, STREAM, DECODE,
         (NULL), ("Packet was too short (%d < 4)", payload_len));
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 ignore_reserved:
   {
     GST_WARNING_OBJECT (rtpvorbisdepay, "reserved VDT ignored");
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 length_short:
   {
     GST_ELEMENT_WARNING (rtpvorbisdepay, STREAM, DECODE,
         (NULL), ("Packet contains invalid data"));
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 invalid_configuration:
@@ -661,7 +652,6 @@ invalid_configuration:
     /* fatal, as we otherwise risk carrying on without output */
     GST_ELEMENT_ERROR (rtpvorbisdepay, STREAM, DECODE,
         (NULL), ("Packet contains invalid configuration"));
-    gst_rtp_buffer_unmap (&rtp);
     return NULL;
   }
 }
index 92693ff..128bb7d 100644 (file)
@@ -33,7 +33,7 @@ GST_DEBUG_CATEGORY_STATIC (gst_rtp_vp8_depay_debug);
 
 static void gst_rtp_vp8_depay_dispose (GObject * object);
 static GstBuffer *gst_rtp_vp8_depay_process (GstRTPBaseDepayload * depayload,
-    GstBuffer * buf);
+    GstRTPBuffer * rtp);
 static GstStateChangeReturn gst_rtp_vp8_depay_change_state (GstElement *
     element, GstStateChange transition);
 static gboolean gst_rtp_vp8_depay_handle_event (GstRTPBaseDepayload * depay,
@@ -86,7 +86,7 @@ gst_rtp_vp8_depay_class_init (GstRtpVP8DepayClass * gst_rtp_vp8_depay_class)
 
   element_class->change_state = gst_rtp_vp8_depay_change_state;
 
-  depay_class->process = gst_rtp_vp8_depay_process;
+  depay_class->process_rtp_packet = gst_rtp_vp8_depay_process;
   depay_class->handle_event = gst_rtp_vp8_depay_handle_event;
 
   GST_DEBUG_CATEGORY_INIT (gst_rtp_vp8_depay_debug, "rtpvp8depay", 0,
@@ -109,29 +109,27 @@ gst_rtp_vp8_depay_dispose (GObject * object)
 }
 
 static GstBuffer *
-gst_rtp_vp8_depay_process (GstRTPBaseDepayload * depay, GstBuffer * buf)
+gst_rtp_vp8_depay_process (GstRTPBaseDepayload * depay, GstRTPBuffer * rtp)
 {
   GstRtpVP8Depay *self = GST_RTP_VP8_DEPAY (depay);
   GstBuffer *payload;
   guint8 *data;
   guint hdrsize;
   guint size;
-  GstRTPBuffer rtpbuffer = GST_RTP_BUFFER_INIT;
 
-  if (G_UNLIKELY (GST_BUFFER_IS_DISCONT (buf))) {
+  if (G_UNLIKELY (GST_BUFFER_IS_DISCONT (rtp->buffer))) {
     GST_LOG_OBJECT (self, "Discontinuity, flushing adapter");
     gst_adapter_clear (self->adapter);
     self->started = FALSE;
   }
 
-  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtpbuffer);
-  size = gst_rtp_buffer_get_payload_len (&rtpbuffer);
+  size = gst_rtp_buffer_get_payload_len (rtp);
 
   /* At least one header and one vp8 byte */
   if (G_UNLIKELY (size < 2))
     goto too_small;
 
-  data = gst_rtp_buffer_get_payload (&rtpbuffer);
+  data = gst_rtp_buffer_get_payload (rtp);
 
   if (G_UNLIKELY (!self->started)) {
     /* Check if this is the start of a VP8 frame, otherwise bail */
@@ -167,11 +165,11 @@ gst_rtp_vp8_depay_process (GstRTPBaseDepayload * depay, GstBuffer * buf)
   if (G_UNLIKELY (hdrsize >= size))
     goto too_small;
 
-  payload = gst_rtp_buffer_get_payload_subbuffer (&rtpbuffer, hdrsize, -1);
+  payload = gst_rtp_buffer_get_payload_subbuffer (rtp, hdrsize, -1);
   gst_adapter_push (self->adapter, payload);
 
   /* Marker indicates that it was the last rtp packet for this frame */
-  if (gst_rtp_buffer_get_marker (&rtpbuffer)) {
+  if (gst_rtp_buffer_get_marker (rtp)) {
     GstBuffer *out;
     guint8 header[10];
 
@@ -181,7 +179,6 @@ gst_rtp_vp8_depay_process (GstRTPBaseDepayload * depay, GstBuffer * buf)
         gst_adapter_available (self->adapter));
 
     self->started = FALSE;
-    gst_rtp_buffer_unmap (&rtpbuffer);
 
     /* mark keyframes */
     out = gst_buffer_make_writable (out);
@@ -231,7 +228,6 @@ gst_rtp_vp8_depay_process (GstRTPBaseDepayload * depay, GstBuffer * buf)
   }
 
 done:
-  gst_rtp_buffer_unmap (&rtpbuffer);
   return NULL;
 
 too_small: