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:
Process(int channel,ProcessingTypes type,int16_t audio[],size_t samples_per_channel,int sample_rate_hz,bool is_stereo)22   virtual void Process(int channel, ProcessingTypes type,
23                        int16_t audio[], size_t 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().
TEST(TransmitMixerTest,RegisterExternalMediaCallback)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