webrtc/modules/audio_coding/neteq
Henrik Lundin 180362842a NetEq: Fix a problem with too large delay during codec-internal DTX/CNG
The length of the generated comfort noise is measured with a
counter. A bug in the implementation caused the counter to be reset
not only when a new packet was decoded, but also when NetEq asked the
decoder for more comfort noise without giving it a new packet to
decode. This means that the counter was reset once every 20 ms (in the
case of Opus), and it would never match the gap in timestamps that is
the exit criterion for CNG. This would have resulted in perpetual CNG,
but there is a stop-gap in NetEq. If the buffer level exceeds 4 times
the target level, CNG mode is exited anyway. This is what happens at
the end of every silence period.

With this CL, the bug should be fixed. The fix is wrapped in an
experiment, to allow verifying the fix and the impact of it with real
world data.

Bug: webrtc:8488
Change-Id: Idfc24df780eb2c55dbf08de840e6644e8557a0af
Reviewed-on: https://webrtc-review.googlesource.com/18181
Reviewed-by: Ivo Creusen <ivoc@webrtc.org>
Commit-Queue: Henrik Lundin <henrik.lundin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20551}
2017-11-02 13:09:07 +00:00
..
include NetEq: Drop unnecessary dependency on the audio decoder implementations 2017-10-16 12:57:47 +00:00
mock Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
test NetEq: Drop unnecessary dependency on the audio decoder implementations 2017-10-16 12:57:47 +00:00
tools Fixing warning C4267 on Win (more_configs). 2017-10-19 07:39:22 +00:00
accelerate.cc
accelerate.h Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
audio_decoder_unittest.cc NetEq: Drop unnecessary dependency on the audio decoder implementations 2017-10-16 12:57:47 +00:00
audio_multi_vector.cc Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
audio_multi_vector.h Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
audio_multi_vector_unittest.cc Fixing warning C4267 on Win (more_configs). 2017-10-19 07:39:22 +00:00
audio_vector.cc Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
audio_vector.h Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
audio_vector_unittest.cc Fixing warning C4267 on Win (more_configs). 2017-10-19 07:39:22 +00:00
background_noise.cc
background_noise.h Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
background_noise_unittest.cc
buffer_level_filter.cc NetEq: Fix an UBSan error 2017-10-23 11:56:47 +00:00
buffer_level_filter.h
buffer_level_filter_unittest.cc
comfort_noise.cc
comfort_noise.h Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
comfort_noise_unittest.cc
cross_correlation.cc
cross_correlation.h Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
decision_logic.cc
decision_logic.h Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
decision_logic_fax.cc
decision_logic_fax.h Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
decision_logic_normal.cc NetEq: Fix a problem with too large delay during codec-internal DTX/CNG 2017-11-02 13:09:07 +00:00
decision_logic_normal.h Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
decision_logic_unittest.cc
decoder_database.cc NetEq: Drop unnecessary dependency on the audio decoder implementations 2017-10-16 12:57:47 +00:00
decoder_database.h NetEq: Drop unnecessary dependency on the audio decoder implementations 2017-10-16 12:57:47 +00:00
decoder_database_unittest.cc NetEq: Drop unnecessary dependency on the audio decoder implementations 2017-10-16 12:57:47 +00:00
defines.h
delay_manager.cc Bugfix for histogram scaling function in NetEq's DelayManager. 2017-10-18 12:58:18 +00:00
delay_manager.h NetEq: Drop unnecessary dependency on the audio decoder implementations 2017-10-16 12:57:47 +00:00
delay_manager_unittest.cc Added experiment to improve handling of frame length changes in NetEq. 2017-10-13 13:26:57 +00:00
delay_peak_detector.cc Added experiment to improve handling of frame length changes in NetEq. 2017-10-13 13:26:57 +00:00
delay_peak_detector.h Added experiment to improve handling of frame length changes in NetEq. 2017-10-13 13:26:57 +00:00
delay_peak_detector_unittest.cc
dsp_helper.cc
dsp_helper.h Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
dsp_helper_unittest.cc Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
dtmf_buffer.cc
dtmf_buffer.h Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
dtmf_buffer_unittest.cc
dtmf_tone_generator.cc
dtmf_tone_generator.h Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
dtmf_tone_generator_unittest.cc
expand.cc
expand.h Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
expand_unittest.cc Fixing warning C4267 on Win (more_configs). 2017-10-19 07:39:22 +00:00
merge.cc
merge.h Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
merge_unittest.cc
nack_tracker.cc
nack_tracker.h
nack_tracker_unittest.cc Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
neteq.cc
neteq_decoder_enum.cc
neteq_decoder_enum.h
neteq_external_decoder_unittest.cc Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
neteq_impl.cc NetEq: Fix a problem with too large delay during codec-internal DTX/CNG 2017-11-02 13:09:07 +00:00
neteq_impl.h NetEq: Fix a problem with too large delay during codec-internal DTX/CNG 2017-11-02 13:09:07 +00:00
neteq_impl_unittest.cc Fixing other unsafe conversions. 2017-10-23 07:59:39 +00:00
neteq_network_stats_unittest.cc Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
neteq_stereo_unittest.cc Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
neteq_unittest.cc Don't select audio codecs depending on GN vars build_with_{chromium|mozilla} 2017-11-01 18:59:27 +00:00
neteq_unittest.proto
normal.cc
normal.h Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
normal_unittest.cc
packet.cc
packet.h Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
packet_buffer.cc
packet_buffer.h Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
packet_buffer_unittest.cc
post_decode_vad.cc
post_decode_vad.h Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
post_decode_vad_unittest.cc
preemptive_expand.cc
preemptive_expand.h Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
random_vector.cc
random_vector.h Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
random_vector_unittest.cc
red_payload_splitter.cc
red_payload_splitter.h
red_payload_splitter_unittest.cc Fixing warning C4267 on Win (more_configs). 2017-10-19 07:39:22 +00:00
rtcp.cc
rtcp.h Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
statistics_calculator.cc We don't want implicit conversion from size_t to int 2017-10-16 12:51:48 +00:00
statistics_calculator.h Added RTCMediaStreamTrackStats.jitterBufferDelay for audio 2017-10-02 10:47:00 +00:00
statistics_calculator_unittest.cc NetEq: Simplify the dependencies of GetNetworkStatistics 2017-09-25 20:32:12 +00:00
sync_buffer.cc
sync_buffer.h Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
sync_buffer_unittest.cc Fixing warning C4267 on Win (more_configs). 2017-10-19 07:39:22 +00:00
tick_timer.cc
tick_timer.h Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
tick_timer_unittest.cc
time_stretch.cc
time_stretch.h Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
time_stretch_unittest.cc
timestamp_scaler.cc NetEq: Drop unnecessary dependency on the audio decoder implementations 2017-10-16 12:57:47 +00:00
timestamp_scaler.h Adding NOLINT for typedefs.h and common_types.h 2017-09-15 13:03:51 +00:00
timestamp_scaler_unittest.cc