Home | History | Annotate | Download | only in voice_engine
      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/transmit_mixer.h"
     12 
     13 #include "testing/gtest/include/gtest/gtest.h"
     14 #include "webrtc/voice_engine/include/voe_external_media.h"
     15 
     16 namespace webrtc {
     17 namespace voe {
     18 namespace {
     19 
     20 class MediaCallback : public VoEMediaProcess {
     21  public:
     22   virtual void Process(int channel, ProcessingTypes type,
     23                        int16_t audio[], int samples_per_channel,
     24                        int sample_rate_hz, bool is_stereo) {
     25   }
     26 };
     27 
     28 // TODO(andrew): Mock VoEMediaProcess, and verify the behavior when calling
     29 // PrepareDemux().
     30 TEST(TransmitMixerTest, RegisterExternalMediaCallback) {
     31   TransmitMixer* tm = NULL;
     32   ASSERT_EQ(0, TransmitMixer::Create(tm, 0));
     33   ASSERT_TRUE(tm != NULL);
     34   MediaCallback callback;
     35   EXPECT_EQ(-1, tm->RegisterExternalMediaProcessing(NULL,
     36                                                     kRecordingPreprocessing));
     37   EXPECT_EQ(-1, tm->RegisterExternalMediaProcessing(&callback,
     38                                                     kPlaybackPerChannel));
     39   EXPECT_EQ(-1, tm->RegisterExternalMediaProcessing(&callback,
     40                                                     kPlaybackAllChannelsMixed));
     41   EXPECT_EQ(-1, tm->RegisterExternalMediaProcessing(&callback,
     42                                                     kRecordingPerChannel));
     43   EXPECT_EQ(0, tm->RegisterExternalMediaProcessing(&callback,
     44                                                    kRecordingAllChannelsMixed));
     45   EXPECT_EQ(0, tm->RegisterExternalMediaProcessing(&callback,
     46                                                    kRecordingPreprocessing));
     47   EXPECT_EQ(-1, tm->DeRegisterExternalMediaProcessing(kPlaybackPerChannel));
     48   EXPECT_EQ(-1, tm->DeRegisterExternalMediaProcessing(
     49                     kPlaybackAllChannelsMixed));
     50   EXPECT_EQ(-1, tm->DeRegisterExternalMediaProcessing(kRecordingPerChannel));
     51   EXPECT_EQ(0, tm->DeRegisterExternalMediaProcessing(
     52                    kRecordingAllChannelsMixed));
     53   EXPECT_EQ(0, tm->DeRegisterExternalMediaProcessing(kRecordingPreprocessing));
     54   TransmitMixer::Destroy(tm);
     55 }
     56 
     57 }  // namespace
     58 }  // namespace voe
     59 }  // namespace webrtc
     60