We already cherry-picked this when we vendored f30c044cf9. Upstream commit: https://webrtc.googlesource.com/src/+/995688c8e85b520d50961486abbe0cc03eae9558 Revert "more p2p cleanups" This reverts commit f30c044cf9bd06f91017c171d98690094ce6d88b. Reason for revert: breaks roll to chromium: https://ci.chromium.org/ui/p/chromium/builders/try/mac_chromium_compile_dbg_ng/2290104/overview Original change's description: > more p2p cleanups > > Move test code from p2p/base and rtc_base/ into p2p/test/ > This p2p/base much less crowded and > clarifies that the rtc_base/nat* is in fact only test code. > > BUG=webrtc:0 > > Change-Id: I4d14fae24cb0eff6783962f4b4483b560367ca5d > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/378900 > Commit-Queue: Jonas Oreland <jonaso@webrtc.org> > Reviewed-by: Harald Alvestrand <hta@webrtc.org> > Auto-Submit: Jonas Oreland <jonaso@webrtc.org> > Cr-Commit-Position: refs/heads/main@{#43995} Bug: webrtc:0 Change-Id: I6c79fa85f53fdb9a1dacbe38911771f9a4289c76 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/379040 Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com> Owners-Override: Ilya Nikolaevskiy <ilnik@webrtc.org> Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org> Cr-Commit-Position: refs/heads/main@{#43999} Differential Revision: https://phabricator.services.mozilla.com/D244009
131 lines
5.1 KiB
Diff
131 lines
5.1 KiB
Diff
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 6e5bd18fef..831e6c2815 100644
|
|
--- a/audio/audio_send_stream.cc
|
|
+++ b/audio/audio_send_stream.cc
|
|
@@ -413,6 +413,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 7b000341cc..b4087ec512 100644
|
|
--- a/audio/channel_send.cc
|
|
+++ b/audio/channel_send.cc
|
|
@@ -80,6 +80,31 @@ constexpr TimeDelta kMinRetransmissionWindow = TimeDelta::Millis(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 AudioBitrateAccountant {
|
|
public:
|
|
void RegisterPacketOverhead(int packet_byte_overhead) {
|
|
@@ -282,6 +307,8 @@ class ChannelSend : public ChannelSendInterface,
|
|
bool input_mute_ RTC_GUARDED_BY(volume_settings_mutex_) = false;
|
|
bool previous_frame_muted_ RTC_GUARDED_BY(encoder_queue_checker_) = 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_;
|
|
@@ -493,6 +520,7 @@ ChannelSend::ChannelSend(
|
|
RtpTransportControllerSendInterface* transport_controller)
|
|
: env_(env),
|
|
ssrc_(ssrc),
|
|
+ rtcp_counter_observer_(new RtcpCounterObserver(ssrc)),
|
|
rtp_packet_pacer_proxy_(new RtpPacketSenderProxy()),
|
|
retransmission_rate_limiter_(
|
|
new RateLimiter(&env_.clock(), kMaxRetransmissionWindow.ms())),
|
|
@@ -514,6 +542,8 @@ ChannelSend::ChannelSend(
|
|
|
|
configuration.paced_sender = rtp_packet_pacer_proxy_.get();
|
|
configuration.rtt_stats = rtcp_rtt_stats;
|
|
+ configuration.rtcp_packet_type_counter_observer =
|
|
+ rtcp_counter_observer_.get();
|
|
if (env_.field_trials().IsDisabled("WebRTC-DisableRtxRateLimiter")) {
|
|
configuration.retransmission_rate_limiter =
|
|
retransmission_rate_limiter_.get();
|
|
@@ -776,6 +806,7 @@ CallSendStatistics ChannelSend::GetRTCPStatistics() const {
|
|
RTC_DCHECK_RUN_ON(&worker_thread_checker_);
|
|
CallSendStatistics stats = {0};
|
|
stats.rttMs = rtp_rtcp_->LastRtt().value_or(TimeDelta::Zero()).ms();
|
|
+ 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 8cd5b4e875..9335f63f0d 100644
|
|
--- a/audio/channel_send.h
|
|
+++ b/audio/channel_send.h
|
|
@@ -49,6 +49,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 2d2cc89b08..b305fa8bd1 100644
|
|
--- a/call/audio_send_stream.h
|
|
+++ b/call/audio_send_stream.h
|
|
@@ -32,6 +32,7 @@
|
|
#include "api/units/time_delta.h"
|
|
#include "call/audio_sender.h"
|
|
#include "modules/rtp_rtcp/include/report_block_data.h"
|
|
+#include "modules/rtp_rtcp/include/rtcp_statistics.h"
|
|
|
|
namespace webrtc {
|
|
|
|
@@ -66,6 +67,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
|