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
diff --git a/webrtc/modules/audio_coding/main/acm2/acm_receiver.cc b/webrtc/modules/audio_coding/main/acm2/acm_receiver.cc
index 6d4a8df..5da42ad 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 @@
       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 @@
     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::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 7d85d15..712eeb2 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 @@
   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));