Remove unused and not working voe_extended_test.

BUG=2913
R=henrikg@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/8439004

git-svn-id: http://webrtc.googlecode.com/svn/trunk/webrtc@5533 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/voice_engine/test/auto_test/voe_extended_test.cc b/voice_engine/test/auto_test/voe_extended_test.cc
deleted file mode 100644
index af37edb..0000000
--- a/voice_engine/test/auto_test/voe_extended_test.cc
+++ /dev/null
@@ -1,5160 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/voice_engine/test/auto_test/voe_extended_test.h"
-
-#include <stdio.h>
-#include <string.h>
-#include <vector>
-
-#include "webrtc/test/testsupport/fileutils.h"
-#include "webrtc/voice_engine/test/auto_test/voe_test_defines.h"
-#include "webrtc/voice_engine/voice_engine_defines.h"
-
-#if defined(_WIN32)
-#include <conio.h>
-#elif defined(WEBRTC_LINUX) || defined(WEBRTC_MAC)
-#include <netdb.h>
-#endif
-
-using namespace webrtc;
-using namespace test;
-
-namespace voetest {
-
-#ifdef WEBRTC_ANDROID
-// Global pointers
-extern void* globalJavaVM;
-extern void* globalContext;
-#endif
-
-static const int kTestMaxNumChannels = 100;
-
-// ----------------------------------------------------------------------------
-// External AudioDeviceModule implementation
-// ----------------------------------------------------------------------------
-
-// static
-AudioDeviceModuleImpl* AudioDeviceModuleImpl::Create() {
-  AudioDeviceModuleImpl* xADM = new AudioDeviceModuleImpl();
-  if (xADM)
-    xADM->AddRef();
-  return xADM;
-}
-
-// static
-bool AudioDeviceModuleImpl::Destroy(AudioDeviceModuleImpl* adm) {
-  if (!adm)
-    return false;
-  int32_t count = adm->Release();
-  if (count != 0) {
-    return false;
-  } else {
-    delete adm;
-    return true;
-  }
-}
-
-AudioDeviceModuleImpl::AudioDeviceModuleImpl() : _ref_count(0) {}
-
-AudioDeviceModuleImpl::~AudioDeviceModuleImpl() {}
-
-int32_t AudioDeviceModuleImpl::AddRef() { return ++_ref_count; }
-
-int32_t AudioDeviceModuleImpl::Release() {
-  // Avoid self destruction in this mock implementation.
-  // Ensures that we can always check the reference counter while alive.
-  return --_ref_count;
-}
-
-// ----------------------------------------------------------------------------
-//  External transport (Transport) implementations:
-// ----------------------------------------------------------------------------
-
-ExtendedTestTransport::ExtendedTestTransport(VoENetwork* ptr)
-    : myNetw(ptr),
-      _thread(NULL),
-      _lock(NULL),
-      _event(NULL),
-      _length(0),
-      _channel(0) {
-  const char* threadName = "voe_extended_test_external_thread";
-  _lock = CriticalSectionWrapper::CreateCriticalSection();
-  _event = EventWrapper::Create();
-  _thread = ThreadWrapper::CreateThread(Run, this, kHighPriority, threadName);
-  if (_thread) {
-    unsigned int id;
-    _thread->Start(id);
-  }
-}
-
-ExtendedTestTransport::~ExtendedTestTransport() {
-  if (_thread) {
-    _thread->SetNotAlive();
-    _event->Set();
-    if (_thread->Stop()) {
-      delete _thread;
-      _thread = NULL;
-      delete _event;
-      _event = NULL;
-      delete _lock;
-      _lock = NULL;
-    }
-  }
-}
-
-bool ExtendedTestTransport::Run(void* ptr) {
-  return static_cast<ExtendedTestTransport*>(ptr)->Process();
-}
-
-bool ExtendedTestTransport::Process() {
-  switch (_event->Wait(500)) {
-    case kEventSignaled:
-      _lock->Enter();
-      myNetw->ReceivedRTPPacket(_channel, _packetBuffer, _length);
-      _lock->Leave();
-      return true;
-    case kEventTimeout:
-      return true;
-    case kEventError:
-      break;
-  }
-  return true;
-}
-
-int ExtendedTestTransport::SendPacket(int channel, const void* data, int len) {
-  _lock->Enter();
-  if (len < 1612) {
-    memcpy(_packetBuffer, (const unsigned char*)data, len);
-    _length = len;
-    _channel = channel;
-  }
-  _lock->Leave();
-  _event->Set();  // triggers ReceivedRTPPacket() from worker thread
-  return len;
-}
-
-int ExtendedTestTransport::SendRTCPPacket(int channel,
-                                          const void* data,
-                                          int len) {
-  myNetw->ReceivedRTCPPacket(channel, data, len);
-  return len;
-}
-
-// ----------------------------------------------------------------------------
-//  VoERTPObserver
-// ----------------------------------------------------------------------------
-
-XRTPObserver::XRTPObserver() : _SSRC(0) {}
-
-XRTPObserver::~XRTPObserver() {}
-
-void XRTPObserver::OnIncomingCSRCChanged(const int /*channel*/,
-                                         const unsigned int /*CSRC*/,
-                                         const bool /*added*/) {}
-
-void XRTPObserver::OnIncomingSSRCChanged(const int /*channel*/,
-                                         unsigned int SSRC) {
-  // char msg[128];
-  // sprintf(msg, "OnIncomingSSRCChanged(channel=%d, SSRC=%lu)\n",
-  //        channel, SSRC);
-  // TEST_LOG(msg);
-
-  _SSRC = SSRC;  // skip channel dependency for simplicty
-}
-
-// ----------------------------------------------------------------------------
-//  VoEExtendedTest
-// ----------------------------------------------------------------------------
-
-int VoEExtendedTest::PrepareTest(const char* str) const {
-  TEST_LOG("\n\n================================================\n");
-  TEST_LOG("\tExtended *%s* Test\n", str);
-  TEST_LOG("================================================\n\n");
-
-  return 0;
-}
-
-int VoEExtendedTest::TestPassed(const char* str) const {
-  TEST_LOG("\n\n------------------------------------------------\n");
-  TEST_LOG("\tExtended *%s* test passed!\n", str);
-  TEST_LOG("------------------------------------------------\n\n");
-
-  return 0;
-}
-
-void VoEExtendedTest::OnPeriodicDeadOrAlive(const int /*channel*/, bool alive) {
-  _alive = alive;
-  if (alive) {
-    TEST_LOG("=> ALIVE ");
-  } else {
-    TEST_LOG("=> DEAD ");
-  }
-  fflush(NULL);
-}
-
-void VoEExtendedTest::CallbackOnError(int errCode, int) {
-  _errCode = errCode;
-  TEST_LOG("\n************************\n");
-  TEST_LOG(" RUNTIME ERROR: %d \n", errCode);
-  TEST_LOG("************************\n");
-}
-
-VoEExtendedTest::VoEExtendedTest(VoETestManager& mgr) : _mgr(mgr) {
-  for (int i = 0; i < 32; i++) {
-    _listening[i] = false;
-    _playing[i] = false;
-    _sending[i] = false;
-  }
-}
-
-VoEExtendedTest::~VoEExtendedTest() {}
-
-void VoEExtendedTest::StartMedia(int channel,
-                                 int rtpPort,
-                                 bool listen,
-                                 bool playout,
-                                 bool send) {
-  VoEBase* voe_base_ = _mgr.BasePtr();
-
-  _listening[channel] = false;
-  _playing[channel] = false;
-  _sending[channel] = false;
-
-  VoENetwork* voe_network = _mgr.NetworkPtr();
-
-  voice_channel_transports_[channel]
-      .reset(new VoiceChannelTransport(voe_network, channel));
-
-  voice_channel_transports_[channel]->SetSendDestination("127.0.0.1", rtpPort);
-  voice_channel_transports_[channel]->SetLocalReceiver(rtpPort);
-
-  if (listen) {
-    _listening[channel] = true;
-    voe_base_->StartReceive(channel);
-  }
-  if (playout) {
-    _playing[channel] = true;
-    voe_base_->StartPlayout(channel);
-  }
-  if (send) {
-    _sending[channel] = true;
-    voe_base_->StartSend(channel);
-  }
-}
-
-void VoEExtendedTest::StopMedia(int channel) {
-  VoEBase* voe_base_ = _mgr.BasePtr();
-
-  if (_listening[channel]) {
-    _listening[channel] = false;
-    voe_base_->StopReceive(channel);
-  }
-  if (_playing[channel]) {
-    _playing[channel] = false;
-    voe_base_->StopPlayout(channel);
-  }
-  if (_sending[channel]) {
-    _sending[channel] = false;
-    voe_base_->StopSend(channel);
-  }
-  voice_channel_transports_[channel].reset(NULL);
-}
-
-void VoEExtendedTest::Play(int channel,
-                           unsigned int timeMillisec,
-                           bool addFileAsMicrophone,
-                           bool addTimeMarker) {
-  VoEBase* voe_base_ = _mgr.BasePtr();
-  VoEFile* file = _mgr.FilePtr();
-
-  voe_base_->StartPlayout(channel);
-  TEST_LOG("[playing]");
-  fflush(NULL);
-  if (addFileAsMicrophone) {
-    file->StartPlayingFileAsMicrophone(
-        channel, _mgr.AudioFilename(), true, true);
-    TEST_LOG("[file as mic]");
-    fflush(NULL);
-  }
-  if (addTimeMarker) {
-    float dtSec = (float)((float)timeMillisec / 1000.0);
-    TEST_LOG("[dT=%.1f]", dtSec);
-    fflush(NULL);  // print sleep time in seconds
-  }
-  SleepMs(timeMillisec);
-  voe_base_->StopPlayout(channel);
-  file->StopPlayingFileAsMicrophone(channel);
-}
-
-void VoEExtendedTest::Sleep(unsigned int timeMillisec, bool addMarker) {
-  if (addMarker) {
-    float dtSec = (float)((float)timeMillisec / 1000.0);
-    TEST_LOG("[dT=%.1f]", dtSec);  // print sleep time in seconds
-  }
-  webrtc::SleepMs(timeMillisec);
-}
-
-int VoEExtendedTest::TestBase() {
-#ifndef _WIN32
-// Sleep a bit instead when pause not supported
-#undef PAUSE
-#define PAUSE SleepMs(2000);
-#endif
-
-  PrepareTest("Base");
-
-  // TODO(phoglund): make this an actual instance variable. I think the
-  // macro black magic will make more sense then. This is named like an
-  // instance variable since it is required in order to appease the
-  // gods of darkness.
-  VoEBase* voe_base_ = _mgr.BasePtr();
-  VoENetwork* voe_network = _mgr.NetworkPtr();
-#ifdef _TEST_RTP_RTCP_
-  VoERTP_RTCP* rtp = _mgr.RTP_RTCPPtr();
-#endif
-
-//////////////////////////
-// SetTraceFileName
-
-#ifdef _USE_EXTENDED_TRACE_
-  TEST(SetTraceFileName - SetDebugTraceFileName);
-  ANL();
-  TEST_MUSTPASS(VoiceEngine::SetTraceFile(NULL));
-  MARK();
-  // don't use these files
-  std::string output_path = webrtc::test::OutputPath();
-  TEST_MUSTPASS(VoiceEngine::SetTraceFile(
-      (output_path + "VoEBase_trace_dont_use.txt").c_str()));
-  MARK();
-  // use these instead
-  TEST_MUSTPASS(VoiceEngine::SetTraceFile(GetFilename(""
-              (output_path + "VoEBase_trace.txt").c_str())); MARK();
-  TEST_MUSTPASS(VoiceEngine::SetTraceFilter(kTraceStream |
-          kTraceStateInfo |
-          kTraceWarning |
-          kTraceError |
-          kTraceCritical |
-          kTraceApiCall |
-          kTraceMemory |
-          kTraceInfo)); MARK();
-
-  ANL(); AOK(); ANL(); ANL();
-#endif
-
-  ///////////////////////////////////////
-  // RegisterVoiceEngineObserver
-  // DeRegisterVoiceEngineObserver
-  TEST(SetObserver);
-  ANL();
-
-  TEST_MUSTPASS(voe_base_->RegisterVoiceEngineObserver(*this));
-  MARK();
-  SleepMs(100);
-  TEST_MUSTPASS(voe_base_->DeRegisterVoiceEngineObserver());
-  MARK();
-
-  ANL();
-  AOK();
-  ANL();
-  ANL();
-
-  /////////////////////
-  // GetVersion
-  TEST(GetVersion);
-  ANL();
-
-  char version[1024];
-  // audio device module and AudioProcessing fail to getversion when they
-  // are not initiliazed
-  TEST_MUSTPASS(voe_base_->GetVersion(version));
-  MARK();
-  TEST_LOG("\n-----\n%s\n-----\n", version);
-
-  ANL();
-  AOK();
-  ANL();
-  ANL();
-
-  ///////////////
-  // Init
-  TEST(Init);
-  ANL();
-
-  TEST_MUSTPASS(voe_base_->Init());
-  MARK();
-  TEST_MUSTPASS(voe_base_->Terminate());
-
-  TEST_MUSTPASS(voe_base_->Init());
-  MARK();
-  // ensure that no new memory is allocated at the second call (check
-  // trace file)
-  TEST_MUSTPASS(voe_base_->Init());
-  MARK();
-  TEST_MUSTPASS(voe_base_->Terminate());
-#if (!defined(WEBRTC_IOS) && !defined(WEBRTC_ANDROID))
-  // verify AEC recording
-  TEST_MUSTPASS(voe_base_->Init());
-  MARK(); // verify output dat-files
-  TEST_MUSTPASS(voe_base_->Terminate());
-#endif
-
-  ANL();
-  AOK();
-  ANL();
-  ANL();
-
-  ////////////////////
-  // Terminate
-  TEST(Terminate);
-  ANL();
-  TEST_MUSTPASS(voe_base_->Terminate());
-  MARK(); // should be ignored
-  TEST_MUSTPASS(voe_base_->Init());
-  TEST_MUSTPASS(voe_base_->Terminate());
-  MARK(); // should terminate
-
-  ANL();
-  AOK();
-  ANL();
-  ANL();
-
-  // ------------------------------------------------------------------------
-  // >> Init(AudioDeviceModule)
-  //
-  // Note that our mock implementation of the ADM also mocks the
-  // reference counting part. This approach enables us to keep track
-  // of the internal reference counter without checking return values
-  // from the ADM and we also avoid the built-in self destruction.
-  //
-  // TODO(henrika): this test does not verify that external ADM methods
-  // are called by the VoiceEngine once registered. We could extend
-  // the mock implementation and add counters for each ADM API to ensure
-  // that they are called in the correct sequence and the correct number
-  // of times.
-  TEST_LOG("\nTesting: Init in combination with an external ADM\n");
-
-  // Create the ADM and call AddRef within the factory method.
-  AudioDeviceModuleImpl* xADM = AudioDeviceModuleImpl::Create();
-  ASSERT_FALSE(xADM == NULL);
-  ASSERT_TRUE(xADM->ReferenceCounter() == 1);
-
-  // Verify default usage case for external ADM.
-  TEST_MUSTPASS(voe_base_->Init(xADM));MARK();
-  ASSERT_TRUE(xADM->ReferenceCounter() == 2);
-  TEST_MUSTPASS(voe_base_->Terminate());
-  ASSERT_TRUE(xADM->ReferenceCounter() == 1);
-
-  // Our reference-count implementation does not self destruct.
-  // We do it manually here instead by calling Release followed by delete.
-  ASSERT_TRUE(AudioDeviceModuleImpl::Destroy(xADM));
-  ANL();
-  AOK();ANL();
-
-  // >> end of Init(AudioDeviceModule)
-  // ------------------------------------------------------------------------
-
-  ////////////////////////
-  // CreateChannel
-  // DeleteChannel
-
-  int i;
-  int channel;
-  static const int kTestMaxNumChannels = 100;
-
-  TEST(CreateChannel);
-  ANL();
-  TEST(DeleteChannel);
-  ANL();
-
-  TEST_MUSTPASS(voe_base_->Init());
-
-  channel = voe_base_->CreateChannel();
-  MARK();
-  TEST_MUSTPASS(channel != 0);
-  channel = voe_base_->CreateChannel();
-  MARK();
-  TEST_MUSTPASS(channel != 1);
-
-  TEST_MUSTPASS(voe_base_->DeleteChannel(0));
-  MARK();
-  TEST_MUSTPASS(voe_base_->DeleteChannel(1));
-  MARK();
-
-  // create and delete one channel many times
-  for (i = 0; i < 10; i++) {
-    channel = voe_base_->CreateChannel();
-    MARK();
-    TEST_MUSTPASS(channel != 0); // should be 0 each time
-    TEST_MUSTPASS(voe_base_->DeleteChannel(channel));
-    MARK();
-  }
-  // create max number of channels
-  for (i = 0; i < kTestMaxNumChannels; i++) {
-    channel = voe_base_->CreateChannel();
-    MARK();
-    TEST_MUSTPASS(channel != i);
-  }
-  channel = voe_base_->CreateChannel();
-  MARK(); // should fail since no more channels can now be created
-  TEST_MUSTPASS(channel != -1);
-
-  int aChannel =
-      (((kTestMaxNumChannels - 17) > 0) ? (kTestMaxNumChannels - 17) : 0);
-  TEST_MUSTPASS(voe_base_->DeleteChannel(aChannel));
-  MARK();
-  channel = voe_base_->CreateChannel();
-  MARK(); // should reuse channel
-  TEST_MUSTPASS(channel != aChannel);
-
-  // delete all created channels
-  for (i = 0; i < kTestMaxNumChannels; i++) {
-    TEST_MUSTPASS(voe_base_->DeleteChannel(i));
-    MARK();
-  }
-
-  // try to delete a non-existing channel
-  TEST_MUSTPASS(-1 != voe_base_->DeleteChannel(aChannel));
-  MARK();
-  TEST_ERROR(VE_CHANNEL_NOT_VALID);
-
-  ANL();
-  AOK();
-  ANL();
-  ANL();
-
-  // ------------------------------------------------------------------------
-  // >> StartReceive
-  // >> StopReceive
-  //
-  // State: VE initialized, no existing channels
-  TEST(StartReceive);
-  ANL();
-  TEST(StopReceive);
-  ANL();
-
-  // call without existing channel
-  TEST_MUSTPASS(!voe_base_->StartReceive(0));
-  MARK();
-  TEST_ERROR(VE_CHANNEL_NOT_VALID);
-  TEST_MUSTPASS(!voe_base_->StopReceive(0));
-  MARK();
-  TEST_ERROR(VE_CHANNEL_NOT_VALID);
-
-  int ch = voe_base_->CreateChannel();
-
-  // must register external transport first.
-  TEST_MUSTPASS(!voe_base_->StartReceive(0));
-  MARK();
-
-  ExtendedTestTransport* ptrTransport = new ExtendedTestTransport(voe_network);
-  TEST_MUSTPASS(voe_network ->RegisterExternalTransport(ch, *ptrTransport));
-  MARK(); // should work this time
-
-  // enable again (should work)
-  TEST_MUSTPASS(voe_base_->StartReceive(0));
-  MARK();
-
-  // Stop/Start (should work)
-  TEST_MUSTPASS(voe_base_->StopReceive(0));
-  MARK();
-  TEST_MUSTPASS(voe_base_->StartReceive(0));
-  MARK();
-
-  // Verify in loopback
-  TEST_MUSTPASS(voe_base_->StartSend(ch));
-  Play(ch, 1000, true, true);
-  TEST_MUSTPASS(voe_base_->StopSend(ch));
-  TEST_MUSTPASS(voe_base_->StopReceive(0));
-  MARK();
-
-  voe_base_->DeleteChannel(0);
-  delete ptrTransport;
-  ch = voe_base_->CreateChannel();
-
-  // Ensure that it is OK to add delay between SetLocalReceiver and StarListen
-  TEST_LOG("\nspeak after 2 seconds and ensure that no delay is added:\n");
-
-  Sleep(2000, true); // adding emulated delay here
-
-  TEST_MUSTPASS(voe_base_->StartReceive(0));
-  TEST_MUSTPASS(voe_base_->StartSend(ch));
-  Play(ch, 2000, true, true);
-  TEST_MUSTPASS(voe_base_->StopSend(ch));
-  TEST_MUSTPASS(voe_base_->StopReceive(0));
-
-  TEST_MUSTPASS(voe_base_->DeleteChannel(ch));
-  ANL();
-
-  // Multi-channel tests
-
-  for (i = 0; i < kTestMaxNumChannels; i++) {
-    ch = voe_base_->CreateChannel();
-    MARK();
-  }
-  for (i = 0; i < kTestMaxNumChannels; i++) {
-    voe_base_->DeleteChannel(i);
-    MARK();
-  }
-  for (i = 0; i < kTestMaxNumChannels; i++) {
-    ch = voe_base_->CreateChannel();
-    ExtendedTestTransport* ptrTransport =
-        new ExtendedTestTransport(voe_network);
-    TEST_MUSTPASS(voe_network ->RegisterExternalTransport(ch, *ptrTransport));
-    TEST_MUSTPASS(voe_base_->StartReceive(ch));
-    MARK();
-    TEST_MUSTPASS(voe_base_->StopReceive(ch));
-    MARK();
-    voe_base_->DeleteChannel(ch);
-    delete ptrTransport;
-  }
-
-  ANL();
-  AOK();
-  ANL();
-  ANL();
-
-  // >> end of StartReceive/StopReceive
-  // ------------------------------------------------------------------------
-
-  // ------------------------------------------------------------------------
-  // >> StartPlayout
-  // >> StopPlayout
-  //
-  // State: VE initialized, no existing channels
-  TEST(StartPlayout);
-  ANL();
-  TEST(StopPlayout);
-  ANL();
-
-  // call without existing channel
-  TEST_MUSTPASS(!voe_base_->StartPlayout(0));
-  MARK();
-  TEST_ERROR(VE_CHANNEL_NOT_VALID);
-  TEST_MUSTPASS(!voe_base_->StopPlayout(0));
-  MARK();
-  TEST_ERROR(VE_CHANNEL_NOT_VALID);
-
-  ch = voe_base_->CreateChannel();
-
-  TEST_MUSTPASS(voe_base_->StartPlayout(ch));
-  MARK();
-  TEST_MUSTPASS(voe_base_->StartPlayout(ch));
-  MARK();
-  TEST_MUSTPASS(voe_base_->StopPlayout(ch));
-  MARK();
-  TEST_MUSTPASS(voe_base_->StopPlayout(ch));
-  MARK();
-
-  voe_base_->DeleteChannel(ch);
-
-  // Multi-channel tests
-  for (i = 0; i < kTestMaxNumChannels; i++) {
-    ch = voe_base_->CreateChannel();
-    TEST_MUSTPASS(voe_base_->StartPlayout(ch));
-    MARK();
-  }
-  for (i = 0; i < kTestMaxNumChannels; i++) {
-    TEST_MUSTPASS(voe_base_->StopPlayout(i));
-    MARK();
-    voe_base_->DeleteChannel(i);
-  }
-  for (i = 0; i < kTestMaxNumChannels; i++) {
-    ch = voe_base_->CreateChannel();
-    TEST_MUSTPASS(voe_base_->StartPlayout(ch));
-    MARK();
-    TEST_MUSTPASS(voe_base_->StopPlayout(ch));
-    MARK();
-    voe_base_->DeleteChannel(ch);
-  }
-
-  ANL();
-  AOK();
-  ANL();
-  ANL();
-
-  // >> end of StartPlayout/StopPlayout
-  // ------------------------------------------------------------------------
-
-  // ------------------------------------------------------------------------
-  // >> StartSend
-  // >> StopSend
-  //
-  // State: VE initialized, no existing channels
-  TEST(StartSend);
-  ANL();
-  TEST(StopSend);
-  ANL();
-
-  // call without existing channel
-  TEST_MUSTPASS(!voe_base_->StartSend(0));
-  MARK();
-  TEST_ERROR(VE_CHANNEL_NOT_VALID);
-  TEST_MUSTPASS(!voe_base_->StopSend(0));
-  MARK();
-  TEST_ERROR(VE_CHANNEL_NOT_VALID);
-
-  ch = voe_base_->CreateChannel();
-
-  // call without initialized destination
-  TEST_MUSTPASS(!voe_base_->StartSend(ch));
-  MARK();
-  TEST_ERROR(VE_DESTINATION_NOT_INITED);
-
-
-  // initialize destination and try again (should work even without existing
-  // sockets)
-  ptrTransport = new ExtendedTestTransport(voe_network);
-  TEST_MUSTPASS(voe_network ->RegisterExternalTransport(ch, *ptrTransport));
-  TEST_MUSTPASS(voe_base_->StartSend(ch));
-  MARK();
-  SleepMs(100);
-
-  TEST_MUSTPASS(voe_base_->StopSend(ch));
-  MARK();
-
-  voe_base_->DeleteChannel(ch);
-  delete ptrTransport;
-  ch = voe_base_->CreateChannel();
-
-  ptrTransport = new ExtendedTestTransport(voe_network);
-  TEST_MUSTPASS(voe_network ->RegisterExternalTransport(ch, *ptrTransport));
-  TEST_MUSTPASS(voe_base_->StartSend(ch));
-  MARK();
-  TEST_MUSTPASS(voe_base_->StartReceive(ch));
-  Play(ch, 2000, true, true);
-  TEST_MUSTPASS(voe_base_->StopSend(ch));
-  MARK();
-  TEST_MUSTPASS(voe_base_->StopReceive(ch));
-
-  voe_base_->DeleteChannel(ch);
-
-  ANL();
-  AOK();
-  ANL();
-  ANL();
-
-  // >> end of StartSend/StopSend
-  // ------------------------------------------------------------------------
-
-  //////////////////////////////
-  // SetNetEQPlayoutMode
-  // GetNetEQPlayoutMode
-  TEST(SetNetEQPlayoutMode);
-  ANL();
-  TEST(GetNetEQPlayoutMode);
-  ANL();
-
-  NetEqModes mode;
-
-  ch = voe_base_->CreateChannel();
-
-  // invalid function calls (should fail)
-  TEST_MUSTPASS(!voe_base_->GetNetEQPlayoutMode(ch+1, mode));
-  MARK();
-  TEST_MUSTPASS(!voe_base_->SetNetEQPlayoutMode(ch+1, kNetEqDefault));
-  MARK();
-
-  // verify default mode (should be kNetEqDefault)
-  TEST_MUSTPASS(voe_base_->GetNetEQPlayoutMode(ch, mode));
-  MARK();
-  TEST_MUSTPASS(mode != kNetEqDefault);
-  TEST_MUSTPASS(voe_base_->SetNetEQPlayoutMode(ch, kNetEqStreaming));
-  MARK();
-  voe_base_->DeleteChannel(ch);
-
-  // ensure that default mode is set as soon as new channel is created
-  ch = voe_base_->CreateChannel();
-  TEST_MUSTPASS(voe_base_->GetNetEQPlayoutMode(ch, mode));
-  MARK();
-  TEST_MUSTPASS(mode != kNetEqDefault);
-  voe_base_->DeleteChannel(ch);
-
-  // verify Set/Get for all supported modes and max number of channels
-  for (i = 0; i < kTestMaxNumChannels; i++) {
-    ch = voe_base_->CreateChannel();
-
-    // verify Set/Get for all supported modes
-    TEST_MUSTPASS(voe_base_->SetNetEQPlayoutMode(i, kNetEqDefault));
-    MARK();
-    TEST_MUSTPASS(voe_base_->GetNetEQPlayoutMode(i, mode));
-    MARK();
-    TEST_MUSTPASS(mode != kNetEqDefault);
-    TEST_MUSTPASS(voe_base_->SetNetEQPlayoutMode(i, kNetEqStreaming));
-    MARK();
-    TEST_MUSTPASS(voe_base_->GetNetEQPlayoutMode(i, mode));
-    MARK();
-    TEST_MUSTPASS(mode != kNetEqStreaming);
-    TEST_MUSTPASS(voe_base_->SetNetEQPlayoutMode(i, kNetEqFax));
-    MARK();
-    TEST_MUSTPASS(voe_base_->GetNetEQPlayoutMode(i, mode));
-    MARK();
-    TEST_MUSTPASS(mode != kNetEqFax);
-    SleepMs(50);
-  }
-
-  for (i = 0; i < kTestMaxNumChannels; i++) {
-    voe_base_->DeleteChannel(i);
-  }
-
-  ANL();
-  AOK();
-  ANL();
-  ANL();
-
-  // Verify real-time performance for all playout modes in full duplex
-
-  ch = voe_base_->CreateChannel();
-
-  scoped_ptr<VoiceChannelTransport> voice_channel_transport(
-      new VoiceChannelTransport(voe_network, ch));
-
-  voice_channel_transport->SetSendDestination("127.0.0.1", 12345);
-  voice_channel_transport->SetLocalReceiver(12345);
-  TEST_MUSTPASS(voe_base_->StartReceive(ch));
-  TEST_MUSTPASS(voe_base_->StartSend(ch));
-  TEST_MUSTPASS(voe_base_->StartPlayout(ch));
-
-  TEST_MUSTPASS(voe_base_->SetNetEQPlayoutMode(ch, kNetEqDefault));
-  MARK();
-  TEST_LOG("\nenjoy full duplex using kNetEqDefault playout mode...\n");
-  PAUSE
-
-  TEST_MUSTPASS(voe_base_->SetNetEQPlayoutMode(ch, kNetEqStreaming));
-  MARK();
-  TEST_LOG("\nenjoy full duplex using kNetEqStreaming playout mode...\n");
-  PAUSE
-
-  TEST_MUSTPASS(voe_base_->SetNetEQPlayoutMode(ch, kNetEqFax));
-  MARK();
-  TEST_LOG("\nenjoy full duplex using kNetEqFax playout mode...\n");
-  PAUSE
-
-  TEST_MUSTPASS(voe_base_->StopSend(ch));
-  TEST_MUSTPASS(voe_base_->StopPlayout(ch));
-  TEST_MUSTPASS(voe_base_->StopReceive(ch));
-
-  voe_base_->DeleteChannel(ch);
-
-  ANL();
-  AOK();
-  ANL();
-  ANL();
-
-  /////////////////////
-  // Full duplex tests
-
-  ch = voe_base_->CreateChannel(); // We must delete this channel first to be able
-                                   // to reuse port 12345
-
-// start with default case, also test non-default RTCP port
-#ifdef _TEST_RTP_RTCP_
-  TEST_MUSTPASS(rtp->SetRTCP_CNAME(ch, "Johnny"));
-#endif
-  voice_channel_transport.reset(new VoiceChannelTransport(voe_network, ch));
-  voice_channel_transport->SetSendDestination("127.0.0.1", 12345);
-  voice_channel_transport->SetLocalReceiver(12345);
-
-  TEST_MUSTPASS(voe_base_->StartReceive(ch));
-  TEST_MUSTPASS(voe_base_->StartSend(ch));
-  TEST_MUSTPASS(voe_base_->StartPlayout(ch));
-
-  TEST_LOG("full duplex is now activated (1)\n");
-  TEST_LOG("waiting for RTCP packet...\n");
-
-  SleepMs(7000); // Make sure we get RTCP packet
-  PAUSE;
-
-// Verify that we got RTCP packet from correct source port
-#ifdef _TEST_RTP_RTCP_
-  char tmpStr[64] = { 0 };
-  TEST_MUSTPASS(rtp->GetRemoteRTCP_CNAME(ch, tmpStr));
-  TEST_MUSTPASS(_stricmp("Johnny", tmpStr));
-#endif
-  TEST_MUSTPASS(voe_base_->StopSend(ch));
-  TEST_MUSTPASS(voe_base_->StopPlayout(ch));
-  TEST_MUSTPASS(voe_base_->StopReceive(ch));
-
-  // Call StartSend before StartReceive
-  TEST_MUSTPASS(voe_base_->StartSend(ch));
-  TEST_MUSTPASS(voe_base_->StartReceive(ch));
-  TEST_MUSTPASS(voe_base_->StartPlayout(ch));
-
-  TEST_LOG("\nfull duplex is now activated (2)\n");
-
-  PAUSE
-
-  TEST_MUSTPASS(voe_base_->StopSend(ch));
-  TEST_MUSTPASS(voe_base_->StopPlayout(ch));
-  TEST_MUSTPASS(voe_base_->StopReceive(ch));
-
-  // Try again using same ports
-  TEST_MUSTPASS(voe_base_->StartSend(ch));
-  TEST_MUSTPASS(voe_base_->StartReceive(ch));
-  TEST_MUSTPASS(voe_base_->StartPlayout(ch));
-
-  TEST_LOG("\nfull duplex is now activated (3)\n");
-  TEST_LOG("waiting for RTCP packet...\n");
-
-  SleepMs(7000); // Make sure we get RTCP packet
-  PAUSE
-
-  TEST_MUSTPASS(voe_base_->StopSend(ch));
-  TEST_MUSTPASS(voe_base_->StopPlayout(ch));
-  TEST_MUSTPASS(voe_base_->StopReceive(ch));
-
-  voe_base_->DeleteChannel(ch);
-
-  ch = voe_base_->CreateChannel();
-  voice_channel_transport.reset(new VoiceChannelTransport(voe_network, ch));
-
-  voice_channel_transport->SetSendDestination("127.0.0.1", 12345);
-  voice_channel_transport->SetLocalReceiver(12345);
-
-  TEST_MUSTPASS(voe_base_->StartReceive(ch));
-  TEST_MUSTPASS(voe_base_->StartSend(ch));
-  TEST_MUSTPASS(voe_base_->StartPlayout(ch));
-
-  TEST_LOG("\nfull duplex is now activated (5)\n");
-
-  PAUSE
-
-  TEST_MUSTPASS(voe_base_->StopSend(ch));
-  TEST_MUSTPASS(voe_base_->StopPlayout(ch));
-  TEST_MUSTPASS(voe_base_->StopReceive(ch));
-
-  // restart call again
-  TEST_MUSTPASS(voe_base_->StartReceive(ch));
-  TEST_MUSTPASS(voe_base_->StartPlayout(ch));
-  TEST_MUSTPASS(voe_base_->StartSend(ch));
-
-  TEST_LOG("\nfull duplex is now activated (6)\n");
-
-  PAUSE
-
-  TEST_MUSTPASS(voe_base_->StopSend(ch));
-  TEST_MUSTPASS(voe_base_->StopPlayout(ch));
-  TEST_MUSTPASS(voe_base_->StopReceive(ch));
-
-  // new channel and new port
-  ch = voe_base_->CreateChannel();
-
-  scoped_ptr<VoiceChannelTransport> voice_channel_transport_2(
-      new VoiceChannelTransport(voe_network, ch));
-
-  voice_channel_transport_2->SetSendDestination("127.0.0.1", 33221);
-  voice_channel_transport_2->SetLocalReceiver(33221);
-
-  TEST_MUSTPASS(voe_base_->StartReceive(ch));
-  TEST_MUSTPASS(voe_base_->StartPlayout(ch));
-  TEST_MUSTPASS(voe_base_->StartSend(ch));
-
-  TEST_LOG("\nfull duplex is now activated (8)\n");
-
-  PAUSE
-
-  ANL();
-  AOK();
-  ANL();
-  ANL();
-
-//////////////////////
-// Trace filter tests
-
-#ifdef _USE_EXTENDED_TRACE_
-  TEST(SetTraceFilter); ANL();
-
-  TEST_MUSTPASS(VoiceEngine::SetTraceFile(GetFilename(""
-              "VoEBase_trace_filter.txt").c_str())); MARK();
-  SleepMs(100);
-
-  // Test a few different filters, verify in trace file
-  // Each SetTraceFilter calls should be seen once, no more, no less
-  TEST_MUSTPASS(VoiceEngine::SetTraceFilter(kTraceNone)); MARK();
-  SleepMs(300);
-  // API call and info should NOT be seen in log
-  TEST_MUSTPASS(voe_base_->SetOnHoldStatus(0, true)); MARK();
-  // API call and error should NOT be seen in log
-  TEST_MUSTPASS(!voe_base_->SetOnHoldStatus(999, true)); MARK();
-
-  TEST_MUSTPASS(VoiceEngine::SetTraceFilter(kTraceApiCall |
-          kTraceCritical |
-          kTraceError |
-          kTraceWarning)); MARK();
-  SleepMs(300);
-  // API call should and info should NOT be seen in log
-  TEST_MUSTPASS(voe_base_->SetOnHoldStatus(0, false)); MARK();
-  // API call and error should be seen in log
-  TEST_MUSTPASS(!voe_base_->SetOnHoldStatus(999, true)); MARK();
-
-  TEST_MUSTPASS(VoiceEngine::SetTraceFilter(kTraceApiCall | kTraceInfo));
-  MARK();
-  SleepMs(300);
-  // API call and info should be seen in log
-  TEST_MUSTPASS(voe_base_->SetOnHoldStatus(0, true)); MARK();
-  // API call should and error should NOT be seen in log
-  TEST_MUSTPASS(!voe_base_->SetOnHoldStatus(999, true)); MARK();
-
-  // Back to default
-  TEST_MUSTPASS(VoiceEngine::SetTraceFilter(kTraceAll)); MARK();
-  SleepMs(300);
-
-  AOK(); ANL();
-#endif
-
-  // ------------------------------------------------------------------------
-  // >> Multiple instance testing
-  //
-  // We should support 8 instances simultaneously
-  // and at least one should be able to have a call running
-
-  // One instance is already created
-  VoiceEngine* instVE[7];
-  VoEBase* baseVE[7];
-  for (int instNum = 0; instNum < 7; instNum++) {
-    instVE[instNum] = VoiceEngine::Create();
-    baseVE[instNum] = VoEBase::GetInterface(instVE[instNum]);
-    TEST_MUSTPASS(baseVE[instNum]->Init());
-    TEST_MUSTPASS(baseVE[instNum]->CreateChannel());
-  }
-
-  TEST_LOG("Created 7 more instances of VE, make sure audio is ok...\n\n");
-  PAUSE
-
-  for (int instNum = 0; instNum < 7; instNum++) {
-    TEST_MUSTPASS(baseVE[instNum]->DeleteChannel(0));
-    TEST_MUSTPASS(baseVE[instNum]->Terminate());
-    baseVE[instNum]->Release();
-    VoiceEngine::Delete(instVE[instNum]);
-  }
-
-  AOK();
-  ANL();
-
-  //////////////
-  // Close down
-  TEST_MUSTPASS(voe_base_->StopSend(ch));
-  TEST_MUSTPASS(voe_base_->StopPlayout(ch));
-  TEST_MUSTPASS(voe_base_->StopReceive(ch));
-  TEST_MUSTPASS(voe_base_->DeleteChannel(ch));
-
-  voe_base_->DeleteChannel(0);
-  TEST_MUSTPASS(voe_base_->Terminate());
-  return 0;
-}
-
-// ----------------------------------------------------------------------------
-//  VoEExtendedTest::TestCallReport
-// ----------------------------------------------------------------------------
-
-int VoEExtendedTest::TestCallReport() {
-  // Get required sub-API pointers
-  VoEBase* voe_base_ = _mgr.BasePtr();
-  VoECallReport* report = _mgr.CallReportPtr();
-  VoEFile* file = _mgr.FilePtr();
-  VoEAudioProcessing* apm = _mgr.APMPtr();
-  VoENetwork* voe_network = _mgr.NetworkPtr();
-
-  PrepareTest("CallReport");
-
-  // check if this interface is supported
-  if (!report) {
-    TEST_LOG("VoECallReport is not supported!");
-    return -1;
-  }
-
-#ifdef _USE_EXTENDED_TRACE_
-  TEST_MUSTPASS(VoiceEngine::SetTraceFile(
-      GetFilename("VoECallReport_trace.txt").c_str()));
-  TEST_MUSTPASS(VoiceEngine::SetTraceFilter(
-      kTraceStateInfo | kTraceStateInfo | kTraceWarning | kTraceError |
-      kTraceCritical | kTraceApiCall | kTraceMemory | kTraceInfo));
-#endif
-
-  TEST_MUSTPASS(voe_base_->Init());
-  TEST_MUSTPASS(voe_base_->CreateChannel());
-  scoped_ptr<VoiceChannelTransport> voice_channel_transport(
-      new VoiceChannelTransport(voe_network, 0));
-  voice_channel_transport->SetSendDestination("127.0.0.1", 12345);
-  voice_channel_transport->SetLocalReceiver(12345);
-  TEST_MUSTPASS(voe_base_->StartReceive(0));
-  TEST_MUSTPASS(voe_base_->StartSend(0));
-  TEST_MUSTPASS(voe_base_->StartPlayout(0));
-  TEST_MUSTPASS(
-      file->StartPlayingFileAsMicrophone(0, _mgr.AudioFilename(), true, true));
-
-  ///////////////////////////
-  // Actual test starts here
-  TEST(ResetCallReportStatistics);
-  ANL();
-  TEST_MUSTPASS(!report->ResetCallReportStatistics(-2));
-  MARK();  // not OK
-  TEST_MUSTPASS(!report->ResetCallReportStatistics(1));
-  MARK();  // not OK
-  TEST_MUSTPASS(report->ResetCallReportStatistics(0));
-  MARK();  // OK
-  TEST_MUSTPASS(report->ResetCallReportStatistics(-1));
-  MARK();  // OK
-  AOK();
-  ANL();
-
-  bool enabled = false;
-  EchoStatistics echo;
-  TEST(GetEchoMetricSummary);
-  ANL();
-  TEST_MUSTPASS(apm->GetEcMetricsStatus(enabled));
-  TEST_MUSTPASS(enabled != false);
-  TEST_MUSTPASS(apm->SetEcMetricsStatus(true));
-  TEST_MUSTPASS(report->GetEchoMetricSummary(echo));  // all outputs will be
-  // -100 in loopback (skip further tests)
-  AOK();
-  ANL();
-
-  // TODO(xians): investigate the cause of test failure before enabling.
-  /*
-   StatVal delays;
-   TEST(GetRoundTripTimeSummary);
-   ANL();
-   // All values should be >=0 since RTCP is now on
-   TEST_MUSTPASS(report->GetRoundTripTimeSummary(0, delays));
-   MARK();
-   TEST_MUSTPASS(delays.min == -1);
-   TEST_MUSTPASS(delays.max == -1);
-   TEST_MUSTPASS(delays.average == -1);
-   rtp_rtcp->SetRTCPStatus(0, false);
-   // All values should be -1 since RTCP is off
-   TEST_MUSTPASS(report->GetRoundTripTimeSummary(0, delays));
-   MARK();
-   TEST_MUSTPASS(delays.min != -1);
-   TEST_MUSTPASS(delays.max != -1);
-   TEST_MUSTPASS(delays.average != -1);
-   rtp_rtcp->SetRTCPStatus(0, true);
-   AOK();
-   ANL();
-   */
-
-  TEST(WriteReportToFile);
-  ANL();
-
-  // Greek and Coptic (see http://www.utf8-chartable.de/unicode-utf8-table.pl)
-  char fileNameUTF8[64];
-
-  fileNameUTF8[0] = (char)0xce;
-  fileNameUTF8[1] = (char)0xba;
-  fileNameUTF8[2] = (char)0xce;
-  fileNameUTF8[3] = (char)0xbb;
-  fileNameUTF8[4] = (char)0xce;
-  fileNameUTF8[5] = (char)0xbd;
-  fileNameUTF8[6] = (char)0xce;
-  fileNameUTF8[7] = (char)0xbe;
-  fileNameUTF8[8] = '.';
-  fileNameUTF8[9] = 't';
-  fileNameUTF8[10] = 'x';
-  fileNameUTF8[11] = 't';
-  fileNameUTF8[12] = 0;
-
-  TEST_MUSTPASS(!report->WriteReportToFile(NULL));
-  MARK();
-  TEST_MUSTPASS(report->WriteReportToFile("call_report.txt"));
-  MARK();
-  TEST_MUSTPASS(report->WriteReportToFile(fileNameUTF8));
-  MARK();  // should work with UTF-8 as well (κλνξ.txt)
-  AOK();
-  ANL();
-
-  TEST_MUSTPASS(file->StopPlayingFileAsMicrophone(0));
-  TEST_MUSTPASS(voe_base_->StopSend(0));
-  TEST_MUSTPASS(voe_base_->StopPlayout(0));
-  TEST_MUSTPASS(voe_base_->StopReceive(0));
-  TEST_MUSTPASS(voe_base_->DeleteChannel(0));
-  TEST_MUSTPASS(voe_base_->Terminate());
-
-  return 0;
-}
-
-// ----------------------------------------------------------------------------
-//  VoEExtendedTest::TestCodec
-// ----------------------------------------------------------------------------
-
-int VoEExtendedTest::TestCodec() {
-  PrepareTest("Codec");
-
-  VoEBase* voe_base_ = _mgr.BasePtr();
-  VoECodec* codec = _mgr.CodecPtr();
-  VoEFile* file = _mgr.FilePtr();
-  VoENetwork* voe_network = _mgr.NetworkPtr();
-
-#ifdef _USE_EXTENDED_TRACE_
-  TEST_MUSTPASS(
-      VoiceEngine::SetTraceFile(GetFilename("VoECodec_trace.txt").c_str()));
-  TEST_MUSTPASS(VoiceEngine::SetTraceFilter(
-      kTraceStateInfo | kTraceStateInfo | kTraceWarning | kTraceError |
-      kTraceCritical | kTraceApiCall | kTraceMemory | kTraceInfo));
-#endif
-
-  int channel_id;
-  TEST_MUSTPASS(voe_base_->Init());
-  channel_id = voe_base_->CreateChannel();
-  TEST_MUSTPASS(channel_id == -1);
-
-  ExtendedTestTransport* ptrTransport = new ExtendedTestTransport(voe_network);
-  TEST_MUSTPASS(
-      voe_network->RegisterExternalTransport(channel_id, *ptrTransport));
-  TEST_MUSTPASS(voe_base_->StartReceive(channel_id));
-  TEST_MUSTPASS(voe_base_->StartSend(channel_id));
-  TEST_MUSTPASS(voe_base_->StartPlayout(channel_id));
-
-  ///////////////////////////
-  // Actual test starts here
-
-  int i;
-  int err;
-
-  CodecInst cinst;
-
-  /////////////////////////
-  // GetNumOfCodecs
-
-  int nCodecs;
-
-  TEST(GetNumOfCodecs);
-  ANL();
-  // validate #codecs
-  nCodecs = codec->NumOfCodecs();
-  MARK();
-  TEST_MUSTPASS(nCodecs < 0);
-  AOK();
-  ANL();
-
-  ///////////////////
-  // GetCodec
-  TEST(GetCodec);
-  ANL();
-  // scan all supported codecs
-  nCodecs = codec->NumOfCodecs();
-  for (int index = 0; index < nCodecs; index++) {
-    TEST_MUSTPASS(codec->GetCodec(index, cinst));
-    TEST_LOG("[%2d] %16s: fs=%6d, pt=%4d, rate=%7d, ch=%2d, size=%5d",
-             index,
-             cinst.plname,
-             cinst.plfreq,
-             cinst.pltype,
-             cinst.rate,
-             cinst.channels,
-             cinst.pacsize);
-    if (cinst.pltype == -1) {
-      TEST_LOG(" <= NOTE pt=-1\n");
-    } else {
-      ANL();
-    }
-  }
-
-  // ensure that an invalid index parameter is detected
-  TEST_MUSTPASS(-1 != codec->GetCodec(-1, cinst));
-  nCodecs = codec->NumOfCodecs();
-  TEST_MUSTPASS(-1 != codec->GetCodec(nCodecs, cinst));
-  MARK();
-  // ensure that error code is VE_INVALID_LISTNR
-  err = voe_base_->LastError();
-  TEST_MUSTPASS(err != VE_INVALID_LISTNR);
-  AOK();
-  ANL();
-
-  ///////////////////////
-  // GetSendCodec
-  TEST(GetSendCodec);
-  ANL();
-
-  CodecInst defaultCodec;
-
-  // check the channel parameter
-  TEST_MUSTPASS(-1 != codec->GetSendCodec(kTestMaxNumChannels - 1, cinst));
-  MARK();  // not created
-  TEST_MUSTPASS(-1 != codec->GetSendCodec(kTestMaxNumChannels, cinst));
-  MARK();  // out of range
-  TEST_MUSTPASS(-1 != codec->GetSendCodec(-1, cinst));
-  MARK();  // out of range
-  TEST_MUSTPASS(codec->GetSendCodec(channel_id, cinst));
-  MARK();  // OK
-
-  nCodecs = codec->NumOfCodecs();
-  for (int index = 0; index < nCodecs; index++) {
-    TEST_MUSTPASS(codec->GetCodec(index, defaultCodec));
-    if (codec->SetSendCodec(channel_id, defaultCodec) == 0) {
-      TEST_MUSTPASS(codec->GetSendCodec(channel_id, cinst));
-      MARK();
-      // TEST_LOG("[%2d] %s: fs=%d, pt=%d, rate=%d, ch=%d, size=%d\n",
-      // index, cinst.plname, cinst.plfreq, cinst.pltype, cinst.rate,
-      // cinst.channels, cinst.pacsize);
-      TEST_MUSTPASS(cinst.pacsize != defaultCodec.pacsize);
-      TEST_MUSTPASS(cinst.plfreq != defaultCodec.plfreq);
-      TEST_MUSTPASS(cinst.pltype != defaultCodec.pltype);
-      TEST_MUSTPASS(cinst.rate != defaultCodec.rate);
-      TEST_MUSTPASS(cinst.channels != defaultCodec.channels);
-    }
-  }
-
-  ANL();
-  AOK();
-  ANL();
-
-  ///////////////////////
-  // SetSendCodec
-  TEST(SetSendCodec);
-  ANL();
-
-  // --- Scan all supported codecs and set default parameters
-
-  nCodecs = codec->NumOfCodecs();
-  for (int index = 0; index < nCodecs; index++) {
-    // Get default (ACM) settings
-    TEST_MUSTPASS(codec->GetCodec(index, cinst));
-    defaultCodec = cinst;
-    TEST_LOG("[%2d] %s (default): fs=%d, pt=%d, rate=%d, ch=%d, size=%d\n",
-             index,
-             cinst.plname,
-             cinst.plfreq,
-             cinst.pltype,
-             cinst.rate,
-             cinst.channels,
-             cinst.pacsize);
-
-    // Verify invalid codec names
-    if (!_stricmp("CN", cinst.plname) ||
-        !_stricmp("telephone-event", cinst.plname) ||
-        !_stricmp("red", cinst.plname)) {
-      // default settings for invalid payload names (should give
-      // VE_INVALID_PLNAME)
-      TEST_MUSTPASS(!codec->SetSendCodec(channel_id, cinst));
-      err = voe_base_->LastError();
-      TEST_MUSTPASS(err != VE_INVALID_ARGUMENT);
-      continue;
-    }
-
-    // If we build the ACM with more codecs than we have payload types,
-    // some codecs will be given -1 as default payload type. This is a fix
-    // to ensure that we can complete these tests also for this case.
-    if (cinst.pltype == -1) {
-      cinst.pltype = 97;
-    }
-
-    // --- Default settings
-    TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-
-    // --- Packet size
-    TEST_LOG("\npacsize : ");
-
-    for (int pacsize = 80; pacsize < 1440; pacsize += 80) {
-      cinst.pacsize = pacsize;
-      if (-1 != codec->SetSendCodec(channel_id, cinst)) {
-        // log valid packet size
-        TEST_LOG("%d ", pacsize);
-      } else {
-        err = voe_base_->LastError();
-        TEST_MUSTPASS(err != VE_INVALID_ARGUMENT);
-      }
-    }
-    cinst.pacsize = defaultCodec.pacsize;
-
-    // --- Audio channels (1/mono or 2/stereo)
-    TEST_LOG("\nchannels: ");
-    for (int channels = 1; channels < 4; channels++) {
-      cinst.channels = channels;
-      if (-1 != codec->SetSendCodec(channel_id, cinst)) {
-        // Valid channels currently.
-        // 1 should always be OK for all codecs.
-        // 2 is OK for stereo codecs and some of mono codecs.
-        TEST_LOG("%d ", channels);
-      } else {
-        // Invalide channels. Currently there should be two cases:
-        // 2 would fail to some mono codecs with VE_CANNOT_SET_SEND_CODEC;
-        // 3(and higher) should always fail with VE_INVALID_ARGUMENT.
-        err = voe_base_->LastError();
-        ASSERT_TRUE((err == VE_INVALID_ARGUMENT) ||
-                    (err == VE_CANNOT_SET_SEND_CODEC));
-      }
-    }
-    cinst.channels = defaultCodec.channels;
-
-    // --- Payload frequency
-    TEST_LOG("\nplfreq  : ");
-    cinst.plfreq = defaultCodec.plfreq;
-    TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-    TEST_LOG("%d ", cinst.plfreq);
-
-    // --- Payload name
-
-    strcpy(cinst.plname, "INVALID");
-    TEST_MUSTPASS(-1 != codec->SetSendCodec(channel_id, cinst)) {
-      // ensure that error code is VE_INVALID_PLNAME
-      err = voe_base_->LastError();
-      TEST_MUSTPASS(err != VE_INVALID_ARGUMENT);
-    }
-
-    // restore default plname
-    strcpy(cinst.plname, defaultCodec.plname);
-
-    // --- Payload type (dynamic range is 96-127)
-    TEST_LOG("\npltype  : ");
-    // All PT should be OK, test a few different
-    cinst.pltype = defaultCodec.pltype;
-    TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-    TEST_LOG("%d ", cinst.pltype);
-    cinst.pltype = defaultCodec.pltype + 1;
-    TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-    TEST_LOG("%d ", cinst.pltype);
-    const int valid_pltypes[4] = {0, 96, 117, 127};
-    for (i = 0; i < static_cast<int>(sizeof(valid_pltypes) / sizeof(int));
-         i++) {
-      cinst.pltype = valid_pltypes[i];
-      TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-      TEST_LOG("%d ", cinst.pltype);
-    }
-    // Restore default
-    cinst.pltype = defaultCodec.pltype;
-
-    // --- Codec rate
-    TEST_LOG("\nrate    : ");
-    if (_stricmp("isac", cinst.plname) == 0) {
-      // ISAC
-      if (cinst.plfreq == 16000) {
-        int valid_rates[3] = {-1, 10000, 32000};
-        // failed in RegisterPayload when rate is 32000
-        for (i = 0; i < static_cast<int>(sizeof(valid_rates) / sizeof(int));
-             i++) {
-          cinst.rate = valid_rates[i];
-          TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-          TEST_LOG("%d ", cinst.rate);
-        }
-        cinst.rate = 0;  // invalid
-        TEST_MUSTPASS(-1 != codec->SetSendCodec(channel_id, cinst)) {
-          // ensure that error code is VE_CANNOT_SET_SEND_CODEC
-          err = voe_base_->LastError();
-          TEST_MUSTPASS(err != VE_INVALID_ARGUMENT);
-        }
-        ANL();
-      } else  // ISACSWB
-      {
-        // rate changing fails in RegisterPayload
-        int valid_rates[8] = {-1,    10000, 25000, 32000,
-                              35000, 45000, 50000, 52000};
-        for (i = 0; i < static_cast<int>(sizeof(valid_rates) / sizeof(int));
-             i++) {
-          cinst.rate = valid_rates[i];
-          TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-          TEST_LOG("%d ", cinst.rate);
-        }
-        int invalid_rates[3] = {0, 5000, 57000};  // invalid
-        for (i = 0; i < static_cast<int>(sizeof(invalid_rates) / sizeof(int));
-             i++) {
-          cinst.rate = invalid_rates[i];
-          TEST_MUSTPASS(-1 != codec->SetSendCodec(channel_id, cinst)) {
-            // ensure that error code is VE_CANNOT_SET_SEND_CODEC
-            err = voe_base_->LastError();
-            TEST_MUSTPASS(err != VE_INVALID_ARGUMENT);
-          }
-        }
-        ANL();
-      }
-    } else if (_stricmp("amr", cinst.plname) == 0) {
-      int valid_rates[8] = {4750, 5150, 5900, 6700, 7400, 7950, 10200, 12200};
-      for (i = 0; i < static_cast<int>(sizeof(valid_rates) / sizeof(int));
-           i++) {
-        cinst.rate = valid_rates[i];
-        TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-        TEST_LOG("%d ", cinst.rate);
-      }
-      ANL();
-    } else if (_stricmp("g7291", cinst.plname) == 0) {
-      int valid_rates[12] = {8000,  12000, 14000, 16000, 18000, 20000,
-                             22000, 24000, 26000, 28000, 30000, 32000};
-      for (i = 0; i < static_cast<int>(sizeof(valid_rates) / sizeof(int));
-           i++) {
-        cinst.rate = valid_rates[i];
-        TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-        TEST_LOG("%d ", cinst.rate);
-      }
-      ANL();
-    } else if (_stricmp("amr-wb", cinst.plname) == 0) {
-      int valid_rates[9] = {7000,  9000,  12000, 14000, 16000,
-                            18000, 20000, 23000, 24000};
-      for (i = 0; i < static_cast<int>(sizeof(valid_rates) / sizeof(int));
-           i++) {
-        cinst.rate = valid_rates[i];
-        TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-        TEST_LOG("%d ", cinst.rate);
-      }
-      TEST_LOG(" <=> ");
-      ANL();
-    } else if (_stricmp("speex", cinst.plname) == 0) {
-      // Valid speex rates are > 2000, testing some of them here
-      int valid_rates[9] = {2001,  4000,  7000,  11000, 15000,
-                            20000, 25000, 33000, 46000};
-      for (i = 0; i < static_cast<int>(sizeof(valid_rates) / sizeof(int));
-           i++) {
-        cinst.rate = valid_rates[i];
-        TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-        TEST_LOG("%d ", cinst.rate);
-      }
-      cinst.rate = 2000;  // invalid
-      TEST_MUSTPASS(-1 != codec->SetSendCodec(channel_id, cinst)) {
-        err = voe_base_->LastError();
-        TEST_MUSTPASS(err != VE_INVALID_ARGUMENT);
-      }
-      ANL();
-    } else if (_stricmp("silk", cinst.plname) == 0) {
-      // Valid Silk rates are 6000 - 40000, listing some of them here
-      int valid_rates[7] = {6000, 10000, 15000, 20000, 25000, 32000, 40000};
-      for (i = 0; i < static_cast<int>(sizeof(valid_rates) / sizeof(int));
-           i++) {
-        cinst.rate = valid_rates[i];
-        TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-        TEST_LOG("%d ", cinst.rate);
-      }
-      cinst.rate = 5999;  // invalid
-      TEST_MUSTPASS(-1 != codec->SetSendCodec(channel_id, cinst)) {
-        err = voe_base_->LastError();
-        TEST_MUSTPASS(err != VE_INVALID_ARGUMENT);
-      }
-      cinst.rate = 40001;  // invalid
-      TEST_MUSTPASS(-1 != codec->SetSendCodec(channel_id, cinst)) {
-        err = voe_base_->LastError();
-        TEST_MUSTPASS(err != VE_INVALID_ARGUMENT);
-      }
-      ANL();
-    } else if (STR_CASE_CMP("opus", cinst.plname) == 0) {
-      // Valid Opus rates are 6000 - 510000, listing some of them here
-      int valid_rates[7] = {6000, 24000, 36000, 48000, 64000, 120000, 400000};
-      for (i = 0; i < static_cast<int>(sizeof(valid_rates) / sizeof(int));
-           i++) {
-        cinst.rate = valid_rates[i];
-        TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-        TEST_LOG("%d ", cinst.rate);
-      }
-      cinst.rate = 5999;  // invalid
-      TEST_MUSTPASS(-1 != codec->SetSendCodec(channel_id, cinst)) {
-        err = voe_base_->LastError();
-        TEST_MUSTPASS(err != VE_INVALID_ARGUMENT);
-      }
-      cinst.rate = 511000;  // invalid
-      TEST_MUSTPASS(-1 != codec->SetSendCodec(channel_id, cinst)) {
-        err = voe_base_->LastError();
-        TEST_MUSTPASS(err != VE_INVALID_ARGUMENT);
-      }
-      ANL();
-    } else {
-      // Use default rate for all other codecs.
-      cinst.rate = defaultCodec.rate;
-      TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-      TEST_LOG("%d ", cinst.rate);
-      cinst.rate = defaultCodec.rate + 17;
-      TEST_MUSTPASS(!codec->SetSendCodec(channel_id, cinst));
-      err = voe_base_->LastError();
-      TEST_MUSTPASS(err != VE_INVALID_ARGUMENT);
-      ANL();
-    }
-    cinst.rate = defaultCodec.rate;
-
-    // run some extra tests for L16
-    if (_stricmp("l16", cinst.plname) == 0) {
-      if (8000 == cinst.plfreq) {
-        // valid pacsizes: 80, 160, 240, 320
-        cinst.pacsize = 480;  // only supported in combination with 16kHz
-        TEST_MUSTPASS(-1 != codec->SetSendCodec(channel_id, cinst));
-        err = voe_base_->LastError();
-        TEST_MUSTPASS(err != VE_INVALID_ARGUMENT);
-        cinst.pacsize = 640;  // only supported in combination with 16kHz
-        TEST_MUSTPASS(-1 != codec->SetSendCodec(channel_id, cinst));
-        err = voe_base_->LastError();
-        TEST_MUSTPASS(err != VE_INVALID_ARGUMENT);
-      } else {
-        // valid pacsizes: 160, 320, 480, 640
-        cinst.pacsize = 80;  // only supported in combination with 8kHz
-        TEST_MUSTPASS(-1 != codec->SetSendCodec(channel_id, cinst));
-        err = voe_base_->LastError();
-        TEST_MUSTPASS(err != VE_INVALID_ARGUMENT);
-        cinst.pacsize = 240;  // only supported in combination with 8kHz
-        TEST_MUSTPASS(-1 != codec->SetSendCodec(channel_id, cinst));
-        err = voe_base_->LastError();
-        TEST_MUSTPASS(err != VE_INVALID_ARGUMENT);
-      }
-    }
-    ANL();
-  }  // for (int index = 0; index < nCodecs; index++)
-
-  // restore PCMU
-  const CodecInst tmp = {0, "PCMU", 8000, 160, 1, 64000};
-  TEST_MUSTPASS(codec->SetSendCodec(channel_id, tmp));
-
-  ANL();
-  AOK();
-  ANL();
-
-  ///////
-  // VAD
-
-  const int VADSleep = 0;
-
-  bool disabledDTX;
-  VadModes mode;
-  bool enabled;
-
-  // verify default settings (should be OFF, kVadConventional and DTX enabled)
-  TEST_MUSTPASS(codec->GetVADStatus(channel_id, enabled, mode, disabledDTX));
-  TEST_LOG(
-      "VAD: enabled=%d, mode=%d, disabledDTX=%d\n", enabled, mode, disabledDTX);
-  TEST_MUSTPASS(enabled != false);
-  TEST_MUSTPASS(mode != kVadConventional);
-  TEST_MUSTPASS(disabledDTX != true);
-
-  // enable default VAD settings
-  TEST_MUSTPASS(codec->SetVADStatus(channel_id, true));
-  TEST_MUSTPASS(codec->GetVADStatus(channel_id, enabled, mode, disabledDTX));
-  TEST_LOG(
-      "VAD: enabled=%d, mode=%d, disabledDTX=%d\n", enabled, mode, disabledDTX);
-  TEST_MUSTPASS(enabled != true);
-  TEST_MUSTPASS(mode != kVadConventional);
-  TEST_MUSTPASS(disabledDTX != false);
-  SleepMs(VADSleep);
-
-  // set kVadConventional mode
-  TEST_MUSTPASS(codec->SetVADStatus(channel_id, true, kVadConventional));
-  TEST_MUSTPASS(codec->GetVADStatus(channel_id, enabled, mode, disabledDTX));
-  TEST_LOG(
-      "VAD: enabled=%d, mode=%d, disabledDTX=%d\n", enabled, mode, disabledDTX);
-  TEST_MUSTPASS(mode != kVadConventional);
-  SleepMs(VADSleep);
-
-  // set kVadAggressiveLow mode
-  TEST_MUSTPASS(codec->SetVADStatus(channel_id, true, kVadAggressiveLow));
-  TEST_MUSTPASS(codec->GetVADStatus(channel_id, enabled, mode, disabledDTX));
-  TEST_LOG(
-      "VAD: enabled=%d, mode=%d, disabledDTX=%d\n", enabled, mode, disabledDTX);
-  TEST_MUSTPASS(mode != kVadAggressiveLow);
-  SleepMs(VADSleep);
-
-  // set kVadAggressiveMid mode
-  TEST_MUSTPASS(codec->SetVADStatus(channel_id, true, kVadAggressiveMid));
-  TEST_MUSTPASS(codec->GetVADStatus(channel_id, enabled, mode, disabledDTX));
-  TEST_LOG(
-      "VAD: enabled=%d, mode=%d, disabledDTX=%d\n", enabled, mode, disabledDTX);
-  TEST_MUSTPASS(mode != kVadAggressiveMid);
-  SleepMs(VADSleep);
-
-  // set kVadAggressiveMid mode
-  TEST_MUSTPASS(codec->SetVADStatus(channel_id, true, kVadAggressiveHigh));
-  TEST_MUSTPASS(codec->GetVADStatus(channel_id, enabled, mode, disabledDTX));
-  TEST_LOG(
-      "VAD: enabled=%d, mode=%d, disabledDTX=%d\n", enabled, mode, disabledDTX);
-  TEST_MUSTPASS(mode != kVadAggressiveHigh);
-  SleepMs(VADSleep);
-
-  // turn DTX OFF (audio should not be affected by VAD decisions)
-  TEST_MUSTPASS(codec->SetVADStatus(channel_id, true, kVadConventional, true));
-  TEST_MUSTPASS(codec->GetVADStatus(channel_id, enabled, mode, disabledDTX));
-  TEST_LOG(
-      "VAD: enabled=%d, mode=%d, disabledDTX=%d\n", enabled, mode, disabledDTX);
-  TEST_MUSTPASS(disabledDTX != true);
-  SleepMs(VADSleep);
-
-  // try to enable DTX again (should fail since VAD is disabled)
-  TEST_MUSTPASS(
-      codec->SetVADStatus(channel_id, false, kVadConventional, false));
-  TEST_MUSTPASS(codec->GetVADStatus(channel_id, enabled, mode, disabledDTX));
-  TEST_LOG(
-      "VAD: enabled=%d, mode=%d, disabledDTX=%d\n", enabled, mode, disabledDTX);
-  TEST_MUSTPASS(disabledDTX == false);
-  SleepMs(VADSleep);
-
-  // disable VAD
-  TEST_MUSTPASS(codec->SetVADStatus(channel_id, false));
-  TEST_MUSTPASS(codec->GetVADStatus(channel_id, enabled, mode, disabledDTX));
-  TEST_LOG(
-      "VAD: enabled=%d, mode=%d, disabledDTX=%d\n", enabled, mode, disabledDTX);
-  TEST_MUSTPASS(enabled != false);
-  SleepMs(VADSleep);
-
-  // restore default VAD
-  TEST_MUSTPASS(codec->SetVADStatus(channel_id, true));
-  TEST_MUSTPASS(codec->SetVADStatus(channel_id, false));
-  TEST_MUSTPASS(codec->GetVADStatus(channel_id, enabled, mode, disabledDTX));
-  TEST_LOG(
-      "VAD: enabled=%d, mode=%d, disabledDTX=%d\n", enabled, mode, disabledDTX);
-  TEST_MUSTPASS(enabled != false);
-  TEST_MUSTPASS(mode != kVadConventional);
-  TEST_MUSTPASS(disabledDTX != true);
-  SleepMs(VADSleep);
-
-  AOK();
-  ANL();
-  ANL();
-
-  //////////////////////
-  // GetRecCodec
-  TEST(GetRecCodec);
-  ANL();
-
-  // stop all streaming first
-  TEST_MUSTPASS(voe_base_->StopPlayout(channel_id));
-  TEST_MUSTPASS(voe_base_->StopSend(channel_id));
-  TEST_MUSTPASS(voe_base_->StopReceive(channel_id));
-
-  // start loopback streaming (PCMU is default)
-  TEST_MUSTPASS(voe_base_->StartReceive(channel_id));
-  TEST_MUSTPASS(voe_base_->StartPlayout(channel_id));
-  TEST_MUSTPASS(voe_base_->StartSend(channel_id));
-  SleepMs(100);  // ensure that at least one packets is received
-
-  // scan all supported and valid codecs
-  CodecInst newCodec;
-  for (i = 0; i < codec->NumOfCodecs(); i++) {
-    TEST_MUSTPASS(codec->GetCodec(i, newCodec));
-    // test all valid send codecs
-    if (!_stricmp("red", newCodec.plname) || !_stricmp("cn", newCodec.plname) ||
-        !_stricmp("telephone-event", newCodec.plname)) {
-      continue;  // Ignore these
-    }
-    if (-1 != codec->SetSendCodec(channel_id, newCodec)) {
-      SleepMs(150);
-      // verify correct detection
-      TEST_MUSTPASS(codec->GetRecCodec(channel_id, cinst));
-      TEST_LOG("%s %s ", newCodec.plname, cinst.plname);
-      TEST_MUSTPASS(_stricmp(newCodec.plname, cinst.plname) != 0);
-      TEST_MUSTPASS(cinst.pltype != newCodec.pltype);
-      TEST_MUSTPASS(cinst.plfreq != newCodec.plfreq);
-    }
-  }
-
-  // stop streaming
-  TEST_MUSTPASS(voe_base_->StopPlayout(channel_id));
-  TEST_MUSTPASS(voe_base_->StopSend(channel_id));
-  TEST_MUSTPASS(voe_base_->StopReceive(channel_id));
-
-  ANL();
-  AOK();
-  ANL();
-  ANL();
-
-#ifdef WEBRTC_CODEC_AMR
-  //////////////////////////
-  // SetAMREncFormat
-
-  // Fresh channel
-  TEST_MUSTPASS(voe_base_->DeleteChannel(channel_id));
-  TEST_MUSTPASS(voe_base_->CreateChannel());
-
-  TEST(SetAMREncFormat);
-  ANL();
-
-  // set another codec which is not AMR
-  TEST_MUSTPASS(codec->GetCodec(channel_id, cinst));
-  TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-  // try to change the encode format, tests should fail
-  TEST_MUSTPASS(-1 != codec->SetAMREncFormat(channel_id));
-  MARK();
-  TEST_MUSTPASS(-1 != codec->SetAMREncFormat(channel_id, kRfc3267BwEfficient));
-  MARK();
-  TEST_MUSTPASS(-1 != codec->SetAMREncFormat(channel_id, kRfc3267OctetAligned));
-  MARK();
-  TEST_MUSTPASS(-1 != codec->SetAMREncFormat(channel_id, kRfc3267FileStorage));
-  MARK();
-
-  // set AMR as encoder
-  strcpy(cinst.plname, "AMR");
-  cinst.channels = 1;
-  cinst.plfreq = 8000;
-  cinst.rate = 12200;
-  cinst.pltype = 112;
-  cinst.pacsize = 160;
-  TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-  // try to change the encode format, tests should pass
-  TEST_MUSTPASS(codec->SetAMREncFormat(channel_id));
-  MARK();
-  TEST_MUSTPASS(codec->SetAMREncFormat(channel_id, kRfc3267BwEfficient));
-  MARK();
-  TEST_MUSTPASS(codec->SetAMREncFormat(channel_id, kRfc3267OctetAligned));
-  MARK();
-  TEST_MUSTPASS(codec->SetAMREncFormat(channel_id, kRfc3267FileStorage));
-  MARK();
-  TEST_MUSTPASS(-1 != codec->SetAMREncFormat(-1));
-  MARK();
-  TEST_MUSTPASS(codec->SetAMREncFormat(channel_id));
-  MARK();  // restore default
-
-  ANL();
-  AOK();
-  ANL();
-
-  //////////////////////////
-  // SetAMRDecFormat
-
-  TEST(SetAMRDecFormat);
-  ANL();
-
-  // It should not be possible to set AMR dec format before valid AMR decoder
-  // is registered
-  TEST_MUSTPASS(!codec->SetAMRDecFormat(channel_id));
-  MARK();
-  err = voe_base_->LastError();
-  TEST_MUSTPASS(err != VE_AUDIO_CODING_MODULE_ERROR);
-
-  // Ensure that ACM::RegisterReceiveCodec(AMR) is called
-  TEST_MUSTPASS(codec->SetRecPayloadType(channel_id, cinst));
-
-  // All these tests should now pass
-  TEST_MUSTPASS(codec->SetAMRDecFormat(channel_id));
-  MARK();
-  TEST_MUSTPASS(codec->SetAMRDecFormat(channel_id, kRfc3267BwEfficient));
-  MARK();
-  TEST_MUSTPASS(codec->SetAMRDecFormat(channel_id, kRfc3267OctetAligned));
-  MARK();
-  TEST_MUSTPASS(codec->SetAMRDecFormat(channel_id, kRfc3267FileStorage));
-  MARK();
-  TEST_MUSTPASS(-1 != codec->SetAMRDecFormat(-1));
-  MARK();
-  TEST_MUSTPASS(codec->SetAMRDecFormat(channel_id));
-  MARK();  // restore default
-
-  ANL();
-  AOK();
-  ANL();
-#endif  // #ifdef WEBRTC_CODEC_AMR
-#ifdef WEBRTC_CODEC_AMRWB
-  //////////////////////////
-  // SetAMRWbEncFormat
-
-  // Fresh channel
-  TEST_MUSTPASS(voe_base_->DeleteChannel(channel_id));
-  TEST_MUSTPASS(voe_base_->CreateChannel());
-
-  TEST(SetAMRWbEncFormat);
-  ANL();
-
-  // set another codec which is not AMR-wb
-  TEST_MUSTPASS(codec->GetCodec(channel_id, cinst));
-  TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-  // try to change the encode format, tests should fail
-  TEST_MUSTPASS(-1 != codec->SetAMRWbEncFormat(channel_id));
-  MARK();
-  TEST_MUSTPASS(-1 !=
-                codec->SetAMRWbEncFormat(channel_id, kRfc3267BwEfficient));
-  MARK();
-  TEST_MUSTPASS(-1 !=
-                codec->SetAMRWbEncFormat(channel_id, kRfc3267OctetAligned));
-  MARK();
-  TEST_MUSTPASS(-1 !=
-                codec->SetAMRWbEncFormat(channel_id, kRfc3267FileStorage));
-  MARK();
-
-  // set AMR-wb as encoder
-  strcpy(cinst.plname, "AMR-WB");
-  cinst.channels = 1;
-  cinst.plfreq = 16000;
-  cinst.rate = 20000;
-  cinst.pltype = 112;
-  cinst.pacsize = 320;
-  TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-  // try to change the encode format, tests should pass
-  TEST_MUSTPASS(codec->SetAMRWbEncFormat(channel_id));
-  MARK();
-  TEST_MUSTPASS(codec->SetAMRWbEncFormat(channel_id, kRfc3267BwEfficient));
-  MARK();
-  TEST_MUSTPASS(codec->SetAMRWbEncFormat(channel_id, kRfc3267OctetAligned));
-  MARK();
-  TEST_MUSTPASS(codec->SetAMRWbEncFormat(channel_id, kRfc3267FileStorage));
-  MARK();
-  TEST_MUSTPASS(-1 != codec->SetAMRWbEncFormat(-1));
-  MARK();
-  TEST_MUSTPASS(codec->SetAMRWbEncFormat(channel_id));
-  MARK();  // restore default
-
-  ANL();
-  AOK();
-  ANL();
-
-  //////////////////////////
-  // SetAMRDecFormat
-
-  TEST(SetAMRWbDecFormat);
-  ANL();
-
-  // It should not be possible to set AMR dec format before valid AMR decoder
-  // is registered
-  TEST_MUSTPASS(!codec->SetAMRWbDecFormat(channel_id));
-  MARK();
-  err = voe_base_->LastError();
-  TEST_MUSTPASS(err != VE_AUDIO_CODING_MODULE_ERROR);
-
-  // Ensure that ACM::RegisterReceiveCodec(AMR) is called
-  TEST_MUSTPASS(codec->SetRecPayloadType(channel_id, cinst));
-
-  // All these tests should now pass
-  TEST_MUSTPASS(codec->SetAMRWbDecFormat(channel_id));
-  MARK();
-  TEST_MUSTPASS(codec->SetAMRWbDecFormat(channel_id, kRfc3267BwEfficient));
-  MARK();
-  TEST_MUSTPASS(codec->SetAMRWbDecFormat(channel_id, kRfc3267OctetAligned));
-  MARK();
-  TEST_MUSTPASS(codec->SetAMRWbDecFormat(channel_id, kRfc3267FileStorage));
-  MARK();
-  TEST_MUSTPASS(-1 != codec->SetAMRWbDecFormat(-1));
-  MARK();
-  TEST_MUSTPASS(codec->SetAMRWbDecFormat(channel_id));
-  MARK();  // restore default
-
-  ANL();
-  AOK();
-  ANL();
-#endif  // #ifdef WEBRTC_CODEC_AMRWB
-        ///////////////////////////////
-  // SetSendCNPayloadType
-  TEST(SetSendCNPayloadType);
-  ANL();
-
-  TEST_MUSTPASS(-1 != codec->SetSendCNPayloadType(-1, 0));
-  MARK();  // invalid channel
-
-  // Invalid payload range (only dynamic range [96,127]
-  TEST_MUSTPASS(-1 != codec->SetSendCNPayloadType(channel_id, 0));
-  MARK();  // invalid PT
-  TEST_MUSTPASS(-1 != codec->SetSendCNPayloadType(channel_id, 95));
-  MARK();  // invalid PT
-  TEST_MUSTPASS(-1 != codec->SetSendCNPayloadType(channel_id, 128));
-  MARK();  // invalid PT
-  TEST_MUSTPASS(-1 != codec->SetSendCNPayloadType(channel_id, -1));
-  MARK();  // invalid PT
-
-  // Not possible to change PT for 8000
-  TEST_MUSTPASS(!codec->SetSendCNPayloadType(channel_id, 96, kFreq8000Hz));
-  MARK();
-  err = voe_base_->LastError();
-  TEST_MUSTPASS(err != VE_INVALID_PLFREQ);
-
-  // Try some dynamic for 16000 and 32000 as well
-  TEST_MUSTPASS(codec->SetSendCNPayloadType(channel_id, 96, kFreq16000Hz));
-  MARK();
-  TEST_MUSTPASS(codec->SetSendCNPayloadType(channel_id, 96, kFreq32000Hz));
-  MARK();  // same should work
-  TEST_MUSTPASS(codec->SetSendCNPayloadType(channel_id, 127, kFreq16000Hz));
-  MARK();
-  TEST_MUSTPASS(codec->SetSendCNPayloadType(channel_id, 127, kFreq32000Hz));
-  MARK();
-  TEST_MUSTPASS(codec->SetSendCNPayloadType(channel_id, 100, kFreq32000Hz));
-  MARK();
-
-  ANL();
-  AOK();
-  ANL();
-
-  /////////////////////////////
-  // SetRecPayloadType
-  TEST(SetRecPayloadType);
-  ANL();
-
-  // scan all supported and valid codecs without changing payloads
-  nCodecs = codec->NumOfCodecs();
-  for (i = 0; i < nCodecs; i++) {
-    TEST_MUSTPASS(codec->GetCodec(i, newCodec));
-    // If no default payload type is defined, we use 127
-    if (-1 == newCodec.pltype) {
-      newCodec.pltype = 127;
-    }
-    TEST_MUSTPASS(codec->SetRecPayloadType(channel_id, newCodec));
-    MARK();  // use default
-    newCodec.pltype = 99;
-    TEST_MUSTPASS(codec->SetRecPayloadType(channel_id, newCodec));
-    MARK();  // use same PT on all
-    newCodec.pltype = -1;
-    TEST_MUSTPASS(codec->SetRecPayloadType(channel_id, newCodec));
-    MARK();  // deregister all PTs
-  }
-
-  ANL();
-  AOK();
-  ANL();
-
-  /////////////////////////////
-  // GetRecPayloadType
-  TEST(GetRecPayloadType);
-  ANL();
-
-  CodecInst extraCodec;
-  for (i = 0; i < nCodecs; i++) {
-    // Set defaults
-    TEST_MUSTPASS(codec->GetCodec(i, newCodec));
-    // If no default payload type is defined, we use 127
-    if (-1 == newCodec.pltype) {
-      newCodec.pltype = 127;
-    }
-    TEST_MUSTPASS(codec->SetRecPayloadType(channel_id, newCodec));
-    // TEST_LOG("[%2d] %s (SetRec): fs=%d, pt=%d, rate=%d, ch=%d, size=%d\n",
-    //  i, newCodec.plname, newCodec.plfreq, newCodec.pltype, newCodec.rate,
-    // newCodec.channels, newCodec.pacsize);
-    extraCodec.pltype = -1;  // don't know this yet
-    extraCodec.plfreq = newCodec.plfreq;
-    extraCodec.rate = newCodec.rate;
-    extraCodec.channels = newCodec.channels;
-    strcpy(extraCodec.plname, newCodec.plname);
-    // Verfify that setting is OK
-    TEST_MUSTPASS(codec->GetRecPayloadType(channel_id, extraCodec));
-    // TEST_LOG("[%2d] %s (GetRec): fs=%d, pt=%d, rate=%d, ch=%d, size=%d\n",
-    //  i, extraCodec.plname, extraCodec.plfreq, extraCodec.pltype,
-    // extraCodec.rate, extraCodec.channels, extraCodec.pacsize);
-    TEST_MUSTPASS(newCodec.pltype != extraCodec.pltype);
-    TEST_MUSTPASS(newCodec.plfreq != extraCodec.plfreq);
-    TEST_MUSTPASS(newCodec.channels != extraCodec.channels);
-  }
-
-  AOK();
-  ANL();
-
-  ////////////////////////////////////////////////////
-  // SetRecPayloadType - remove receive codecs
-  TEST(SetRecPayloadType - removing receive codecs);
-  ANL();
-
-  TEST_MUSTPASS(voe_base_->StartSend(channel_id));
-  if (file) {
-    TEST_MUSTPASS(file->StartPlayingFileAsMicrophone(
-        channel_id, _mgr.AudioFilename(), true, true));
-  }
-
-  // Scan all supported and valid codecs and remove from receiving db, then
-  // restore
-  nCodecs = codec->NumOfCodecs();
-  for (i = 0; i < nCodecs; i++) {
-    TEST_MUSTPASS(codec->GetCodec(i, cinst));
-    if (!_stricmp("red", cinst.plname) || !_stricmp("cn", cinst.plname) ||
-        !_stricmp("telephone-event", cinst.plname)) {
-      continue;  // Ignore these
-    }
-    TEST_LOG("Testing codec: %s", cinst.plname);
-    fflush(NULL);
-
-    if (-1 == cinst.pltype) {
-      // If no default payload type is defined, we use 127,
-      // codec is not registered for receiving
-      cinst.pltype = 127;
-    } else {
-      // Remove codec
-      memcpy(&extraCodec, &cinst, sizeof(CodecInst));
-      extraCodec.pltype = -1;
-      TEST_MUSTPASS(codec->SetRecPayloadType(channel_id, extraCodec));
-    }
-
-    // Set send codec
-    TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-
-    // Verify no audio
-    TEST_MUSTPASS(voe_base_->StartReceive(channel_id));
-    TEST_MUSTPASS(voe_base_->StartPlayout(channel_id));
-    TEST_LOG("  silence");
-    fflush(NULL);
-    SleepMs(800);
-    TEST_MUSTPASS(voe_base_->StopPlayout(channel_id));
-    TEST_MUSTPASS(voe_base_->StopReceive(channel_id));
-
-    // Restore codec
-    TEST_MUSTPASS(codec->SetRecPayloadType(channel_id, cinst));
-
-    // Verify audio
-    TEST_MUSTPASS(voe_base_->StartReceive(channel_id));
-    TEST_MUSTPASS(voe_base_->StartPlayout(channel_id));
-    TEST_LOG("  audio");
-    fflush(NULL);
-    SleepMs(800);
-    TEST_MUSTPASS(voe_base_->StopPlayout(channel_id));
-    TEST_MUSTPASS(voe_base_->StopReceive(channel_id));
-
-    if (127 == cinst.pltype) {
-      // If no default payload type is defined, i.e. we have set pt to
-      // 127 above,
-      // make sure we remove codec from receiving
-      cinst.pltype = -1;
-      TEST_MUSTPASS(codec->SetRecPayloadType(channel_id, cinst));
-    }
-
-    ANL();
-  }
-
-  // Remove certain codecs
-  TEST_LOG("Removing receive codecs:");
-  for (i = 0; i < nCodecs; i++) {
-    TEST_MUSTPASS(codec->GetCodec(i, cinst));
-    if (!_stricmp("ipcmwb", cinst.plname) || !_stricmp("pcmu", cinst.plname) ||
-        !_stricmp("eg711a", cinst.plname)) {
-      TEST_LOG(" %s", cinst.plname);
-      memcpy(&extraCodec, &cinst, sizeof(CodecInst));
-      extraCodec.pltype = -1;
-      TEST_MUSTPASS(codec->SetRecPayloadType(channel_id, extraCodec));
-    }
-  }
-  ANL();
-
-  TEST_MUSTPASS(voe_base_->StartReceive(channel_id));
-  TEST_MUSTPASS(voe_base_->StartPlayout(channel_id));
-
-  // Test sending all codecs - verify audio/no audio depending on codec
-  TEST_LOG("Looping through send codecs \n");
-  TEST_LOG("Verify that removed codecs are not audible and the other are \n");
-  for (i = 0; i < nCodecs; i++) {
-    TEST_MUSTPASS(codec->GetCodec(i, cinst));
-    if (!_stricmp("red", cinst.plname) || !_stricmp("cn", cinst.plname) ||
-        !_stricmp("telephone-event", cinst.plname)) {
-      continue;  // Ignore these
-    }
-    TEST_LOG("Testing codec: %s \n", cinst.plname);
-
-    // If no default payload type is defined, we use 127 and set receive
-    // payload type
-    if (-1 == cinst.pltype) {
-      cinst.pltype = 127;
-      TEST_MUSTPASS(voe_base_->StopPlayout(channel_id));
-      TEST_MUSTPASS(voe_base_->StopReceive(channel_id));
-      TEST_MUSTPASS(codec->SetRecPayloadType(channel_id, cinst));
-      TEST_MUSTPASS(voe_base_->StartReceive(channel_id));
-      TEST_MUSTPASS(voe_base_->StartPlayout(channel_id));
-    }
-
-    // Set send codec
-    TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-
-    // Verify audio/no audio
-    SleepMs(800);
-  }
-
-  TEST_MUSTPASS(voe_base_->StopPlayout(channel_id));
-  TEST_MUSTPASS(voe_base_->StopReceive(channel_id));
-
-  // Restore codecs
-  TEST_LOG("Restoring receive codecs:");
-  for (i = 0; i < nCodecs; i++) {
-    TEST_MUSTPASS(codec->GetCodec(i, cinst));
-    if (!_stricmp("ipcmwb", cinst.plname) || !_stricmp("pcmu", cinst.plname) ||
-        !_stricmp("eg711a", cinst.plname)) {
-      TEST_LOG(" %s", cinst.plname);
-      memcpy(&extraCodec, &cinst, sizeof(CodecInst));
-      TEST_MUSTPASS(codec->SetRecPayloadType(channel_id, cinst));
-    }
-  }
-  ANL();
-
-  TEST_MUSTPASS(voe_base_->StartReceive(channel_id));
-  TEST_MUSTPASS(voe_base_->StartPlayout(channel_id));
-
-  // Test sending all codecs - verify audio
-  TEST_LOG("Looping through send codecs \n");
-  TEST_LOG("Verify that all codecs are audible \n");
-  for (i = 0; i < nCodecs; i++) {
-    TEST_MUSTPASS(codec->GetCodec(i, cinst));
-    if (!_stricmp("red", cinst.plname) || !_stricmp("cn", cinst.plname) ||
-        !_stricmp("telephone-event", cinst.plname)) {
-      continue;  // Ignore these
-    }
-    TEST_LOG("Testing codec: %s \n", cinst.plname);
-
-    // If no default payload type is defined, we use 127 and set receive
-    // payload type
-    if (-1 == cinst.pltype) {
-      cinst.pltype = 127;
-      TEST_MUSTPASS(voe_base_->StopPlayout(channel_id));
-      TEST_MUSTPASS(voe_base_->StopReceive(channel_id));
-      TEST_MUSTPASS(codec->SetRecPayloadType(channel_id, cinst));
-      TEST_MUSTPASS(voe_base_->StartReceive(channel_id));
-      TEST_MUSTPASS(voe_base_->StartPlayout(channel_id));
-    }
-
-    // Set send codec
-    TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-
-    // Verify audio/no audio
-    SleepMs(800);
-  }
-
-  TEST_MUSTPASS(voe_base_->StopPlayout(channel_id));
-  TEST_MUSTPASS(voe_base_->StopSend(channel_id));
-  TEST_MUSTPASS(voe_base_->StopReceive(channel_id));
-
-  // Fresh channel
-  TEST_MUSTPASS(voe_base_->DeleteChannel(channel_id));
-  channel_id = voe_base_->CreateChannel();
-  TEST_MUSTPASS(channel_id == -1);
-
-#if defined(WEBRTC_CODEC_ISAC)
-
-  /////////////////////////////////////
-  // SetISACInitTargetRate - wb
-  TEST(SetISACInitTargetRate);
-  ANL();
-
-  // set PCMU as sending codec
-  cinst.channels = 1;
-  cinst.pacsize = 160;
-  cinst.plfreq = 8000;
-  strcpy(cinst.plname, "PCMU");
-  cinst.pltype = 0;
-  cinst.rate = 64000;
-  TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-
-  TEST_MUSTPASS(!codec->SetISACInitTargetRate(channel_id, 10000));
-  MARK();  // should fail since iSAC is not active
-  err = voe_base_->LastError();
-  TEST_MUSTPASS(err != VE_CODEC_ERROR);
-
-  // set iSAC as sending codec (16kHz)
-  cinst.channels = 1;
-  cinst.plfreq = 16000;
-  strcpy(cinst.plname, "ISAC");
-  cinst.pltype = 103;
-  cinst.rate = -1;      // adaptive rate
-  cinst.pacsize = 480;  // 30ms
-  TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-
-  TEST_MUSTPASS(!codec->SetISACInitTargetRate(channel_id + 1, 10000));
-  MARK();  // invalid channel
-  err = voe_base_->LastError();
-  TEST_MUSTPASS(err != VE_CHANNEL_NOT_VALID);
-
-  TEST_MUSTPASS(!codec->SetISACInitTargetRate(channel_id, 500));
-  MARK();  // invalid target rates (too small)
-  err = voe_base_->LastError();
-  TEST_MUSTPASS(err != VE_INVALID_ARGUMENT);
-
-  TEST_MUSTPASS(!codec->SetISACInitTargetRate(channel_id, 33000));
-  MARK();  // invalid target rates (too large)
-  err = voe_base_->LastError();
-  TEST_MUSTPASS(err != VE_INVALID_ARGUMENT);
-
-  TEST_MUSTPASS(codec->SetISACInitTargetRate(channel_id, 10000));
-  MARK();  // life is good now
-  TEST_MUSTPASS(codec->SetISACInitTargetRate(channel_id, 0));
-  MARK();  // 0 is a valid rate
-  TEST_MUSTPASS(codec->SetISACInitTargetRate(channel_id, 32000));
-  MARK();  // try max as well
-  TEST_MUSTPASS(codec->SetISACInitTargetRate(channel_id, 32000, true));
-  MARK();
-  TEST_MUSTPASS(codec->SetISACInitTargetRate(channel_id, 32000, false));
-  MARK();
-
-  cinst.pacsize = 960;  // 60ms
-  TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-  TEST_MUSTPASS(codec->SetISACInitTargetRate(channel_id, 32000, false));
-  MARK();
-
-  cinst.rate = 20000;
-  TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-  TEST_MUSTPASS(!codec->SetISACInitTargetRate(channel_id, 32000));
-  MARK();  // only works in adaptive mode
-  err = voe_base_->LastError();
-  TEST_MUSTPASS(err != VE_AUDIO_CODING_MODULE_ERROR);
-
-  cinst.rate = -1;
-  TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-  TEST_MUSTPASS(codec->SetISACInitTargetRate(channel_id, 32000));
-  MARK();  // back to adaptive mode
-
-  ANL();
-  AOK();
-  ANL();
-
-  /////////////////////////////////////
-  // SetISACInitTargetRate - swb
-  TEST(ISACSWB SetISACInitTargetRate);
-  ANL();
-
-  // set iSAC as sending codec
-  cinst.channels = 1;
-  cinst.plfreq = 32000;
-  strcpy(cinst.plname, "ISAC");
-  cinst.pltype = 104;
-  cinst.rate = -1;      // default rate
-  cinst.pacsize = 960;  // 30ms
-  TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-
-  TEST_MUSTPASS(!codec->SetISACInitTargetRate(channel_id + 1, 10000));
-  MARK();  // invalid channel
-  err = voe_base_->LastError();
-  TEST_MUSTPASS(err != VE_CHANNEL_NOT_VALID);
-
-  TEST_MUSTPASS(!codec->SetISACInitTargetRate(channel_id, -1));
-  MARK();  // invalid target rates (too small)
-  err = voe_base_->LastError();
-  TEST_MUSTPASS(err != VE_INVALID_ARGUMENT);
-  TEST_MUSTPASS(!codec->SetISACInitTargetRate(channel_id, -1));
-  MARK();  // invalid target rates (too small)
-  err = voe_base_->LastError();
-  TEST_MUSTPASS(err != VE_INVALID_ARGUMENT);
-
-  TEST_MUSTPASS(!codec->SetISACInitTargetRate(channel_id, 500));
-  MARK();  // invalid target rates (too small)
-  err = voe_base_->LastError();
-  TEST_MUSTPASS(err != VE_INVALID_ARGUMENT);
-
-  TEST_MUSTPASS(!codec->SetISACInitTargetRate(channel_id, 57000));
-  MARK();  // invalid target rates (valid range is [10000, 56000])
-
-  err = voe_base_->LastError();
-  TEST_MUSTPASS(err != VE_INVALID_ARGUMENT);
-
-  TEST_MUSTPASS(codec->SetISACInitTargetRate(channel_id, 10000));
-  MARK();
-  TEST_MUSTPASS(codec->SetISACInitTargetRate(channel_id, 0));
-  MARK();
-  TEST_MUSTPASS(codec->SetISACInitTargetRate(channel_id, 56000));
-  MARK();  // try max as well
-  TEST_MUSTPASS(codec->SetISACInitTargetRate(channel_id, 56000, true));
-  MARK();
-  TEST_MUSTPASS(codec->SetISACInitTargetRate(channel_id, 56000, false));
-  MARK();
-
-  ANL();
-  AOK();
-  ANL();
-
-  ////////////////////////////////
-  // SetISACMaxRate
-  TEST(SetISACMaxRate);
-  ANL();
-
-  // set PCMU as sending codec
-  cinst.channels = 1;
-  cinst.pacsize = 160;
-  cinst.plfreq = 8000;
-  strcpy(cinst.plname, "PCMU");
-  cinst.pltype = 0;
-  cinst.rate = 64000;
-  TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-
-  TEST_MUSTPASS(!codec->SetISACMaxRate(channel_id, 48000));
-  MARK();  // should fail since iSAC is not active
-  TEST_MUSTPASS(voe_base_->LastError() != VE_CODEC_ERROR);
-
-  // set iSAC as sending codec
-  cinst.channels = 1;
-  cinst.plfreq = 16000;
-  strcpy(cinst.plname, "ISAC");
-  cinst.pltype = 103;
-  cinst.rate = -1;      // adaptive rate
-  cinst.pacsize = 480;  // 30ms
-  TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-
-  TEST_MUSTPASS(!codec->SetISACMaxRate(channel_id + 1, 48000));
-  MARK();  // invalid channel
-  TEST_MUSTPASS(voe_base_->LastError() != VE_CHANNEL_NOT_VALID);
-
-  TEST_MUSTPASS(!codec->SetISACMaxRate(channel_id, 31900));
-  MARK();  // invalid target rates (too small)
-  TEST_MUSTPASS(voe_base_->LastError() != VE_INVALID_ARGUMENT);
-
-  TEST_MUSTPASS(!codec->SetISACMaxRate(channel_id, 53500));
-  MARK();  // invalid target rates (too large)
-  TEST_MUSTPASS(voe_base_->LastError() != VE_INVALID_ARGUMENT);
-
-  TEST_MUSTPASS(codec->SetISACMaxRate(channel_id, 32000));
-  MARK();  // life is good now
-  TEST_MUSTPASS(codec->SetISACMaxRate(channel_id, 40000));
-  MARK();
-  TEST_MUSTPASS(codec->SetISACMaxRate(channel_id, 48000));
-  MARK();
-  TEST_MUSTPASS(codec->SetISACMaxRate(channel_id, 53400));
-  MARK();  // try max as well (default)
-
-  cinst.pacsize = 960;  // 60ms
-  TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-  TEST_MUSTPASS(codec->SetISACMaxRate(channel_id, 48000));
-  MARK();
-
-  cinst.rate = 20000;
-  TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-  TEST_MUSTPASS(codec->SetISACMaxRate(channel_id, 40000));
-  MARK();  // also works in non-adaptive mode
-
-  ANL();
-  AOK();
-  ANL();
-
-  TEST(ISACSWB SetISACMaxRate);
-  ANL();
-  // set iSAC as sending codec
-  cinst.channels = 1;
-  cinst.plfreq = 32000;
-  strcpy(cinst.plname, "ISAC");
-  cinst.pltype = 104;
-  cinst.rate = 45000;   // instantaneous mode
-  cinst.pacsize = 960;  // 30ms
-  TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-
-  TEST_MUSTPASS(!codec->SetISACMaxRate(channel_id + 1, 48000));
-  MARK();  // invalid channel
-  TEST_MUSTPASS(voe_base_->LastError() != VE_CHANNEL_NOT_VALID);
-
-  TEST_MUSTPASS(!codec->SetISACMaxRate(channel_id, 31900));
-  MARK();  // invalid target rates (too small)
-  TEST_MUSTPASS(voe_base_->LastError() != VE_INVALID_ARGUMENT);
-
-  TEST_MUSTPASS(!codec->SetISACMaxRate(channel_id, 107500));
-  MARK();  // invalid target rates (too large)
-  TEST_MUSTPASS(voe_base_->LastError() != VE_INVALID_ARGUMENT);
-
-  TEST_MUSTPASS(codec->SetISACMaxRate(channel_id, 32000));
-  MARK();  // life is good now
-  TEST_MUSTPASS(codec->SetISACMaxRate(channel_id, 40000));
-  MARK();
-  TEST_MUSTPASS(codec->SetISACMaxRate(channel_id, 55000));
-  MARK();
-  TEST_MUSTPASS(codec->SetISACMaxRate(channel_id, 80000));
-  MARK();
-  TEST_MUSTPASS(codec->SetISACMaxRate(channel_id, 107000));
-  MARK();  // try max as well (default)
-
-  cinst.rate = -1;      // adaptive mode
-  cinst.pacsize = 960;  // 30ms
-  TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-
-  TEST_MUSTPASS(!codec->SetISACMaxRate(channel_id + 1, 48000));
-  MARK();  // invalid channel
-  TEST_MUSTPASS(voe_base_->LastError() != VE_CHANNEL_NOT_VALID);
-
-  TEST_MUSTPASS(!codec->SetISACMaxRate(channel_id, 31900));
-  MARK();  // invalid target rates (too small)
-  TEST_MUSTPASS(voe_base_->LastError() != VE_INVALID_ARGUMENT);
-
-  TEST_MUSTPASS(!codec->SetISACMaxRate(channel_id, 107500));
-  MARK();  // invalid target rates (too large)
-  TEST_MUSTPASS(voe_base_->LastError() != VE_INVALID_ARGUMENT);
-
-  TEST_MUSTPASS(codec->SetISACMaxRate(channel_id, 32000));
-  MARK();  // life is good now
-  TEST_MUSTPASS(codec->SetISACMaxRate(channel_id, 40000));
-  MARK();
-  TEST_MUSTPASS(codec->SetISACMaxRate(channel_id, 55000));
-  MARK();
-  TEST_MUSTPASS(codec->SetISACMaxRate(channel_id, 80000));
-  MARK();
-  TEST_MUSTPASS(codec->SetISACMaxRate(channel_id, 107000));
-  MARK();  // try max as well (default)
-
-  ANL();
-  AOK();
-  ANL();
-
-  ////////////////////////////////
-  // SetISACMaxPayloadSize
-  TEST(SetISACMaxPayloadSize);
-  ANL();
-
-  // set PCMU as sending codec
-  cinst.channels = 1;
-  cinst.pacsize = 160;
-  cinst.plfreq = 8000;
-  strcpy(cinst.plname, "PCMU");
-  cinst.pltype = 0;
-  cinst.rate = 64000;
-  TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-
-  TEST_MUSTPASS(!codec->SetISACMaxPayloadSize(channel_id, 120));
-  MARK();  // should fail since iSAC is not active
-  err = voe_base_->LastError();
-  TEST_MUSTPASS(err != VE_CODEC_ERROR);
-
-  // set iSAC as sending codec
-  cinst.channels = 1;
-  cinst.plfreq = 16000;
-  strcpy(cinst.plname, "ISAC");
-  cinst.pltype = 103;
-  cinst.rate = -1;      // adaptive rate
-  cinst.pacsize = 480;  // 30ms
-  TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-
-  TEST_MUSTPASS(!codec->SetISACMaxPayloadSize(channel_id + 1, 120));
-  MARK();  // invalid channel
-  err = voe_base_->LastError();
-  TEST_MUSTPASS(err != VE_CHANNEL_NOT_VALID);
-
-  TEST_MUSTPASS(!codec->SetISACMaxPayloadSize(channel_id, 100));
-  MARK();  // invalid size (too small)
-  err = voe_base_->LastError();
-  TEST_MUSTPASS(err != VE_INVALID_ARGUMENT);
-
-  TEST_MUSTPASS(!codec->SetISACMaxPayloadSize(channel_id, 410));
-  MARK();  // invalid size (too large)
-  err = voe_base_->LastError();
-  TEST_MUSTPASS(err != VE_INVALID_ARGUMENT);
-
-  TEST_MUSTPASS(codec->SetISACMaxPayloadSize(channel_id, 200));
-  MARK();  // life is good now
-  TEST_MUSTPASS(codec->SetISACMaxPayloadSize(channel_id, 120));
-  MARK();
-  TEST_MUSTPASS(codec->SetISACMaxPayloadSize(channel_id, 400));
-  MARK();
-
-  ANL();
-  AOK();
-  ANL();
-
-  TEST(ISACSWB SetISACMaxPayloadSize);
-  ANL();
-  // set iSAC as sending codec
-  cinst.channels = 1;
-  cinst.plfreq = 32000;
-  strcpy(cinst.plname, "ISAC");
-  cinst.pltype = 104;
-  cinst.rate = 45000;   // default rate
-  cinst.pacsize = 960;  // 30ms
-  TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-
-  TEST_MUSTPASS(!codec->SetISACMaxPayloadSize(channel_id + 1, 100));
-  MARK();  // invalid channel
-  err = voe_base_->LastError();
-  TEST_MUSTPASS(err != VE_CHANNEL_NOT_VALID);
-
-  TEST_MUSTPASS(!codec->SetISACMaxPayloadSize(channel_id, 100));
-  MARK();  // invalid size (too small)
-  err = voe_base_->LastError();
-  TEST_MUSTPASS(err != VE_INVALID_ARGUMENT);
-
-  TEST_MUSTPASS(!codec->SetISACMaxPayloadSize(channel_id, 610));
-  MARK();  // invalid size (too large)
-  err = voe_base_->LastError();
-  TEST_MUSTPASS(err != VE_INVALID_ARGUMENT);
-
-  TEST_MUSTPASS(codec->SetISACMaxPayloadSize(channel_id, 200));
-  MARK();  // life is good now
-  TEST_MUSTPASS(codec->SetISACMaxPayloadSize(channel_id, 120));
-  MARK();
-  TEST_MUSTPASS(codec->SetISACMaxPayloadSize(channel_id, 600));
-  MARK();
-
-  ANL();
-  AOK();
-  ANL();
-
-  // set iSAC as sending codec
-  // set iSAC-wb as sending codec
-  TEST_MUSTPASS(
-      voe_network->RegisterExternalTransport(channel_id, *ptrTransport));
-  TEST_MUSTPASS(voe_base_->StartPlayout(channel_id));
-  TEST_MUSTPASS(voe_base_->StartSend(channel_id));
-  TEST_MUSTPASS(voe_base_->StartReceive(channel_id));
-  std::string file_audio_long16 =
-      webrtc::test::ResourcePath("voice_engine/audio_long16", "pcm");
-  TEST_MUSTPASS(file->StartPlayingFileAsMicrophone(
-      channel_id, file_audio_long16.c_str(), true, true));
-  cinst.channels = 1;
-  TEST_LOG("Testing codec: Switch between iSAC-wb and iSAC-swb \n");
-  TEST_LOG("Testing codec: iSAC wideband \n");
-  strcpy(cinst.plname, "ISAC");
-  cinst.pltype = 103;
-  cinst.rate = -1;      // default rate
-  cinst.pacsize = 480;  // 30ms
-  cinst.plfreq = 16000;
-  TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-  SleepMs(2000);
-  TEST_LOG("             : iSAC superwideband \n");
-  cinst.pltype = 104;
-  cinst.rate = -1;      // default rate
-  cinst.pacsize = 960;  // 30ms
-  cinst.plfreq = 32000;
-  TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-  SleepMs(2000);
-  TEST_LOG("             : iSAC wideband \n");
-  strcpy(cinst.plname, "ISAC");
-  cinst.pltype = 103;
-  cinst.rate = -1;      // default rate
-  cinst.pacsize = 480;  // 30ms
-  cinst.plfreq = 16000;
-  TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-  SleepMs(2000);
-  TEST_LOG("             : iSAC superwideband \n");
-  cinst.pltype = 104;
-  cinst.rate = -1;      // default rate
-  cinst.pacsize = 960;  // 30ms
-  cinst.plfreq = 32000;
-  TEST_MUSTPASS(codec->SetSendCodec(channel_id, cinst));
-  SleepMs(2000);
-  TEST_MUSTPASS(voe_base_->StopPlayout(channel_id));
-  TEST_MUSTPASS(voe_base_->StopReceive(channel_id));
-  TEST_MUSTPASS(voe_base_->StopSend(channel_id));
-#else
-  TEST_LOG(
-      "Skipping extended iSAC API tests - "
-      "WEBRTC_CODEC_ISAC not defined\n");
-#endif  // #if defined(WEBRTC_CODEC_ISAC)
-  TEST_MUSTPASS(voe_network->DeRegisterExternalTransport(channel_id));
-  delete ptrTransport;
-
-  TEST_MUSTPASS(voe_base_->DeleteChannel(channel_id));
-  TEST_MUSTPASS(voe_base_->Terminate());
-
-  return 0;
-}
-
-// ----------------------------------------------------------------------------
-//  VoEExtendedTest::TestDtmf
-// ----------------------------------------------------------------------------
-
-int VoEExtendedTest::TestDtmf() {
-  PrepareTest("Dtmf");
-
-  VoEBase* voe_base_ = _mgr.BasePtr();
-  VoEDtmf* dtmf = _mgr.DtmfPtr();
-  VoECodec* codec = _mgr.CodecPtr();
-  VoEVolumeControl* volume = _mgr.VolumeControlPtr();
-  VoENetwork* voe_network = _mgr.NetworkPtr();
-
-  std::string output_path = webrtc::test::OutputPath();
-  TEST_MUSTPASS(
-      VoiceEngine::SetTraceFile((output_path + "VoEDtmf_trace.txt").c_str()));
-  TEST_MUSTPASS(VoiceEngine::SetTraceFilter(
-      kTraceStateInfo | kTraceStateInfo | kTraceWarning | kTraceError |
-      kTraceCritical | kTraceApiCall | kTraceMemory | kTraceInfo));
-  //#endif
-  TEST_MUSTPASS(voe_base_->Init());
-  TEST_MUSTPASS(voe_base_->CreateChannel());
-  scoped_ptr<VoiceChannelTransport> voice_channel_transport(
-      new VoiceChannelTransport(voe_network, 0));
-  voice_channel_transport->SetSendDestination("127.0.0.1", 12345);
-  voice_channel_transport->SetLocalReceiver(12345);
-  TEST_MUSTPASS(voe_base_->StartReceive(0));
-  TEST_MUSTPASS(voe_base_->StartSend(0));
-  TEST_MUSTPASS(voe_base_->StartPlayout(0));
-
-  ///////////////////////////
-  // Actual test starts here
-
-  // SetDtmfFeedbackStatus
-  TEST(SetDtmfFeedbackStatus & GetDtmfFeedbackStatus);
-  ANL();
-  bool dtmfFeedback = false, dtmfDirectFeedback = true;
-  TEST_MUSTPASS(dtmf->GetDtmfFeedbackStatus(dtmfFeedback, dtmfDirectFeedback));
-  TEST_MUSTPASS(!dtmfFeedback);
-  TEST_MUSTPASS(dtmfDirectFeedback);
-  TEST_MUSTPASS(dtmf->SendTelephoneEvent(0, 0));
-  MARK();
-  SleepMs(500);
-
-  TEST_MUSTPASS(dtmf->SetDtmfFeedbackStatus(false, false));
-  TEST_MUSTPASS(dtmf->GetDtmfFeedbackStatus(dtmfFeedback, dtmfDirectFeedback));
-  TEST_MUSTPASS(dtmfFeedback);
-  TEST_MUSTPASS(dtmfDirectFeedback);
-  TEST_MUSTPASS(dtmf->SendTelephoneEvent(0, 0));
-  MARK();
-  SleepMs(500);
-
-  TEST_MUSTPASS(dtmf->SetDtmfFeedbackStatus(false, true));
-  TEST_MUSTPASS(dtmf->GetDtmfFeedbackStatus(dtmfFeedback, dtmfDirectFeedback));
-  TEST_MUSTPASS(dtmfFeedback);
-  TEST_MUSTPASS(!dtmfDirectFeedback);
-  TEST_MUSTPASS(dtmf->SendTelephoneEvent(0, 0));
-  MARK();
-  SleepMs(500);
-
-  TEST_MUSTPASS(dtmf->SetDtmfFeedbackStatus(true, false));
-  TEST_MUSTPASS(dtmf->GetDtmfFeedbackStatus(dtmfFeedback, dtmfDirectFeedback));
-  TEST_MUSTPASS(!dtmfFeedback);
-  TEST_MUSTPASS(dtmfDirectFeedback);
-  TEST_MUSTPASS(dtmf->SendTelephoneEvent(0, 0));
-  MARK();
-  SleepMs(500);
-
-  TEST_MUSTPASS(dtmf->SetDtmfFeedbackStatus(true, true));
-  TEST_MUSTPASS(dtmf->GetDtmfFeedbackStatus(dtmfFeedback, dtmfDirectFeedback));
-  TEST_MUSTPASS(!dtmfFeedback);
-  TEST_MUSTPASS(!dtmfDirectFeedback);
-  TEST_MUSTPASS(dtmf->SendTelephoneEvent(0, 0));
-  MARK();
-  SleepMs(500);
-  TEST_MUSTPASS(dtmf->SetDtmfFeedbackStatus(false, false));
-
-  AOK();
-  ANL();
-
-  // SendDtmf
-  TEST(SendDtmf);
-  ANL();
-
-  // Fail tests
-  // Event
-  // the eventcode is changed to unsigned char, so -1 will be interpreted as
-  // 255, 256->0
-  TEST_MUSTPASS(!dtmf->SendTelephoneEvent(0, -1, false, 160, 10));
-  MARK();
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-  TEST_MUSTPASS(!dtmf->SendTelephoneEvent(0, 16, false, 160, 10));
-  MARK();
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-  // Length
-  TEST_MUSTPASS(!dtmf->SendTelephoneEvent(0, 0, true, 99, 10));
-  MARK();
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-  TEST_MUSTPASS(!dtmf->SendTelephoneEvent(0, 0, true, 60001, 10));
-  MARK();
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-  TEST_MUSTPASS(!dtmf->SendTelephoneEvent(0, 20, true, -1, 10));
-  MARK();
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-  // Volume
-  TEST_MUSTPASS(!dtmf->SendTelephoneEvent(0, 0, true, 160, -1));
-  MARK();
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-  TEST_MUSTPASS(!dtmf->SendTelephoneEvent(0, 0, true, 160, 37));
-  MARK();
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-  // Without sending
-  TEST_MUSTPASS(voe_base_->StopSend(0));
-  TEST_MUSTPASS(!dtmf->SendTelephoneEvent(0, 0, true));
-  MARK();
-  TEST_MUSTPASS(VE_NOT_SENDING != voe_base_->LastError());
-  TEST_MUSTPASS(voe_base_->StartSend(0));
-
-  // Testing Dtmf out-of-band: event, length and volume
-  TEST_MUSTPASS(dtmf->SendTelephoneEvent(0, 0, true));
-  MARK();
-  SleepMs(500);
-  TEST_MUSTPASS(dtmf->SendTelephoneEvent(0, 16, true));
-  MARK();
-  SleepMs(500);  // Flash, not audible
-  TEST_MUSTPASS(dtmf->SendTelephoneEvent(0, 0, true, 100, 10));
-  MARK();
-  SleepMs(500);
-  TEST_MUSTPASS(dtmf->SendTelephoneEvent(0, 0, true, 400, 10));
-  MARK();
-  SleepMs(500);
-  TEST_MUSTPASS(dtmf->SendTelephoneEvent(0, 0, true, 160, 0));
-  MARK();
-  SleepMs(500);
-  TEST_MUSTPASS(dtmf->SendTelephoneEvent(0, 0, true, 160, 36));
-  MARK();
-  SleepMs(500);
-
-  // Testing Dtmf inband: event, length and volume
-  TEST_MUSTPASS(dtmf->SendTelephoneEvent(0, 0, false));
-  MARK();
-  SleepMs(500);
-  TEST_MUSTPASS(dtmf->SendTelephoneEvent(0, 15, false));
-  MARK();
-  SleepMs(500);
-  TEST_MUSTPASS(dtmf->SendTelephoneEvent(0, 0, false, 100, 10));
-  MARK();
-  SleepMs(500);
-  TEST_MUSTPASS(dtmf->SendTelephoneEvent(0, 0, false, 400, 10));
-  MARK();
-  SleepMs(500);
-  TEST_MUSTPASS(dtmf->SendTelephoneEvent(0, 0, false, 160, 0));
-  MARK();
-  SleepMs(500);
-  TEST_MUSTPASS(dtmf->SendTelephoneEvent(0, 0, false, 160, 36));
-  MARK();
-  SleepMs(500);
-
-  // Testing other events out-of-band: event and length
-  // These are not audible
-  TEST_MUSTPASS(dtmf->SendTelephoneEvent(0, 17, true, 100, 10));
-  MARK();
-  SleepMs(200);
-  TEST_MUSTPASS(dtmf->SendTelephoneEvent(0, 32, true, 100, 10));
-  MARK();
-  SleepMs(200);
-  TEST_MUSTPASS(dtmf->SendTelephoneEvent(0, 78, true, 100, 10));
-  MARK();
-  SleepMs(200);
-  TEST_MUSTPASS(dtmf->SendTelephoneEvent(0, 255, true, 100, 10));
-  MARK();
-  SleepMs(200);
-  // the minimum length is 100 for the telephoneevent
-  TEST_MUSTPASS(dtmf->SendTelephoneEvent(0, 32, true, 100, 10));
-  MARK();
-  SleepMs(200);
-  TEST_MUSTPASS(dtmf->SendTelephoneEvent(0, 32, true, 1000, 10));
-  MARK();
-  SleepMs(1200);
-
-  AOK();
-  ANL();
-
-  // PlayDtmfTone
-  TEST(PlayDtmfTone);
-  ANL();
-  TEST_MUSTPASS(!dtmf->PlayDtmfTone(-1, 200, 10));
-  MARK();
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-  TEST_MUSTPASS(!dtmf->PlayDtmfTone(16, 200, 10));
-  MARK();
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-  TEST_MUSTPASS(!dtmf->PlayDtmfTone(0, 9, 10));
-  MARK();
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-  TEST_MUSTPASS(!dtmf->PlayDtmfTone(0, 200, -1));
-  MARK();
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-  TEST_MUSTPASS(!dtmf->PlayDtmfTone(0, 200, 37));
-  MARK();
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-
-  TEST_MUSTPASS(dtmf->PlayDtmfTone(0));
-  MARK();
-  SleepMs(500);
-  // the minimum length fo the DtmfTone is 100
-  TEST_MUSTPASS(dtmf->PlayDtmfTone(0, 100, 10));
-  MARK();
-  SleepMs(500);
-  TEST_MUSTPASS(dtmf->PlayDtmfTone(0, 2000, 10));
-  MARK();
-  SleepMs(2300);
-  TEST_MUSTPASS(dtmf->PlayDtmfTone(0, 200, 0));
-  MARK();
-  SleepMs(500);
-  TEST_MUSTPASS(dtmf->PlayDtmfTone(0, 200, 36));
-  MARK();
-  SleepMs(500);
-
-  AOK();
-  ANL();
-
-  // SetTelephoneEventDetection
-  TEST(SetTelephoneEventDetection);
-  ANL();
-  AOK();
-  ANL();
-
-  // Testing sending Dtmf under VAD/CN
-  TEST(SendDtmf - with VAD enabled);
-  ANL();
-  // Mute mic
-  TEST_MUSTPASS(volume->SetInputMute(0, true));
-  MARK();
-  // Enable VAD
-  TEST_MUSTPASS(codec->SetVADStatus(0, true));
-  MARK();
-  // Send Dtmf
-  TEST_MUSTPASS(dtmf->SendTelephoneEvent(0, 0, true, 400));
-  MARK();
-  SleepMs(1000);
-  TEST_MUSTPASS(dtmf->SendTelephoneEvent(0, 9, true, 400));
-  MARK();
-  SleepMs(1000);
-  TEST_MUSTPASS(dtmf->SendTelephoneEvent(0, 0, true, 400));
-  MARK();
-  SleepMs(1000);
-  TEST_MUSTPASS(dtmf->SendTelephoneEvent(0, 9, true, 400));
-  MARK();
-  SleepMs(1000);
-  // Switch codec
-  CodecInst ci;
-#if (!defined(WEBRTC_IOS) && !defined(WEBRTC_ANDROID))
-  ci.channels = 1;
-  ci.pacsize = 480;
-  ci.plfreq = 16000;
-  strcpy(ci.plname, "ISAC");
-  ci.pltype = 103;
-  ci.rate = -1;
-#else
-  ci.pltype = 119;
-  strcpy(ci.plname, "isaclc");
-  ci.plfreq = 16000;
-  ci.pacsize = 320;
-  ci.channels = 1;
-  ci.rate = 40000;
-#endif
-  TEST_MUSTPASS(codec->SetSendCodec(0, ci));
-  MARK();
-  // Send Dtmf
-  TEST_MUSTPASS(dtmf->SendTelephoneEvent(0, 0, true, 400));
-  MARK();
-  SleepMs(1000);
-  TEST_MUSTPASS(dtmf->SendTelephoneEvent(0, 9, true, 400));
-  MARK();
-  SleepMs(1000);
-  TEST_MUSTPASS(dtmf->SendTelephoneEvent(0, 0, true, 400));
-  MARK();
-  SleepMs(1000);
-  TEST_MUSTPASS(dtmf->SendTelephoneEvent(0, 9, true, 400));
-  MARK();
-  SleepMs(1000);
-  SleepMs(4000);
-  // Disable VAD
-  TEST_MUSTPASS(codec->SetVADStatus(0, false));
-  MARK();
-  // Unmute
-  TEST_MUSTPASS(volume->SetInputMute(0, false));
-  MARK();
-
-  AOK();
-  ANL();
-
-  // SetSendTelephoneEventPayloadType
-  TEST(SetSendTelephoneEventPayloadType);
-  ANL();
-  TEST_MUSTPASS(!dtmf->SetSendTelephoneEventPayloadType(0, 128));
-  MARK();
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-
-  TEST_MUSTPASS(dtmf->SetSendTelephoneEventPayloadType(0, 96));
-  MARK();
-  TEST_MUSTPASS(dtmf->SetSendTelephoneEventPayloadType(0, 127));
-  MARK();
-  TEST_MUSTPASS(dtmf->SetSendTelephoneEventPayloadType(0, 106));
-  MARK();  // restore default
-
-  AOK();
-  ANL();
-
-  TEST_MUSTPASS(dtmf->SetDtmfFeedbackStatus(true, false));
-  TEST_MUSTPASS(voe_base_->StopSend(0));
-  TEST_MUSTPASS(voe_base_->StopPlayout(0));
-  TEST_MUSTPASS(voe_base_->StopReceive(0));
-  TEST_MUSTPASS(voe_base_->DeleteChannel(0));
-  TEST_MUSTPASS(voe_base_->Terminate());
-
-  return 0;
-}
-
-// ----------------------------------------------------------------------------
-//  VoEExtendedTest::TestEncryption
-// ----------------------------------------------------------------------------
-
-int VoEExtendedTest::TestEncryption() {
-  PrepareTest("Encryption");
-
-  VoEBase* voe_base_ = _mgr.BasePtr();
-  VoEFile* file = _mgr.FilePtr();
-  VoENetwork* voe_network = _mgr.NetworkPtr();
-
-#ifdef _USE_EXTENDED_TRACE_
-  TEST_MUSTPASS(VoiceEngine::SetTraceFile(
-      GetFilename("VoEEncryption_trace.txt").c_str()));
-  TEST_MUSTPASS(VoiceEngine::SetTraceFilter(
-      kTraceStateInfo | kTraceStateInfo | kTraceWarning | kTraceError |
-      kTraceCritical | kTraceApiCall | kTraceMemory | kTraceInfo));
-#endif
-  TEST_MUSTPASS(voe_base_->Init());
-  TEST_MUSTPASS(voe_base_->CreateChannel());
-  scoped_ptr<VoiceChannelTransport> voice_channel_transport(
-      new VoiceChannelTransport(voe_network, 0));
-  voice_channel_transport->SetSendDestination("127.0.0.1", 12345);
-  voice_channel_transport->SetLocalReceiver(12345);
-  TEST_MUSTPASS(voe_base_->StartReceive(0));
-  TEST_MUSTPASS(voe_base_->StartSend(0));
-  TEST_MUSTPASS(voe_base_->StartPlayout(0));
-  TEST_MUSTPASS(
-      file->StartPlayingFileAsMicrophone(0, _mgr.AudioFilename(), true, true));
-
-  ///////////////////////////
-  // Actual test starts here
-
-  TEST(SRTP disabled - Fail tests);
-  ANL();
-
-  // TODO(solenberg): Test should verify that external encryption policy
-  // registration works, i.e.:
-  // VoEEncryption* encrypt = _mgr.EncryptionPtr();
-  // encrypt->RegisterExternalEncryption() and
-  // encrypt->DeRegisterExternalEncryption().
-
-  TEST_MUSTPASS(file->StopPlayingFileAsMicrophone(0));
-  TEST_MUSTPASS(voe_base_->StopSend(0));
-  TEST_MUSTPASS(voe_base_->StopPlayout(0));
-  TEST_MUSTPASS(voe_base_->StopReceive(0));
-  TEST_MUSTPASS(voe_base_->DeleteChannel(0));
-  TEST_MUSTPASS(voe_base_->Terminate());
-
-  return 0;
-}
-
-// ----------------------------------------------------------------------------
-//  VoEExtendedTest::TestExternalMedia
-// ----------------------------------------------------------------------------
-
-int VoEExtendedTest::TestExternalMedia() {
-  PrepareTest("VoEExternalMedia");
-
-  VoEBase* voe_base_ = _mgr.BasePtr();
-  VoEExternalMedia* xmedia = _mgr.ExternalMediaPtr();
-  VoENetwork* voe_network = _mgr.NetworkPtr();
-
-  // check if this interface is supported
-  if (!xmedia) {
-    TEST_LOG("VoEExternalMedia is not supported!");
-    return -1;
-  }
-
-#ifdef _USE_EXTENDED_TRACE_
-  TEST_MUSTPASS(VoiceEngine::SetTraceFile(
-      GetFilename("VoEExternalMedia_trace.txt").c_str()));
-  TEST_MUSTPASS(VoiceEngine::SetTraceFilter(
-      kTraceStateInfo | kTraceStateInfo | kTraceWarning | kTraceError |
-      kTraceCritical | kTraceApiCall | kTraceMemory | kTraceInfo));
-#endif
-  TEST_MUSTPASS(voe_base_->Init());
-  TEST_MUSTPASS(voe_base_->CreateChannel());
-  scoped_ptr<VoiceChannelTransport> voice_channel_transport(
-      new VoiceChannelTransport(voe_network, 0));
-  voice_channel_transport->SetSendDestination("127.0.0.1", 12345);
-  voice_channel_transport->SetLocalReceiver(12345);
-  TEST_MUSTPASS(voe_base_->StartReceive(0));
-  TEST_MUSTPASS(voe_base_->StartPlayout(0));
-  TEST_MUSTPASS(voe_base_->StartSend(0));
-
-  int getLen = 0;
-  int16_t vector[32000];
-  memset(vector, 0, 32000 * sizeof(short));
-
-#ifdef WEBRTC_VOE_EXTERNAL_REC_AND_PLAYOUT
-
-  // ExternalPlayoutGetData
-  TEST(ExternalPlayoutGetData);
-  ANL();
-
-  TEST_MUSTPASS(!xmedia->SetExternalPlayoutStatus(true));
-  TEST_MUSTPASS(VE_ALREADY_SENDING != voe_base_->LastError());
-  TEST_MUSTPASS(!xmedia->ExternalPlayoutGetData(vector, 16000, 100, getLen));
-  TEST_MUSTPASS(VE_INVALID_OPERATION != voe_base_->LastError());
-
-  TEST_MUSTPASS(voe_base_->StopPlayout(0));
-  TEST_MUSTPASS(xmedia->SetExternalPlayoutStatus(true));
-  TEST_MUSTPASS(voe_base_->StartPlayout(0));
-
-  TEST_MUSTPASS(xmedia->ExternalPlayoutGetData(vector, 48000, 0, getLen));
-  TEST_MUSTPASS(480 != getLen);
-  SleepMs(10);
-  TEST_MUSTPASS(xmedia->ExternalPlayoutGetData(vector, 16000, 3000, getLen));
-  TEST_MUSTPASS(160 != getLen);
-  SleepMs(10);
-
-  TEST_MUSTPASS(!xmedia->ExternalPlayoutGetData(vector, 8000, 100, getLen));
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-  TEST_MUSTPASS(!xmedia->ExternalPlayoutGetData(vector, 16000, -1, getLen));
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-
-  TEST_MUSTPASS(voe_base_->StopPlayout(0));
-  TEST_MUSTPASS(xmedia->SetExternalPlayoutStatus(false));
-  TEST_MUSTPASS(voe_base_->StartPlayout(0));
-
-  // SetExternalRecording
-  TEST(SetExternalRecording);
-  ANL();
-
-  TEST_MUSTPASS(!xmedia->SetExternalRecordingStatus(true));
-  TEST_MUSTPASS(VE_ALREADY_SENDING != voe_base_->LastError());
-  TEST_MUSTPASS(!xmedia->ExternalRecordingInsertData(vector, 160, 16000, 20));
-  TEST_MUSTPASS(VE_INVALID_OPERATION != voe_base_->LastError());
-
-  TEST_MUSTPASS(voe_base_->StopSend(0));
-  TEST_MUSTPASS(xmedia->SetExternalRecordingStatus(true));
-  TEST_MUSTPASS(voe_base_->StartSend(0));
-
-  TEST_MUSTPASS(xmedia->ExternalRecordingInsertData(vector, 480, 48000, 0));
-  SleepMs(10);
-  TEST_MUSTPASS(xmedia->ExternalRecordingInsertData(vector, 640, 16000, 0));
-  SleepMs(40);
-
-  TEST_MUSTPASS(!xmedia->ExternalRecordingInsertData(vector, 160, 16000, -1));
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-  TEST_MUSTPASS(!xmedia->ExternalRecordingInsertData(vector, 80, 8000, 20));
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-  TEST_MUSTPASS(!xmedia->ExternalRecordingInsertData(vector, 0, 16000, 20));
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-  TEST_MUSTPASS(!xmedia->ExternalRecordingInsertData(vector, 80, 16000, 20));
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-  TEST_MUSTPASS(!xmedia->ExternalRecordingInsertData(vector, 500, 16000, 20));
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-
-  TEST_MUSTPASS(voe_base_->StopSend(0));
-  TEST_MUSTPASS(xmedia->SetExternalRecordingStatus(false));
-  TEST_MUSTPASS(voe_base_->StartSend(0));
-
-#else  // #ifdef WEBRTC_VOE_EXTERNAL_REC_AND_PLAYOUT
-  TEST_MUSTPASS(!xmedia->SetExternalPlayoutStatus(true));
-  TEST_MUSTPASS(VE_FUNC_NOT_SUPPORTED != voe_base_->LastError());
-  TEST_MUSTPASS(!xmedia->ExternalPlayoutGetData(vector, 16000, 100, getLen));
-  TEST_MUSTPASS(VE_FUNC_NOT_SUPPORTED != voe_base_->LastError());
-  TEST_MUSTPASS(!xmedia->SetExternalRecordingStatus(true));
-  TEST_MUSTPASS(VE_FUNC_NOT_SUPPORTED != voe_base_->LastError());
-  TEST_MUSTPASS(!xmedia->ExternalRecordingInsertData(vector, 160, 16000, 20));
-  TEST_MUSTPASS(VE_FUNC_NOT_SUPPORTED != voe_base_->LastError());
-
-#endif  // #ifdef WEBRTC_VOE_EXTERNAL_REC_AND_PLAYOUT
-  TEST_MUSTPASS(voe_base_->StopSend(0));
-  TEST_MUSTPASS(voe_base_->StopPlayout(0));
-  TEST_MUSTPASS(voe_base_->StopReceive(0));
-  TEST_MUSTPASS(voe_base_->DeleteChannel(0));
-  TEST_MUSTPASS(voe_base_->Terminate());
-
-  ANL();
-  AOK();
-  return 0;
-}
-
-// ----------------------------------------------------------------------------
-//  VoEExtendedTest::TestFile
-// ----------------------------------------------------------------------------
-
-int VoEExtendedTest::TestFile() {
-  PrepareTest("File");
-
-  VoEBase* voe_base_ = _mgr.BasePtr();
-  VoEFile* file = _mgr.FilePtr();
-  VoECodec* codec = _mgr.CodecPtr();
-  VoENetwork* voe_network = _mgr.NetworkPtr();
-
-#ifdef _USE_EXTENDED_TRACE_
-  TEST_MUSTPASS(
-      VoiceEngine::SetTraceFile(GetFilename("VoEFile_trace.txt").c_str()));
-  MARK();
-  TEST_MUSTPASS(VoiceEngine::SetTraceFilter(
-      kTraceStateInfo | kTraceStateInfo | kTraceWarning | kTraceError |
-      kTraceCritical | kTraceApiCall | kTraceMemory | kTraceInfo));
-#endif
-
-  TEST_MUSTPASS(voe_base_->Init());
-  TEST_MUSTPASS(voe_base_->CreateChannel());
-  scoped_ptr<VoiceChannelTransport> voice_channel_transport(
-      new VoiceChannelTransport(voe_network, 0));
-  voice_channel_transport->SetSendDestination("127.0.0.1", 12345);
-  voice_channel_transport->SetLocalReceiver(12345);
-  TEST_MUSTPASS(voe_base_->StartReceive(0));
-  TEST_MUSTPASS(voe_base_->StartPlayout(0));
-  TEST_MUSTPASS(voe_base_->StartSend(0));
-
-  ///////////////////////////
-  // Actual test starts here
-
-  const int dT(100);
-
-  TEST(StartPlayingFileLocally);
-  ANL();
-  TEST(StopPlayingFileLocally);
-  ANL();
-
-  voe_base_->StopPlayout(0);
-  std::string output_path = webrtc::test::OutputPath();
-  std::string file_audio_long16 =
-      webrtc::test::ResourcePath("voice_engine/audio_long16", "pcm");
-  std::string file_audio_long16_wav =
-      webrtc::test::ResourcePath("voice_engine/audio_long16", "wav");
-  std::string file_audio_long8 =
-      webrtc::test::ResourcePath("voice_engine/audio_long8", "pcm");
-  std::string file_audio_long8_mulaw =
-      webrtc::test::ResourcePath("voice_engine/audio_long8mulaw", "wav");
-  std::string file_audio_short16 =
-      webrtc::test::ResourcePath("voice_engine/audio_short16", "pcm");
-  TEST_MUSTPASS(file->StartPlayingFileLocally(0, file_audio_long16.c_str()));
-  MARK();
-  voe_base_->StartPlayout(0);
-  MARK();  // file should be mixed in and played out
-  SleepMs(dT);
-  TEST_MUSTPASS(!file->StartPlayingFileLocally(0, file_audio_long16.c_str()));
-  MARK();  // should fail (must stop first)
-  TEST_MUSTPASS(voe_base_->LastError() != VE_ALREADY_PLAYING);
-  TEST_MUSTPASS(file->StopPlayingFileLocally(0));
-  MARK();
-  TEST_MUSTPASS(file->StartPlayingFileLocally(0, file_audio_long16.c_str()));
-  MARK();  // should work again (restarts file)
-  SleepMs(dT);
-  TEST_MUSTPASS(file->StopPlayingFileLocally(0));
-  MARK();
-  TEST_MUSTPASS(file->StartPlayingFileLocally(
-      0, file_audio_long16.c_str(), false, kFileFormatPcm16kHzFile));
-  MARK();
-  SleepMs(dT);
-  TEST_MUSTPASS(file->StopPlayingFileLocally(0));
-  MARK();
-  TEST_MUSTPASS(file->StartPlayingFileLocally(
-      0, file_audio_long8.c_str(), false, kFileFormatPcm8kHzFile));
-  MARK();
-  SleepMs(dT);
-  TEST_MUSTPASS(file->StopPlayingFileLocally(0));
-  MARK();
-  TEST_MUSTPASS(file->StartPlayingFileLocally(
-      0, file_audio_long16_wav.c_str(), false, kFileFormatPcm8kHzFile));
-  MARK();
-  SleepMs(dT);
-  TEST_MUSTPASS(file->StopPlayingFileLocally(0));
-  MARK();
-  TEST_MUSTPASS(file->StartPlayingFileLocally(
-      0, file_audio_long8_mulaw.c_str(), false, kFileFormatPcm8kHzFile));
-  MARK();
-  SleepMs(dT);
-
-  // add compressed tests here...
-
-  // TEST_MUSTPASS(file->StopPlayingFileLocally(0)); MARK();
-  // TEST_MUSTPASS(file->StartPlayingFileLocally(
-  //   0, file_audio_short16.c_str(), true,
-  //   kFileFormatPcm16kHzFile)); MARK(); // loop
-  TEST_MUSTPASS(file->StopPlayingFileLocally(0));
-  MARK();
-  TEST_MUSTPASS(file->StartPlayingFileLocally(0,
-                                              file_audio_short16.c_str(),
-                                              false,
-                                              kFileFormatPcm16kHzFile,
-                                              1.0,
-                                              0,
-                                              2000));
-  MARK();  // play segment
-  SleepMs(2500);
-  TEST_MUSTPASS(file->StopPlayingFileLocally(0));
-  MARK();
-  TEST_MUSTPASS(!file->StartPlayingFileLocally(0,
-                                               file_audio_short16.c_str(),
-                                               false,
-                                               kFileFormatPcm16kHzFile,
-                                               1.0,
-                                               2000,
-                                               1000));
-  MARK();  // invalid segment
-  TEST_MUSTPASS(voe_base_->LastError() != VE_BAD_FILE);
-  TEST_MUSTPASS(!file->StartPlayingFileLocally(0,
-                                               file_audio_short16.c_str(),
-                                               false,
-                                               kFileFormatPcm16kHzFile,
-                                               1.0,
-                                               21000,
-                                               30000));
-  MARK();  // start > file size
-  TEST_MUSTPASS(voe_base_->LastError() != VE_BAD_FILE);
-  TEST_MUSTPASS(!file->StartPlayingFileLocally(0,
-                                               file_audio_short16.c_str(),
-                                               false,
-                                               kFileFormatPcm16kHzFile,
-                                               1.0,
-                                               100,
-                                               100));
-  MARK();  // invalid segment
-  TEST_MUSTPASS(voe_base_->LastError() != VE_BAD_FILE);
-  TEST_MUSTPASS(file->StartPlayingFileLocally(0, file_audio_long16.c_str()));
-  MARK();  // should work again (restarts file)
-  TEST_MUSTPASS(file->StopPlayingFileLocally(0));
-  MARK();
-  TEST_MUSTPASS(!file->StartPlayingFileLocally(0, (InStream*)NULL));
-  MARK();  // just do it
-  TEST_MUSTPASS(voe_base_->LastError() != VE_BAD_FILE);
-
-  AOK();
-  ANL();
-
-  TEST(IsPlayingFileLocally);
-  ANL();
-
-  TEST_MUSTPASS(0 != file->IsPlayingFileLocally(0));
-  MARK();  // inactive
-  TEST_MUSTPASS(file->StartPlayingFileLocally(0, file_audio_long16.c_str()));
-  MARK();
-  TEST_MUSTPASS(1 != file->IsPlayingFileLocally(0));
-  MARK();  // active
-  AOK();
-  ANL();
-
-  TEST(ScaleLocalFilePlayout);
-  ANL();
-  TEST_MUSTPASS(file->ScaleLocalFilePlayout(0, 1.0));
-  MARK();
-  SleepMs(1000);
-  TEST_MUSTPASS(file->ScaleLocalFilePlayout(0, 0.0));
-  MARK();
-  SleepMs(1000);
-  TEST_MUSTPASS(file->ScaleLocalFilePlayout(0, 0.5));
-  MARK();
-  SleepMs(1000);
-  TEST_MUSTPASS(file->ScaleLocalFilePlayout(0, 0.25));
-  MARK();
-  SleepMs(1000);
-  TEST_MUSTPASS(file->StopPlayingFileLocally(0));
-  MARK();
-  AOK();
-  ANL();
-
-  // Replace microphone with file and play out on remote side
-  // All channels, per channel
-  // Different mixing frequencies
-  TEST(StartPlayingFileAsMicrophone);
-  ANL();
-  TEST(IsPlayingFileAsMicrophone);
-  ANL();
-  TEST(ScaleFileAsMicrophonePlayout);
-  ANL();
-  CodecInst tempCodec;
-  for (int ch = -1; ch < 1; ++ch)  // Channel -1 and 0
-  {
-    TEST_LOG("Testing channel = %d \n", ch);
-    for (int fs = 1; fs < 4; ++fs)  // nb, wb and swb codecs
-    {
-      switch (fs) {
-        case 1:  // nb
-          TEST_LOG("Testing with nb codec \n");
-          tempCodec.channels = 1;
-          tempCodec.pacsize = 160;
-          tempCodec.plfreq = 8000;
-          strcpy(tempCodec.plname, "PCMU");
-          tempCodec.pltype = 0;
-          tempCodec.rate = 64000;
-          break;
-        case 2:  // wb
-#ifdef WEBRTC_CODEC_ISAC
-          TEST_LOG("Testing with wb codec \n");
-          tempCodec.channels = 1;
-          tempCodec.pacsize = 480;
-          tempCodec.plfreq = 16000;
-          strcpy(tempCodec.plname, "ISAC");
-          tempCodec.pltype = 103;
-          tempCodec.rate = 32000;
-          break;
-#else
-          TEST_LOG(
-              "NOT testing with wb codec - "
-              "WEBRTC_CODEC_ISAC not defined \n");
-          continue;
-#endif
-        case 3:  // swb
-#ifdef WEBRTC_CODEC_PCM16
-          TEST_LOG("Testing with swb codec \n");
-          tempCodec.channels = 1;
-          tempCodec.pacsize = 640;
-          tempCodec.plfreq = 32000;
-          strcpy(tempCodec.plname, "L16");
-          tempCodec.pltype = 125;
-          tempCodec.rate = 512000;
-          break;
-#else
-          TEST_LOG(
-              "NOT testing with swb codec -"
-              " WEBRTC_CODEC_PCM16 not defined \n");
-          continue;
-#endif
-      }
-      TEST_MUSTPASS(voe_base_->StopSend(0));
-      TEST_MUSTPASS(voe_base_->StopPlayout(0));
-      TEST_MUSTPASS(voe_base_->StopReceive(0));
-      TEST_MUSTPASS(codec->SetRecPayloadType(0, tempCodec));
-      TEST_MUSTPASS(voe_base_->StartReceive(0));
-      TEST_MUSTPASS(voe_base_->StartPlayout(0));
-      TEST_MUSTPASS(voe_base_->StartSend(0));
-      TEST_MUSTPASS(codec->SetSendCodec(0, tempCodec));
-
-      TEST_LOG(
-          "File 1 in 16 kHz no mix, 2 in 16 kHz mix,"
-          " 3 in 8 kHz no mix, 4 in 8 kHz mix \n");
-
-      TEST_MUSTPASS(
-          file->StartPlayingFileAsMicrophone(ch, file_audio_long16.c_str()));
-      MARK();  // don't mix
-      SleepMs(2000);
-      TEST_MUSTPASS(file->StopPlayingFileAsMicrophone(ch));
-      MARK();
-      TEST_MUSTPASS(file->StartPlayingFileAsMicrophone(
-          ch, file_audio_long16_wav.c_str(), false, true, kFileFormatWavFile));
-      MARK();  // mix
-      SleepMs(2000);
-      TEST_MUSTPASS(file->StopPlayingFileAsMicrophone(ch));
-      MARK();
-      TEST_MUSTPASS(file->StartPlayingFileAsMicrophone(
-          ch, file_audio_long8.c_str(), false, false, kFileFormatPcm8kHzFile));
-      MARK();  // don't mix
-      SleepMs(2000);
-      TEST_MUSTPASS(file->StopPlayingFileAsMicrophone(ch));
-      MARK();
-      TEST_MUSTPASS(file->StartPlayingFileAsMicrophone(
-          ch, file_audio_long8.c_str(), false, true, kFileFormatPcm8kHzFile));
-      MARK();  // mix
-      SleepMs(2000);
-      TEST_MUSTPASS(file->StopPlayingFileAsMicrophone(ch));
-      MARK();
-      TEST_MUSTPASS(!file->StartPlayingFileAsMicrophone(ch, (InStream*)NULL));
-      MARK();  // force error
-      AOK();
-      ANL();
-
-      TEST_MUSTPASS(
-          file->StartPlayingFileAsMicrophone(ch, file_audio_long16.c_str()));
-      TEST_MUSTPASS(1 != file->IsPlayingFileAsMicrophone(ch));
-      TEST_MUSTPASS(file->StopPlayingFileAsMicrophone(ch));
-      TEST_MUSTPASS(0 != file->IsPlayingFileAsMicrophone(ch));
-      AOK();
-      ANL();
-
-      TEST_MUSTPASS(
-          file->StartPlayingFileAsMicrophone(ch, file_audio_long16.c_str()));
-      TEST_MUSTPASS(file->ScaleFileAsMicrophonePlayout(ch, 1.0));
-      MARK();
-      SleepMs(1000);
-      TEST_MUSTPASS(file->ScaleFileAsMicrophonePlayout(ch, 0.5));
-      MARK();
-      SleepMs(1000);
-      TEST_MUSTPASS(file->ScaleFileAsMicrophonePlayout(ch, 0.25));
-      MARK();
-      SleepMs(1000);
-      TEST_MUSTPASS(file->ScaleFileAsMicrophonePlayout(ch, 0.0));
-      MARK();
-      SleepMs(1000);
-      TEST_MUSTPASS(file->StopPlayingFileAsMicrophone(ch));
-      MARK();
-      AOK();
-      ANL();
-    }
-  }
-
-  // Record speaker signal to file
-
-  CodecInst fcomp = {0, "L16", 8000, 80, 1, 128000};
-
-  TEST(StartRecordingPlayout);
-  ANL();
-  TEST(StopRecordingPlayout);
-  ANL();
-
-  TEST_MUSTPASS(
-      file->StartRecordingPlayout(0, (output_path + "rec_play16.pcm").c_str()));
-  MARK();
-  SleepMs(1000);
-  TEST_MUSTPASS(file->StopRecordingPlayout(0));
-  MARK();
-
-  fcomp.plfreq = 8000;
-  strcpy(fcomp.plname, "L16");
-  TEST_MUSTPASS(file->StartRecordingPlayout(
-      0, (output_path + "rec_play8.wav").c_str(), &fcomp));
-  SleepMs(1000);
-  TEST_MUSTPASS(file->StopRecordingPlayout(0));
-  MARK();
-
-  fcomp.plfreq = 16000;
-  strcpy(fcomp.plname, "L16");
-  TEST_MUSTPASS(file->StartRecordingPlayout(
-      0, (output_path + "rec_play16.wav").c_str(), &fcomp));
-  SleepMs(1000);
-  TEST_MUSTPASS(file->StopRecordingPlayout(0));
-  MARK();
-
-  fcomp.pltype = 0;
-  fcomp.plfreq = 8000;
-  strcpy(fcomp.plname, "PCMU");
-  fcomp.rate = 64000;
-  fcomp.pacsize = 160;
-  fcomp.channels = 1;
-
-  TEST_MUSTPASS(file->StartRecordingPlayout(
-      0, (output_path + "rec_play_pcmu.wav").c_str(), &fcomp));
-  SleepMs(1000);
-  TEST_MUSTPASS(file->StopRecordingPlayout(0));
-  MARK();
-
-  fcomp.pltype = 8;
-  fcomp.plfreq = 8000;
-  strcpy(fcomp.plname, "PCMA");
-  TEST_MUSTPASS(file->StartRecordingPlayout(
-      0, (output_path + "rec_play_pcma.wav").c_str(), &fcomp));
-  SleepMs(1000);
-  TEST_MUSTPASS(file->StopRecordingPlayout(0));
-  MARK();
-
-  fcomp.pltype = 97;
-  fcomp.pacsize = 240;
-  fcomp.rate = 13300;
-  fcomp.plfreq = 8000;
-  strcpy(fcomp.plname, "ILBC");
-  TEST_MUSTPASS(file->StartRecordingPlayout(
-      0, (output_path + "rec_play.ilbc").c_str(), &fcomp));
-  SleepMs(1000);
-  TEST_MUSTPASS(file->StopRecordingPlayout(0));
-  MARK();
-
-  TEST_MUSTPASS(file->StartRecordingPlayout(
-      -1, (output_path + "rec_play16_mixed.pcm").c_str()));
-  MARK();
-  SleepMs(1000);
-  TEST_MUSTPASS(file->StopRecordingPlayout(-1));
-  MARK();
-
-  // TEST_MUSTPASS(file->StopPlayingFileLocally(0)); // Why should this work?
-  TEST_LOG("\nplaying out...\n");
-  TEST_MUSTPASS(
-      file->StartPlayingFileLocally(0,
-                                    (output_path + "rec_play.ilbc").c_str(),
-                                    false,
-                                    kFileFormatCompressedFile));
-  MARK();
-  SleepMs(2000);
-
-  AOK();
-  ANL();
-
-  // Record microphone signal to file
-  TEST(StartRecordingMicrophone);
-  ANL();
-  TEST(StopRecordingMicrophone);
-  ANL();
-
-  TEST_MUSTPASS(
-      file->StartRecordingMicrophone((output_path + "rec_mic16.pcm").c_str()));
-  MARK();
-  SleepMs(1000);
-  TEST_MUSTPASS(file->StopRecordingMicrophone());
-  MARK();
-
-  voe_base_->StopSend(0);
-  TEST_MUSTPASS(
-      file->StartRecordingMicrophone((output_path + "rec_mic16.pcm").c_str()));
-  MARK();  // record without sending as well
-  SleepMs(1000);
-  TEST_MUSTPASS(file->StopRecordingMicrophone());
-  MARK();
-  voe_base_->StartSend(0);  // restore sending
-
-  fcomp.plfreq = 8000;
-  strcpy(fcomp.plname, "L16");
-  TEST_MUSTPASS(file->StartRecordingMicrophone(
-      (output_path + "rec_play8.wav").c_str(), &fcomp));
-  SleepMs(1000);
-  TEST_MUSTPASS(file->StopRecordingMicrophone());
-  MARK();
-
-  fcomp.plfreq = 16000;
-  strcpy(fcomp.plname, "L16");
-  TEST_MUSTPASS(file->StartRecordingMicrophone(
-      (output_path + "rec_play16.wav").c_str(), &fcomp));
-  SleepMs(1000);
-  TEST_MUSTPASS(file->StopRecordingMicrophone());
-  MARK();
-
-  // FT#1810, the following test is to make sure StartRecordingCall will
-  // record both mic and file
-  TEST_LOG(
-      "StartRecordingCall, record both mic and file in specific"
-      " channels \n");
-  TEST_LOG("Create maxnumofchannels \n");
-  for (int i = 1; i < kTestMaxNumChannels; i++) {
-    int ch = voe_base_->CreateChannel();
-    TEST_MUSTPASS(ch == -1);
-    TEST_MUSTPASS(voe_base_->StopPlayout(ch));
-  }
-  scoped_ptr<VoiceChannelTransport> voice_channel_transport_1(
-      new VoiceChannelTransport(voe_network, 1));
-  voice_channel_transport_1->SetSendDestination("127.0.0.1", 12356);
-  voice_channel_transport_1->SetLocalReceiver(12356);
-  TEST_MUSTPASS(voe_base_->StartReceive(1));
-  TEST_MUSTPASS(voe_base_->StopPlayout(1));
-  TEST_MUSTPASS(voe_base_->StartSend(1));
-  TEST_MUSTPASS(voe_base_->StartPlayout(1));
-
-  TEST_LOG(
-      "ALways playing audio_long16.pcm for "
-      "channel 0 in background \n");
-  fcomp.plfreq = 16000;
-  strcpy(fcomp.plname, "L16");
-  TEST_LOG("Recording microphone to L16, please speak \n");
-  TEST_MUSTPASS(file->StartPlayingFileAsMicrophone(
-      0, file_audio_long16.c_str(), true, true));
-  TEST_MUSTPASS(file->StartRecordingMicrophone(
-      (output_path + "rec_play_ch.wav").c_str(), &fcomp));
-  MARK();
-  SleepMs(3000);
-  TEST_MUSTPASS(file->StopRecordingMicrophone());
-  MARK();
-  TEST_MUSTPASS(file->StopPlayingFileAsMicrophone(0));
-  TEST_LOG("Playing recording file, you should only hear what you said \n");
-  TEST_MUSTPASS(file->StartPlayingFileLocally(
-      0, (output_path + "rec_play_ch.wav").c_str(), false, kFileFormatWavFile));
-  SleepMs(2500);
-  TEST_MUSTPASS(file->StopPlayingFileLocally(0));
-  TEST_LOG("Recording microphone 0 to L16, please speak \n");
-  TEST_MUSTPASS(file->StartPlayingFileAsMicrophone(
-      -1, file_audio_long16.c_str(), true, true));
-  TEST_MUSTPASS(file->StartRecordingMicrophone(
-      (output_path + "rec_play_ch_0.wav").c_str(), &fcomp));
-  MARK();
-  SleepMs(3000);
-  TEST_MUSTPASS(file->StopRecordingMicrophone());
-  MARK();
-  TEST_MUSTPASS(file->StopPlayingFileAsMicrophone(-1));
-  TEST_LOG(
-      "Playing recording file, you should hear what you said and"
-      " audio_long16.pcm \n");
-  TEST_MUSTPASS(
-      file->StartPlayingFileLocally(0,
-                                    (output_path + "rec_play_ch_0.wav").c_str(),
-                                    false,
-                                    kFileFormatWavFile));
-  SleepMs(2500);
-  TEST_MUSTPASS(file->StopPlayingFileLocally(0));
-  TEST_LOG("Recording microphone to ilbc, please speak \n");
-  strcpy(fcomp.plname, "ilbc");
-  fcomp.plfreq = 8000;
-  fcomp.pacsize = 160;
-  fcomp.rate = 15200;
-  fcomp.channels = 1;
-  fcomp.pltype = 97;
-  TEST_MUSTPASS(file->StartPlayingFileAsMicrophone(
-      0, file_audio_long16.c_str(), true, true));
-  TEST_MUSTPASS(file->StartRecordingMicrophone(
-      (output_path + "rec_play_ch_0.ilbc").c_str(), &fcomp));
-  MARK();
-  SleepMs(3000);
-  TEST_MUSTPASS(file->StopRecordingMicrophone());
-  MARK();
-  TEST_MUSTPASS(file->StopPlayingFileAsMicrophone(0));
-  TEST_LOG("Playing recording file, you should only hear what you said \n");
-  TEST_MUSTPASS(file->StartPlayingFileLocally(
-      0,
-      (output_path + "rec_play_ch_0.ilbc").c_str(),
-      false,
-      kFileFormatCompressedFile));
-  SleepMs(2500);
-  TEST_MUSTPASS(file->StopPlayingFileLocally(0));
-  for (int i = 1; i < kTestMaxNumChannels; i++) {
-    TEST_MUSTPASS(voe_base_->DeleteChannel(i));
-  }
-
-  AOK();
-  ANL();
-
-// Record mixed (speaker + microphone) signal to file
-
-#if !defined(WEBRTC_IOS) && !defined(WEBRTC_ANDROID)
-  TEST(StartRecordingSpeakerStereo);
-  ANL();
-  TEST(StopRecordingSpeakerStereo);
-  ANL();
-
-  VoEHardware* hardware = _mgr.HardwarePtr();
-  TEST_MUSTPASS(NULL == hardware);
-  TEST_MUSTPASS(voe_base_->StopPlayout(0));
-  TEST_MUSTPASS(voe_base_->StopSend(0));
-#if defined(_WIN32)
-  TEST_MUSTPASS(hardware->SetRecordingDevice(-1));
-  TEST_MUSTPASS(hardware->SetPlayoutDevice(-1));
-#else
-  TEST_MUSTPASS(hardware->SetRecordingDevice(0));
-  TEST_MUSTPASS(hardware->SetPlayoutDevice(0));
-#endif
-  TEST_MUSTPASS(voe_base_->StartPlayout(0));
-  TEST_MUSTPASS(voe_base_->StartSend(0));
-  MARK();
-
-  TEST_MUSTPASS(voe_base_->StopPlayout(0));
-  TEST_MUSTPASS(voe_base_->StopSend(0));
-#if defined(_WIN32)
-  TEST_MUSTPASS(hardware->SetRecordingDevice(-1));
-  TEST_MUSTPASS(hardware->SetPlayoutDevice(-1));
-#else
-  TEST_MUSTPASS(hardware->SetRecordingDevice(0));
-  TEST_MUSTPASS(hardware->SetPlayoutDevice(0));
-#endif
-  TEST_MUSTPASS(voe_base_->StartPlayout(0));
-  TEST_MUSTPASS(voe_base_->StartSend(0));
-
-  AOK();
-  ANL();
-#else
-  TEST_LOG(
-      "Skipping stereo record tests -"
-      " WEBRTC_IOS or WEBRTC_ANDROID is defined \n");
-#endif  // #if !defined(WEBRTC_IOS) && !defined(WEBRTC_ANDROID)
-        // Conversion between different file formats
-
-#if defined(WEBRTC_IOS) || defined(WEBRTC_ANDROID)
-  TEST_MUSTPASS(voe_base_->StopPlayout(0));
-  TEST_MUSTPASS(voe_base_->StopSend(0));
-#endif
-
-  TEST(ConvertPCMToWAV);
-  ANL();
-
-  TEST_MUSTPASS(
-      file->ConvertPCMToWAV(file_audio_long16.c_str(),
-                            (output_path + "singleUserDemoConv.wav").c_str()));
-  MARK();
-  TEST_MUSTPASS(!file->ConvertPCMToWAV((InStream*)NULL, (OutStream*)NULL));
-  MARK();  // invalid stream handles
-  AOK();
-  ANL();
-
-  TEST(ConvertWAVToPCM);
-  ANL();
-
-  TEST_MUSTPASS(
-      file->ConvertWAVToPCM(file_audio_long16_wav.c_str(),
-                            (output_path + "singleUserDemoConv.pcm").c_str()));
-  MARK();
-  TEST_MUSTPASS(!file->ConvertWAVToPCM((InStream*)NULL, (OutStream*)NULL));
-  MARK();  // invalid stream handles
-  AOK();
-  ANL();
-
-  TEST(ConvertPCMToCompressed);
-  ANL();
-
-  fcomp.plfreq = 16000;
-  strcpy(fcomp.plname, "L16");
-  TEST_MUSTPASS(!file->ConvertPCMToCompressed(
-                     file_audio_long16.c_str(),
-                     (output_path + "singleUserDemoConv16_dummy.wav").c_str(),
-                     &fcomp));
-  MARK();  // should not be supported
-
-  fcomp.plfreq = 8000;
-  strcpy(fcomp.plname, "ilbc");
-  fcomp.pacsize = 160;
-  fcomp.rate = 15200;
-  fcomp.pltype = 97;
-  fcomp.channels = 1;
-  TEST_MUSTPASS(file->ConvertPCMToCompressed(
-      file_audio_long16.c_str(),
-      (output_path + "singleUserDemoConv.ilbc").c_str(),
-      &fcomp));
-  MARK();
-  AOK();
-  ANL();
-
-  TEST(ConvertCompressedToPCM);
-  ANL();
-
-  TEST_MUSTPASS(file->ConvertCompressedToPCM(
-      (output_path + "singleUserDemoConv.ilbc").c_str(),
-      (output_path + "singleUserDemoConv_ilbc.pcm").c_str()));
-  MARK();
-  TEST_MUSTPASS(!file->ConvertCompressedToPCM(
-                     file_audio_long16.c_str(),
-                     (output_path + "singleUserDemoConv_dummy.pcm").c_str()));
-  MARK();
-  AOK();
-  ANL();
-
-#if defined(WEBRTC_IOS) || defined(WEBRTC_ANDROID)
-  TEST_MUSTPASS(voe_base_->StartPlayout(0));
-  TEST_MUSTPASS(voe_base_->StartSend(0));
-#endif
-
-  // Misc file functions
-  TEST(GetFileDuration);
-  ANL();
-
-  int dur;
-
-  TEST_MUSTPASS(file->GetFileDuration(file_audio_long16.c_str(), dur));
-  TEST_MUSTPASS(file->GetFileDuration(
-      file_audio_long8.c_str(), dur, kFileFormatPcm8kHzFile));
-  TEST_MUSTPASS(file->GetFileDuration(
-      file_audio_long16.c_str(), dur, kFileFormatPcm16kHzFile));
-  TEST_MUSTPASS(file->GetFileDuration(
-      file_audio_long16_wav.c_str(), dur, kFileFormatPcm8kHzFile));
-  TEST_MUSTPASS(
-      file->GetFileDuration((output_path + "singleUserDemoConv.ilbc").c_str(),
-                            dur,
-                            kFileFormatCompressedFile));
-
-  AOK();
-  ANL();
-
-  TEST(GetPlaybackPosition);
-  ANL();
-
-  int pos;
-
-  TEST_MUSTPASS(file->StartPlayingFileLocally(0, file_audio_long16.c_str()));
-  SleepMs(1000);
-  TEST_MUSTPASS(file->GetPlaybackPosition(0, pos));
-  MARK();  // position should be ~1000
-  SleepMs(1000);
-  TEST_MUSTPASS(file->GetPlaybackPosition(0, pos));
-  MARK();  // position should be ~2000
-           // SleepMs(70*1000);
-           // file is no longer playing
-  // TEST_MUSTPASS(file->GetPlaybackPosition(0, pos)); MARK();
-  TEST_MUSTPASS(file->StopPlayingFileLocally(0));
-  AOK();
-  ANL();
-
-  // These tests are related to defect 5136
-  // They play .wav files with different sample freq for 5s
-  char localFiles[7][50] = {"audio_tiny8.wav",  "audio_tiny11.wav",
-                            "audio_tiny16.wav", "audio_tiny22.wav",
-                            "audio_tiny32.wav", "audio_tiny44.wav",
-                            "audio_tiny48.wav"};
-  char freq[7][5] = {"8", "11", "16", "22", "32", "44.1", "48"};
-  std::string resource_path =
-      webrtc::test::ProjectRootPath() + "resources/voice_engine/";
-  TEST_MUSTPASS(voe_base_->StopReceive(0));
-  for (int i = 0; i < 7; i++) {
-    TEST_LOG("Playing file %s, in %s KHz \n", localFiles[i], freq[i]);
-    TEST_MUSTPASS(
-        file->StartPlayingFileLocally(0,
-                                      (resource_path + localFiles[i]).c_str(),
-                                      false,
-                                      kFileFormatWavFile,
-                                      1));
-    SleepMs(4500);  // The file should not end
-    TEST_MUSTPASS(file->StopPlayingFileLocally(0));
-  }
-
-  // TEST_MUSTPASS(file->StopPlayingFileAsMicrophone(0)); // Should not work
-  TEST_MUSTPASS(voe_base_->StopSend(0));
-  TEST_MUSTPASS(voe_base_->StopPlayout(0));
-  TEST_MUSTPASS(voe_base_->StopReceive(0));
-  TEST_MUSTPASS(voe_base_->DeleteChannel(0));
-  TEST_MUSTPASS(voe_base_->Terminate());
-
-  AOK();
-  ANL();
-
-  return 0;
-}
-
-// ----------------------------------------------------------------------------
-//  VoEExtendedTest::TestHardware
-// ----------------------------------------------------------------------------
-
-int VoEExtendedTest::TestHardware() {
-  PrepareTest("Hardware");
-
-  VoEBase* voe_base_ = _mgr.BasePtr();
-  VoEHardware* hardware = _mgr.HardwarePtr();
-
-#ifdef _USE_EXTENDED_TRACE_
-  TEST_MUSTPASS(VoiceEngine::SetTraceFile(
-      (output_path + "VoEHardware_trace.txt").c_str()));
-  TEST_MUSTPASS(VoiceEngine::SetTraceFilter(
-      kTraceStateInfo | kTraceStateInfo | kTraceWarning | kTraceError |
-      kTraceCritical | kTraceApiCall | kTraceMemory | kTraceInfo));
-#endif
-
-  // Set/GetAudioDeviceLayer
-  TEST(Set / GetAudioDeviceLayer);
-  ANL();
-  AudioLayers wantedLayer = kAudioPlatformDefault;
-  AudioLayers givenLayer;
-
-#if defined(_WIN32)
-  wantedLayer = kAudioWindowsCore;
-  hardware->SetAudioDeviceLayer(wantedLayer);
-  TEST_LOG(
-      "If you run on XP or below, CoreAudio "
-      "should not be able to set.\n");
-  TEST_LOG(
-      "If you run on Vista or above, CoreAudio "
-      "should be able to set.\n");
-  TEST_LOG("Verify that this is the case.\n");
-
-  TEST_MUSTPASS(voe_base_->Init());
-
-  TEST_MUSTPASS(hardware->GetAudioDeviceLayer(givenLayer));
-  if (givenLayer == kAudioWindowsCore) {
-    TEST_LOG("CoreAudio was set\n");
-  } else {
-    TEST_LOG("CoreAudio was *not* set\n");
-  }
-
-  TEST_MUSTPASS(voe_base_->Terminate());
-
-  wantedLayer = kAudioWindowsWave;
-  TEST_MUSTPASS(hardware->SetAudioDeviceLayer(wantedLayer));
-  TEST_LOG("Wave audio should always be able to set.\n");
-
-  TEST_MUSTPASS(voe_base_->Init());
-
-  TEST_MUSTPASS(hardware->GetAudioDeviceLayer(givenLayer));
-  if (givenLayer == kAudioWindowsWave) {
-    TEST_LOG("Wave audio was set\n");
-  } else {
-    TEST_LOG("Wave audio was not set\n");
-  }
-
-  TEST_MUSTPASS(voe_base_->Terminate());
-// end _WIN32
-#elif defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID)
-  wantedLayer = kAudioLinuxPulse;
-  TEST_MUSTPASS(hardware->SetAudioDeviceLayer(wantedLayer));
-  TEST_LOG(
-      "If you run on Linux with no/unsupported PA version, PulseAudio "
-      "7should not be able to set.\n");
-  TEST_LOG(
-      "If you run on Linux with supported PA version running, PulseAudio"
-      " should be able to set.\n");
-  TEST_LOG("Verify that this is the case.\n");
-
-  TEST_MUSTPASS(voe_base_->Init());
-
-  TEST_MUSTPASS(hardware->GetAudioDeviceLayer(givenLayer));
-  if (givenLayer == kAudioLinuxPulse) {
-    TEST_LOG("\nPulseAudio was set\n");
-  } else {
-    TEST_LOG("\nPulseAudio was not set\n");
-  }
-
-  TEST_MUSTPASS(voe_base_->Terminate());
-
-  wantedLayer = kAudioLinuxAlsa;
-  TEST_MUSTPASS(hardware->SetAudioDeviceLayer(wantedLayer));
-  TEST_LOG("ALSA audio should always be able to set.\n");
-
-  TEST_MUSTPASS(voe_base_->Init());
-
-  TEST_MUSTPASS(hardware->GetAudioDeviceLayer(givenLayer));
-  if (givenLayer == kAudioLinuxAlsa) {
-    TEST_LOG("\nALSA audio was set\n");
-  } else {
-    TEST_LOG("\nALSA audio was not set\n");
-  }
-
-  TEST_MUSTPASS(voe_base_->Terminate());
-#endif  // defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID)
-  // Invalid arguments should be ignored.
-  wantedLayer = (AudioLayers)17;
-  TEST_MUSTPASS(hardware->SetAudioDeviceLayer(wantedLayer));
-  TEST_MUSTPASS(hardware->GetAudioDeviceLayer(givenLayer));
-  ASSERT_TRUE(givenLayer == kAudioPlatformDefault);
-  MARK();
-
-  // Basic usage
-  wantedLayer = kAudioPlatformDefault;
-  TEST_MUSTPASS(hardware->SetAudioDeviceLayer(wantedLayer));
-  TEST_MUSTPASS(hardware->GetAudioDeviceLayer(givenLayer));
-  TEST_MUSTPASS(givenLayer != wantedLayer);
-  MARK();
-
-  TEST_MUSTPASS(voe_base_->Init());
-  TEST_MUSTPASS(voe_base_->CreateChannel());
-
-  wantedLayer = kAudioPlatformDefault;
-  TEST_MUSTPASS(-1 != hardware->SetAudioDeviceLayer(wantedLayer));
-  TEST_MUSTPASS(VE_ALREADY_INITED != voe_base_->LastError());
-  MARK();
-  TEST_MUSTPASS(hardware->GetAudioDeviceLayer(givenLayer));
-  MARK();
-  switch (givenLayer) {
-    case kAudioPlatformDefault:
-      // already set above
-      break;
-    case kAudioWindowsCore:
-      TEST_LOG("\nRunning kAudioWindowsCore\n");
-      break;
-    case kAudioWindowsWave:
-      TEST_LOG("\nRunning kAudioWindowsWave\n");
-      break;
-    case kAudioLinuxAlsa:
-      TEST_LOG("\nRunning kAudioLinuxAlsa\n");
-      break;
-    case kAudioLinuxPulse:
-      TEST_LOG("\nRunning kAudioLinuxPulse\n");
-      break;
-    default:
-      TEST_LOG("\nERROR: Running unknown audio layer!!\n");
-      return -1;
-  }
-  ANL();
-
-#if !defined(WEBRTC_IOS) && !defined(WEBRTC_ANDROID)
-  // GetRecording/PlayoutDeviceStatus
-  TEST(Getrecording / PlayoutDeviceStatus);
-  ANL();
-  bool isRecAvailable = false;
-  bool isPlayAvailable = false;
-  TEST_MUSTPASS(hardware->GetRecordingDeviceStatus(isRecAvailable));
-  TEST_MUSTPASS(!isRecAvailable);
-  MARK();
-  TEST_MUSTPASS(hardware->GetPlayoutDeviceStatus(isPlayAvailable));
-  TEST_MUSTPASS(!isPlayAvailable);
-  MARK();
-
-  ANL();
-
-  int nRec = 0, nPlay = 0;
-  char devName[128];
-  char guidName[128];
-  int idx;
-
-  TEST_MUSTPASS(hardware->GetNumOfPlayoutDevices(nPlay));
-
-  // GetPlayoutDeviceName
-  TEST(GetPlayoutDeviceName);
-  ANL();
-  TEST_MUSTPASS(-1 != hardware->GetPlayoutDeviceName(nPlay, devName, guidName));
-  TEST_MUSTPASS(VE_CANNOT_RETRIEVE_DEVICE_NAME != voe_base_->LastError());
-  MARK();
-  TEST_MUSTPASS(-1 != hardware->GetPlayoutDeviceName(-2, devName, guidName));
-  TEST_MUSTPASS(VE_CANNOT_RETRIEVE_DEVICE_NAME != voe_base_->LastError());
-  MARK();
-  TEST_MUSTPASS(-1 !=
-                hardware->GetPlayoutDeviceName(nPlay + 1, devName, guidName));
-  TEST_MUSTPASS(VE_CANNOT_RETRIEVE_DEVICE_NAME != voe_base_->LastError());
-  MARK();
-  TEST_MUSTPASS(-1 != hardware->GetPlayoutDeviceName(0, NULL, guidName));
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-  MARK();
-  TEST_MUSTPASS(hardware->GetPlayoutDeviceName(0, devName, NULL));
-
-  // default tests
-  for (idx = 0; idx < nPlay; idx++) {
-    TEST_MUSTPASS(hardware->GetPlayoutDeviceName(idx, devName, guidName));
-    MARK();
-    TEST_MUSTPASS(hardware->SetPlayoutDevice(idx));
-  }
-
-  ANL();
-
-  TEST_MUSTPASS(hardware->GetNumOfRecordingDevices(nRec));
-
-  // GetRecordingDeviceName
-  TEST(GetRecordingDeviceName);
-  ANL();
-  TEST_MUSTPASS(-1 !=
-                hardware->GetRecordingDeviceName(nRec, devName, guidName));
-  TEST_MUSTPASS(VE_CANNOT_RETRIEVE_DEVICE_NAME != voe_base_->LastError());
-  MARK();
-  TEST_MUSTPASS(-1 != hardware->GetRecordingDeviceName(-2, devName, guidName));
-  TEST_MUSTPASS(VE_CANNOT_RETRIEVE_DEVICE_NAME != voe_base_->LastError());
-  MARK();
-  TEST_MUSTPASS(-1 !=
-                hardware->GetRecordingDeviceName(nRec + 1, devName, guidName));
-  TEST_MUSTPASS(VE_CANNOT_RETRIEVE_DEVICE_NAME != voe_base_->LastError());
-  MARK();
-  TEST_MUSTPASS(-1 != hardware->GetRecordingDeviceName(0, NULL, guidName));
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-  MARK();
-  TEST_MUSTPASS(hardware->GetRecordingDeviceName(0, devName, NULL));
-
-  // default tests
-  for (idx = 0; idx < nRec; idx++) {
-    TEST_MUSTPASS(hardware->GetRecordingDeviceName(idx, devName, guidName));
-    MARK();
-    TEST_MUSTPASS(hardware->SetRecordingDevice(idx));
-  }
-  ANL();
-
-  // // SetRecordingDevice
-  TEST(SetRecordingDevice);
-  ANL();
-  TEST_MUSTPASS(hardware->SetRecordingDevice(0));
-  MARK();
-  TEST_MUSTPASS(hardware->SetRecordingDevice(0, kStereoLeft));
-  MARK();
-  TEST_MUSTPASS(hardware->SetRecordingDevice(0, kStereoRight));
-  MARK();
-  ANL();
-
-  // SetPlayoutDevice
-  TEST(SetPlayoutDevice);
-  ANL();
-#if defined(_WIN32)
-  TEST_MUSTPASS(hardware->SetPlayoutDevice(-1));
-  MARK();
-#else
-  TEST_MUSTPASS(hardware->SetPlayoutDevice(0));
-  MARK();
-#endif
-  ANL();
-#endif  // #if !defined(WEBRTC_IOS) && !defined(WEBRTC_ANDROID)
-#if defined(WEBRTC_IOS)
-  TEST(ResetSoundDevice);
-  ANL();
-
-  for (int p = 0; p <= 60; p += 20) {
-    TEST_LOG("Resetting sound device several times with pause %d ms\n", p);
-    for (int l = 0; l < 50; ++l) {
-      TEST_MUSTPASS(hardware->ResetAudioDevice());
-      MARK();
-      SleepMs(p);
-    }
-    ANL();
-  }
-
-  TEST_LOG("Start streaming - verify the audio after each batch of resets \n");
-  TEST_MUSTPASS(voe_base_->SetSendDestination(0, 8000, "127.0.0.1"));
-  TEST_MUSTPASS(voe_base_->SetLocalReceiver(0, 8000));
-  TEST_MUSTPASS(voe_base_->StartReceive(0));
-  TEST_MUSTPASS(voe_base_->StartPlayout(0));
-  TEST_MUSTPASS(voe_base_->StartSend(0));
-  SleepMs(2000);
-
-  SleepMs(2000);
-  for (int p = 0; p <= 60; p += 20) {
-    TEST_LOG("Resetting sound device several time with pause %d ms\n", p);
-    for (int l = 0; l < 20; ++l) {
-      TEST_MUSTPASS(hardware->ResetAudioDevice());
-      MARK();
-      SleepMs(p);
-    }
-    ANL();
-    SleepMs(2000);
-  }
-
-  TEST_LOG("Stop streaming \n");
-  TEST_MUSTPASS(voe_base_->StartSend(0));
-  TEST_MUSTPASS(voe_base_->StartPlayout(0));
-  TEST_MUSTPASS(voe_base_->StartReceive(0));
-#endif  // defined(WEBRTC_IOS))
-#ifdef WEBRTC_IOS
-  TEST_LOG(
-      "\nNOTE: Always run hardware tests also without extended tests "
-      "enabled,\nsince the extended tests are pre-streaming tests only.\n");
-#endif
-
-  TEST_MUSTPASS(voe_base_->DeleteChannel(0));
-  TEST_MUSTPASS(voe_base_->Terminate());
-
-  ANL();
-  AOK();
-
-  return 0;
-}
-
-// ----------------------------------------------------------------------------
-//  VoEExtendedTest::TestNetEqStats
-// ----------------------------------------------------------------------------
-
-int VoEExtendedTest::TestNetEqStats() {
-  PrepareTest("NetEqStats (!EMPTY!)");
-
-  AOK();
-  ANL();
-
-  return 0;
-}
-
-// ----------------------------------------------------------------------------
-//  VoEExtendedTest::TestNetwork
-//
-// ----------------------------------------------------------------------------
-
-int VoEExtendedTest::TestNetwork() {
-  PrepareTest("Network");
-
-  VoEBase* voe_base_ = _mgr.BasePtr();
-  VoENetwork* voe_network = _mgr.NetworkPtr();
-
-#ifdef _USE_EXTENDED_TRACE_
-  TEST_MUSTPASS(VoiceEngine::SetTraceFile(
-      (output_path + "VoENetwork_trace.txt").c_str()));
-  TEST_MUSTPASS(VoiceEngine::SetTraceFilter(
-      kTraceStateInfo | kTraceStateInfo | kTraceWarning | kTraceError |
-      kTraceCritical | kTraceApiCall | kTraceMemory | kTraceInfo));
-#endif
-
-  TEST_MUSTPASS(voe_base_->Init());
-
-  // ------------------------------------------------------------------------
-  // >> SetExternalTransport
-  //
-  // - VE initialized
-  // - no existing channels
-  // - no media
-  //
-  TEST(SetExternalTransport);
-  ANL();
-
-  ExtendedTestTransport* ptrTransport = new ExtendedTestTransport(voe_network);
-
-  // call without valid channel
-  TEST_MUSTPASS(!voe_network->DeRegisterExternalTransport(0));
-  MARK();
-  TEST_ERROR(VE_CHANNEL_NOT_VALID);
-
-  TEST_MUSTPASS(voe_base_->CreateChannel());
-
-  // different valid call combinations
-  TEST_MUSTPASS(voe_network->RegisterExternalTransport(0, *ptrTransport));
-  MARK();
-  TEST_MUSTPASS(voe_network->DeRegisterExternalTransport(0));
-  MARK();
-  TEST_MUSTPASS(voe_network->DeRegisterExternalTransport(0));
-  MARK();
-  TEST_MUSTPASS(voe_network->RegisterExternalTransport(0, *ptrTransport));
-  MARK();
-  TEST_MUSTPASS(!voe_network->RegisterExternalTransport(0, *ptrTransport));
-  MARK();  // must deregister first
-  TEST_MUSTPASS(voe_network->DeRegisterExternalTransport(0));
-  MARK();
-
-  // STATE: external transport is disabled
-  TEST_MUSTPASS(voe_base_->DeleteChannel(0));
-  TEST_MUSTPASS(voe_base_->CreateChannel());
-
-  // enable external transport and verify that "emulated loopback" works
-  TEST_MUSTPASS(voe_network->RegisterExternalTransport(0, *ptrTransport));
-  MARK();
-  TEST_MUSTPASS(voe_base_->StartSend(0));  // should only start recording
-  TEST_MUSTPASS(!voe_network->RegisterExternalTransport(0, *ptrTransport));
-  MARK();  // should fail
-  TEST_MUSTPASS(voe_network->DeRegisterExternalTransport(0));
-  MARK();
-  TEST_MUSTPASS(voe_network->RegisterExternalTransport(0, *ptrTransport));
-  MARK();
-  Play(0, 2000, true, true);  // play file as mic and verify loopback audio
-  TEST_MUSTPASS(voe_network->DeRegisterExternalTransport(0));
-  MARK();
-
-  // modified i VoE 3.4 (can be called also for external transport)
-  TEST_MUSTPASS(voe_base_->StartReceive(0));
-  TEST_MUSTPASS(voe_base_->StopReceive(0));
-
-  // always disable external transport before deleting the Transport object;
-  // will lead to crash for RTCP transmission otherwise
-  TEST_MUSTPASS(voe_network->DeRegisterExternalTransport(0));
-  MARK();
-  delete ptrTransport;
-
-  TEST_MUSTPASS(voe_base_->DeleteChannel(0));
-
-  ANL();
-  AOK();
-  ANL();
-  ANL();
-
-  // >> end of SetExternalTransport
-  // ------------------------------------------------------------------------
-  return 0;
-}
-
-// ----------------------------------------------------------------------------
-//  VoEExtendedTest::TestRTP_RTCP
-// ----------------------------------------------------------------------------
-
-// Used to validate packets during the RTP audio level indication test.
-class RTPAudioTransport : public Transport {
- public:
-  RTPAudioTransport() : mute_(false) {}
-
-  virtual ~RTPAudioTransport() {}
-
-  void set_mute(bool mute) { mute_ = mute; }
-  bool mute() const { return mute_; }
-
-  // TODO(andrew): use proper error checks here rather than asserts.
-  virtual int SendPacket(int channel, const void* data, int length) {
-    const uint8_t* packet = static_cast<const uint8_t*>(data);
-
-    // Extension bit.
-    assert(packet[0] & 0x10);
-    int index = 12;  // Assume standard RTP header.
-    // Header extension ID
-    assert(packet[index++] == 0xBE);
-    assert(packet[index++] == 0xDE);
-    // Header extension length
-    assert(packet[index++] == 0x00);
-    assert(packet[index++] == 0x01);
-
-    // User-defined ID.
-    assert(((packet[index] & 0xf0) >> 4) == 1);
-    // Length
-    assert((packet[index++] & 0x0f) == 0);
-
-    int vad = packet[index] >> 7;
-    int level = packet[index] & 0x7f;
-    if (channel == 0) {
-      printf("%d    -%d\n", vad, level);
-    } else if (channel == 1) {
-      printf("             %d    -%d\n", vad, level);
-    } else {
-      assert(false);
-    }
-
-    if (mute_) {
-      assert(vad == 0);
-      assert(level == 127);
-    } else {
-      assert(vad == 0 || vad == 1);
-      assert(level >= 0 && level <= 127);
-    }
-    return 0;
-  }
-
-  virtual int SendRTCPPacket(int /*channel*/,
-                             const void* /*data*/,
-                             int /*length*/) {
-    return 0;
-  }
-
- private:
-  bool mute_;
-};
-
-int VoEExtendedTest::TestRTP_RTCP() {
-  PrepareTest("RTP_RTCP");
-
-  VoEBase* voe_base_ = _mgr.BasePtr();
-  VoEFile* file = _mgr.FilePtr();
-  VoERTP_RTCP* rtp_rtcp = _mgr.RTP_RTCPPtr();
-  VoENetwork* network = _mgr.NetworkPtr();
-  VoEVolumeControl* volume = _mgr.VolumeControlPtr();
-  VoECodec* codec = _mgr.CodecPtr();
-
-  XRTPObserver rtpObserver;
-
-#ifdef WEBRTC_ANDROID
-  int sleepTime = 200;
-#else
-  int sleepTime = 100;
-#endif
-
-#ifdef _USE_EXTENDED_TRACE_
-  TEST_MUSTPASS(VoiceEngine::SetTraceFile(
-      (output_path + "VoERTP_RTCP_trace.txt").c_str()));
-  TEST_MUSTPASS(VoiceEngine::SetTraceFilter(
-      kTraceStateInfo | kTraceStateInfo | kTraceWarning | kTraceError |
-      kTraceCritical | kTraceApiCall | kTraceMemory | kTraceInfo));
-#endif
-
-  TEST_MUSTPASS(voe_base_->Init());
-  TEST_MUSTPASS(voe_base_->CreateChannel());
-
-  scoped_ptr<VoiceChannelTransport> voice_channel_transport(
-      new VoiceChannelTransport(network, 0));
-
-  voice_channel_transport->SetSendDestination("127.0.0.1", 12345);
-  voice_channel_transport->SetLocalReceiver(12345);
-
-  TEST_MUSTPASS(voe_base_->StartReceive(0));
-  TEST_MUSTPASS(voe_base_->StartSend(0));
-  TEST_MUSTPASS(voe_base_->StartPlayout(0));
-
-  ///////////////////////////
-  // Actual test starts here
-
-  // ------------------------------------------------------------------------
-  // >> Set/GetRTPAudioLevelIndicationStatus
-  TEST(SetRTPAudioLevelIndicationStatus);
-  ANL();
-  TEST(GetRTPAudioLevelIndicationStatus);
-
-  // test invalid input parameters
-  TEST_MUSTPASS(-1 != rtp_rtcp->SetRTPAudioLevelIndicationStatus(0, true, 0));
-  MARK();
-  TEST_ERROR(VE_INVALID_ARGUMENT);
-  TEST_MUSTPASS(-1 != rtp_rtcp->SetRTPAudioLevelIndicationStatus(0, true, 15));
-  MARK();
-  TEST_ERROR(VE_INVALID_ARGUMENT);
-  TEST_MUSTPASS(-1 != rtp_rtcp->SetRTPAudioLevelIndicationStatus(1, true, 5));
-  MARK();
-  TEST_ERROR(VE_CHANNEL_NOT_VALID);
-
-  // test any id can be used on disabling.
-  TEST_MUSTPASS(0 != rtp_rtcp->SetRTPAudioLevelIndicationStatus(0, false, 0));
-  MARK();
-
-  // test complete valid input range [1,14]
-  bool audioLevelEnabled(false);
-  unsigned char ID(0);
-  for (int id = 1; id < 15; id++) {
-    TEST_MUSTPASS(rtp_rtcp->SetRTPAudioLevelIndicationStatus(0, true, id));
-    MARK();
-    TEST_MUSTPASS(
-        rtp_rtcp->GetRTPAudioLevelIndicationStatus(0, audioLevelEnabled, ID));
-    MARK();
-    TEST_MUSTPASS(audioLevelEnabled != true);
-    TEST_MUSTPASS(rtp_rtcp->SetRTPAudioLevelIndicationStatus(0, false, id));
-    MARK();
-    TEST_MUSTPASS(
-        rtp_rtcp->GetRTPAudioLevelIndicationStatus(0, audioLevelEnabled, ID));
-    MARK();
-    TEST_MUSTPASS(audioLevelEnabled != false);
-    TEST_MUSTPASS(ID != id);
-  }
-  TEST_MUSTPASS(voe_base_->StopPlayout(0));
-  TEST_MUSTPASS(voe_base_->StopSend(0));
-  TEST_MUSTPASS(voe_base_->StopPlayout(0));
-  TEST_MUSTPASS(voe_base_->DeleteChannel(0));
-
-  RTPAudioTransport rtpAudioTransport;
-  TEST_MUSTPASS(voe_base_->CreateChannel());
-  TEST_MUSTPASS(network->RegisterExternalTransport(0, rtpAudioTransport));
-  TEST_MUSTPASS(rtp_rtcp->SetRTPAudioLevelIndicationStatus(0, true));
-  TEST_MUSTPASS(codec->SetVADStatus(0, true));
-
-  printf("\n\nReceving muted packets (expect VAD = 0, Level = -127)...\n");
-  printf("VAD  Level [dbFS]\n");
-  SleepMs(2000);
-  rtpAudioTransport.set_mute(true);
-  TEST_MUSTPASS(volume->SetInputMute(0, true));
-  TEST_MUSTPASS(voe_base_->StartSend(0));
-  SleepMs(5000);
-  TEST_MUSTPASS(voe_base_->StopSend(0));
-  rtpAudioTransport.set_mute(false);
-  TEST_MUSTPASS(volume->SetInputMute(0, false));
-
-  printf("\nReceiving packets from mic (should respond to mic level)...\n");
-  printf("VAD  Level [dbFS]\n");
-  SleepMs(2000);
-  TEST_MUSTPASS(voe_base_->StartSend(0));
-  SleepMs(5000);
-  TEST_MUSTPASS(voe_base_->StopSend(0));
-
-  printf("\nReceiving packets from file (expect mostly VAD = 1)...\n");
-  printf("VAD  Level [dbFS]\n");
-  SleepMs(2000);
-  TEST_MUSTPASS(
-      file->StartPlayingFileAsMicrophone(0, _mgr.AudioFilename(), true, true));
-  TEST_MUSTPASS(voe_base_->StartSend(0));
-  SleepMs(5000);
-  TEST_MUSTPASS(voe_base_->StopSend(0));
-
-  printf("\nMuted and mic on independent channels...\n");
-  printf("Muted        Mic\n");
-  SleepMs(2000);
-  ASSERT_TRUE(1 == voe_base_->CreateChannel());
-  TEST_MUSTPASS(network->RegisterExternalTransport(1, rtpAudioTransport));
-  TEST_MUSTPASS(rtp_rtcp->SetRTPAudioLevelIndicationStatus(1, true));
-  TEST_MUSTPASS(codec->SetVADStatus(1, true));
-  TEST_MUSTPASS(volume->SetInputMute(0, true));
-  TEST_MUSTPASS(voe_base_->StartSend(0));
-  TEST_MUSTPASS(voe_base_->StartSend(1));
-  SleepMs(5000);
-  TEST_MUSTPASS(voe_base_->StopSend(0));
-  TEST_MUSTPASS(voe_base_->StopSend(1));
-
-  TEST_MUSTPASS(network->DeRegisterExternalTransport(0));
-  TEST_MUSTPASS(network->DeRegisterExternalTransport(1));
-  TEST_MUSTPASS(voe_base_->DeleteChannel(0));
-  TEST_MUSTPASS(voe_base_->DeleteChannel(1));
-  voice_channel_transport.reset(NULL);
-
-  TEST_MUSTPASS(voe_base_->CreateChannel());
-  voice_channel_transport.reset(new VoiceChannelTransport(network, 0));
-  voice_channel_transport->SetSendDestination("127.0.0.1", 12347);
-  voice_channel_transport->SetLocalReceiver(12347);
-
-  TEST_MUSTPASS(voe_base_->StartReceive(0));
-  TEST_MUSTPASS(voe_base_->StartSend(0));
-  TEST_MUSTPASS(voe_base_->StartPlayout(0));
-
-  MARK();
-  ANL();
-
-  // ------------------------------------------------------------------------
-  // >> SetLocalSSRC
-
-  int i(0);
-
-  TEST(SetLocalSSRC);
-  TEST_MUSTPASS(!rtp_rtcp->SetLocalSSRC(0, 5678));
-  MARK();
-  TEST_MUSTPASS(VE_ALREADY_SENDING != voe_base_->LastError());
-  TEST_MUSTPASS(voe_base_->StopSend(0));
-  TEST_MUSTPASS(rtp_rtcp->SetLocalSSRC(0, 5678));  // force send SSRC to 5678
-  TEST_MUSTPASS(voe_base_->StartSend(0));
-  MARK();
-  ANL();
-
-  TEST_MUSTPASS(
-      file->StartPlayingFileAsMicrophone(0, _mgr.AudioFilename(), true, true));
-
-  // ------------------------------------------------------------------------
-  // >> RTP dump APIs
-  TEST(Start / StopRtpDump);
-  ANL();
-  TEST(Start / RTPDumpIsActive);
-
-  TEST_MUSTPASS(-1 != rtp_rtcp->RTPDumpIsActive(-1, kRtpIncoming));
-  MARK();  // invalid channel
-  TEST_ERROR(VE_CHANNEL_NOT_VALID);
-  TEST_MUSTPASS(false != rtp_rtcp->RTPDumpIsActive(0, kRtpIncoming));
-  MARK();  // should be off by default
-  TEST_MUSTPASS(false != rtp_rtcp->RTPDumpIsActive(0, kRtpOutgoing));
-  MARK();  // should be off by default
-
-  TEST_MUSTPASS(-1 != rtp_rtcp->StartRTPDump(-1, NULL));
-  MARK();  // invalid channel
-  TEST_ERROR(VE_CHANNEL_NOT_VALID);
-  TEST_MUSTPASS(-1 != rtp_rtcp->StartRTPDump(0, NULL));
-  MARK();  // invalid file name
-  TEST_ERROR(VE_BAD_FILE);
-
-  // Create two RTP dump files:
-
-  //  - dump_in_1sec.rtp <=> ~1 sec recording of input side
-  //  - dump_in_2sec.rtp <=> ~2 sec recording of output side
-  //
-  TEST_MUSTPASS(rtp_rtcp->StopRTPDump(0));
-  MARK();
-  TEST_MUSTPASS(rtp_rtcp->StopRTPDump(0, kRtpIncoming));
-  MARK();
-  TEST_MUSTPASS(rtp_rtcp->StopRTPDump(0, kRtpOutgoing));
-  MARK();
-  std::string output_path = webrtc::test::OutputPath();
-  TEST_MUSTPASS(rtp_rtcp->StartRTPDump(
-      0, (output_path + "dump_in_1sec.rtp").c_str(), kRtpIncoming));
-  MARK();
-  TEST_MUSTPASS(rtp_rtcp->StartRTPDump(
-      0, (output_path + "dump_out_2sec.rtp").c_str(), kRtpOutgoing));
-  MARK();
-  SleepMs(1000);
-  TEST_MUSTPASS(rtp_rtcp->StopRTPDump(0, kRtpIncoming));
-  MARK();
-  SleepMs(1000);
-  TEST_MUSTPASS(rtp_rtcp->StopRTPDump(0, kRtpOutgoing));
-  MARK();
-
-  // Start/Stop tests:
-  //
-  // - only one file (called dump_in_200ms.rtp) should exist after this test
-  //
-  for (i = 0; i < 10; i++) {
-    TEST_MUSTPASS(
-        rtp_rtcp->StartRTPDump(0, (output_path + "dump_in_200ms.rtp").c_str()));
-    MARK();
-    SleepMs(200);
-    TEST_MUSTPASS(rtp_rtcp->StopRTPDump(0));
-    MARK();
-  }
-
-  // >> end of RTP dump APIs
-  // ------------------------------------------------------------------------
-  ANL();
-
-  TEST(GetRTCPStatus);
-  bool enabled;
-  TEST_MUSTPASS(!rtp_rtcp->GetRTCPStatus(-1, enabled));
-  MARK();
-  TEST_MUSTPASS(rtp_rtcp->GetRTCPStatus(0, enabled));
-  MARK();  // should be on by default
-  TEST_MUSTPASS(enabled != true);
-  ANL();
-
-  TEST(SetRTCPStatus);
-  TEST_MUSTPASS(rtp_rtcp->SetRTCPStatus(0, false));
-  MARK();
-  TEST_MUSTPASS(rtp_rtcp->GetRTCPStatus(0, enabled));
-  TEST_MUSTPASS(enabled != false);
-  MARK();
-  SleepMs(2000);
-  TEST_MUSTPASS(rtp_rtcp->SetRTCPStatus(0, true));
-  MARK();
-  TEST_MUSTPASS(rtp_rtcp->GetRTCPStatus(0, enabled));
-  TEST_MUSTPASS(enabled != true);
-  MARK();
-  SleepMs(6000);  // Make sure we get an RTCP packet
-  ANL();
-
-  TEST(CNAME);
-  TEST_MUSTPASS(!rtp_rtcp->SetRTCP_CNAME(0, NULL));
-  MARK();
-  TEST_MUSTPASS(VE_RTP_RTCP_MODULE_ERROR != voe_base_->LastError());
-  MARK();
-  TEST_MUSTPASS(!rtp_rtcp->GetRemoteRTCP_CNAME(0, NULL));
-  MARK();
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-  MARK();
-  ANL();
-
-  TEST(GetRemoteSSRC);
-  unsigned int ssrc(0);
-  TEST_MUSTPASS(rtp_rtcp->GetRemoteSSRC(0, ssrc));
-  MARK();
-  TEST_MUSTPASS(ssrc != 5678);
-  ANL();
-
-  TEST(GetRemoteCSRC);  // only trivial tests added
-  unsigned int csrcs[2];
-  int n(0);
-  TEST_MUSTPASS(!rtp_rtcp->GetRemoteCSRCs(1, csrcs));
-  MARK();
-  n = rtp_rtcp->GetRemoteCSRCs(0, csrcs);
-  MARK();
-  TEST_MUSTPASS(n != 0);  // should be empty
-  ANL();
-
-  TEST(SetRTPObserver);
-  TEST_MUSTPASS(voe_base_->StopSend(0));
-  TEST_MUSTPASS(rtp_rtcp->RegisterRTPObserver(0, rtpObserver));
-  TEST_MUSTPASS(rtp_rtcp->DeRegisterRTPObserver(0));
-  TEST_MUSTPASS(rtp_rtcp->RegisterRTPObserver(0, rtpObserver));
-  TEST_MUSTPASS(rtp_rtcp->SetLocalSSRC(0, 7777));  // force send SSRC to 7777
-  TEST_MUSTPASS(voe_base_->StartSend(0));
-  SleepMs(sleepTime);
-  // verify that the new SSRC has been detected by the observer
-  TEST_MUSTPASS(rtpObserver._SSRC != 7777);
-  TEST_MUSTPASS(rtp_rtcp->DeRegisterRTPObserver(0));
-  ANL();
-
-  // Make fresh restart (ensures that SSRC is randomized)
-  TEST_MUSTPASS(file->StopPlayingFileAsMicrophone(0));
-  TEST_MUSTPASS(voe_base_->StopSend(0));
-  TEST_MUSTPASS(voe_base_->StopPlayout(0));
-  TEST_MUSTPASS(voe_base_->StopReceive(0));
-  TEST_MUSTPASS(voe_base_->DeleteChannel(0));
-  voice_channel_transport.reset(NULL);
-
-  SleepMs(100);
-
-  TEST_MUSTPASS(voe_base_->CreateChannel());
-
-  voice_channel_transport.reset(new VoiceChannelTransport(network, 0));
-  voice_channel_transport->SetSendDestination("127.0.0.1", 12345);
-  voice_channel_transport->SetLocalReceiver(12345);
-
-  TEST_MUSTPASS(voe_base_->StartReceive(0));
-  TEST_MUSTPASS(voe_base_->StartSend(0));
-  TEST_MUSTPASS(voe_base_->StartPlayout(0));
-  TEST_MUSTPASS(
-      file->StartPlayingFileAsMicrophone(0, _mgr.AudioFilename(), true, true));
-
-  SleepMs(8000);
-
-  TEST(GetRemoteRTCPData);
-  // Statistics based on received RTCP reports (i.e. statistics on the remote
-  // side sent to us).
-  unsigned int NTPHigh(0), NTPLow(0), timestamp(0), playoutTimestamp(0),
-      jitter(0);
-  unsigned short fractionLost(0);
-  TEST_MUSTPASS(rtp_rtcp->GetRemoteRTCPData(
-      0, NTPHigh, NTPLow, timestamp, playoutTimestamp));
-  TEST_LOG(
-      "\n    NTPHigh = %u \n    NTPLow = %u \n    timestamp = %u \n  "
-      "  playoutTimestamp = %u \n    jitter = %u \n    fractionLost = %hu \n",
-      NTPHigh,
-      NTPLow,
-      timestamp,
-      playoutTimestamp,
-      jitter,
-      fractionLost);
-
-  unsigned int NTPHigh2(0), NTPLow2(0), timestamp2(0);
-  unsigned int playoutTimestamp2(0), jitter2(0);
-  unsigned short fractionLost2(0);
-
-  TEST_LOG(
-      "take a new sample and ensure that the playout timestamp is "
-      "maintained");
-  SleepMs(100);
-  TEST_MUSTPASS(rtp_rtcp->GetRemoteRTCPData(0,
-                                            NTPHigh2,
-                                            NTPLow2,
-                                            timestamp2,
-                                            playoutTimestamp2,
-                                            &jitter2,
-                                            &fractionLost2));
-  TEST_LOG(
-      "\n    NTPHigh = %u \n    NTPLow = %u \n    timestamp = %u \n  "
-      "  playoutTimestamp = %u \n    jitter = %u \n    fractionLost = %hu \n",
-      NTPHigh2,
-      NTPLow2,
-      timestamp2,
-      playoutTimestamp2,
-      jitter2,
-      fractionLost2);
-  TEST_MUSTPASS(playoutTimestamp != playoutTimestamp2);
-
-  TEST_LOG(
-      "wait for 8 seconds and ensure that the RTCP statistics is"
-      " updated...");
-  SleepMs(8000);
-  TEST_MUSTPASS(rtp_rtcp->GetRemoteRTCPData(0,
-                                            NTPHigh2,
-                                            NTPLow2,
-                                            timestamp2,
-                                            playoutTimestamp2,
-                                            &jitter2,
-                                            &fractionLost2));
-  TEST_LOG(
-      "\n    NTPHigh = %u \n    NTPLow = %u \n    timestamp = %u \n  "
-      "  playoutTimestamp = %u \n    jitter = %u \n    fractionLost = %hu \n",
-      NTPHigh2,
-      NTPLow2,
-      timestamp2,
-      playoutTimestamp2,
-      jitter2,
-      fractionLost2);
-  TEST_MUSTPASS((NTPHigh == NTPHigh2) && (NTPLow == NTPLow2));
-  TEST_MUSTPASS(timestamp == timestamp2);
-  TEST_MUSTPASS(playoutTimestamp == playoutTimestamp2);
-  CodecInst cinst;
-#ifdef WEBRTC_CODEC_RED
-  TEST_LOG(
-      "Turn FEC and VAD on and wait for 4 seconds and ensure that "
-      "the jitter is still small...");
-#if (!defined(WEBRTC_IOS) && !defined(WEBRTC_ANDROID))
-  cinst.pltype = 104;
-  strcpy(cinst.plname, "isac");
-  cinst.plfreq = 32000;
-  cinst.pacsize = 960;
-  cinst.channels = 1;
-  cinst.rate = 45000;
-#else
-  cinst.pltype = 119;
-  strcpy(cinst.plname, "isaclc");
-  cinst.plfreq = 16000;
-  cinst.pacsize = 320;
-  cinst.channels = 1;
-  cinst.rate = 40000;
-#endif
-  TEST_MUSTPASS(voe_base_->StopPlayout(0));
-  TEST_MUSTPASS(voe_base_->StopSend(0));
-  TEST_MUSTPASS(voe_base_->StopReceive(0));
-  TEST_MUSTPASS(codec->SetRecPayloadType(0, cinst));
-  TEST_MUSTPASS(codec->SetSendCodec(0, cinst));
-  TEST_MUSTPASS(voe_base_->StartSend(0));
-  TEST_MUSTPASS(voe_base_->StartReceive(0));
-  TEST_MUSTPASS(voe_base_->StartPlayout(0));
-  TEST_MUSTPASS(rtp_rtcp->SetFECStatus(0, true, 126));
-  MARK();
-  TEST_MUSTPASS(codec->SetVADStatus(0, true));
-  SleepMs(4000);
-  TEST_MUSTPASS(rtp_rtcp->GetRemoteRTCPData(0,
-                                            NTPHigh2,
-                                            NTPLow2,
-                                            timestamp2,
-                                            playoutTimestamp2,
-                                            &jitter2,
-                                            &fractionLost2));
-  TEST_LOG(
-      "\n    NTPHigh = %u \n    NTPLow = %u \n    timestamp = %u \n "
-      "   playoutTimestamp = %u \n    jitter = %u \n   fractionLost = %hu \n",
-      NTPHigh2,
-      NTPLow2,
-      timestamp2,
-      playoutTimestamp2,
-      jitter2,
-      fractionLost2);
-  TEST_MUSTPASS(jitter2 > 1000)
-  TEST_MUSTPASS(rtp_rtcp->SetFECStatus(0, false));
-  MARK();
-#endif  // #ifdef WEBRTC_CODEC_RED
-
-  TEST(GetRTPStatistics);
-  ANL();
-  // Statistics summarized on local side based on received RTP packets.
-  CallStatistics stats;
-  // Call GetRTPStatistics over a longer period than 7.5 seconds
-  // (=dT RTCP transmissions).
-  unsigned int averageJitterMs, maxJitterMs, discardedPackets;
-  SleepMs(1000);
-  for (i = 0; i < 8; i++) {
-    TEST_MUSTPASS(rtp_rtcp->GetRTPStatistics(
-        0, averageJitterMs, maxJitterMs, discardedPackets));
-    TEST_LOG(
-        "    %i) averageJitterMs = %u \n    maxJitterMs = %u \n  "
-        "  discardedPackets = %u \n",
-        i,
-        averageJitterMs,
-        maxJitterMs,
-        discardedPackets);
-    SleepMs(1000);
-  }
-
-  TEST(RTCPStatistics #1);
-  ANL();
-  unsigned int packetsSent(0);
-  unsigned int packetsReceived(0);
-  for (i = 0; i < 8; i++) {
-    TEST_MUSTPASS(rtp_rtcp->GetRTCPStatistics(0, stats));
-    TEST_LOG(
-        "    %i) fractionLost = %hu \n    cumulativeLost = %u \n  "
-        "  extendedMax = %u \n    jitterSamples = %u \n    rttMs = %d \n",
-        i,
-        stats.fractionLost,
-        stats.cumulativeLost,
-        stats.extendedMax,
-        stats.jitterSamples,
-        stats.rttMs);
-    TEST_LOG(
-        "    bytesSent = %d \n    packetsSent = %d \n   "
-        " bytesReceived = %d \n    packetsReceived = %d \n",
-        stats.bytesSent,
-        stats.packetsSent,
-        stats.bytesReceived,
-        stats.packetsReceived);
-    if (i > 0) {
-      TEST_LOG("    diff sent packets    : %u (~50)\n",
-               stats.packetsSent - packetsSent);
-      TEST_LOG("    diff received packets: %u (~50)\n",
-               stats.packetsReceived - packetsReceived);
-    }
-    packetsSent = stats.packetsSent;
-    packetsReceived = stats.packetsReceived;
-    SleepMs(1000);
-  }
-
-  TEST(RTCPStatistics #2);
-  ANL();
-  TEST_LOG("restart sending and ensure that the statistics is reset");
-  TEST_MUSTPASS(voe_base_->StopSend(0));
-  TEST_MUSTPASS(voe_base_->StartSend(0));
-  SleepMs(50);  // ensures approx. two received packets
-  TEST_MUSTPASS(rtp_rtcp->GetRTCPStatistics(0, stats));
-  TEST_LOG(
-      "\n    fractionLost = %hu \n    cumulativeLost = %u \n  "
-      "  extendedMax = %u \n    jitterSamples = %u \n    rttMs = %d \n",
-      stats.fractionLost,
-      stats.cumulativeLost,
-      stats.extendedMax,
-      stats.jitterSamples,
-      stats.rttMs);
-  TEST_LOG(
-      "    bytesSent = %d \n    packetsSent = %d \n   "
-      " bytesReceived = %d \n    packetsReceived = %d \n",
-      stats.bytesSent,
-      stats.packetsSent,
-      stats.bytesReceived,
-      stats.packetsReceived);
-
-  TEST(RTCPStatistics #3);
-  ANL();
-  TEST_LOG("disable RTCP and verify that statistics is not corrupt");
-  TEST_MUSTPASS(rtp_rtcp->SetRTCPStatus(0, false));
-  SleepMs(250);
-  TEST_MUSTPASS(rtp_rtcp->GetRTCPStatistics(0, stats));
-  TEST_LOG(
-      "\n    fractionLost = %hu \n    cumulativeLost = %u \n   "
-      " extendedMax = %u \n    jitterSamples = %u \n    rttMs = %d \n",
-      stats.fractionLost,
-      stats.cumulativeLost,
-      stats.extendedMax,
-      stats.jitterSamples,
-      stats.rttMs);
-  TEST_LOG(
-      "    bytesSent = %d \n    packetsSent = %d \n    "
-      "bytesReceived = %d \n    packetsReceived = %d \n",
-      stats.bytesSent,
-      stats.packetsSent,
-      stats.bytesReceived,
-      stats.packetsReceived);
-  TEST_MUSTPASS(rtp_rtcp->SetRTCPStatus(0, true));
-
-  TEST(RTCPStatistics #4);
-  ANL();
-  TEST_LOG("restart receiving and check RX statistics");
-  TEST_MUSTPASS(voe_base_->StopReceive(0));
-  TEST_MUSTPASS(voe_base_->StartReceive(0));
-  SleepMs(50);  // ensures approx. two received packets
-  TEST_MUSTPASS(rtp_rtcp->GetRTCPStatistics(0, stats));
-  TEST_LOG(
-      "\n    fractionLost = %hu \n    cumulativeLost = %u \n   "
-      " extendedMax = %u \n    jitterSamples = %u \n    rttMs = %d \n",
-      stats.fractionLost,
-      stats.cumulativeLost,
-      stats.extendedMax,
-      stats.jitterSamples,
-      stats.rttMs);
-  TEST_LOG(
-      "    bytesSent = %d \n    packetsSent = %d \n   "
-      " bytesReceived = %d \n    packetsReceived = %d \n",
-      stats.bytesSent,
-      stats.packetsSent,
-      stats.bytesReceived,
-      stats.packetsReceived);
-
-  TEST(SendApplicationDefinedRTCPPacket);
-  // just do some fail tests here
-  TEST_MUSTPASS(voe_base_->StopSend(0));
-  // should fail since sending is off
-  TEST_MUSTPASS(!rtp_rtcp->SendApplicationDefinedRTCPPacket(
-                     0, 0, 0, "abcdabcdabcdabcdabcdabcdabcdabcd", 32));
-  MARK();
-  TEST_MUSTPASS(voe_base_->StartSend(0));
-  TEST_MUSTPASS(rtp_rtcp->SendApplicationDefinedRTCPPacket(
-      0, 0, 0, "abcdabcdabcdabcdabcdabcdabcdabcd", 32));
-  MARK();
-  TEST_MUSTPASS(rtp_rtcp->SetRTCPStatus(0, false));
-  // should fail since RTCP is off
-  TEST_MUSTPASS(!rtp_rtcp->SendApplicationDefinedRTCPPacket(
-                     0, 0, 0, "abcdabcdabcdabcdabcdabcdabcdabcd", 32));
-  MARK();
-  TEST_MUSTPASS(rtp_rtcp->SetRTCPStatus(0, true));
-  TEST_MUSTPASS(rtp_rtcp->SendApplicationDefinedRTCPPacket(
-      0, 0, 0, "abcdabcdabcdabcdabcdabcdabcdabcd", 32));
-  MARK();
-  // invalid data length
-  TEST_MUSTPASS(!rtp_rtcp->SendApplicationDefinedRTCPPacket(
-                     0, 0, 0, "abcdabcdabcdabcdabcdabcdabcdabc", 31));
-  MARK();
-  // invalid data vector
-  TEST_MUSTPASS(!rtp_rtcp->SendApplicationDefinedRTCPPacket(0, 0, 0, NULL, 0));
-  MARK();
-  ANL();
-
-#ifdef WEBRTC_CODEC_RED
-  TEST(SetFECStatus);
-  ANL();
-  TEST_MUSTPASS(voe_base_->StopPlayout(0));
-  TEST_MUSTPASS(voe_base_->StopSend(0));
-  TEST_MUSTPASS(voe_base_->StopReceive(0));
-  cinst.pltype = 126;
-  strcpy(cinst.plname, "red");
-  cinst.plfreq = 8000;
-  cinst.pacsize = 0;
-  cinst.channels = 1;
-  cinst.rate = 0;
-  TEST_MUSTPASS(codec->SetRecPayloadType(0, cinst));
-#if (!defined(WEBRTC_IOS) && !defined(WEBRTC_ANDROID))
-  cinst.pltype = 104;
-  strcpy(cinst.plname, "isac");
-  cinst.plfreq = 32000;
-  cinst.pacsize = 960;
-  cinst.channels = 1;
-  cinst.rate = 45000;
-#else
-  cinst.pltype = 119;
-  strcpy(cinst.plname, "isaclc");
-  cinst.plfreq = 16000;
-  cinst.pacsize = 320;
-  cinst.channels = 1;
-  cinst.rate = 40000;
-#endif
-  // We have to re-register the audio codec payload type as stopReceive will
-  // clean the database
-  TEST_MUSTPASS(codec->SetRecPayloadType(0, cinst));
-  voice_channel_transport.reset(NULL);
-
-  voice_channel_transport.reset(new VoiceChannelTransport(network, 0));
-  voice_channel_transport->SetSendDestination("127.0.0.1", 8000);
-  voice_channel_transport->SetLocalReceiver(8000);
-
-  TEST_MUSTPASS(voe_base_->StartPlayout(0));
-  TEST_MUSTPASS(voe_base_->StartReceive(0));
-  TEST_MUSTPASS(voe_base_->StartSend(0));
-  TEST_LOG("Start playing a file as microphone again \n");
-  TEST_MUSTPASS(
-      file->StartPlayingFileAsMicrophone(0, _mgr.AudioFilename(), true, true));
-  TEST_MUSTPASS(rtp_rtcp->SetFECStatus(0, true, 126));
-  MARK();
-  TEST_LOG("Should sound OK with FEC enabled\n");
-  SleepMs(4000);
-  TEST_MUSTPASS(rtp_rtcp->SetFECStatus(0, false));
-  MARK();
-#endif  // #ifdef WEBRTC_CODEC_RED
-  TEST_MUSTPASS(file->StopPlayingFileAsMicrophone(0));
-  TEST_MUSTPASS(voe_base_->StopSend(0));
-  TEST_MUSTPASS(voe_base_->StopPlayout(0));
-  TEST_MUSTPASS(voe_base_->StopReceive(0));
-  TEST_MUSTPASS(voe_base_->DeleteChannel(0));
-  TEST_MUSTPASS(voe_base_->Terminate());
-
-  ANL();
-  AOK();
-  return 0;
-}
-
-// ----------------------------------------------------------------------------
-//  VoEExtendedTest::TestVideoSync
-// ----------------------------------------------------------------------------
-
-int VoEExtendedTest::TestVideoSync() {
-  PrepareTest("VideoSync");
-
-  VoEBase* voe_base_ = _mgr.BasePtr();
-  VoEVideoSync* vsync = _mgr.VideoSyncPtr();
-  VoENetwork* network = _mgr.NetworkPtr();
-
-  // check if this interface is supported
-  if (!vsync) {
-    TEST_LOG("VoEVideoSync is not supported!");
-    return -1;
-  }
-
-#ifdef _USE_EXTENDED_TRACE_
-  TEST_MUSTPASS(VoiceEngine::SetTraceFile(
-      (output_path + "VoEVideoSync_trace.txt").c_str()));
-  TEST_MUSTPASS(VoiceEngine::SetTraceFilter(
-      kTraceStateInfo | kTraceStateInfo | kTraceWarning | kTraceError |
-      kTraceCritical | kTraceApiCall | kTraceMemory | kTraceInfo));
-#endif
-
-  TEST_MUSTPASS(voe_base_->Init());
-  TEST_MUSTPASS(voe_base_->CreateChannel());
-
-  scoped_ptr<VoiceChannelTransport> voice_channel_transport(
-      new VoiceChannelTransport(network, 0));
-
-  voice_channel_transport->SetSendDestination("127.0.0.1", 12345);
-  voice_channel_transport->SetLocalReceiver(12345);
-
-  TEST_MUSTPASS(voe_base_->StartReceive(0));
-  TEST_MUSTPASS(voe_base_->StartPlayout(0));
-  TEST_MUSTPASS(voe_base_->StartSend(0));
-
-  ///////////////////////////
-  // Actual test starts here
-
-  TEST(SetInitTimestamp);
-  ANL();
-  TEST_MUSTPASS(!vsync->SetInitTimestamp(0, 12345));
-  TEST_MUSTPASS(voe_base_->StopSend(0));
-  MARK();
-  SleepMs(1000);
-  TEST_MUSTPASS(vsync->SetInitTimestamp(0, 12345));
-  TEST_MUSTPASS(voe_base_->StartSend(0));
-  MARK();
-  SleepMs(1000);
-  AOK();
-  ANL();
-
-  TEST(SetInitSequenceNumber);
-  ANL();
-  TEST_MUSTPASS(!vsync->SetInitSequenceNumber(0, 123));
-  TEST_MUSTPASS(voe_base_->StopSend(0));
-  MARK();
-  SleepMs(1000);
-  TEST_MUSTPASS(vsync->SetInitSequenceNumber(0, 123));
-  TEST_MUSTPASS(voe_base_->StartSend(0));
-  MARK();
-  SleepMs(1000);
-  AOK();
-  ANL();
-
-  unsigned int timeStamp;
-  TEST(GetPlayoutTimestamp);
-  ANL();
-  TEST_MUSTPASS(vsync->GetPlayoutTimestamp(0, timeStamp));
-  TEST_LOG("GetPlayoutTimestamp: %u", timeStamp);
-  SleepMs(1000);
-  TEST_MUSTPASS(vsync->GetPlayoutTimestamp(0, timeStamp));
-  TEST_LOG(" %u", timeStamp);
-  SleepMs(1000);
-  TEST_MUSTPASS(vsync->GetPlayoutTimestamp(0, timeStamp));
-  TEST_LOG(" %u\n", timeStamp);
-  AOK();
-  ANL();
-
-  TEST(SetMinimumPlayoutDelay);
-  ANL();
-  TEST_MUSTPASS(!vsync->SetMinimumPlayoutDelay(0, -1));
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-  MARK();
-  TEST_MUSTPASS(!vsync->SetMinimumPlayoutDelay(0, 5000));
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-  MARK();
-
-  TEST_MUSTPASS(voe_base_->StopSend(0));
-  TEST_MUSTPASS(voe_base_->StopPlayout(0));
-  TEST_MUSTPASS(voe_base_->StopReceive(0));
-  TEST_MUSTPASS(voe_base_->DeleteChannel(0));
-  TEST_MUSTPASS(voe_base_->Terminate());
-
-  AOK();
-  ANL();
-  return 0;
-}
-
-// ----------------------------------------------------------------------------
-//  VoEExtendedTest::TestVolumeControl
-// ----------------------------------------------------------------------------
-
-int VoEExtendedTest::TestVolumeControl() {
-  PrepareTest("TestVolumeControl");
-
-  VoEBase* voe_base_ = _mgr.BasePtr();
-  VoEVolumeControl* volume = _mgr.VolumeControlPtr();
-  VoENetwork* network = _mgr.NetworkPtr();
-#ifdef _TEST_FILE_
-  VoEFile* file = _mgr.FilePtr();
-#endif
-#ifdef _TEST_HARDWARE_
-  VoEHardware* hardware = _mgr.HardwarePtr();
-#endif
-
-#ifdef _USE_EXTENDED_TRACE_
-  TEST_MUSTPASS(VoiceEngine::SetTraceFile(
-      (output_path + "VoEVolumeControl_trace.txt").c_str()));
-  TEST_MUSTPASS(VoiceEngine::SetTraceFilter(
-      kTraceStateInfo | kTraceStateInfo | kTraceWarning | kTraceError |
-      kTraceCritical | kTraceApiCall | kTraceMemory | kTraceInfo));
-#endif
-
-  TEST_MUSTPASS(voe_base_->Init());
-  TEST_MUSTPASS(voe_base_->CreateChannel());
-#if (defined _TEST_HARDWARE_ && (!defined(WEBRTC_IOS)))
-#if defined(_WIN32)
-  TEST_MUSTPASS(hardware->SetRecordingDevice(-1));
-  TEST_MUSTPASS(hardware->SetPlayoutDevice(-1));
-#else
-  TEST_MUSTPASS(hardware->SetRecordingDevice(0));
-  TEST_MUSTPASS(hardware->SetPlayoutDevice(0));
-#endif
-#endif
-  scoped_ptr<VoiceChannelTransport> voice_channel_transport(
-      new VoiceChannelTransport(network, 0));
-  voice_channel_transport->SetSendDestination("127.0.0.1", 12345);
-  voice_channel_transport->SetLocalReceiver(12345);
-  TEST_MUSTPASS(voe_base_->StartReceive(0));
-  TEST_MUSTPASS(voe_base_->StartPlayout(0));
-  TEST_MUSTPASS(voe_base_->StartSend(0));
-#ifdef _TEST_FILE_
-  TEST_MUSTPASS(
-      file->StartPlayingFileAsMicrophone(0, _mgr.AudioFilename(), true, true));
-#endif
-
-////////////////////////////
-// Actual test starts here
-
-#if !defined(WEBRTC_IOS)
-  TEST(SetSpeakerVolume);
-  ANL();
-  TEST_MUSTPASS(-1 != volume->SetSpeakerVolume(256));
-  MARK();
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-  ANL();
-#endif  // #if !defined(WEBRTC_IOS)
-
-#if (!defined(WEBRTC_IOS) && !defined(WEBRTC_ANDROID))
-  TEST(SetMicVolume);
-  ANL();
-  TEST_MUSTPASS(-1 != volume->SetMicVolume(256));
-  MARK();
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-  ANL();
-#endif  // #if (!defined(WEBRTC_IOS) && !defined(WEBRTC_ANDROID))
-
-#if !defined(WEBRTC_IOS)
-  TEST(SetChannelOutputVolumeScaling);
-  ANL();
-  TEST_MUSTPASS(-1 != volume->SetChannelOutputVolumeScaling(0, (float)-0.1));
-  MARK();
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-  TEST_MUSTPASS(-1 != volume->SetChannelOutputVolumeScaling(0, (float)10.1));
-  MARK();
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-  ANL();
-#endif  // #if !defined(WEBRTC_IOS)
-#if (!defined(WEBRTC_IOS) && !defined(WEBRTC_ANDROID))
-  TEST(SetOutputVolumePan);
-  ANL();
-  TEST_MUSTPASS(-1 != volume->SetOutputVolumePan(-1, (float)-0.1, (float)1.0));
-  MARK();
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-  TEST_MUSTPASS(-1 != volume->SetOutputVolumePan(-1, (float)1.1, (float)1.0));
-  MARK();
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-  TEST_MUSTPASS(-1 != volume->SetOutputVolumePan(-1, (float)1.0, (float)-0.1));
-  MARK();
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-  TEST_MUSTPASS(-1 != volume->SetOutputVolumePan(-1, (float)1.0, (float)1.1));
-  MARK();
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-  ANL();
-
-  TEST(SetChannelOutputVolumePan);
-  ANL();
-  TEST_MUSTPASS(-1 != volume->SetOutputVolumePan(0, (float)-0.1, (float)1.0));
-  MARK();
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-  TEST_MUSTPASS(-1 != volume->SetOutputVolumePan(0, (float)1.1, (float)1.0));
-  MARK();
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-  TEST_MUSTPASS(-1 != volume->SetOutputVolumePan(0, (float)1.0, (float)-0.1));
-  MARK();
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-  TEST_MUSTPASS(-1 != volume->SetOutputVolumePan(0, (float)1.0, (float)1.1));
-  MARK();
-  TEST_MUSTPASS(VE_INVALID_ARGUMENT != voe_base_->LastError());
-  ANL();
-#endif  // #if (!defined(WEBRTC_IOS) && !defined(WEBRTC_ANDROID))
-#ifdef _TEST_FILE_
-  TEST_MUSTPASS(file->StopPlayingFileAsMicrophone(0));
-#endif
-  TEST_MUSTPASS(voe_base_->StopSend(0));
-  TEST_MUSTPASS(voe_base_->StopPlayout(0));
-  TEST_MUSTPASS(voe_base_->StopReceive(0));
-  TEST_MUSTPASS(voe_base_->DeleteChannel(0));
-  TEST_MUSTPASS(voe_base_->Terminate());
-
-  AOK();
-  ANL();
-  return 0;
-}
-
-}  // namespace voetest
diff --git a/voice_engine/test/auto_test/voe_extended_test.h b/voice_engine/test/auto_test/voe_extended_test.h
deleted file mode 100644
index 0c5d4e1..0000000
--- a/voice_engine/test/auto_test/voe_extended_test.h
+++ /dev/null
@@ -1,473 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_VOICE_ENGINE_VOE_EXTENDED_TEST_H
-#define WEBRTC_VOICE_ENGINE_VOE_EXTENDED_TEST_H
-
-#include "webrtc/modules/audio_device/include/audio_device.h"
-#include "webrtc/system_wrappers/interface/critical_section_wrapper.h"
-#include "webrtc/system_wrappers/interface/event_wrapper.h"
-#include "webrtc/system_wrappers/interface/ref_count.h"
-#include "webrtc/system_wrappers/interface/scoped_ptr.h"
-#include "webrtc/system_wrappers/interface/sleep.h"
-#include "webrtc/system_wrappers/interface/thread_wrapper.h"
-#include "webrtc/test/channel_transport/include/channel_transport.h"
-#include "webrtc/voice_engine/test/auto_test/voe_standard_test.h"
-
-namespace voetest {
-
-class VoETestManager;
-
-// ----------------------------------------------------------------------------
-//  AudioDeviceModule
-//
-//  Implementation of the ADM to be used as external ADM in VoiceEngine.
-//  This implementation is only a mock class, i.e., it does not provide
-//  any real audio support.
-// ----------------------------------------------------------------------------
-
-class AudioDeviceModuleImpl : public AudioDeviceModule {
- public:
-  // Factory methods
-  static AudioDeviceModuleImpl* Create();
-  static bool Destroy(AudioDeviceModuleImpl* adm);
-
-  // Helper methods which allows us to get some handy information about
-  // this mock implementation.
-  int32_t ReferenceCounter() const {
-    return _ref_count;
-  }
-
-  // RefCountedModule implementation (mocks default implementation)
-  virtual int32_t AddRef();
-  virtual int32_t Release();
-
-  // Module implementation
-  virtual int32_t Version(char* version,
-                          uint32_t& remaining_buffer_in_bytes,
-                          uint32_t& position) const {
-    return 0;
-  }
-  virtual int32_t ChangeUniqueId(int32_t id) {
-    return 0;
-  }
-  virtual int32_t TimeUntilNextProcess() {
-    return -1;
-  }
-  virtual int32_t Process() {
-    return 0;
-  }
-
-  // AudioDeviceModule implementation
-  virtual int32_t ActiveAudioLayer(AudioLayer* audioLayer) const {
-    return 0;
-  }
-
-  virtual ErrorCode LastError() const {
-    return static_cast<ErrorCode> (0);
-  }
-  virtual int32_t RegisterEventObserver(AudioDeviceObserver* eventCallback) {
-    return 0;
-  }
-
-  virtual int32_t RegisterAudioCallback(AudioTransport* audioCallback) {
-    return 0;
-  }
-
-  virtual int32_t Init() {
-    return 0;
-  }
-  virtual int32_t Terminate() {
-    return 0;
-  }
-  virtual bool Initialized() const {
-    return true;
-  }
-
-  virtual int16_t PlayoutDevices() {
-    return -1;
-  }
-  virtual int16_t RecordingDevices() {
-    return -1;
-  }
-  virtual int32_t PlayoutDeviceName(uint16_t index,
-                                    char name[kAdmMaxDeviceNameSize],
-                                    char guid[kAdmMaxGuidSize]) {
-    return -1;
-  }
-  virtual int32_t RecordingDeviceName(uint16_t index,
-                                      char name[kAdmMaxDeviceNameSize],
-                                      char guid[kAdmMaxGuidSize]) {
-    return -1;
-  }
-
-  virtual int32_t SetPlayoutDevice(uint16_t index) {
-    return 0;
-  }
-  virtual int32_t SetPlayoutDevice(WindowsDeviceType device) {
-    return 0;
-  }
-  virtual int32_t SetRecordingDevice(uint16_t index) {
-    return 0;
-  }
-  virtual int32_t SetRecordingDevice(WindowsDeviceType device) {
-    return 0;
-  }
-
-  virtual int32_t PlayoutIsAvailable(bool* available) {
-    *available = true;
-    return 0;
-  }
-  virtual int32_t InitPlayout() {
-    return 0;
-  }
-  virtual bool PlayoutIsInitialized() const {
-    return true;
-  }
-  virtual int32_t RecordingIsAvailable(bool* available) {
-    *available = true;
-    return 0;
-  }
-  virtual int32_t InitRecording() {
-    return 0;
-  }
-  virtual bool RecordingIsInitialized() const {
-    return true;
-  }
-
-  virtual int32_t StartPlayout() {
-    return 0;
-  }
-  virtual int32_t StopPlayout() {
-    return 0;
-  }
-  virtual bool Playing() const {
-    return true;
-  }
-  virtual int32_t StartRecording() {
-    return 0;
-  }
-  virtual int32_t StopRecording() {
-    return 0;
-  }
-  virtual bool Recording() const {
-    return true;
-  }
-
-  virtual int32_t SetAGC(bool enable) {
-    return -1;
-  }
-  virtual bool AGC() const {
-    return false;
-  }
-
-  virtual int32_t SetWaveOutVolume(uint16_t volumeLeft,
-                                   uint16_t volumeRight) {
-    return -1;
-  }
-  virtual int32_t WaveOutVolume(uint16_t* volumeLeft,
-                                uint16_t* volumeRight) const {
-    return -1;
-  }
-
-  virtual int32_t SpeakerIsAvailable(bool* available) {
-    *available = true;
-    return 0;
-  }
-  virtual int32_t InitSpeaker() {
-    return 0;
-  }
-  virtual bool SpeakerIsInitialized() const {
-    return true;
-  }
-  virtual int32_t MicrophoneIsAvailable(bool* available) {
-    *available = true;
-    return 0;
-  }
-  virtual int32_t InitMicrophone() {
-    return 0;
-  }
-  virtual bool MicrophoneIsInitialized() const {
-    return true;
-  }
-
-  virtual int32_t SpeakerVolumeIsAvailable(bool* available) {
-    return -1;
-  }
-  virtual int32_t SetSpeakerVolume(uint32_t volume) {
-    return -1;
-  }
-  virtual int32_t SpeakerVolume(uint32_t* volume) const {
-    return -1;
-  }
-  virtual int32_t MaxSpeakerVolume(uint32_t* maxVolume) const {
-    return -1;
-  }
-  virtual int32_t MinSpeakerVolume(uint32_t* minVolume) const {
-    return -1;
-  }
-  virtual int32_t SpeakerVolumeStepSize(uint16_t* stepSize) const {
-    return -1;
-  }
-
-  virtual int32_t MicrophoneVolumeIsAvailable(bool* available) {
-    return -1;
-  }
-  virtual int32_t SetMicrophoneVolume(uint32_t volume) {
-    return -1;
-  }
-  virtual int32_t MicrophoneVolume(uint32_t* volume) const {
-    return -1;
-  }
-  virtual int32_t MaxMicrophoneVolume(uint32_t* maxVolume) const {
-    return -1;
-  }
-  virtual int32_t MinMicrophoneVolume(uint32_t* minVolume) const {
-    return -1;
-  }
-  virtual int32_t MicrophoneVolumeStepSize(uint16_t* stepSize) const {
-    return -1;
-  }
-
-  virtual int32_t SpeakerMuteIsAvailable(bool* available) {
-    return -1;
-  }
-  virtual int32_t SetSpeakerMute(bool enable) {
-    return -1;
-  }
-  virtual int32_t SpeakerMute(bool* enabled) const {
-    return -1;
-  }
-
-  virtual int32_t MicrophoneMuteIsAvailable(bool* available) {
-    return -1;
-  }
-  virtual int32_t SetMicrophoneMute(bool enable) {
-    return -1;
-  }
-  virtual int32_t MicrophoneMute(bool* enabled) const {
-    return -1;
-  }
-
-  virtual int32_t MicrophoneBoostIsAvailable(bool* available) {
-    return -1;
-  }
-  virtual int32_t SetMicrophoneBoost(bool enable) {
-    return -1;
-  }
-  virtual int32_t MicrophoneBoost(bool* enabled) const {
-    return -1;
-  }
-
-  virtual int32_t StereoPlayoutIsAvailable(bool* available) const {
-    return -1;
-  }
-  virtual int32_t SetStereoPlayout(bool enable) {
-    return -1;
-  }
-  virtual int32_t StereoPlayout(bool* enabled) const {
-    return -1;
-  }
-  virtual int32_t StereoRecordingIsAvailable(bool* available) const {
-    return -1;
-  }
-  virtual int32_t SetStereoRecording(bool enable) {
-    return -1;
-  }
-  virtual int32_t StereoRecording(bool* enabled) const {
-    return -1;
-  }
-  virtual int32_t SetRecordingChannel(ChannelType channel) {
-    return -1;
-  }
-  virtual int32_t RecordingChannel(ChannelType* channel) const {
-    return -1;
-  }
-
-  virtual int32_t SetPlayoutBuffer(BufferType type, uint16_t sizeMS = 0) {
-    return -1;
-  }
-  virtual int32_t PlayoutBuffer(BufferType* type, uint16_t* sizeMS) const {
-    return -1;
-  }
-  virtual int32_t PlayoutDelay(uint16_t* delayMS) const {
-    return -1;
-  }
-  virtual int32_t RecordingDelay(uint16_t* delayMS) const {
-    return -1;
-  }
-
-  virtual int32_t CPULoad(uint16_t* load) const {
-    return -1;
-  }
-
-  virtual int32_t StartRawOutputFileRecording(
-      const char pcmFileNameUTF8[kAdmMaxFileNameSize]) {
-    return -1;
-  }
-  virtual int32_t StopRawOutputFileRecording() {
-    return -1;
-  }
-  virtual int32_t StartRawInputFileRecording(
-      const char pcmFileNameUTF8[kAdmMaxFileNameSize]) {
-    return -1;
-  }
-  virtual int32_t StopRawInputFileRecording() {
-    return -1;
-  }
-
-  virtual int32_t SetRecordingSampleRate(uint32_t samplesPerSec) {
-    return -1;
-  }
-  virtual int32_t RecordingSampleRate(uint32_t* samplesPerSec) const {
-    return -1;
-  }
-  virtual int32_t SetPlayoutSampleRate(uint32_t samplesPerSec) {
-    return -1;
-  }
-  virtual int32_t PlayoutSampleRate(uint32_t* samplesPerSec) const {
-    return -1;
-  }
-
-  virtual int32_t ResetAudioDevice() {
-    return -1;
-  }
-  virtual int32_t SetLoudspeakerStatus(bool enable) {
-    return -1;
-  }
-  virtual int32_t GetLoudspeakerStatus(bool* enabled) const {
-    return -1;
-  }
-
- protected:
-  AudioDeviceModuleImpl();
-  ~AudioDeviceModuleImpl();
-
- private:
-  volatile int32_t _ref_count;
-};
-
-// ----------------------------------------------------------------------------
-//	Transport
-// ----------------------------------------------------------------------------
-
-class ExtendedTestTransport : public Transport {
- public:
-  ExtendedTestTransport(VoENetwork* ptr);
-  ~ExtendedTestTransport();
-  VoENetwork* myNetw;
-
- protected:
-  virtual int SendPacket(int channel, const void *data, int len);
-  virtual int SendRTCPPacket(int channel, const void *data, int len);
-
- private:
-  static bool Run(void* ptr);
-  bool Process();
-
- private:
-  ThreadWrapper* _thread;
-  CriticalSectionWrapper* _lock;
-  EventWrapper* _event;
-
- private:
-  unsigned char _packetBuffer[1612];
-  int _length;
-  int _channel;
-};
-
-class XTransport : public Transport {
- public:
-  XTransport(VoENetwork* netw, VoEFile* file);
-  VoENetwork* _netw;
-  VoEFile* _file;
-
- public:
-  virtual int SendPacket(int channel, const void *data, int len);
-  virtual int SendRTCPPacket(int channel, const void *data, int len);
-};
-
-class XRTPObserver : public VoERTPObserver {
- public:
-  XRTPObserver();
-  ~XRTPObserver();
-  virtual void OnIncomingCSRCChanged(int channel,
-                                     unsigned int CSRC,
-                                     bool added);
-  virtual void OnIncomingSSRCChanged(int channel,
-                                     unsigned int SSRC);
- public:
-  unsigned int _SSRC;
-};
-
-// ----------------------------------------------------------------------------
-//	VoEExtendedTest
-// ----------------------------------------------------------------------------
-
-class VoEExtendedTest : public VoiceEngineObserver,
-                        public VoEConnectionObserver {
- public:
-  VoEExtendedTest(VoETestManager& mgr);
-  ~VoEExtendedTest();
-  int PrepareTest(const char* str) const;
-  int TestPassed(const char* str) const;
-  int TestBase();
-  int TestCallReport();
-  int TestCodec();
-  int TestDtmf();
-  int TestEncryption();
-  int TestExternalMedia();
-  int TestFile();
-  int TestMixing();
-  int TestHardware();
-  int TestNetEqStats();
-  int TestNetwork();
-  int TestRTP_RTCP();
-  int TestVideoSync();
-  int TestVolumeControl();
-
-  int ErrorCode() const {
-    return _errCode;
-  }
-  void ClearErrorCode() {
-    _errCode = 0;
-  }
-
- protected:
-  // from VoiceEngineObserver
-  void CallbackOnError(int errCode, int channel);
-  void CallbackOnTrace(TraceLevel level, const char* message,
-                       int length);
-
-  // from VoEConnectionObserver
-  void OnPeriodicDeadOrAlive(int channel, bool alive);
-
- private:
-  void Play(int channel, unsigned int timeMillisec,
-            bool addFileAsMicrophone = false, bool addTimeMarker = false);
-  void Sleep(unsigned int timeMillisec, bool addMarker = false);
-  void StartMedia(int channel, int rtpPort, bool listen, bool playout,
-                  bool send);
-  void StopMedia(int channel);
-  int RunMixingTest(int num_remote_channels, int num_local_channels,
-                    int16_t input_value, int16_t max_output_value,
-                    int16_t min_output_value);
-
-  VoETestManager& _mgr;
-  int _errCode;
-  bool _alive;
-  bool _listening[32];
-  scoped_ptr<webrtc::test::VoiceChannelTransport> voice_channel_transports_[32];
-  bool _playing[32];
-  bool _sending[32];
-};
-
-}  // namespace voetest
-#endif // WEBRTC_VOICE_ENGINE_VOE_EXTENDED_TEST_H
diff --git a/voice_engine/test/auto_test/voe_standard_test.cc b/voice_engine/test/auto_test/voe_standard_test.cc
index 05eb4d6..9d5c936 100644
--- a/voice_engine/test/auto_test/voe_standard_test.cc
+++ b/voice_engine/test/auto_test/voe_standard_test.cc
@@ -19,7 +19,6 @@
 #include "webrtc/voice_engine/include/voe_neteq_stats.h"
 #include "webrtc/voice_engine/test/auto_test/automated_mode.h"
 #include "webrtc/voice_engine/test/auto_test/voe_cpu_test.h"
-#include "webrtc/voice_engine/test/auto_test/voe_extended_test.h"
 #include "webrtc/voice_engine/test/auto_test/voe_stress_test.h"
 #include "webrtc/voice_engine/test/auto_test/voe_test_defines.h"
 #include "webrtc/voice_engine/test/auto_test/voe_unit_test.h"
@@ -103,151 +102,6 @@
   ANL();
 }
 
-bool SubAPIManager::GetExtendedMenuSelection(ExtendedSelection& sel) {
-  printf("------------------------------------------------\n");
-  printf("Select extended test\n\n");
-  printf(" (0)  None\n");
-  printf("- - - - - - - - - - - - - - - - - - - - - - - - \n");
-  printf(" (1)  Base");
-  if (_base)
-    printf("\n");
-  else
-    printf(" (NA)\n");
-  printf(" (2)  CallReport");
-  if (_callReport)
-    printf("\n");
-  else
-    printf(" (NA)\n");
-  printf(" (3)  Codec");
-  if (_codec)
-    printf("\n");
-  else
-    printf(" (NA)\n");
-  printf(" (4)  Dtmf");
-  if (_dtmf)
-    printf("\n");
-  else
-    printf(" (NA)\n");
-  printf(" (5)  Encryption");
-  if (_encryption)
-    printf("\n");
-  else
-    printf(" (NA)\n");
-  printf(" (6)  VoEExternalMedia");
-  if (_externalMedia)
-    printf("\n");
-  else
-    printf(" (NA)\n");
-  printf(" (7)  File");
-  if (_file)
-    printf("\n");
-  else
-    printf(" (NA)\n");
-  printf(" (8)  Hardware");
-  if (_hardware)
-    printf("\n");
-  else
-    printf(" (NA)\n");
-  printf(" (9) NetEqStats");
-  if (_netEqStats)
-    printf("\n");
-  else
-    printf(" (NA)\n");
-  printf(" (10) Network");
-  if (_network)
-    printf("\n");
-  else
-    printf(" (NA)\n");
-  printf(" (11) RTP_RTCP");
-  if (_rtp_rtcp)
-    printf("\n");
-  else
-    printf(" (NA)\n");
-  printf(" (12) VideoSync");
-  if (_videoSync)
-    printf("\n");
-  else
-    printf(" (NA)\n");
-  printf(" (13) VolumeControl");
-  if (_volumeControl)
-    printf("\n");
-  else
-    printf(" (NA)\n");
-  printf("\n: ");
-
-  ExtendedSelection xsel(XSEL_Invalid);
-  int selection(0);
-  dummy = scanf("%d", &selection);
-
-  switch (selection) {
-    case 0:
-      xsel = XSEL_None;
-      break;
-    case 1:
-      if (_base)
-        xsel = XSEL_Base;
-      break;
-    case 2:
-      if (_callReport)
-        xsel = XSEL_CallReport;
-      break;
-    case 3:
-      if (_codec)
-        xsel = XSEL_Codec;
-      break;
-    case 4:
-      if (_dtmf)
-        xsel = XSEL_DTMF;
-      break;
-    case 5:
-      if (_encryption)
-        xsel = XSEL_Encryption;
-      break;
-    case 6:
-      if (_externalMedia)
-        xsel = XSEL_ExternalMedia;
-      break;
-    case 7:
-      if (_file)
-        xsel = XSEL_File;
-      break;
-    case 8:
-      if (_hardware)
-        xsel = XSEL_Hardware;
-      break;
-    case 9:
-      if (_netEqStats)
-        xsel = XSEL_NetEqStats;
-      break;
-    case 10:
-      if (_network)
-        xsel = XSEL_Network;
-      break;
-    case 11:
-      if (_rtp_rtcp)
-        xsel = XSEL_RTP_RTCP;
-      break;
-    case 12:
-      if (_videoSync)
-        xsel = XSEL_VideoSync;
-      break;
-    case 13:
-      if (_volumeControl)
-        xsel = XSEL_VolumeControl;
-      break;
-    default:
-      xsel = XSEL_Invalid;
-      break;
-  }
-  if (xsel == XSEL_Invalid)
-    printf("Invalid selection!\n");
-
-  sel = xsel;
-  _xsel = xsel;
-
-  return (xsel != XSEL_Invalid);
-}
-
 VoETestManager::VoETestManager()
     : initialized_(false),
       voice_engine_(NULL),
@@ -416,8 +270,7 @@
   return (releaseOK == true) ? 0 : -1;
 }
 
-int run_auto_test(TestType test_type,
-                  ExtendedSelection ext_selection) {
+int run_auto_test(TestType test_type) {
   assert(test_type != Standard);
 
   SubAPIManager api_manager;
@@ -432,80 +285,8 @@
   }
   test_manager.GetInterfaces();
 
-  int result(-1);
-  if (test_type == Extended) {
-    VoEExtendedTest xtend(test_manager);
-
-    result = 0;
-    while (ext_selection != XSEL_None) {
-      if (ext_selection == XSEL_Base || ext_selection == XSEL_All) {
-        if ((result = xtend.TestBase()) == -1)
-          break;
-        xtend.TestPassed("Base");
-      }
-      if (ext_selection == XSEL_CallReport || ext_selection == XSEL_All) {
-        if ((result = xtend.TestCallReport()) == -1)
-          break;
-        xtend.TestPassed("CallReport");
-      }
-      if (ext_selection == XSEL_Codec || ext_selection == XSEL_All) {
-        if ((result = xtend.TestCodec()) == -1)
-          break;
-        xtend.TestPassed("Codec");
-      }
-      if (ext_selection == XSEL_DTMF || ext_selection == XSEL_All) {
-        if ((result = xtend.TestDtmf()) == -1)
-          break;
-        xtend.TestPassed("Dtmf");
-      }
-      if (ext_selection == XSEL_Encryption || ext_selection == XSEL_All) {
-        if ((result = xtend.TestEncryption()) == -1)
-          break;
-        xtend.TestPassed("Encryption");
-      }
-      if (ext_selection == XSEL_ExternalMedia || ext_selection == XSEL_All) {
-        if ((result = xtend.TestExternalMedia()) == -1)
-          break;
-        xtend.TestPassed("ExternalMedia");
-      }
-      if (ext_selection == XSEL_File || ext_selection == XSEL_All) {
-        if ((result = xtend.TestFile()) == -1)
-          break;
-        xtend.TestPassed("File");
-      }
-      if (ext_selection == XSEL_Hardware || ext_selection == XSEL_All) {
-        if ((result = xtend.TestHardware()) == -1)
-          break;
-        xtend.TestPassed("Hardware");
-      }
-      if (ext_selection == XSEL_NetEqStats || ext_selection == XSEL_All) {
-        if ((result = xtend.TestNetEqStats()) == -1)
-          break;
-        xtend.TestPassed("NetEqStats");
-      }
-      if (ext_selection == XSEL_Network || ext_selection == XSEL_All) {
-        if ((result = xtend.TestNetwork()) == -1)
-          break;
-        xtend.TestPassed("Network");
-      }
-      if (ext_selection == XSEL_RTP_RTCP || ext_selection == XSEL_All) {
-        if ((result = xtend.TestRTP_RTCP()) == -1)
-          break;
-        xtend.TestPassed("RTP_RTCP");
-      }
-      if (ext_selection == XSEL_VideoSync || ext_selection == XSEL_All) {
-        if ((result = xtend.TestVideoSync()) == -1)
-          break;
-        xtend.TestPassed("VideoSync");
-      }
-      if (ext_selection == XSEL_VolumeControl || ext_selection == XSEL_All) {
-        if ((result = xtend.TestVolumeControl()) == -1)
-          break;
-        xtend.TestPassed("VolumeControl");
-      }
-      api_manager.GetExtendedMenuSelection(ext_selection);
-    }  // while (extendedSel != XSEL_None)
-  } else if (test_type == Stress) {
+  int result = -1;
+  if (test_type == Stress) {
     VoEStressTest stressTest(test_manager);
     result = stressTest.DoTest();
   } else if (test_type == Unit) {
@@ -544,7 +325,7 @@
   printf("Select type of test\n\n");
   printf(" (0)  Quit\n");
   printf(" (1)  Standard test\n");
-  printf(" (2)  Extended test(s)...\n");
+  printf(" (2)  [OBSOLETE: Extended test(s)...]\n");
   printf(" (3)  Stress test(s)...\n");
   printf(" (4)  Unit test(s)...\n");
   printf(" (5)  CPU & memory reference test [Windows]...\n");
@@ -553,9 +334,7 @@
   int selection(0);
   dummy = scanf("%d", &selection);
 
-  ExtendedSelection ext_selection = XSEL_Invalid;
   TestType test_type = Invalid;
-
   switch (selection) {
     case 0:
       return 0;
@@ -563,9 +342,6 @@
       test_type = Standard;
       break;
     case 2:
-      test_type = Extended;
-      while (!api_manager.GetExtendedMenuSelection(ext_selection))
-        continue;
       break;
     case 3:
       test_type = Stress;
@@ -589,7 +365,7 @@
   }
 
   // Function that can be called from other entry functions.
-  return run_auto_test(test_type, ext_selection);
+  return run_auto_test(test_type);
 }
 
 // ----------------------------------------------------------------------------
diff --git a/voice_engine/test/auto_test/voe_standard_test.h b/voice_engine/test/auto_test/voe_standard_test.h
index 1f68f6b..19dbc0e 100644
--- a/voice_engine/test/auto_test/voe_standard_test.h
+++ b/voice_engine/test/auto_test/voe_standard_test.h
@@ -80,8 +80,7 @@
       _rtp_rtcp(false),
       _videoSync(false),
       _volumeControl(false),
-      _apm(false),
-      _xsel(XSEL_Invalid) {
+      _apm(false) {
 #ifdef WEBRTC_VOICE_ENGINE_CALL_REPORT_API
       _callReport = true;
 #endif
@@ -122,13 +121,11 @@
   }
 
   void DisplayStatus() const;
-  bool GetExtendedMenuSelection(ExtendedSelection& sel);
 
  private:
   bool _base, _callReport, _codec, _dtmf, _encryption;
   bool _externalMedia, _file, _hardware;
   bool _netEqStats, _network, _rtp_rtcp, _videoSync, _volumeControl, _apm;
-  ExtendedSelection _xsel;
 };
 
 class VoETestManager {
diff --git a/voice_engine/test/auto_test/voe_test_interface.h b/voice_engine/test/auto_test/voe_test_interface.h
index d5693d9..fe5c7ec 100644
--- a/voice_engine/test/auto_test/voe_test_interface.h
+++ b/voice_engine/test/auto_test/voe_test_interface.h
@@ -23,31 +23,16 @@
 
 // TestType enumerator
 enum TestType {
-  Invalid = -1, Standard = 0, Extended = 1, Stress = 2, Unit = 3, CPU = 4
-};
+  Invalid = -1,
+  Standard = 0,
 
-// ExtendedSelection enumerator
-enum ExtendedSelection {
-  XSEL_Invalid = -1,
-  XSEL_None = 0,
-  XSEL_All,
-  XSEL_Base,
-  XSEL_CallReport,
-  XSEL_Codec,
-  XSEL_DTMF,
-  XSEL_Encryption,
-  XSEL_ExternalMedia,
-  XSEL_File,
-  XSEL_Hardware,
-  XSEL_NetEqStats,
-  XSEL_Network,
-  XSEL_RTP_RTCP,
-  XSEL_VideoSync,
-  XSEL_VolumeControl,
+  Stress = 2,
+  Unit = 3,
+  CPU = 4
 };
 
 // Main test function
-int runAutoTest(TestType testType, ExtendedSelection extendedSel);
+int runAutoTest(TestType testType);
 
 }  // namespace voetest
 #endif // WEBRTC_VOICE_ENGINE_VOE_TEST_INTERFACE_H
diff --git a/voice_engine/voice_engine.gyp b/voice_engine/voice_engine.gyp
index 8a06e86..09bb58b 100644
--- a/voice_engine/voice_engine.gyp
+++ b/voice_engine/voice_engine.gyp
@@ -197,8 +197,6 @@
             'test/auto_test/resource_manager.cc',
             'test/auto_test/voe_cpu_test.cc',
             'test/auto_test/voe_cpu_test.h',
-            'test/auto_test/voe_extended_test.cc',
-            'test/auto_test/voe_extended_test.h',
             'test/auto_test/voe_standard_test.cc',
             'test/auto_test/voe_standard_test.h',
             'test/auto_test/voe_stress_test.cc',