rtpbin: remove more ntpnstime and cleanups
authorWim Taymans <wim.taymans@collabora.co.uk>
Wed, 20 Jan 2010 17:22:20 +0000 (18:22 +0100)
committerWim Taymans <wim@metal.(none)>
Mon, 15 Feb 2010 20:36:29 +0000 (21:36 +0100)
Remove some code where we pass ntpnstime around, we can do most things with the
running_time just fine.
Rename a variable in the ArrivalStats struct so that it's clear that this is the
current system time.

gst/rtpmanager/gstrtpsession.c
gst/rtpmanager/rtpsession.c
gst/rtpmanager/rtpsession.h
gst/rtpmanager/rtpstats.h

index 3dddf8d..44fcc38 100644 (file)
@@ -1341,7 +1341,6 @@ gst_rtp_session_chain_recv_rtp (GstPad * pad, GstBuffer * buffer)
   GstRtpSessionPrivate *priv;
   GstFlowReturn ret;
   GstClockTime current_time, running_time;
-  guint64 ntpnstime;
   GstClockTime timestamp;
 
   rtpsession = GST_RTP_SESSION (gst_pad_get_parent (pad));
@@ -1356,15 +1355,13 @@ gst_rtp_session_chain_recv_rtp (GstPad * pad, GstBuffer * buffer)
     running_time =
         gst_segment_to_running_time (&rtpsession->recv_rtp_seg, GST_FORMAT_TIME,
         timestamp);
-    /* add constant to convert running time to NTP time */
-    ntpnstime = running_time + priv->ntpnsbase;
   } else {
-    get_current_times (rtpsession, &running_time, &ntpnstime);
+    get_current_times (rtpsession, &running_time, NULL);
   }
   current_time = gst_clock_get_time (priv->sysclock);
 
   ret = rtp_session_process_rtp (priv->session, buffer, current_time,
-      running_time, ntpnstime);
+      running_time);
   if (ret != GST_FLOW_OK)
     goto push_error;
 
index ace3dc2..bf8cfd0 100644 (file)
@@ -994,7 +994,7 @@ find_add_conflicting_addresses (RTPSession * sess, RTPArrivalStats * arrival)
     RTPConflictingAddress *known_conflict = item->data;
 
     if (gst_netaddress_equal (&arrival->address, &known_conflict->address)) {
-      known_conflict->time = arrival->time;
+      known_conflict->time = arrival->current_time;
       return TRUE;
     }
   }
@@ -1002,7 +1002,7 @@ find_add_conflicting_addresses (RTPSession * sess, RTPArrivalStats * arrival)
   new_conflict = g_new0 (RTPConflictingAddress, 1);
 
   memcpy (&new_conflict->address, &arrival->address, sizeof (GstNetAddress));
-  new_conflict->time = arrival->time;
+  new_conflict->time = arrival->current_time;
 
   sess->conflicting_addresses = g_list_prepend (sess->conflicting_addresses,
       new_conflict);
@@ -1065,7 +1065,8 @@ check_collision (RTPSession * sess, RTPSource * source,
       GST_DEBUG ("Collision for SSRC %x", rtp_source_get_ssrc (source));
       on_ssrc_collision (sess, source);
 
-      rtp_session_schedule_bye_locked (sess, "SSRC Collision", arrival->time);
+      rtp_session_schedule_bye_locked (sess, "SSRC Collision",
+          arrival->current_time);
 
       sess->change_ssrc = TRUE;
     }
@@ -1122,9 +1123,9 @@ obtain_source (RTPSession * sess, guint32 ssrc, gboolean * created,
     }
   }
   /* update last activity */
-  source->last_activity = arrival->time;
+  source->last_activity = arrival->current_time;
   if (rtp)
-    source->last_rtp_activity = arrival->time;
+    source->last_rtp_activity = arrival->current_time;
   g_object_ref (source);
 
   return source;
