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

Unified Diff: webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_rplr_based.h

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_rplr_based.h
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller.h b/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_rplr_based.h
similarity index 66%
rename from webrtc/modules/audio_coding/audio_network_adaptor/fec_controller.h
rename to webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_rplr_based.h
index 8d9cbb03f9cf590d7d7e235b25fdcc2213ca2af8..d3ddbd41a318df075b1aeb2f2b7876f48b286702 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller.h
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_rplr_based.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
+ * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
@@ -8,44 +8,48 @@
* be found in the AUTHORS file in the root of the source tree.
*/
-#ifndef WEBRTC_MODULES_AUDIO_CODING_AUDIO_NETWORK_ADAPTOR_FEC_CONTROLLER_H_
-#define WEBRTC_MODULES_AUDIO_CODING_AUDIO_NETWORK_ADAPTOR_FEC_CONTROLLER_H_
+#ifndef WEBRTC_MODULES_AUDIO_CODING_AUDIO_NETWORK_ADAPTOR_FEC_CONTROLLER_RPLR_BASED_H_
+#define WEBRTC_MODULES_AUDIO_CODING_AUDIO_NETWORK_ADAPTOR_FEC_CONTROLLER_RPLR_BASED_H_
#include <memory>
#include "webrtc/base/constructormagic.h"
-#include "webrtc/common_audio/smoothing_filter.h"
#include "webrtc/modules/audio_coding/audio_network_adaptor/controller.h"
+#include "webrtc/system_wrappers/include/clock.h"
namespace webrtc {
-class FecController final : public Controller {
+class FecControllerRplrBased final : public Controller {
public:
struct Config {
struct Threshold {
// Threshold defines a curve in the bandwidth/packet-loss domain. The
// curve is characterized by the two conjunction points: A and B.
//
- // packet ^ |
- // loss | A|
- // | \ A: (low_bandwidth_bps, low_bandwidth_packet_loss)
- // | \ B: (high_bandwidth_bps, high_bandwidth_packet_loss)
- // | B\________
- // |---------------> bandwidth
+ // recoverable
+ // packet ^ |
+ // loss | A |
+ // | \ A: (low_bandwidth_bps,
+ // | \ low_bandwidth_recoverable_packet_loss)
+ // | \ B: (high_bandwidth_bps,
+ // | \ high_bandwidth_recoverable_packet_loss)
+ // | B \________
+ // |---------------> bandwidth
Threshold(int low_bandwidth_bps,
- float low_bandwidth_packet_loss,
+ float low_bandwidth_recoverable_packet_loss,
int high_bandwidth_bps,
- float high_bandwidth_packet_loss);
+ float high_bandwidth_recoverable_packet_loss);
int low_bandwidth_bps;
- float low_bandwidth_packet_loss;
+ float low_bandwidth_recoverable_packet_loss;
int high_bandwidth_bps;
- float high_bandwidth_packet_loss;
+ float high_bandwidth_recoverable_packet_loss;
};
// |fec_enabling_threshold| defines a curve, above which FEC should be
// enabled. |fec_disabling_threshold| defines a curve, under which FEC
// should be disabled. See below
//
+ // recoverable
// packet-loss ^ | |
// | | | FEC
// | \ \ ON
@@ -64,20 +68,17 @@ class FecController final : public Controller {
const Clock* clock;
};
- // Dependency injection for testing.
- FecController(const Config& config,
- std::unique_ptr<SmoothingFilter> smoothing_filter);
+ explicit FecControllerRplrBased(const Config& config);
- explicit FecController(const Config& config);
-
- ~FecController() override;
+ ~FecControllerRplrBased() override;
void UpdateNetworkMetrics(const NetworkMetrics& network_metrics) override;
void MakeDecision(AudioNetworkAdaptor::EncoderRuntimeConfig* config) override;
private:
- // Characterize Threshold with packet_loss = slope * bandwidth + offset.
+ // Characterize Threshold with:
+ // recoverable_packet_loss = slope * bandwidth + offset.
struct ThresholdInfo {
explicit ThresholdInfo(const Config::Threshold& threshold);
float slope;
@@ -88,20 +89,20 @@ class FecController final : public Controller {
const Config::Threshold& threshold,
const ThresholdInfo& threshold_info) const;
- bool FecEnablingDecision(const rtc::Optional<float>& packet_loss) const;
- bool FecDisablingDecision(const rtc::Optional<float>& packet_loss) const;
+ bool FecEnablingDecision() const;
+ bool FecDisablingDecision() const;
const Config config_;
bool fec_enabled_;
rtc::Optional<int> uplink_bandwidth_bps_;
- const std::unique_ptr<SmoothingFilter> packet_loss_smoother_;
+ rtc::Optional<float> uplink_recoverable_packet_loss_;
const ThresholdInfo fec_enabling_threshold_info_;
const ThresholdInfo fec_disabling_threshold_info_;
- RTC_DISALLOW_COPY_AND_ASSIGN(FecController);
+ RTC_DISALLOW_COPY_AND_ASSIGN(FecControllerRplrBased);
};
} // namespace webrtc
-#endif // WEBRTC_MODULES_AUDIO_CODING_AUDIO_NETWORK_ADAPTOR_FEC_CONTROLLER_H_
+#endif // WEBRTC_MODULES_AUDIO_CODING_AUDIO_NETWORK_ADAPTOR_FEC_CONTROLLER_RPLR_BASED_H_

Powered by Google App Engine
This is Rietveld 408576698