Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(213)

Unified Diff: webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_plr_based.cc

Issue 2672933003: Introduce FecControllerRplrBased (Closed)
Patch Set: Merged Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_plr_based.cc
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller.cc b/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_plr_based.cc
similarity index 74%
rename from webrtc/modules/audio_coding/audio_network_adaptor/fec_controller.cc
rename to webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_plr_based.cc
index df9275a6eda1004287e8d9c37c32d20e0a82ed8b..c3c27c6bed41c16093a2f4ee70cd2229c432d1e0 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller.cc
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_plr_based.cc
@@ -8,7 +8,7 @@
* be found in the AUTHORS file in the root of the source tree.
*/
-#include "webrtc/modules/audio_coding/audio_network_adaptor/fec_controller.h"
+#include "webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_plr_based.h"
#include <limits>
#include <utility>
@@ -17,28 +17,30 @@
namespace webrtc {
-FecController::Config::Threshold::Threshold(int low_bandwidth_bps,
- float low_bandwidth_packet_loss,
- int high_bandwidth_bps,
- float high_bandwidth_packet_loss)
+FecControllerPlrBased::Config::Threshold::Threshold(
+ int low_bandwidth_bps,
+ float low_bandwidth_packet_loss,
+ int high_bandwidth_bps,
+ float high_bandwidth_packet_loss)
: low_bandwidth_bps(low_bandwidth_bps),
low_bandwidth_packet_loss(low_bandwidth_packet_loss),
high_bandwidth_bps(high_bandwidth_bps),
high_bandwidth_packet_loss(high_bandwidth_packet_loss) {}
-FecController::Config::Config(bool initial_fec_enabled,
- const Threshold& fec_enabling_threshold,
- const Threshold& fec_disabling_threshold,
- int time_constant_ms,
- const Clock* clock)
+FecControllerPlrBased::Config::Config(bool initial_fec_enabled,
+ const Threshold& fec_enabling_threshold,
+ const Threshold& fec_disabling_threshold,
+ int time_constant_ms,
+ const Clock* clock)
: initial_fec_enabled(initial_fec_enabled),
fec_enabling_threshold(fec_enabling_threshold),
fec_disabling_threshold(fec_disabling_threshold),
time_constant_ms(time_constant_ms),
clock(clock) {}
-FecController::FecController(const Config& config,
- std::unique_ptr<SmoothingFilter> smoothing_filter)
+FecControllerPlrBased::FecControllerPlrBased(
+ const Config& config,
+ std::unique_ptr<SmoothingFilter> smoothing_filter)
: config_(config),
fec_enabled_(config.initial_fec_enabled),
packet_loss_smoother_(std::move(smoothing_filter)),
@@ -58,16 +60,16 @@ FecController::FecController(const Config& config,
config_.fec_enabling_threshold.high_bandwidth_packet_loss);
}
-FecController::FecController(const Config& config)
- : FecController(
+FecControllerPlrBased::FecControllerPlrBased(const Config& config)
+ : FecControllerPlrBased(
config,
std::unique_ptr<SmoothingFilter>(
new SmoothingFilterImpl(config.time_constant_ms, config.clock))) {
}
-FecController::~FecController() = default;
+FecControllerPlrBased::~FecControllerPlrBased() = default;
-void FecController::UpdateNetworkMetrics(
+void FecControllerPlrBased::UpdateNetworkMetrics(
const NetworkMetrics& network_metrics) {
if (network_metrics.uplink_bandwidth_bps)
uplink_bandwidth_bps_ = network_metrics.uplink_bandwidth_bps;
@@ -77,7 +79,7 @@ void FecController::UpdateNetworkMetrics(
}
}
-void FecController::MakeDecision(
+void FecControllerPlrBased::MakeDecision(
AudioNetworkAdaptor::EncoderRuntimeConfig* config) {
RTC_DCHECK(!config->enable_fec);
RTC_DCHECK(!config->uplink_packet_loss_fraction);
@@ -93,7 +95,7 @@ void FecController::MakeDecision(
rtc::Optional<float>(packet_loss ? *packet_loss : 0.0);
}
-FecController::ThresholdInfo::ThresholdInfo(
+FecControllerPlrBased::ThresholdInfo::ThresholdInfo(
const Config::Threshold& threshold) {
int bandwidth_diff_bps =
threshold.high_bandwidth_bps - threshold.low_bandwidth_bps;
@@ -104,18 +106,23 @@ FecController::ThresholdInfo::ThresholdInfo(
threshold.low_bandwidth_packet_loss - slope * threshold.low_bandwidth_bps;
}
-float FecController::GetPacketLossThreshold(
+float FecControllerPlrBased::GetPacketLossThreshold(
int bandwidth_bps,
const Config::Threshold& threshold,
const ThresholdInfo& threshold_info) const {
- if (bandwidth_bps < threshold.low_bandwidth_bps)
+ if (bandwidth_bps < threshold.low_bandwidth_bps) {
return std::numeric_limits<float>::max();
- if (bandwidth_bps >= threshold.high_bandwidth_bps)
+ } else if (bandwidth_bps >= threshold.high_bandwidth_bps) {
return threshold.high_bandwidth_packet_loss;
- return threshold_info.offset + threshold_info.slope * bandwidth_bps;
+ } else {
+ float rc = threshold_info.offset + threshold_info.slope * bandwidth_bps;
+ RTC_DCHECK_LE(rc, threshold.low_bandwidth_packet_loss);
+ RTC_DCHECK_GE(rc, threshold.high_bandwidth_packet_loss);
+ return rc;
+ }
}
-bool FecController::FecEnablingDecision(
+bool FecControllerPlrBased::FecEnablingDecision(
const rtc::Optional<float>& packet_loss) const {
if (!uplink_bandwidth_bps_)
return false;
@@ -126,7 +133,7 @@ bool FecController::FecEnablingDecision(
fec_enabling_threshold_info_);
}
-bool FecController::FecDisablingDecision(
+bool FecControllerPlrBased::FecDisablingDecision(
const rtc::Optional<float>& packet_loss) const {
if (!uplink_bandwidth_bps_)
return false;

Powered by Google App Engine
This is Rietveld 408576698