Home | History | Annotate | Download | only in auto_test
      1 /*
      2  *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
      3  *
      4  *  Use of this source code is governed by a BSD-style license
      5  *  that can be found in the LICENSE file in the root of the source
      6  *  tree. An additional intellectual property rights grant can be found
      7  *  in the file PATENTS.  All contributing project authors may
      8  *  be found in the AUTHORS file in the root of the source tree.
      9  */
     10 
     11 #include "webrtc/voice_engine/test/auto_test/voe_cpu_test.h"
     12 
     13 #include <stdio.h>
     14 #include <string.h>
     15 #include <time.h>
     16 #if defined(_WIN32)
     17 #include <conio.h>
     18 #endif
     19 
     20 #include "webrtc/base/scoped_ptr.h"
     21 #include "webrtc/test/channel_transport/channel_transport.h"
     22 #include "webrtc/voice_engine/test/auto_test/voe_test_defines.h"
     23 
     24 using namespace webrtc;
     25 using namespace test;
     26 
     27 namespace voetest {
     28 
     29 #define CHECK(expr)                                             \
     30     if (expr)                                                   \
     31     {                                                           \
     32         printf("Error at line: %i, %s \n", __LINE__, #expr);    \
     33         printf("Error code: %i \n", base->LastError());  \
     34         PAUSE												    \
     35         return -1;                                              \
     36     }
     37 
     38 VoECpuTest::VoECpuTest(VoETestManager& mgr)
     39     : _mgr(mgr) {
     40 
     41 }
     42 
     43 int VoECpuTest::DoTest() {
     44   printf("------------------------------------------------\n");
     45   printf(" CPU Reference Test\n");
     46   printf("------------------------------------------------\n");
     47 
     48   VoEBase* base = _mgr.BasePtr();
     49   VoEFile* file = _mgr.FilePtr();
     50   VoECodec* codec = _mgr.CodecPtr();
     51   VoEAudioProcessing* apm = _mgr.APMPtr();
     52   VoENetwork* voe_network = _mgr.NetworkPtr();
     53 
     54   int channel(-1);
     55   CodecInst isac;
     56 
     57   isac.pltype = 104;
     58   strcpy(isac.plname, "ISAC");
     59   isac.pacsize = 960;
     60   isac.plfreq = 32000;
     61   isac.channels = 1;
     62   isac.rate = -1;
     63 
     64   CHECK(base->Init());
     65   channel = base->CreateChannel();
     66 
     67   rtc::scoped_ptr<VoiceChannelTransport> voice_socket_transport(
     68       new VoiceChannelTransport(voe_network, channel));
     69 
     70   CHECK(voice_socket_transport->SetSendDestination("127.0.0.1", 5566));
     71   CHECK(voice_socket_transport->SetLocalReceiver(5566));
     72 
     73   CHECK(codec->SetRecPayloadType(channel, isac));
     74   CHECK(codec->SetSendCodec(channel, isac));
     75 
     76   CHECK(base->StartReceive(channel));
     77   CHECK(base->StartPlayout(channel));
     78   CHECK(base->StartSend(channel));
     79   CHECK(file->StartPlayingFileAsMicrophone(channel, _mgr.AudioFilename(),
     80           true, true));
     81 
     82   CHECK(codec->SetVADStatus(channel, true));
     83   CHECK(apm->SetAgcStatus(true, kAgcAdaptiveAnalog));
     84   CHECK(apm->SetNsStatus(true, kNsModerateSuppression));
     85   CHECK(apm->SetEcStatus(true, kEcAec));
     86 
     87   TEST_LOG("\nMeasure CPU and memory while running a full-duplex"
     88     " iSAC-swb call.\n\n");
     89 
     90   PAUSE
     91 
     92   CHECK(base->StopSend(channel));
     93   CHECK(base->StopPlayout(channel));
     94   CHECK(base->StopReceive(channel));
     95 
     96   base->DeleteChannel(channel);
     97   CHECK(base->Terminate());
     98   return 0;
     99 }
    100 
    101 }  // namespace voetest
    102