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