Improve adaptation to reordered packets in delay manager.
This is done by adding a reorder optimizer that estimates the probability of receiving reordered packets. The optimal delay is decided by balancing the cost of increasing the delay against the probability of missing a reordered packet, resulting in a loss. This balance is decided using the `ms_per_loss_percent` parameter. The usage and parameters can be controlled via field trial. Bug: webrtc:10178 Change-Id: Ic484df0412af35610e74b3a6070f2bac7a926a63 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/231541 Reviewed-by: Ivo Creusen <ivoc@webrtc.org> Commit-Queue: Jakob Ivarsson <jakobi@webrtc.org> Cr-Commit-Position: refs/heads/main@{#34954}
This commit is contained in:
committed by
WebRTC LUCI CQ
parent
1f38a38b6f
commit
58ed02eae3
@ -20,6 +20,7 @@
|
||||
#include "api/neteq/tick_timer.h"
|
||||
#include "modules/audio_coding/neteq/histogram.h"
|
||||
#include "modules/audio_coding/neteq/relative_arrival_delay_tracker.h"
|
||||
#include "modules/audio_coding/neteq/reorder_optimizer.h"
|
||||
#include "modules/audio_coding/neteq/underrun_optimizer.h"
|
||||
#include "rtc_base/constructor_magic.h"
|
||||
#include "rtc_base/experiments/struct_parameters_parser.h"
|
||||
@ -39,6 +40,10 @@ class DelayManager {
|
||||
absl::optional<int> resample_interval_ms;
|
||||
int max_history_ms = 2000;
|
||||
|
||||
bool use_reorder_optimizer = true;
|
||||
double reorder_forget_factor = 0.9993;
|
||||
int ms_per_loss_percent = 20;
|
||||
|
||||
// Options that are externally populated.
|
||||
int max_packets_in_buffer = 200;
|
||||
int base_minimum_delay_ms = 0;
|
||||
@ -104,6 +109,7 @@ class DelayManager {
|
||||
// TODO(jakobi): set maximum buffer delay instead of number of packets.
|
||||
const int max_packets_in_buffer_;
|
||||
UnderrunOptimizer underrun_optimizer_;
|
||||
std::unique_ptr<ReorderOptimizer> reorder_optimizer_;
|
||||
RelativeArrivalDelayTracker relative_arrival_delay_tracker_;
|
||||
|
||||
int base_minimum_delay_ms_;
|
||||
|
||||
Reference in New Issue
Block a user