15679752bf24c21135884e987c4077e2f7184897Vadim Bendebury/* 25679752bf24c21135884e987c4077e2f7184897Vadim Bendebury * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 35679752bf24c21135884e987c4077e2f7184897Vadim Bendebury * 45679752bf24c21135884e987c4077e2f7184897Vadim Bendebury * Use of this source code is governed by a BSD-style license 55679752bf24c21135884e987c4077e2f7184897Vadim Bendebury * that can be found in the LICENSE file in the root of the source 65679752bf24c21135884e987c4077e2f7184897Vadim Bendebury * tree. An additional intellectual property rights grant can be found 75679752bf24c21135884e987c4077e2f7184897Vadim Bendebury * in the file PATENTS. All contributing project authors may 85679752bf24c21135884e987c4077e2f7184897Vadim Bendebury * be found in the AUTHORS file in the root of the source tree. 95679752bf24c21135884e987c4077e2f7184897Vadim Bendebury */ 105679752bf24c21135884e987c4077e2f7184897Vadim Bendebury 115679752bf24c21135884e987c4077e2f7184897Vadim Bendebury#include "webrtc/voice_engine/transmit_mixer.h" 125679752bf24c21135884e987c4077e2f7184897Vadim Bendebury 135679752bf24c21135884e987c4077e2f7184897Vadim Bendebury#include "testing/gtest/include/gtest/gtest.h" 145679752bf24c21135884e987c4077e2f7184897Vadim Bendebury#include "webrtc/voice_engine/include/voe_external_media.h" 155679752bf24c21135884e987c4077e2f7184897Vadim Bendebury 165679752bf24c21135884e987c4077e2f7184897Vadim Bendeburynamespace webrtc { 175679752bf24c21135884e987c4077e2f7184897Vadim Bendeburynamespace voe { 185679752bf24c21135884e987c4077e2f7184897Vadim Bendeburynamespace { 195679752bf24c21135884e987c4077e2f7184897Vadim Bendebury 205679752bf24c21135884e987c4077e2f7184897Vadim Bendeburyclass MediaCallback : public VoEMediaProcess { 215679752bf24c21135884e987c4077e2f7184897Vadim Bendebury public: 225679752bf24c21135884e987c4077e2f7184897Vadim Bendebury virtual void Process(int channel, ProcessingTypes type, 235679752bf24c21135884e987c4077e2f7184897Vadim Bendebury int16_t audio[], size_t samples_per_channel, 245679752bf24c21135884e987c4077e2f7184897Vadim Bendebury int sample_rate_hz, bool is_stereo) { 255679752bf24c21135884e987c4077e2f7184897Vadim Bendebury } 265679752bf24c21135884e987c4077e2f7184897Vadim Bendebury}; 275679752bf24c21135884e987c4077e2f7184897Vadim Bendebury 285679752bf24c21135884e987c4077e2f7184897Vadim Bendebury// TODO(andrew): Mock VoEMediaProcess, and verify the behavior when calling 295679752bf24c21135884e987c4077e2f7184897Vadim Bendebury// PrepareDemux(). 305679752bf24c21135884e987c4077e2f7184897Vadim BendeburyTEST(TransmitMixerTest, RegisterExternalMediaCallback) { 315679752bf24c21135884e987c4077e2f7184897Vadim Bendebury TransmitMixer* tm = NULL; 325679752bf24c21135884e987c4077e2f7184897Vadim Bendebury ASSERT_EQ(0, TransmitMixer::Create(tm, 0)); 335679752bf24c21135884e987c4077e2f7184897Vadim Bendebury ASSERT_TRUE(tm != NULL); 345679752bf24c21135884e987c4077e2f7184897Vadim Bendebury MediaCallback callback; 355679752bf24c21135884e987c4077e2f7184897Vadim Bendebury EXPECT_EQ(-1, tm->RegisterExternalMediaProcessing(NULL, 365679752bf24c21135884e987c4077e2f7184897Vadim Bendebury kRecordingPreprocessing)); 375679752bf24c21135884e987c4077e2f7184897Vadim Bendebury EXPECT_EQ(-1, tm->RegisterExternalMediaProcessing(&callback, 385679752bf24c21135884e987c4077e2f7184897Vadim Bendebury kPlaybackPerChannel)); 395679752bf24c21135884e987c4077e2f7184897Vadim Bendebury EXPECT_EQ(-1, tm->RegisterExternalMediaProcessing(&callback, 405679752bf24c21135884e987c4077e2f7184897Vadim Bendebury kPlaybackAllChannelsMixed)); 415679752bf24c21135884e987c4077e2f7184897Vadim Bendebury EXPECT_EQ(-1, tm->RegisterExternalMediaProcessing(&callback, 425679752bf24c21135884e987c4077e2f7184897Vadim Bendebury kRecordingPerChannel)); 435679752bf24c21135884e987c4077e2f7184897Vadim Bendebury EXPECT_EQ(0, tm->RegisterExternalMediaProcessing(&callback, 445679752bf24c21135884e987c4077e2f7184897Vadim Bendebury kRecordingAllChannelsMixed)); 455679752bf24c21135884e987c4077e2f7184897Vadim Bendebury EXPECT_EQ(0, tm->RegisterExternalMediaProcessing(&callback, 465679752bf24c21135884e987c4077e2f7184897Vadim Bendebury kRecordingPreprocessing)); 475679752bf24c21135884e987c4077e2f7184897Vadim Bendebury EXPECT_EQ(-1, tm->DeRegisterExternalMediaProcessing(kPlaybackPerChannel)); 485679752bf24c21135884e987c4077e2f7184897Vadim Bendebury EXPECT_EQ(-1, tm->DeRegisterExternalMediaProcessing( 495679752bf24c21135884e987c4077e2f7184897Vadim Bendebury kPlaybackAllChannelsMixed)); 505679752bf24c21135884e987c4077e2f7184897Vadim Bendebury EXPECT_EQ(-1, tm->DeRegisterExternalMediaProcessing(kRecordingPerChannel)); 515679752bf24c21135884e987c4077e2f7184897Vadim Bendebury EXPECT_EQ(0, tm->DeRegisterExternalMediaProcessing( 525679752bf24c21135884e987c4077e2f7184897Vadim Bendebury kRecordingAllChannelsMixed)); 535679752bf24c21135884e987c4077e2f7184897Vadim Bendebury EXPECT_EQ(0, tm->DeRegisterExternalMediaProcessing(kRecordingPreprocessing)); 545679752bf24c21135884e987c4077e2f7184897Vadim Bendebury TransmitMixer::Destroy(tm); 555679752bf24c21135884e987c4077e2f7184897Vadim Bendebury} 565679752bf24c21135884e987c4077e2f7184897Vadim Bendebury 575679752bf24c21135884e987c4077e2f7184897Vadim Bendebury} // namespace 585679752bf24c21135884e987c4077e2f7184897Vadim Bendebury} // namespace voe 595679752bf24c21135884e987c4077e2f7184897Vadim Bendebury} // namespace webrtc 605679752bf24c21135884e987c4077e2f7184897Vadim Bendebury