diff options
Diffstat (limited to 'third_party/libwebrtc/moz-patch-stack/0033.patch')
-rw-r--r-- | third_party/libwebrtc/moz-patch-stack/0033.patch | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/third_party/libwebrtc/moz-patch-stack/0033.patch b/third_party/libwebrtc/moz-patch-stack/0033.patch new file mode 100644 index 0000000000..2742e376b0 --- /dev/null +++ b/third_party/libwebrtc/moz-patch-stack/0033.patch @@ -0,0 +1,130 @@ +From: Andreas Pehrson <apehrson@mozilla.com> +Date: Mon, 18 Jan 2021 11:04:00 +0100 +Subject: Bug 1654112 - Include RtcpPacketTypeCounter in audio send stats, to + not regress nackCount. r=ng + +This is similar to how it's already included for video send. + +Differential Revision: https://phabricator.services.mozilla.com/D102273 +Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/d380a43d59f4f7cbc001f4eab9b63ee993b32cd8 +--- + audio/audio_send_stream.cc | 1 + + audio/channel_send.cc | 31 +++++++++++++++++++++++++++++++ + audio/channel_send.h | 1 + + call/audio_send_stream.h | 2 ++ + 4 files changed, 35 insertions(+) + +diff --git a/audio/audio_send_stream.cc b/audio/audio_send_stream.cc +index 0caf59a20e..bffb910832 100644 +--- a/audio/audio_send_stream.cc ++++ b/audio/audio_send_stream.cc +@@ -431,6 +431,7 @@ webrtc::AudioSendStream::Stats AudioSendStream::GetStats( + stats.target_bitrate_bps = channel_send_->GetTargetBitrate(); + + webrtc::CallSendStatistics call_stats = channel_send_->GetRTCPStatistics(); ++ stats.rtcp_packet_type_counts = call_stats.rtcp_packet_type_counts; + stats.payload_bytes_sent = call_stats.payload_bytes_sent; + stats.header_and_padding_bytes_sent = + call_stats.header_and_padding_bytes_sent; +diff --git a/audio/channel_send.cc b/audio/channel_send.cc +index 81d5c66652..ddc3323df9 100644 +--- a/audio/channel_send.cc ++++ b/audio/channel_send.cc +@@ -55,6 +55,31 @@ constexpr int64_t kMinRetransmissionWindowMs = 30; + class RtpPacketSenderProxy; + class TransportSequenceNumberProxy; + ++class RtcpCounterObserver : public RtcpPacketTypeCounterObserver { ++ public: ++ explicit RtcpCounterObserver(uint32_t ssrc) : ssrc_(ssrc) {} ++ ++ void RtcpPacketTypesCounterUpdated( ++ uint32_t ssrc, const RtcpPacketTypeCounter& packet_counter) override { ++ if (ssrc_ != ssrc) { ++ return; ++ } ++ ++ MutexLock lock(&mutex_); ++ packet_counter_ = packet_counter; ++ } ++ ++ RtcpPacketTypeCounter GetCounts() { ++ MutexLock lock(&mutex_); ++ return packet_counter_; ++ } ++ ++ private: ++ Mutex mutex_; ++ const uint32_t ssrc_; ++ RtcpPacketTypeCounter packet_counter_; ++}; ++ + class ChannelSend : public ChannelSendInterface, + public AudioPacketizationCallback, // receive encoded + // packets from the ACM +@@ -207,6 +232,8 @@ class ChannelSend : public ChannelSendInterface, + bool input_mute_ RTC_GUARDED_BY(volume_settings_mutex_) = false; + bool previous_frame_muted_ RTC_GUARDED_BY(encoder_queue_) = false; + ++ const std::unique_ptr<RtcpCounterObserver> rtcp_counter_observer_; ++ + PacketRouter* packet_router_ RTC_GUARDED_BY(&worker_thread_checker_) = + nullptr; + const std::unique_ptr<RtpPacketSenderProxy> rtp_packet_pacer_proxy_; +@@ -387,6 +414,7 @@ ChannelSend::ChannelSend( + const FieldTrialsView& field_trials) + : ssrc_(ssrc), + event_log_(rtc_event_log), ++ rtcp_counter_observer_(new RtcpCounterObserver(ssrc)), + rtp_packet_pacer_proxy_(new RtpPacketSenderProxy()), + retransmission_rate_limiter_( + new RateLimiter(clock, kMaxRetransmissionWindowMs)), +@@ -411,6 +439,8 @@ ChannelSend::ChannelSend( + + configuration.event_log = event_log_; + configuration.rtt_stats = rtcp_rtt_stats; ++ configuration.rtcp_packet_type_counter_observer = ++ rtcp_counter_observer_.get(); + if (field_trials.IsDisabled("WebRTC-DisableRtxRateLimiter")) { + configuration.retransmission_rate_limiter = + retransmission_rate_limiter_.get(); +@@ -673,6 +703,7 @@ CallSendStatistics ChannelSend::GetRTCPStatistics() const { + RTC_DCHECK_RUN_ON(&worker_thread_checker_); + CallSendStatistics stats = {0}; + stats.rttMs = GetRTT(); ++ stats.rtcp_packet_type_counts = rtcp_counter_observer_->GetCounts(); + + StreamDataCounters rtp_stats; + StreamDataCounters rtx_stats; +diff --git a/audio/channel_send.h b/audio/channel_send.h +index 00d954c952..f0c9232296 100644 +--- a/audio/channel_send.h ++++ b/audio/channel_send.h +@@ -43,6 +43,7 @@ struct CallSendStatistics { + TimeDelta total_packet_send_delay = TimeDelta::Zero(); + // https://w3c.github.io/webrtc-stats/#dom-rtcoutboundrtpstreamstats-retransmittedpacketssent + uint64_t retransmitted_packets_sent; ++ RtcpPacketTypeCounter rtcp_packet_type_counts; + // 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/call/audio_send_stream.h b/call/audio_send_stream.h +index f9e49db574..5f4f871bf0 100644 +--- a/call/audio_send_stream.h ++++ b/call/audio_send_stream.h +@@ -31,6 +31,7 @@ + #include "call/rtp_config.h" + #include "modules/audio_processing/include/audio_processing_statistics.h" + #include "modules/rtp_rtcp/include/report_block_data.h" ++#include "modules/rtp_rtcp/include/rtcp_statistics.h" + + namespace webrtc { + +@@ -65,6 +66,7 @@ class AudioSendStream : public AudioSender { + + ANAStats ana_statistics; + AudioProcessingStats apm_statistics; ++ RtcpPacketTypeCounter rtcp_packet_type_counts; + + int64_t target_bitrate_bps = 0; + // A snapshot of Report Blocks with additional data of interest to |