From 54c6640efbdeb03f1050c0b6cc4cb954bdb6acc7 Mon Sep 17 00:00:00 2001 From: Minyue Li Date: Mon, 15 Apr 2019 14:29:27 +0200 Subject: [PATCH] Disallow time stretching during DTX. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: b/129521878 Change-Id: I32f60c661c6cae001840c9fe83fc848fe23acabc Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/132789 Reviewed-by: Jakob Ivarsson‎ Reviewed-by: Henrik Lundin Commit-Queue: Minyue Li Cr-Commit-Position: refs/heads/master@{#27622} --- modules/audio_coding/neteq/neteq_impl.cc | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/modules/audio_coding/neteq/neteq_impl.cc b/modules/audio_coding/neteq/neteq_impl.cc index f1e8527971..b7f5579c9b 100644 --- a/modules/audio_coding/neteq/neteq_impl.cc +++ b/modules/audio_coding/neteq/neteq_impl.cc @@ -1052,6 +1052,16 @@ int NetEqImpl::GetDecision(Operations* operation, *sync_buffer_, *expand_, decoder_frame_length_, packet, last_mode_, *play_dtmf, generated_noise_samples, &reset_decoder_); + // Disallow time stretching if this packet is DTX, because such a decision may + // be based on earlier buffer level estimate, as we do not update buffer level + // during DTX. When we have a better way to update buffer level during DTX, + // this can be discarded. + if (packet && packet->frame && packet->frame->IsDtxPacket() && + (*operation == kMerge || *operation == kAccelerate || + *operation == kFastAccelerate || *operation == kPreemptiveExpand)) { + *operation = kNormal; + } + if (action_override) { // Use the provided action instead of the decision NetEq decided on. *operation = *action_override;