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

Unified Diff: modules/audio_coding/audio_network_adaptor/frame_length_controller.cc

Issue 3013613002: Added configurable offsets to the per-packet overhead in ANA. (Closed)
Patch Set: Added conversion to size_t in DCHECK. Created 3 years, 3 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: modules/audio_coding/audio_network_adaptor/frame_length_controller.cc
diff --git a/modules/audio_coding/audio_network_adaptor/frame_length_controller.cc b/modules/audio_coding/audio_network_adaptor/frame_length_controller.cc
index 9a5f0322137d42c54fc0ce7263796c39fef0343d..5ae78b031cecd2c53f61db1d99c6833c9f45783c 100644
--- a/modules/audio_coding/audio_network_adaptor/frame_length_controller.cc
+++ b/modules/audio_coding/audio_network_adaptor/frame_length_controller.cc
@@ -10,6 +10,7 @@
#include "modules/audio_coding/audio_network_adaptor/frame_length_controller.h"
+#include <algorithm>
#include <utility>
#include "rtc_base/checks.h"
@@ -32,12 +33,16 @@ FrameLengthController::Config::Config(
int min_encoder_bitrate_bps,
float fl_increasing_packet_loss_fraction,
float fl_decreasing_packet_loss_fraction,
+ int fl_increase_overhead_offset,
+ int fl_decrease_overhead_offset,
std::map<FrameLengthChange, int> fl_changing_bandwidths_bps)
: encoder_frame_lengths_ms(encoder_frame_lengths_ms),
initial_frame_length_ms(initial_frame_length_ms),
min_encoder_bitrate_bps(min_encoder_bitrate_bps),
fl_increasing_packet_loss_fraction(fl_increasing_packet_loss_fraction),
fl_decreasing_packet_loss_fraction(fl_decreasing_packet_loss_fraction),
+ fl_increase_overhead_offset(fl_increase_overhead_offset),
+ fl_decrease_overhead_offset(fl_decrease_overhead_offset),
fl_changing_bandwidths_bps(std::move(fl_changing_bandwidths_bps)) {}
FrameLengthController::Config::Config(const Config& other) = default;
@@ -71,9 +76,12 @@ void FrameLengthController::MakeDecision(AudioEncoderRuntimeConfig* config) {
if (FrameLengthIncreasingDecision(*config)) {
++frame_length_ms_;
+ prev_decision_increase_ = true;
} else if (FrameLengthDecreasingDecision(*config)) {
--frame_length_ms_;
+ prev_decision_increase_ = false;
}
+ config->last_fl_change_increase = prev_decision_increase_;
config->frame_length_ms = rtc::Optional<int>(*frame_length_ms_);
}
@@ -110,10 +118,22 @@ bool FrameLengthController::FrameLengthIncreasingDecision(
if (increase_threshold == config_.fl_changing_bandwidths_bps.end())
return false;
+ // Check that
+ // -(*overhead_bytes_per_packet_) <= offset <= (*overhead_bytes_per_packet_)
+ RTC_DCHECK(
+ !overhead_bytes_per_packet_ ||
+ (overhead_bytes_per_packet_ &&
+ static_cast<size_t>(std::max(0, -config_.fl_increase_overhead_offset)) <=
+ *overhead_bytes_per_packet_ &&
+ static_cast<size_t>(std::max(0, config_.fl_increase_overhead_offset)) <=
+ *overhead_bytes_per_packet_));
+
if (uplink_bandwidth_bps_ && overhead_bytes_per_packet_ &&
*uplink_bandwidth_bps_ <=
config_.min_encoder_bitrate_bps + kPreventOveruseMarginBps +
- OverheadRateBps(*overhead_bytes_per_packet_, *frame_length_ms_)) {
+ OverheadRateBps(*overhead_bytes_per_packet_ +
+ config_.fl_increase_overhead_offset,
+ *frame_length_ms_)) {
return true;
}
@@ -145,10 +165,11 @@ bool FrameLengthController::FrameLengthDecreasingDecision(
return false;
if (uplink_bandwidth_bps_ && overhead_bytes_per_packet_ &&
- *uplink_bandwidth_bps_ <= config_.min_encoder_bitrate_bps +
- kPreventOveruseMarginBps +
- OverheadRateBps(*overhead_bytes_per_packet_,
- *shorter_frame_length_ms)) {
+ *uplink_bandwidth_bps_ <=
+ config_.min_encoder_bitrate_bps + kPreventOveruseMarginBps +
+ OverheadRateBps(*overhead_bytes_per_packet_ +
+ config_.fl_decrease_overhead_offset,
+ *shorter_frame_length_ms)) {
return false;
}

Powered by Google App Engine
This is Rietveld 408576698