From e1c2d9b0a8c25d95401fe9535f411f2ce08b5e02 Mon Sep 17 00:00:00 2001 From: minyue Date: Tue, 27 Dec 2016 06:42:49 -0800 Subject: [PATCH] Reducing calling to SmoothingFilter in Fec Controller. BUG=webrtc:6303 Review-Url: https://codereview.webrtc.org/2585293002 Cr-Commit-Position: refs/heads/master@{#15806} --- .../audio_network_adaptor/fec_controller.cc | 20 +++++++++---------- .../audio_network_adaptor/fec_controller.h | 6 ++++-- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller.cc b/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller.cc index 07495f0f85..15c12b1a1b 100644 --- a/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller.cc +++ b/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller.cc @@ -75,8 +75,10 @@ void FecController::MakeDecision( if (metrics.uplink_packet_loss_fraction) packet_loss_smoothed_->AddSample(*metrics.uplink_packet_loss_fraction); - fec_enabled_ = fec_enabled_ ? !FecDisablingDecision(metrics) - : FecEnablingDecision(metrics); + const auto& packet_loss = packet_loss_smoothed_->GetAverage(); + + fec_enabled_ = fec_enabled_ ? !FecDisablingDecision(metrics, packet_loss) + : FecEnablingDecision(metrics, packet_loss); config->enable_fec = rtc::Optional(fec_enabled_); @@ -107,27 +109,25 @@ float FecController::GetPacketLossThreshold( return threshold_info.offset + threshold_info.slope * bandwidth_bps; } -bool FecController::FecEnablingDecision(const NetworkMetrics& metrics) const { +bool FecController::FecEnablingDecision( + const NetworkMetrics& metrics, + const rtc::Optional& packet_loss) const { if (!metrics.uplink_bandwidth_bps) return false; - - auto packet_loss = packet_loss_smoothed_->GetAverage(); if (!packet_loss) return false; - return *packet_loss >= GetPacketLossThreshold(*metrics.uplink_bandwidth_bps, config_.fec_enabling_threshold, fec_enabling_threshold_info_); } -bool FecController::FecDisablingDecision(const NetworkMetrics& metrics) const { +bool FecController::FecDisablingDecision( + const NetworkMetrics& metrics, + const rtc::Optional& packet_loss) const { if (!metrics.uplink_bandwidth_bps) return false; - - auto packet_loss = packet_loss_smoothed_->GetAverage(); if (!packet_loss) return false; - return *packet_loss <= GetPacketLossThreshold(*metrics.uplink_bandwidth_bps, config_.fec_disabling_threshold, fec_disabling_threshold_info_); diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller.h b/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller.h index 62a3533a75..ac4b1e236a 100644 --- a/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller.h +++ b/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller.h @@ -87,8 +87,10 @@ class FecController final : public Controller { const Config::Threshold& threshold, const ThresholdInfo& threshold_info) const; - bool FecEnablingDecision(const NetworkMetrics& metrics) const; - bool FecDisablingDecision(const NetworkMetrics& metrics) const; + bool FecEnablingDecision(const NetworkMetrics& metrics, + const rtc::Optional& packet_loss) const; + bool FecDisablingDecision(const NetworkMetrics& metrics, + const rtc::Optional& packet_loss) const; const Config config_; bool fec_enabled_;