summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@collabora.co.uk>2013-09-13 10:55:31 +0200
committerWim Taymans <wim.taymans@collabora.co.uk>2013-09-13 14:34:27 +0200
commitc795b72988e59edcd5591190cc2f30a1c4ae0f11 (patch)
treebc70f905dcea05b4d828af4a2bdfd54d9fb43fa6
parent566b0dce403288faf81e653705587c010ba760ca (diff)
downloadgstreamer-plugins-good-c795b72988e59edcd5591190cc2f30a1c4ae0f11.tar.gz
source: small cleanups
-rw-r--r--gst/rtpmanager/rtpsource.c26
-rw-r--r--gst/rtpmanager/rtpsource.h4
2 files changed, 10 insertions, 20 deletions
diff --git a/gst/rtpmanager/rtpsource.c b/gst/rtpmanager/rtpsource.c
index 48c6986c5..c04d0948a 100644
--- a/gst/rtpmanager/rtpsource.c
+++ b/gst/rtpmanager/rtpsource.c
@@ -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);
diff --git a/gst/rtpmanager/rtpsource.h b/gst/rtpmanager/rtpsource.h
index 09a339b0a..65809e410 100644
--- a/gst/rtpmanager/rtpsource.h
+++ b/gst/rtpmanager/rtpsource.h
@@ -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);
/**