summaryrefslogtreecommitdiffstats
path: root/third_party/libwebrtc/moz-patch-stack/0008.patch
blob: ba1a816d3020f532693fbbcda6f6eaf82910cbfe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
From: Nico Grunbaum <na-g@nostrum.com>
Date: Fri, 5 Jun 2020 11:41:00 +0000
Subject: Bug 1615191 - P0 - implement remoteTimestamp for
 RTCRemoteOutboundRtpStreamStats in libwebrtc;r=dminor

Differential Revision: https://phabricator.services.mozilla.com/D78004
Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/cd901e96d23e004e4bee19b96c8c2f1ca3b42830

This patch also absorbs two additional patches that collapse into using ms for the remote timestamp:
Bug 1654112 - Plumb RemoteRTCPSenderInfo through also for audio and change unit to ms. r=ng
Bug 1654112 - Replace custom upstream code for remote received audio stats with cherry-pick. r=ng
---
 call/video_receive_stream.h                  | 1 +
 modules/rtp_rtcp/source/rtcp_receiver.cc     | 4 +++-
 modules/rtp_rtcp/source/rtcp_receiver.h      | 3 ++-
 modules/rtp_rtcp/source/rtp_rtcp_impl.cc     | 6 ++++--
 modules/rtp_rtcp/source/rtp_rtcp_impl.h      | 3 ++-
 modules/rtp_rtcp/source/rtp_rtcp_impl2.cc    | 6 ++++--
 modules/rtp_rtcp/source/rtp_rtcp_impl2.h     | 3 ++-
 modules/rtp_rtcp/source/rtp_rtcp_interface.h | 5 +++--
 8 files changed, 21 insertions(+), 10 deletions(-)

diff --git a/call/video_receive_stream.h b/call/video_receive_stream.h
index a7e82665c3..3125993d4b 100644
--- a/call/video_receive_stream.h
+++ b/call/video_receive_stream.h
@@ -146,6 +146,7 @@ class VideoReceiveStreamInterface : public MediaReceiveStreamInterface {
 
     uint32_t rtcp_sender_packets_sent;
     uint32_t rtcp_sender_octets_sent;
+    int64_t rtcp_sender_ntp_timestamp_ms;
 
     // 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 7dfe4f0b5d..68171d1c2a 100644
--- a/modules/rtp_rtcp/source/rtcp_receiver.cc
+++ b/modules/rtp_rtcp/source/rtcp_receiver.cc
@@ -429,10 +429,12 @@ RTCPReceiver::ConsumeReceivedXrReferenceTimeInfo() {
 }
 
 void RTCPReceiver::RemoteRTCPSenderInfo(uint32_t* packet_count,
-                                        uint32_t* octet_count) const {
+                                        uint32_t* octet_count,
+                                        int64_t* 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();
 }
 
 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 f68e57479b..6912912cfc 100644
--- a/modules/rtp_rtcp/source/rtcp_receiver.h
+++ b/modules/rtp_rtcp/source/rtcp_receiver.h
@@ -134,7 +134,8 @@ class RTCPReceiver final {
 
   // Get received sender packet and octet counts
   void RemoteRTCPSenderInfo(uint32_t* packet_count,
-                            uint32_t* octet_count) const;
+                            uint32_t* octet_count,
+                            int64_t* ntp_timestamp_ms) const;
 
   // Get rtt.
   int32_t RTT(uint32_t remote_ssrc,
diff --git a/modules/rtp_rtcp/source/rtp_rtcp_impl.cc b/modules/rtp_rtcp/source/rtp_rtcp_impl.cc
index 54fb82c2a1..bf9e2b3bf9 100644
--- a/modules/rtp_rtcp/source/rtp_rtcp_impl.cc
+++ b/modules/rtp_rtcp/source/rtp_rtcp_impl.cc
@@ -528,8 +528,10 @@ void ModuleRtpRtcpImpl::GetSendStreamDataCounters(
 
 // Received RTCP report.
 void ModuleRtpRtcpImpl::RemoteRTCPSenderInfo(uint32_t* packet_count,
-                                             uint32_t* octet_count) const {
-  return rtcp_receiver_.RemoteRTCPSenderInfo(packet_count, octet_count);
+                                             uint32_t* octet_count,
+                                             int64_t* ntp_timestamp_ms) const {
+  return rtcp_receiver_.RemoteRTCPSenderInfo(packet_count, octet_count,
+                                             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 dd916fbe40..5cf558717e 100644
--- a/modules/rtp_rtcp/source/rtp_rtcp_impl.h
+++ b/modules/rtp_rtcp/source/rtp_rtcp_impl.h
@@ -193,7 +193,8 @@ class ABSL_DEPRECATED("") ModuleRtpRtcpImpl
       StreamDataCounters* rtx_counters) const override;
 
   void RemoteRTCPSenderInfo(uint32_t* packet_count,
-                            uint32_t* octet_count) const override;
+                            uint32_t* octet_count,
+                            int64_t* 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 d0f9c8ed1a..8378a76133 100644
--- a/modules/rtp_rtcp/source/rtp_rtcp_impl2.cc
+++ b/modules/rtp_rtcp/source/rtp_rtcp_impl2.cc
@@ -509,8 +509,10 @@ void ModuleRtpRtcpImpl2::GetSendStreamDataCounters(
 
 // Received RTCP report.
 void ModuleRtpRtcpImpl2::RemoteRTCPSenderInfo(uint32_t* packet_count,
-                                              uint32_t* octet_count) const {
-  return rtcp_receiver_.RemoteRTCPSenderInfo(packet_count, octet_count);
+                                             uint32_t* octet_count,
+                                             int64_t* ntp_timestamp_ms) const {
+  return rtcp_receiver_.RemoteRTCPSenderInfo(packet_count, octet_count,
+                                             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 3ef76ab66a..4ef67d4647 100644
--- a/modules/rtp_rtcp/source/rtp_rtcp_impl2.h
+++ b/modules/rtp_rtcp/source/rtp_rtcp_impl2.h
@@ -205,7 +205,8 @@ class ModuleRtpRtcpImpl2 final : public RtpRtcpInterface,
       StreamDataCounters* rtx_counters) const override;
 
   void RemoteRTCPSenderInfo(uint32_t* packet_count,
-                            uint32_t* octet_count) const override;
+                            uint32_t* octet_count,
+                            int64_t* 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 f23d4d0758..c6854937cb 100644
--- a/modules/rtp_rtcp/source/rtp_rtcp_interface.h
+++ b/modules/rtp_rtcp/source/rtp_rtcp_interface.h
@@ -400,9 +400,10 @@ class RtpRtcpInterface : public RtcpFeedbackSenderInterface {
       StreamDataCounters* rtx_counters) const = 0;
 
 
-  // Returns packet count and octet count from RTCP sender report.
+  // Returns packet count, octet count, and timestamp from RTCP sender report.
   virtual void RemoteRTCPSenderInfo(uint32_t* packet_count,
-                                    uint32_t* octet_count) const = 0;
+                                    uint32_t* octet_count,
+                                    int64_t* 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
-- 
2.34.1