diff options
Diffstat (limited to 'third_party/libwebrtc/moz-patch-stack/0056.patch')
-rw-r--r-- | third_party/libwebrtc/moz-patch-stack/0056.patch | 208 |
1 files changed, 208 insertions, 0 deletions
diff --git a/third_party/libwebrtc/moz-patch-stack/0056.patch b/third_party/libwebrtc/moz-patch-stack/0056.patch new file mode 100644 index 0000000000..27b9c65715 --- /dev/null +++ b/third_party/libwebrtc/moz-patch-stack/0056.patch @@ -0,0 +1,208 @@ +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 31c9bff7b0..25c294a2a6 100644 +--- a/call/video_receive_stream.h ++++ b/call/video_receive_stream.h +@@ -145,10 +145,11 @@ class VideoReceiveStreamInterface : public MediaReceiveStreamInterface { + RtpReceiveStats rtp_stats; + RtcpPacketTypeCounter rtcp_packet_type_counts; + +- // 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 69d62ead5a..936750c263 100644 +--- a/modules/rtp_rtcp/source/rtcp_receiver.cc ++++ b/modules/rtp_rtcp/source/rtcp_receiver.cc +@@ -432,11 +432,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 a05a69059a..e3f5bc765c 100644 +--- a/modules/rtp_rtcp/source/rtcp_receiver.h ++++ b/modules/rtp_rtcp/source/rtcp_receiver.h +@@ -135,7 +135,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; + + // 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 bf9e2b3bf9..1c31611409 100644 +--- a/modules/rtp_rtcp/source/rtp_rtcp_impl.cc ++++ b/modules/rtp_rtcp/source/rtp_rtcp_impl.cc +@@ -527,11 +527,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 5cf558717e..6070b67d44 100644 +--- a/modules/rtp_rtcp/source/rtp_rtcp_impl.h ++++ b/modules/rtp_rtcp/source/rtp_rtcp_impl.h +@@ -194,7 +194,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 8378a76133..66d2e7a44e 100644 +--- a/modules/rtp_rtcp/source/rtp_rtcp_impl2.cc ++++ b/modules/rtp_rtcp/source/rtp_rtcp_impl2.cc +@@ -508,11 +508,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 4ef67d4647..c43d0c34ba 100644 +--- a/modules/rtp_rtcp/source/rtp_rtcp_impl2.h ++++ b/modules/rtp_rtcp/source/rtp_rtcp_impl2.h +@@ -206,7 +206,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 b988c7805d..cb4a0a427f 100644 +--- a/modules/rtp_rtcp/source/rtp_rtcp_interface.h ++++ b/modules/rtp_rtcp/source/rtp_rtcp_interface.h +@@ -403,10 +403,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 05447ac3bd..094f8f4a54 100644 +--- a/video/rtp_video_stream_receiver2.cc ++++ b/video/rtp_video_stream_receiver2.cc +@@ -1067,9 +1067,10 @@ absl::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); + } + + void RtpVideoStreamReceiver2::ManageFrame( +diff --git a/video/rtp_video_stream_receiver2.h b/video/rtp_video_stream_receiver2.h +index 21f125ae2f..6bf4bf8453 100644 +--- a/video/rtp_video_stream_receiver2.h ++++ b/video/rtp_video_stream_receiver2.h +@@ -215,7 +215,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 be850834d6..7cbd49d322 100644 +--- a/video/video_receive_stream2.cc ++++ b/video/video_receive_stream2.cc +@@ -603,7 +603,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; + } +-- +2.34.1 + |