webrtc/modules/audio_coding/neteq
Jakob Ivarsson c782cf883c Introduce a stable playout delay mode for NetEq.
A packet arrival history is used to store the timing of incoming packets and tracks the earliest and latest packets by taking the difference between rtp timestamp and arrival time. The history is windowed to 2 seconds by default. The packet arrival history will replace the relative arrival delay tracker in a follow up cl.

The playout delay is estimated by taking the difference between the current playout timestamp and the earliest packet arrival in the history. This method works better when DTX is used compared to the buffer level filter that it replaces.

The threshold for acceleration is changed to be the maximum of the target delay and the maximum packet arrival delay in the history. This prevents any acceleration immediately after an underrun and gives some time to adapt the target delay to new network conditions.

The logic when to decode the next packet after a packet loss is also changed to do concealment for the full loss duration unless the delay is too high.

The new mode is default disabled and can be enabled using a field trial.

Bug: webrtc:13322,webrtc:13966
Change-Id: Idfa0020584591261475b9ca350cc7c6531de9911
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/259820
Reviewed-by: Minyue Li <minyue@webrtc.org>
Commit-Queue: Jakob Ivarsson‎ <jakobi@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36899}
2022-05-16 15:39:14 +00:00
..
g3doc Update links to point at main branch 2021-07-22 16:41:26 +00:00
mock Refactor delay manager. 2021-09-07 13:45:47 +00:00
test Adopt absl::string_view in rtc_base/string_encode.* 2022-04-04 12:30:56 +00:00
tools Add generated comfort noise counter. 2022-04-20 14:25:03 +00:00
accelerate.cc Use backticks not vertical bars to denote variables in comments for /modules/audio_coding 2021-08-02 10:45:40 +00:00
accelerate.h Remove RTC_DISALLOW_COPY_AND_ASSIGN from modules/ 2022-01-24 11:50:20 +00:00
audio_decoder_unittest.cc Update m1 arm64 audio bitexactness tests hashes 2021-09-17 08:59:05 +00:00
audio_multi_vector.cc Use backticks not vertical bars to denote variables in comments for /modules/audio_coding 2021-08-02 10:45:40 +00:00
audio_multi_vector.h Remove RTC_DISALLOW_COPY_AND_ASSIGN from modules/ 2022-01-24 11:50:20 +00:00
audio_multi_vector_unittest.cc Use backticks not vertical bars to denote variables in comments for /modules/audio_coding 2021-08-02 10:45:40 +00:00
audio_vector.cc Use backticks not vertical bars to denote variables in comments for /modules/audio_coding 2021-08-02 10:45:40 +00:00
audio_vector.h Remove RTC_DISALLOW_COPY_AND_ASSIGN from modules/ 2022-01-24 11:50:20 +00:00
audio_vector_unittest.cc Use backticks not vertical bars to denote variables in comments for /modules/audio_coding 2021-08-02 10:45:40 +00:00
background_noise.cc Use backticks not vertical bars to denote variables in comments for /modules/audio_coding 2021-08-02 10:45:40 +00:00
background_noise.h Remove RTC_DISALLOW_COPY_AND_ASSIGN from modules/ 2022-01-24 11:50:20 +00:00
background_noise_unittest.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
buffer_level_filter.cc Use backticks not vertical bars to denote variables in comments for /modules/audio_coding 2021-08-02 10:45:40 +00:00
buffer_level_filter.h Remove RTC_DISALLOW_COPY_AND_ASSIGN from modules/ 2022-01-24 11:50:20 +00:00
buffer_level_filter_unittest.cc Use backticks not vertical bars to denote variables in comments for /modules/audio_coding 2021-08-02 10:45:40 +00:00
comfort_noise.cc Use backticks not vertical bars to denote variables in comments for /modules/audio_coding 2021-08-02 10:45:40 +00:00
comfort_noise.h Remove RTC_DISALLOW_COPY_AND_ASSIGN from modules/ 2022-01-24 11:50:20 +00:00
comfort_noise_unittest.cc Use backticks not vertical bars to denote variables in comments for /modules/audio_coding 2021-08-02 10:45:40 +00:00
cross_correlation.cc Implement a Neon optimized function to find the argmax element in an array. 2021-01-21 13:42:34 +00:00
cross_correlation.h Use backticks not vertical bars to denote variables in comments for /modules/audio_coding 2021-08-02 10:45:40 +00:00
decision_logic.cc Introduce a stable playout delay mode for NetEq. 2022-05-16 15:39:14 +00:00
decision_logic.h Introduce a stable playout delay mode for NetEq. 2022-05-16 15:39:14 +00:00
decision_logic_unittest.cc Clean up old field trial options in NetEq decision logic. 2022-03-29 15:45:45 +00:00
decoder_database.cc Use backticks not vertical bars to denote variables in comments for /modules/audio_coding 2021-08-02 10:45:40 +00:00
decoder_database.h Remove RTC_DISALLOW_COPY_AND_ASSIGN from modules/ 2022-01-24 11:50:20 +00:00
decoder_database_unittest.cc Use backticks not vertical bars to denote variables in comments for /modules/audio_coding 2021-08-02 10:45:40 +00:00
default_neteq_factory.cc Clean up the NetEqFactory API. 2019-11-29 14:04:44 +00:00
default_neteq_factory.h Clean up the NetEqFactory API. 2019-11-29 14:04:44 +00:00
delay_manager.cc Introduce a stable playout delay mode for NetEq. 2022-05-16 15:39:14 +00:00
delay_manager.h Remove RTC_DISALLOW_COPY_AND_ASSIGN from modules/ 2022-01-24 11:50:20 +00:00
delay_manager_unittest.cc Introduce a stable playout delay mode for NetEq. 2022-05-16 15:39:14 +00:00
dsp_helper.cc Prepare to rename RTC_NOTREACHED to RTC_DCHECK_NOTREACHED 2021-11-15 21:44:59 +00:00
dsp_helper.h Remove RTC_DISALLOW_COPY_AND_ASSIGN from modules/ 2022-01-24 11:50:20 +00:00
dsp_helper_unittest.cc Use backticks not vertical bars to denote variables in comments for /modules/audio_coding 2021-08-02 10:45:40 +00:00
dtmf_buffer.cc Use backticks not vertical bars to denote variables in comments for /modules/audio_coding 2021-08-02 10:45:40 +00:00
dtmf_buffer.h Remove RTC_DISALLOW_COPY_AND_ASSIGN from modules/ 2022-01-24 11:50:20 +00:00
dtmf_buffer_unittest.cc Use backticks not vertical bars to denote variables in comments for /modules/audio_coding 2021-08-02 10:45:40 +00:00
dtmf_tone_generator.cc Prepare to rename RTC_NOTREACHED to RTC_DCHECK_NOTREACHED 2021-11-15 21:44:59 +00:00
dtmf_tone_generator.h Remove RTC_DISALLOW_COPY_AND_ASSIGN from modules/ 2022-01-24 11:50:20 +00:00
dtmf_tone_generator_unittest.cc Remove simple stringstream usages. 2018-09-06 12:53:19 +00:00
expand.cc Use backticks not vertical bars to denote variables in comments for /modules/audio_coding 2021-08-02 10:45:40 +00:00
expand.h Remove RTC_DISALLOW_COPY_AND_ASSIGN from modules/ 2022-01-24 11:50:20 +00:00
expand_uma_logger.cc Format almost everything. 2019-07-08 13:45:15 +00:00
expand_uma_logger.h Remove RTC_DISALLOW_COPY_AND_ASSIGN from modules/ 2022-01-24 11:50:20 +00:00
expand_unittest.cc Fix -Wunused-but-set-variable. 2021-10-28 12:53:49 +00:00
histogram.cc Use backticks not vertical bars to denote variables in comments for /modules/audio_coding 2021-08-02 10:45:40 +00:00
histogram.h Improve adaptation to reordered packets in delay manager. 2021-09-08 16:41:27 +00:00
histogram_unittest.cc Remove inter-arrival delay mode from DelayManager. 2020-01-08 13:20:36 +00:00
merge.cc Prepare to rename RTC_NOTREACHED to RTC_DCHECK_NOTREACHED 2021-11-15 21:44:59 +00:00
merge.h Remove RTC_DISALLOW_COPY_AND_ASSIGN from modules/ 2022-01-24 11:50:20 +00:00
merge_unittest.cc Fixing a buffer overflow in Merge::Downsample 2019-11-25 12:16:30 +00:00
nack_tracker.cc Provide a default RTT for audio NACK. 2022-03-30 21:52:23 +00:00
nack_tracker.h Provide a default RTT for audio NACK. 2022-03-30 21:52:23 +00:00
nack_tracker_unittest.cc Add options to only NACK if there is a valid RTT and if loss rate is below a configured value. 2021-11-25 16:30:17 +00:00
neteq_decoder_plc_unittest.cc Replace more instances of rtc::RefCountedObject with make_ref_counted. 2021-04-27 17:01:59 +00:00
neteq_impl.cc Add generated comfort noise counter. 2022-04-20 14:25:03 +00:00
neteq_impl.h Remove RTC_DISALLOW_COPY_AND_ASSIGN from modules/ 2022-01-24 11:50:20 +00:00
neteq_impl_unittest.cc Update modules/ to not use implicit conversion from scoped_refptr<T> to T*. 2022-04-21 14:23:24 +00:00
neteq_network_stats_unittest.cc Reland "Remove legacy delay manger field trial and update default config." 2021-11-09 14:49:56 +00:00
neteq_stereo_unittest.cc NetEq: Fix bug in PLC for multi-channel audio 2019-12-02 17:44:58 +00:00
neteq_unittest.cc Count consecutive expands by last mode in NetEq decision logic. 2022-04-07 15:19:52 +00:00
neteq_unittest.proto Delete unused NetEq stats currentPacketLossRate, currentDiscardRate and addedSamples 2020-09-21 12:19:16 +00:00
normal.cc LSC: Apply clang-tidy's modernize-use-bool-literals 2022-01-24 20:42:01 +00:00
normal.h Remove RTC_DISALLOW_COPY_AND_ASSIGN from modules/ 2022-01-24 11:50:20 +00:00
normal_unittest.cc Use backticks not vertical bars to denote variables in comments for /modules/audio_coding 2021-08-02 10:45:40 +00:00
packet.cc Reland "Reland "Add plumbing of RtpPacketInfos to each AudioFrame as input for SourceTracker."" 2019-07-24 16:47:13 +00:00
packet.h Use backticks not vertical bars to denote variables in comments for /modules/audio_coding 2021-08-02 10:45:40 +00:00
packet_arrival_history.cc Introduce a stable playout delay mode for NetEq. 2022-05-16 15:39:14 +00:00
packet_arrival_history.h Introduce a stable playout delay mode for NetEq. 2022-05-16 15:39:14 +00:00
packet_arrival_history_unittest.cc Introduce a stable playout delay mode for NetEq. 2022-05-16 15:39:14 +00:00
packet_buffer.cc Use backticks not vertical bars to denote variables in comments for /modules/audio_coding 2021-08-02 10:45:40 +00:00
packet_buffer.h Remove RTC_DISALLOW_COPY_AND_ASSIGN from modules/ 2022-01-24 11:50:20 +00:00
packet_buffer_unittest.cc Update modules/ to not use implicit conversion from scoped_refptr<T> to T*. 2022-04-21 14:23:24 +00:00
post_decode_vad.cc Reformat the WebRTC code base 2018-06-19 14:00:39 +00:00
post_decode_vad.h Remove RTC_DISALLOW_COPY_AND_ASSIGN from modules/ 2022-01-24 11:50:20 +00:00
post_decode_vad_unittest.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
preemptive_expand.cc Use backticks not vertical bars to denote variables in comments for /modules/audio_coding 2021-08-02 10:45:40 +00:00
preemptive_expand.h Remove RTC_DISALLOW_COPY_AND_ASSIGN from modules/ 2022-01-24 11:50:20 +00:00
random_vector.cc Reformat the WebRTC code base 2018-06-19 14:00:39 +00:00
random_vector.h Remove RTC_DISALLOW_COPY_AND_ASSIGN from modules/ 2022-01-24 11:50:20 +00:00
random_vector_unittest.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
red_payload_splitter.cc red: copy audio level from main packet for recovery packet 2021-08-03 14:26:02 +00:00
red_payload_splitter.h Remove RTC_DISALLOW_COPY_AND_ASSIGN from modules/ 2022-01-24 11:50:20 +00:00
red_payload_splitter_unittest.cc Use backticks not vertical bars to denote variables in comments for /modules/audio_coding 2021-08-02 10:45:40 +00:00
relative_arrival_delay_tracker.cc Reland "Remove legacy delay manger field trial and update default config." 2021-11-09 14:49:56 +00:00
relative_arrival_delay_tracker.h Improve adaptation to reordered packets in delay manager. 2021-09-08 16:41:27 +00:00
relative_arrival_delay_tracker_unittest.cc Improve adaptation to reordered packets in delay manager. 2021-09-08 16:41:27 +00:00
reorder_optimizer.cc Improve adaptation to reordered packets in delay manager. 2021-09-08 16:41:27 +00:00
reorder_optimizer.h Improve adaptation to reordered packets in delay manager. 2021-09-08 16:41:27 +00:00
reorder_optimizer_unittest.cc Improve adaptation to reordered packets in delay manager. 2021-09-08 16:41:27 +00:00
statistics_calculator.cc Add generated comfort noise counter. 2022-04-20 14:25:03 +00:00
statistics_calculator.h Add generated comfort noise counter. 2022-04-20 14:25:03 +00:00
statistics_calculator_unittest.cc Add a unittest to NetEq StatisticsCalculator for discarded packets counter. 2021-08-19 17:17:37 +00:00
sync_buffer.cc Prepare to rename RTC_NOTREACHED to RTC_DCHECK_NOTREACHED 2021-11-15 21:44:59 +00:00
sync_buffer.h Remove RTC_DISALLOW_COPY_AND_ASSIGN from modules/ 2022-01-24 11:50:20 +00:00
sync_buffer_unittest.cc Use backticks not vertical bars to denote variables in comments for /modules/audio_coding 2021-08-02 10:45:40 +00:00
time_stretch.cc Use backticks not vertical bars to denote variables in comments for /modules/audio_coding 2021-08-02 10:45:40 +00:00
time_stretch.h Remove RTC_DISALLOW_COPY_AND_ASSIGN from modules/ 2022-01-24 11:50:20 +00:00
time_stretch_unittest.cc Format almost everything. 2019-07-08 13:45:15 +00:00
timestamp_scaler.cc Use backticks not vertical bars to denote variables in comments for /modules/audio_coding 2021-08-02 10:45:40 +00:00
timestamp_scaler.h Remove RTC_DISALLOW_COPY_AND_ASSIGN from modules/ 2022-01-24 11:50:20 +00:00
timestamp_scaler_unittest.cc Update modules/ to not use implicit conversion from scoped_refptr<T> to T*. 2022-04-21 14:23:24 +00:00
underrun_optimizer.cc Reland "Remove legacy delay manger field trial and update default config." 2021-11-09 14:49:56 +00:00
underrun_optimizer.h Refactor delay manager. 2021-09-07 13:45:47 +00:00
underrun_optimizer_unittest.cc Refactor delay manager. 2021-09-07 13:45:47 +00:00