From a92baead393eae35626319aaf1a49bcf527630b5 Mon Sep 17 00:00:00 2001 From: "turaj@webrtc.org" Date: Fri, 13 Dec 2013 00:10:44 +0000 Subject: [PATCH] ACM 2 compatibility with ACM 1. Removing an unregisterd codec from ACM 1 does not result in an error, so should be for ACM 2. Also ACM 1 has post-decode VAD on and AMC 2 needs to have it on by default. BUG= Test=trybits R=tina.legrand@webrtc.org Review URL: https://webrtc-codereview.appspot.com/5549005 git-svn-id: http://webrtc.googlecode.com/svn/trunk@5276 4adac7df-926f-26a2-2b94-8c16560cd09d --- .../modules/audio_coding/main/acm2/acm_receiver.cc | 13 +++++++------ .../audio_coding/main/acm2/acm_receiver_unittest.cc | 4 ++-- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/webrtc/modules/audio_coding/main/acm2/acm_receiver.cc b/webrtc/modules/audio_coding/main/acm2/acm_receiver.cc index 6d4a8dfe07..5da42adaf9 100644 --- a/webrtc/modules/audio_coding/main/acm2/acm_receiver.cc +++ b/webrtc/modules/audio_coding/main/acm2/acm_receiver.cc @@ -122,7 +122,7 @@ AcmReceiver::AcmReceiver() last_audio_decoder_(-1), // Invalid value. decode_lock_(RWLockWrapper::CreateRWLock()), neteq_crit_sect_(CriticalSectionWrapper::CreateCriticalSection()), - vad_enabled_(false), + vad_enabled_(true), previous_audio_activity_(AudioFrame::kVadUnknown), current_sample_rate_hz_(kNeteqInitSampleRateHz), nack_(), @@ -135,8 +135,9 @@ AcmReceiver::AcmReceiver() decoders_[n].registered = false; } - // Make sure we are on the same page as NetEq, although the default behavior - // for NetEq has been VAD disabled. + // Make sure we are on the same page as NetEq. Post-decode VAD is disabled by + // default in NetEq4, however, Audio Conference Mixer relies on VAD decision + // and fails if VAD decision is not provided. if (vad_enabled_) neteq_->EnableVad(); else @@ -554,9 +555,9 @@ int AcmReceiver::RemoveAllCodecs() { int AcmReceiver::RemoveCodec(uint8_t payload_type) { int codec_index = PayloadType2CodecIndex(payload_type); if (codec_index < 0) { // Such a payload-type is not registered. - LOG(LS_ERROR) << "payload_type " << payload_type << " is not registered" - " to be removed."; - return -1; + LOG(LS_WARNING) << "payload_type " << payload_type << " is not registered," + " no action is taken."; + return 0; } if (neteq_->RemovePayloadType(payload_type) != NetEq::kOK) { LOG_FERR1(LS_ERROR, "AcmReceiver::RemoveCodec", payload_type); diff --git a/webrtc/modules/audio_coding/main/acm2/acm_receiver_unittest.cc b/webrtc/modules/audio_coding/main/acm2/acm_receiver_unittest.cc index 7d85d15d8e..712eeb2687 100644 --- a/webrtc/modules/audio_coding/main/acm2/acm_receiver_unittest.cc +++ b/webrtc/modules/audio_coding/main/acm2/acm_receiver_unittest.cc @@ -211,8 +211,8 @@ TEST_F(AcmReceiverTest, DISABLED_ON_ANDROID(AddCodecRemoveCodec)) { EXPECT_EQ(0, receiver_->AddCodec(codec_id, codec.pltype, codec.channels, NULL)); - // Remove non-existing codec, must fail. - EXPECT_EQ(-1, receiver_->RemoveCodec(payload_type + 1)); + // Remove non-existing codec should not fail. ACM1 legacy. + EXPECT_EQ(0, receiver_->RemoveCodec(payload_type + 1)); // Remove an existing codec. EXPECT_EQ(0, receiver_->RemoveCodec(payload_type));