From 09b6ff9460872bb8e652194a2e9dce1674e5f299 Mon Sep 17 00:00:00 2001 From: "henrik.lundin@webrtc.org" Date: Mon, 23 Mar 2015 12:23:51 +0000 Subject: [PATCH] Disable PLC for iSAC A codec's packet-loss concealer is called once from NetEq before decoding the first packet after a packet loss. The purpose is not to use the PLC output, but to prepare the state of the decoder such that it may recover faster after the loss. However, this effect is not achieved by calling iSAC's PLC. Also, there are some problems with the fixed-point implementation of the PLC (see the associated bug). BUG=4423 R=kwiberg@webrtc.org Review URL: https://webrtc-codereview.appspot.com/42849004 Cr-Commit-Position: refs/heads/master@{#8827} git-svn-id: http://webrtc.googlecode.com/svn/trunk@8827 4adac7df-926f-26a2-2b94-8c16560cd09d --- .../audio_coding/codecs/isac/audio_encoder_isac_t_impl.h | 2 +- .../main/acm2/audio_coding_module_unittest.cc | 8 ++++---- .../main/acm2/audio_coding_module_unittest_oldapi.cc | 8 ++++---- .../modules/audio_coding/neteq/audio_decoder_unittest.cc | 9 +++------ 4 files changed, 12 insertions(+), 15 deletions(-) diff --git a/webrtc/modules/audio_coding/codecs/isac/audio_encoder_isac_t_impl.h b/webrtc/modules/audio_coding/codecs/isac/audio_encoder_isac_t_impl.h index 1bfb4168fa..db30444203 100644 --- a/webrtc/modules/audio_coding/codecs/isac/audio_encoder_isac_t_impl.h +++ b/webrtc/modules/audio_coding/codecs/isac/audio_encoder_isac_t_impl.h @@ -242,7 +242,7 @@ int AudioEncoderDecoderIsacT::DecodeInternal(const uint8_t* encoded, template bool AudioEncoderDecoderIsacT::HasDecodePlc() const { - return true; + return false; } template diff --git a/webrtc/modules/audio_coding/main/acm2/audio_coding_module_unittest.cc b/webrtc/modules/audio_coding/main/acm2/audio_coding_module_unittest.cc index a600129db3..283595ee41 100644 --- a/webrtc/modules/audio_coding/main/acm2/audio_coding_module_unittest.cc +++ b/webrtc/modules/audio_coding/main/acm2/audio_coding_module_unittest.cc @@ -563,7 +563,7 @@ class AcmReceiverBitExactness : public ::testing::Test { TEST_F(AcmReceiverBitExactness, MAYBE_8kHzOutput) { Run(8000, PlatformChecksum("dcee98c623b147ebe1b40dd30efa896e", - "6ac89c7145072c26bfeba602cd661afb", + "adc92e173f908f93b96ba5844209815a", "908002dc01fc4eb1d2be24eb1d3f354b")); } @@ -576,7 +576,7 @@ TEST_F(AcmReceiverBitExactness, MAYBE_8kHzOutput) { TEST_F(AcmReceiverBitExactness, MAYBE_16kHzOutput) { Run(16000, PlatformChecksum("f790e7a8cce4e2c8b7bb5e0e4c5dac0d", - "3e888eb04f57db2c6ef952fe64f17fe6", + "8cffa6abcb3e18e33b9d857666dff66a", "a909560b5ca49fa472b17b7b277195e9")); } @@ -589,7 +589,7 @@ TEST_F(AcmReceiverBitExactness, MAYBE_16kHzOutput) { TEST_F(AcmReceiverBitExactness, MAYBE_32kHzOutput) { Run(32000, PlatformChecksum("306e0d990ee6e92de3fbecc0123ece37", - "aeca37e963310f5b6552b7edea23c2f1", + "3e126fe894720c3f85edadcc91964ba5", "441aab4b347fb3db4e9244337aca8d8e")); } @@ -602,7 +602,7 @@ TEST_F(AcmReceiverBitExactness, MAYBE_32kHzOutput) { TEST_F(AcmReceiverBitExactness, MAYBE_48kHzOutput) { Run(48000, PlatformChecksum("aa7c232f63a67b2a72703593bdd172e0", - "76b9e99e0a3998aa28355e7a2bd836f7", + "0155665e93067c4e89256b944dd11999", "4ee2730fa1daae755e8a8fd3abd779ec")); } diff --git a/webrtc/modules/audio_coding/main/acm2/audio_coding_module_unittest_oldapi.cc b/webrtc/modules/audio_coding/main/acm2/audio_coding_module_unittest_oldapi.cc index c083f28570..81ae8aad13 100644 --- a/webrtc/modules/audio_coding/main/acm2/audio_coding_module_unittest_oldapi.cc +++ b/webrtc/modules/audio_coding/main/acm2/audio_coding_module_unittest_oldapi.cc @@ -751,7 +751,7 @@ class AcmReceiverBitExactnessOldApi : public ::testing::Test { TEST_F(AcmReceiverBitExactnessOldApi, MAYBE_8kHzOutput) { Run(8000, PlatformChecksum("dcee98c623b147ebe1b40dd30efa896e", - "6ac89c7145072c26bfeba602cd661afb", + "adc92e173f908f93b96ba5844209815a", "908002dc01fc4eb1d2be24eb1d3f354b")); } @@ -764,7 +764,7 @@ TEST_F(AcmReceiverBitExactnessOldApi, MAYBE_8kHzOutput) { TEST_F(AcmReceiverBitExactnessOldApi, MAYBE_16kHzOutput) { Run(16000, PlatformChecksum("f790e7a8cce4e2c8b7bb5e0e4c5dac0d", - "3e888eb04f57db2c6ef952fe64f17fe6", + "8cffa6abcb3e18e33b9d857666dff66a", "a909560b5ca49fa472b17b7b277195e9")); } @@ -777,7 +777,7 @@ TEST_F(AcmReceiverBitExactnessOldApi, MAYBE_16kHzOutput) { TEST_F(AcmReceiverBitExactnessOldApi, MAYBE_32kHzOutput) { Run(32000, PlatformChecksum("306e0d990ee6e92de3fbecc0123ece37", - "aeca37e963310f5b6552b7edea23c2f1", + "3e126fe894720c3f85edadcc91964ba5", "441aab4b347fb3db4e9244337aca8d8e")); } @@ -790,7 +790,7 @@ TEST_F(AcmReceiverBitExactnessOldApi, MAYBE_32kHzOutput) { TEST_F(AcmReceiverBitExactnessOldApi, MAYBE_48kHzOutput) { Run(48000, PlatformChecksum("aa7c232f63a67b2a72703593bdd172e0", - "76b9e99e0a3998aa28355e7a2bd836f7", + "0155665e93067c4e89256b944dd11999", "4ee2730fa1daae755e8a8fd3abd779ec")); } diff --git a/webrtc/modules/audio_coding/neteq/audio_decoder_unittest.cc b/webrtc/modules/audio_coding/neteq/audio_decoder_unittest.cc index 9f3b0fed1e..728caefcfe 100644 --- a/webrtc/modules/audio_coding/neteq/audio_decoder_unittest.cc +++ b/webrtc/modules/audio_coding/neteq/audio_decoder_unittest.cc @@ -521,8 +521,7 @@ TEST_F(AudioDecoderIsacFloatTest, EncodeDecode) { EXPECT_TRUE(CodecSupported(kDecoderISAC)); EncodeDecodeTest(0, tolerance, mse, delay); ReInitTest(); - EXPECT_TRUE(decoder_->HasDecodePlc()); - DecodePlcTest(); + EXPECT_FALSE(decoder_->HasDecodePlc()); } TEST_F(AudioDecoderIsacSwbTest, EncodeDecode) { @@ -532,8 +531,7 @@ TEST_F(AudioDecoderIsacSwbTest, EncodeDecode) { EXPECT_TRUE(CodecSupported(kDecoderISACswb)); EncodeDecodeTest(0, tolerance, mse, delay); ReInitTest(); - EXPECT_TRUE(decoder_->HasDecodePlc()); - DecodePlcTest(); + EXPECT_FALSE(decoder_->HasDecodePlc()); } // Fails Android ARM64. https://code.google.com/p/webrtc/issues/detail?id=4198 @@ -554,8 +552,7 @@ TEST_F(AudioDecoderIsacFixTest, MAYBE_EncodeDecode) { #endif EncodeDecodeTest(kEncodedBytes, tolerance, mse, delay); ReInitTest(); - EXPECT_TRUE(decoder_->HasDecodePlc()); - DecodePlcTest(); + EXPECT_FALSE(decoder_->HasDecodePlc()); } TEST_F(AudioDecoderG722Test, EncodeDecode) {