source: small cleanups
authorWim Taymans <wim.taymans@collabora.co.uk>
Fri, 13 Sep 2013 08:55:31 +0000 (10:55 +0200)
committerWim Taymans <wim.taymans@collabora.co.uk>
Fri, 13 Sep 2013 12:34:27 +0000 (14:34 +0200)
gst/rtpmanager/rtpsource.c
gst/rtpmanager/rtpsource.h

index 48c6986..c04d094 100644 (file)
@@ -1176,34 +1176,24 @@ rtp_source_send_rtp (RTPSource * src, gpointer data, gboolean is_list,
   guint32 rtptime;
   guint64 ext_rtptime;
   guint64 rt_diff, rtp_diff;
-  GstBufferList *list = NULL;
-  GstBuffer *buffer = NULL;
   guint packets;
   GstRTPBuffer rtp = { NULL };
 
   g_return_val_if_fail (RTP_IS_SOURCE (src), GST_FLOW_ERROR);
   g_return_val_if_fail (is_list || GST_IS_BUFFER (data), GST_FLOW_ERROR);
 
-  if (is_list) {
-    list = GST_BUFFER_LIST_CAST (data);
-
-    /* We can grab the caps from the first group, since all
-     * groups of a buffer list have same caps. */
-    buffer = gst_buffer_list_get (list, 0);
-    if (!buffer)
-      goto no_buffer;
-  } else {
-    buffer = GST_BUFFER_CAST (data);
-  }
-
   /* we are a sender now */
   src->is_sender = TRUE;
 
   if (is_list) {
+    GstBufferList *list = GST_BUFFER_LIST_CAST (data);
     gint i;
 
     /* Each group makes up a network packet. */
     packets = gst_buffer_list_length (list);
+    if (packets == 0)
+      goto no_buffer;
+
     for (i = 0, len = 0; i < packets; i++) {
       if (!gst_rtp_buffer_map (gst_buffer_list_get (list, i), GST_MAP_READ,
               &rtp))
@@ -1215,6 +1205,7 @@ rtp_source_send_rtp (RTPSource * src, gpointer data, gboolean is_list,
     /* subsequent info taken from first list member */
     gst_rtp_buffer_map (gst_buffer_list_get (list, 0), GST_MAP_READ, &rtp);
   } else {
+    GstBuffer *buffer = GST_BUFFER_CAST (data);
     packets = 1;
     if (!gst_rtp_buffer_map (buffer, GST_MAP_READ, &rtp))
       goto invalid_packet;
@@ -1230,6 +1221,8 @@ rtp_source_send_rtp (RTPSource * src, gpointer data, gboolean is_list,
   do_bitrate_estimation (src, running_time, &src->bytes_sent);
 
   rtptime = gst_rtp_buffer_get_timestamp (&rtp);
+  gst_rtp_buffer_unmap (&rtp);
+
   ext_rtptime = src->last_rtptime;
   ext_rtptime = gst_rtp_buffer_ext_timestamp (&ext_rtptime, rtptime);
 
@@ -1253,11 +1246,8 @@ rtp_source_send_rtp (RTPSource * src, gpointer data, gboolean is_list,
   src->last_rtptime = ext_rtptime;
 
   /* push packet */
-  if (!src->callbacks.push_rtp) {
-    gst_rtp_buffer_unmap (&rtp);
+  if (!src->callbacks.push_rtp)
     goto no_callback;
-  }
-  gst_rtp_buffer_unmap (&rtp);
 
   GST_LOG ("pushing RTP %s %" G_GUINT64_FORMAT, is_list ? "list" : "packet",
       src->stats.packets_sent);
index 09a339b..65809e4 100644 (file)
@@ -72,7 +72,7 @@ typedef struct _RTPSourceClass RTPSourceClass;
 /**
  * RTPSourcePushRTP:
  * @src: an #RTPSource
- * @buffer: the RTP buffer ready for processing
+ * @data: the RTP buffer or buffer list ready for processing
  * @user_data: user data specified when registering
  *
  * This callback will be called when @src has @buffer ready for further
@@ -80,7 +80,7 @@ typedef struct _RTPSourceClass RTPSourceClass;
  *
  * Returns: a #GstFlowReturn.
  */
-typedef GstFlowReturn (*RTPSourcePushRTP) (RTPSource *src, GstBuffer *buffer,
+typedef GstFlowReturn (*RTPSourcePushRTP) (RTPSource *src, gpointer data,
        gpointer user_data);
 
 /**