@@ -1390,12 +1391,11 @@ rtp_session_create_source (RTPSession * sess)
 static void
 update_arrival_stats (RTPSession * sess, RTPArrivalStats * arrival,
     gboolean rtp, GstBuffer * buffer, GstClockTime current_time,
-    GstClockTime running_time, guint64 ntpnstime)
+    GstClockTime running_time)
 {
   /* get time of arrival */
-  arrival->time = current_time;
+  arrival->current_time = current_time;
   arrival->running_time = running_time;
-  arrival->ntpnstime = ntpnstime;
 
   /* get packet size including header overhead */
   arrival->bytes = GST_BUFFER_SIZE (buffer) + sess->header_len;
@@ -1420,7 +1420,6 @@ update_arrival_stats (RTPSession * sess, RTPArrivalStats * arrival,
  * @sess: and #RTPSession
  * @buffer: an RTP buffer
  * @current_time: the current system time
- * @ntpnstime: the NTP arrival time in nanoseconds
  *
  * Process an RTP buffer in the session manager. This function takes ownership
  * of @buffer.
@@ -1429,7 +1428,7 @@ update_arrival_stats (RTPSession * sess, RTPArrivalStats * arrival,
  */
 GstFlowReturn
 rtp_session_process_rtp (RTPSession * sess, GstBuffer * buffer,
-    GstClockTime current_time, GstClockTime running_time, guint64 ntpnstime)
+    GstClockTime current_time, GstClockTime running_time)
 {
   GstFlowReturn result;
   guint32 ssrc;
@@ -1449,7 +1448,7 @@ rtp_session_process_rtp (RTPSession * sess, GstBuffer * buffer,
   RTP_SESSION_LOCK (sess);
   /* update arrival stats */
   update_arrival_stats (sess, &arrival, TRUE, buffer, current_time,
-      running_time, ntpnstime);
+      running_time);
 
   /* ignore more RTP packets when we left the session */
   if (sess->source->received_bye)
@@ -1567,8 +1566,8 @@ rtp_session_process_rb (RTPSession * sess, RTPSource * source,
       /* only deal with report blocks for our session, we update the stats of
        * the sender of the RTCP message. We could also compare our stats against
        * the other sender to see if we are better or worse. */
-      rtp_source_process_rb (source, arrival->time, fractionlost, packetslost,
-          exthighestseq, jitter, lsr, dlsr);
+      rtp_source_process_rb (source, arrival->current_time, fractionlost,
+          packetslost, exthighestseq, jitter, lsr, dlsr);
 
       on_ssrc_active (sess, source);
     }
@@ -1597,7 +1596,7 @@ rtp_session_process_sr (RTPSession * sess, GstRTCPPacket * packet,
       &packet_count, &octet_count);
 
   GST_DEBUG ("got SR packet: SSRC %08x, time %" GST_TIME_FORMAT,
-      senderssrc, GST_TIME_ARGS (arrival->time));
+      senderssrc, GST_TIME_ARGS (arrival->current_time));
 
   source = obtain_source (sess, senderssrc, &created, arrival, FALSE);
   if (!source)
@@ -1612,8 +1611,8 @@ rtp_session_process_sr (RTPSession * sess, GstRTCPPacket * packet,
   prevsender = RTP_SOURCE_IS_SENDER (source);
 
   /* first update the source */
-  rtp_source_process_sr (source, arrival->time, ntptime, rtptime, packet_count,
-      octet_count);
+  rtp_source_process_sr (source, arrival->current_time, ntptime, rtptime,
+      packet_count, octet_count);
 
   if (prevsender != RTP_SOURCE_IS_SENDER (source)) {
     sess->stats.sender_sources++;
@@ -1768,7 +1767,7 @@ rtp_session_process_bye (RTPSession * sess, GstRTCPPacket * packet,
       return;
 
     /* store time for when we need to time out this source */
-    source->bye_time = arrival->time;
+    source->bye_time = arrival->current_time;
 
     prevactive = RTP_SOURCE_IS_ACTIVE (source);
     prevsender = RTP_SOURCE_IS_SENDER (source);
@@ -1794,17 +1793,17 @@ rtp_session_process_bye (RTPSession * sess, GstRTCPPacket * packet,
       /* some members went away since the previous timeout estimate.
        * Perform reverse reconsideration but only when we are not scheduling a
        * BYE ourselves. */
-      if (arrival->time < sess->next_rtcp_check_time) {
+      if (arrival->current_time < sess->next_rtcp_check_time) {
         GstClockTime time_remaining;
 
-        time_remaining = sess->next_rtcp_check_time - arrival->time;
+        time_remaining = sess->next_rtcp_check_time - arrival->current_time;
         sess->next_rtcp_check_time =
             gst_util_uint64_scale (time_remaining, members, pmembers);
 
         GST_DEBUG ("reverse reconsideration %" GST_TIME_FORMAT,
             GST_TIME_ARGS (sess->next_rtcp_check_time));
 
-        sess->next_rtcp_check_time += arrival->time;
+        sess->next_rtcp_check_time += arrival->current_time;
 
         /* mark pending reconsider. We only want to signal the reconsideration
          * once after we handled all the source in the bye packet */
@@ -1866,7 +1865,7 @@ rtp_session_process_rtcp (RTPSession * sess, GstBuffer * buffer,
 
   RTP_SESSION_LOCK (sess);
   /* update arrival stats */
-  update_arrival_stats (sess, &arrival, FALSE, buffer, current_time, -1, -1);
+  update_arrival_stats (sess, &arrival, FALSE, buffer, current_time, -1);
 
   if (sess->sent_bye)
     goto ignore;
index 5cb38f6..ffced1a 100644 (file)
@@ -286,7 +286,7 @@ RTPSource*      rtp_session_create_source          (RTPSession *sess);
 /* processing packets from receivers */
 GstFlowReturn   rtp_session_process_rtp            (RTPSession *sess, GstBuffer *buffer,
                                                     GstClockTime current_time,
-                                                   GstClockTime running_time, guint64 ntpnstime);
+                                                   GstClockTime running_time);
 GstFlowReturn   rtp_session_process_rtcp           (RTPSession *sess, GstBuffer *buffer,
                                                     GstClockTime current_time);
 
index e582431..7e742e6 100644 (file)
@@ -56,9 +56,8 @@ typedef struct {
 
 /**
  * RTPArrivalStats:
- * @time: arrival time of a packet according to the system clock
+ * @current_time: arrival time of a packet according to the system clock
  * @running_time: arrival time of a packet as buffer running_time
- * @ntpnstime: arrival time of a packet as NTP time in nanoseconds
  * @have_address: if the @address field contains a valid address
  * @address: address of the sender of the packet
  * @bytes: bytes of the packet including lowlevel overhead
@@ -67,9 +66,8 @@ typedef struct {
  * Structure holding information about the arrival stats of a packet.
  */
 typedef struct {
-  GstClockTime  time;
+  GstClockTime  current_time;
   GstClockTime  running_time;
-  guint64       ntpnstime;
   gboolean      have_address;
   GstNetAddress address;
   guint         bytes;