Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  0048.patch   Sprache: unbekannt

 
From: Andreas Pehrson <apehrson@mozilla.com>
Date: Tue, 2 Nov 2021 14:35:00 +0000
Subject: Bug 1729455 - Add to stats the local receive time for receiving video
 Sender Reports. r=ng

Differential Revision: https://phabricator.services.mozilla.com/D125712
Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/99267b6d193fbcb3e4c845c5e80770424d6d06e2
---
 call/video_receive_stream.h                  |  3 ++-
 modules/rtp_rtcp/source/rtcp_receiver.cc     |  6 ++++--
 modules/rtp_rtcp/source/rtcp_receiver.h      |  3 ++-
 modules/rtp_rtcp/source/rtp_rtcp_impl.cc     | 10 +++++-----
 modules/rtp_rtcp/source/rtp_rtcp_impl.h      |  3 ++-
 modules/rtp_rtcp/source/rtp_rtcp_impl2.cc    | 10 +++++-----
 modules/rtp_rtcp/source/rtp_rtcp_impl2.h     |  3 ++-
 modules/rtp_rtcp/source/rtp_rtcp_interface.h |  5 +++--
 video/rtp_video_stream_receiver2.cc          |  5 +++--
 video/rtp_video_stream_receiver2.h           |  3 ++-
 video/video_receive_stream2.cc               |  3 ++-
 11 files changed, 32 insertions(+), 22 deletions(-)

