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
16namespace webrtc {
17namespace voe {
18namespace {
19
20class 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().
30TEST(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