зеркало из https://github.com/mozilla/gecko-dev.git
77 строки
3.3 KiB
Diff
77 строки
3.3 KiB
Diff
From: "Byron Campen [:bwc]" <docfaraday@gmail.com>
|
|
Date: Fri, 12 Mar 2021 08:55:00 -0600
|
|
Subject: Bug 1654112 - libwebrtc modification: Surface video RTCP SR stats
|
|
again. r=ng
|
|
|
|
libwebrtc has stopped surfacing these, and Chromium does not support
|
|
these stats at all.
|
|
|
|
Differential Revision: https://phabricator.services.mozilla.com/D108674
|
|
Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/edac9d01a9ac7594f4b22708a4690753638ca32c
|
|
---
|
|
video/rtp_video_stream_receiver2.cc | 10 ++++++++++
|
|
video/rtp_video_stream_receiver2.h | 6 ++++++
|
|
video/video_receive_stream2.cc | 8 ++++++++
|
|
3 files changed, 24 insertions(+)
|
|
|
|
diff --git a/video/rtp_video_stream_receiver2.cc b/video/rtp_video_stream_receiver2.cc
|
|
index c7b5e7bc7c..05447ac3bd 100644
|
|
--- a/video/rtp_video_stream_receiver2.cc
|
|
+++ b/video/rtp_video_stream_receiver2.cc
|
|
@@ -1062,6 +1062,16 @@ absl::optional<int64_t> RtpVideoStreamReceiver2::LastReceivedKeyframePacketMs()
|
|
return absl::nullopt;
|
|
}
|
|
|
|
+// Mozilla modification: VideoReceiveStream2 and friends do not surface RTCP
|
|
+// 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 RtpVideoStreamReceiver2::RemoteRTCPSenderInfo(
|
|
+ uint32_t* packet_count, uint32_t* octet_count,
|
|
+ int64_t* ntp_timestamp_ms) const {
|
|
+ RTC_DCHECK_RUN_ON(&worker_task_checker_);
|
|
+ rtp_rtcp_->RemoteRTCPSenderInfo(packet_count, octet_count, ntp_timestamp_ms);
|
|
+}
|
|
+
|
|
void RtpVideoStreamReceiver2::ManageFrame(
|
|
std::unique_ptr<RtpFrameObject> frame) {
|
|
RTC_DCHECK_RUN_ON(&packet_sequence_checker_);
|
|
diff --git a/video/rtp_video_stream_receiver2.h b/video/rtp_video_stream_receiver2.h
|
|
index 48bcab157e..21f125ae2f 100644
|
|
--- a/video/rtp_video_stream_receiver2.h
|
|
+++ b/video/rtp_video_stream_receiver2.h
|
|
@@ -211,6 +211,12 @@ class RtpVideoStreamReceiver2 : public LossNotificationSender,
|
|
absl::optional<int64_t> LastReceivedPacketMs() const;
|
|
absl::optional<int64_t> LastReceivedKeyframePacketMs() const;
|
|
|
|
+ // Mozilla modification: VideoReceiveStream2 and friends do not surface RTCP
|
|
+ // 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;
|
|
+
|
|
private:
|
|
// Implements RtpVideoFrameReceiver.
|
|
void ManageFrame(std::unique_ptr<RtpFrameObject> frame) override;
|
|
diff --git a/video/video_receive_stream2.cc b/video/video_receive_stream2.cc
|
|
index ce96512795..be850834d6 100644
|
|
--- a/video/video_receive_stream2.cc
|
|
+++ b/video/video_receive_stream2.cc
|
|
@@ -597,6 +597,14 @@ VideoReceiveStreamInterface::Stats VideoReceiveStream2::GetStats() const {
|
|
if (rtx_statistician)
|
|
stats.total_bitrate_bps += rtx_statistician->BitrateReceived();
|
|
}
|
|
+
|
|
+ // Mozilla modification: VideoReceiveStream2 and friends do not surface RTCP
|
|
+ // 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.
|
|
+ rtp_video_stream_receiver_.RemoteRTCPSenderInfo(
|
|
+ &stats.rtcp_sender_packets_sent, &stats.rtcp_sender_octets_sent,
|
|
+ &stats.rtcp_sender_ntp_timestamp_ms);
|
|
+
|
|
return stats;
|
|
}
|
|
|
|
--
|
|
2.34.1
|
|
|