diff --git a/call/video_receive_stream.h b/call/video_receive_stream.h
index 574bf3166b..352d016dde 100644
--- a/call/video_receive_stream.h
+++ b/call/video_receive_stream.h
@@ -170,10 +170,11 @@ class VideoReceiveStreamInterface : public MediaReceiveStreamInterface {
     RtcpPacketTypeCounter rtcp_packet_type_counts;
     std::optional<RtpReceiveStats> rtx_rtp_stats;
 
-    // Mozilla modification: Init these three.
+    // Mozilla modification: Init these.
     uint32_t rtcp_sender_packets_sent = 0;
     uint32_t rtcp_sender_octets_sent = 0;
     int64_t rtcp_sender_ntp_timestamp_ms = 0;
+    int64_t rtcp_sender_remote_ntp_timestamp_ms = 0;
 
     // Timing frame info: all important timestamps for a full lifetime of a
     // single 'timing frame'.
diff --git a/modules/rtp_rtcp/source/rtcp_receiver.cc b/modules/rtp_rtcp/source/rtcp_receiver.cc
index c79ff86a40..83f6fb1b7b 100644
--- a/modules/rtp_rtcp/source/rtcp_receiver.cc
+++ b/modules/rtp_rtcp/source/rtcp_receiver.cc
@@ -389,11 +389,13 @@ RTCPReceiver::ConsumeReceivedXrReferenceTimeInfo() {
 
 void RTCPReceiver::RemoteRTCPSenderInfo(uint32_t* packet_count,
                                         uint32_t* octet_count,
-                                        int64_t* ntp_timestamp_ms) const {
+                                        int64_t* ntp_timestamp_ms,
+                                        int64_t* remote_ntp_timestamp_ms) const {
   MutexLock lock(&rtcp_receiver_lock_);
   *packet_count = remote_sender_packet_count_;
   *octet_count = remote_sender_octet_count_;
-  *ntp_timestamp_ms = remote_sender_ntp_time_.ToMs();
+  *ntp_timestamp_ms = last_received_sr_ntp_.ToMs();
+  *remote_ntp_timestamp_ms = remote_sender_ntp_time_.ToMs();
 }
 
 std::vector<ReportBlockData> RTCPReceiver::GetLatestReportBlockData() const {
diff --git a/modules/rtp_rtcp/source/rtcp_receiver.h b/modules/rtp_rtcp/source/rtcp_receiver.h
index 33aa986e8b..f6d1e027f4 100644
--- a/modules/rtp_rtcp/source/rtcp_receiver.h
+++ b/modules/rtp_rtcp/source/rtcp_receiver.h
@@ -126,7 +126,8 @@ class RTCPReceiver final {
   // Get received sender packet and octet counts
   void RemoteRTCPSenderInfo(uint32_t* packet_count,
                             uint32_t* octet_count,
-                            int64_t* ntp_timestamp_ms) const;
+                            int64_t* ntp_timestamp_ms,
+                            int64_t* remote_ntp_timestamp_ms) const;
 
   std::optional<TimeDelta> AverageRtt() const;
   std::optional<TimeDelta> LastRtt() const;
diff --git a/modules/rtp_rtcp/source/rtp_rtcp_impl.cc b/modules/rtp_rtcp/source/rtp_rtcp_impl.cc
index 6bf4113cbe..bb9553db31 100644
--- a/modules/rtp_rtcp/source/rtp_rtcp_impl.cc
+++ b/modules/rtp_rtcp/source/rtp_rtcp_impl.cc
@@ -515,11 +515,11 @@ void ModuleRtpRtcpImpl::GetSendStreamDataCounters(
 }
 
 // Received RTCP report.
-void ModuleRtpRtcpImpl::RemoteRTCPSenderInfo(uint32_t* packet_count,
-                                             uint32_t* octet_count,
-                                             int64_t* ntp_timestamp_ms) const {
-  return rtcp_receiver_.RemoteRTCPSenderInfo(packet_count, octet_count,
-                                             ntp_timestamp_ms);
+void ModuleRtpRtcpImpl::RemoteRTCPSenderInfo(
+    uint32_t* packet_count, uint32_t* octet_count, int64_t* ntp_timestamp_ms,
+    int64_t* remote_ntp_timestamp_ms) const {
+  return rtcp_receiver_.RemoteRTCPSenderInfo(
+      packet_count, octet_count, ntp_timestamp_ms, remote_ntp_timestamp_ms);
 }
 
 std::vector<ReportBlockData> ModuleRtpRtcpImpl::GetLatestReportBlockData()
diff --git a/modules/rtp_rtcp/source/rtp_rtcp_impl.h b/modules/rtp_rtcp/source/rtp_rtcp_impl.h
index 2ad73523db..f990a0e452 100644
--- a/modules/rtp_rtcp/source/rtp_rtcp_impl.h
+++ b/modules/rtp_rtcp/source/rtp_rtcp_impl.h
@@ -205,7 +205,8 @@ class ABSL_DEPRECATED("") ModuleRtpRtcpImpl
 
   void RemoteRTCPSenderInfo(uint32_t* packet_count,
                             uint32_t* octet_count,
-                            int64_t* ntp_timestamp_ms) const override;
+                            int64_t* ntp_timestamp_ms,
+                            int64_t* remote_ntp_timestamp_ms) const override;
 
   // A snapshot of the most recent Report Block with additional data of
   // interest to statistics. Used to implement RTCRemoteInboundRtpStreamStats.
diff --git a/modules/rtp_rtcp/source/rtp_rtcp_impl2.cc b/modules/rtp_rtcp/source/rtp_rtcp_impl2.cc
index c3366c6872..01fbfb0c55 100644
--- a/modules/rtp_rtcp/source/rtp_rtcp_impl2.cc
+++ b/modules/rtp_rtcp/source/rtp_rtcp_impl2.cc
@@ -526,11 +526,11 @@ void ModuleRtpRtcpImpl2::GetSendStreamDataCounters(
 }
 
 // Received RTCP report.
-void ModuleRtpRtcpImpl2::RemoteRTCPSenderInfo(uint32_t* packet_count,
-                                             uint32_t* octet_count,
-                                             int64_t* ntp_timestamp_ms) const {
-  return rtcp_receiver_.RemoteRTCPSenderInfo(packet_count, octet_count,
-                                             ntp_timestamp_ms);
+void ModuleRtpRtcpImpl2::RemoteRTCPSenderInfo(
+    uint32_t* packet_count, uint32_t* octet_count, int64_t* ntp_timestamp_ms,
+    int64_t* remote_ntp_timestamp_ms) const {
+  return rtcp_receiver_.RemoteRTCPSenderInfo(
+      packet_count, octet_count, ntp_timestamp_ms, remote_ntp_timestamp_ms);
 }
 
 std::vector<ReportBlockData> ModuleRtpRtcpImpl2::GetLatestReportBlockData()
diff --git a/modules/rtp_rtcp/source/rtp_rtcp_impl2.h b/modules/rtp_rtcp/source/rtp_rtcp_impl2.h
index 625ec14c8d..af123a3015 100644
--- a/modules/rtp_rtcp/source/rtp_rtcp_impl2.h
+++ b/modules/rtp_rtcp/source/rtp_rtcp_impl2.h
@@ -200,7 +200,8 @@ class ModuleRtpRtcpImpl2 final : public RtpRtcpInterface,
 
   void RemoteRTCPSenderInfo(uint32_t* packet_count,
                             uint32_t* octet_count,
-                            int64_t* ntp_timestamp_ms) const override;
+                            int64_t* ntp_timestamp_ms,
+                            int64_t* remote_ntp_timestamp_ms) const override;
 
   // A snapshot of the most recent Report Block with additional data of
   // interest to statistics. Used to implement RTCRemoteInboundRtpStreamStats.
diff --git a/modules/rtp_rtcp/source/rtp_rtcp_interface.h b/modules/rtp_rtcp/source/rtp_rtcp_interface.h
index e14072c0fc..02828619a6 100644
--- a/modules/rtp_rtcp/source/rtp_rtcp_interface.h
+++ b/modules/rtp_rtcp/source/rtp_rtcp_interface.h
@@ -407,10 +407,11 @@ class RtpRtcpInterface : public RtcpFeedbackSenderInterface {
       StreamDataCounters* rtx_counters) const = 0;
 
 
-  // Returns packet count, octet count, and timestamp from RTCP sender report.
+  // Returns packet count, octet count, and timestamps from RTCP sender report.
   virtual void RemoteRTCPSenderInfo(uint32_t* packet_count,
                                     uint32_t* octet_count,
-                                    int64_t* ntp_timestamp_ms) const = 0;
+                                    int64_t* ntp_timestamp_ms,
+                                    int64_t* remote_ntp_timestamp_ms) const = 0;
   // A snapshot of Report Blocks with additional data of interest to statistics.
   // Within this list, the sender-source SSRC pair is unique and per-pair the
   // ReportBlockData represents the latest Report Block that was received for
diff --git a/video/rtp_video_stream_receiver2.cc b/video/rtp_video_stream_receiver2.cc
index de1aa5ab48..efde076054 100644
--- a/video/rtp_video_stream_receiver2.cc
+++ b/video/rtp_video_stream_receiver2.cc
@@ -1078,9 +1078,10 @@ std::optional<int64_t> RtpVideoStreamReceiver2::LastReceivedKeyframePacketMs()
 // seem to be any support for these stats right now. So, we hack this in.
 void RtpVideoStreamReceiver2::RemoteRTCPSenderInfo(
     uint32_t* packet_count, uint32_t* octet_count,
-    int64_t* ntp_timestamp_ms) const {
+    int64_t* ntp_timestamp_ms, int64_t* remote_ntp_timestamp_ms) const {
   RTC_DCHECK_RUN_ON(&worker_task_checker_);
-  rtp_rtcp_->RemoteRTCPSenderInfo(packet_count, octet_count, ntp_timestamp_ms);
+  rtp_rtcp_->RemoteRTCPSenderInfo(packet_count, octet_count, ntp_timestamp_ms,
+                                  remote_ntp_timestamp_ms);
 }
 
 std::optional<RtpRtcpInterface::SenderReportStats>
diff --git a/video/rtp_video_stream_receiver2.h b/video/rtp_video_stream_receiver2.h
index 8da628695d..e5266ed337 100644
--- a/video/rtp_video_stream_receiver2.h
+++ b/video/rtp_video_stream_receiver2.h
@@ -217,7 +217,8 @@ class RtpVideoStreamReceiver2 : public LossNotificationSender,
   // stats at all, and even on the most recent libwebrtc code there does not
   // seem to be any support for these stats right now. So, we hack this in.
   void RemoteRTCPSenderInfo(uint32_t* packet_count, uint32_t* octet_count,
-                            int64_t* ntp_timestamp_ms) const;
+                            int64_t* ntp_timestamp_ms,
+                            int64_t* remote_ntp_timestamp_ms) const;
 
  private:
   // Implements RtpVideoFrameReceiver.
diff --git a/video/video_receive_stream2.cc b/video/video_receive_stream2.cc
index 9b9dc814e5..4914689649 100644
--- a/video/video_receive_stream2.cc
+++ b/video/video_receive_stream2.cc
@@ -587,7 +587,8 @@ VideoReceiveStreamInterface::Stats VideoReceiveStream2::GetStats() const {
   // seem to be any support for these stats right now. So, we hack this in.
   rtp_video_stream_receiver_.RemoteRTCPSenderInfo(
       &stats.rtcp_sender_packets_sent, &stats.rtcp_sender_octets_sent,
-      &stats.rtcp_sender_ntp_timestamp_ms);
+      &stats.rtcp_sender_ntp_timestamp_ms,
+      &stats.rtcp_sender_remote_ntp_timestamp_ms);
 
   return stats;
 }

[ Dauer der Verarbeitung: 0.25 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge