1b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* 2b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 3b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * 4b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Use of this source code is governed by a BSD-style license 5b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * that can be found in the LICENSE file in the root of the source 6b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * tree. An additional intellectual property rights grant can be found 7b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * in the file PATENTS. All contributing project authors may 8b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * be found in the AUTHORS file in the root of the source tree. 9b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 10b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 115e8ee6f8a182dd36d0c9f273f180d015a056cef4andrew@webrtc.org#include "webrtc/modules/video_capture/include/video_capture_factory.h" 12c075e2547e9da14bb80fb16c07fd64052d10dd9bpwestin@webrtc.org#include "webrtc/test/channel_transport/include/channel_transport.h" 13c075e2547e9da14bb80fb16c07fd64052d10dd9bpwestin@webrtc.org#include "webrtc/video_engine/test/auto_test/interface/vie_autotest.h" 14c075e2547e9da14bb80fb16c07fd64052d10dd9bpwestin@webrtc.org#include "webrtc/video_engine/test/auto_test/interface/vie_autotest_defines.h" 15c075e2547e9da14bb80fb16c07fd64052d10dd9bpwestin@webrtc.org#include "webrtc/video_engine/test/auto_test/primitives/base_primitives.h" 16c075e2547e9da14bb80fb16c07fd64052d10dd9bpwestin@webrtc.org#include "webrtc/video_engine/test/auto_test/primitives/general_primitives.h" 17c075e2547e9da14bb80fb16c07fd64052d10dd9bpwestin@webrtc.org#include "webrtc/video_engine/test/libvietest/include/tb_interfaces.h" 18b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 19b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid ViEAutoTest::ViEBaseStandardTest() { 20b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // *************************************************************** 21b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // Begin create/initialize WebRTC Video Engine for testing 22b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // *************************************************************** 23b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 24b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org TbInterfaces interfaces("ViEBaseStandardTest"); 25b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 26b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // *************************************************************** 27b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // Engine ready. Set up the test case: 28b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // *************************************************************** 29b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org int video_channel = -1; 30b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, interfaces.base->CreateChannel(video_channel)); 31b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 32e293cde234169fcd129599efb0a47d2544367e96tommi@webrtc.org webrtc::VideoCaptureModule* video_capture_module = NULL; 33b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const unsigned int kMaxDeviceNameLength = 128; 34b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org char device_name[kMaxDeviceNameLength]; 35b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org memset(device_name, 0, kMaxDeviceNameLength); 36b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org int capture_id; 37b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 38b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org webrtc::ViEBase* base_interface = interfaces.base; 39b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org webrtc::ViERender* render_interface = interfaces.render; 40b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org webrtc::ViECapture* capture_interface = interfaces.capture; 41b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 42b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org FindCaptureDeviceOnSystem(capture_interface, 43b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org device_name, 44b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org kMaxDeviceNameLength, 45b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org &capture_id, 46b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org &video_capture_module); 47b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 48e293cde234169fcd129599efb0a47d2544367e96tommi@webrtc.org EXPECT_TRUE(video_capture_module); 49e293cde234169fcd129599efb0a47d2544367e96tommi@webrtc.org if (!video_capture_module) 50e293cde234169fcd129599efb0a47d2544367e96tommi@webrtc.org return; 51e293cde234169fcd129599efb0a47d2544367e96tommi@webrtc.org 52b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, capture_interface->ConnectCaptureDevice(capture_id, 53b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org video_channel)); 54b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, capture_interface->StartCapture(capture_id)); 55b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 56a0f23f156822760eab87325c52216be18f3b72bdstefan@webrtc.org ConfigureRtpRtcp(interfaces.rtp_rtcp, kNack, video_channel); 57b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 58b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, render_interface->RegisterVideoRenderModule(*_vrm1)); 59b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, render_interface->RegisterVideoRenderModule(*_vrm2)); 60b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 61b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org RenderInWindow(render_interface, capture_id, _window1, 0); 62b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org RenderInWindow(render_interface, video_channel, _window2, 1); 63b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 64b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // *************************************************************** 65b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // Run the actual test: 66b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // *************************************************************** 67b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org ViETest::Log("You should shortly see a local preview from camera %s" 68b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org " in window 1 and the remote video in window 2.", device_name); 69b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org ::TestI420CallSetup(interfaces.codec, interfaces.video_engine, 7019f89a1ab2ebe75e38d192c42453e9c50aae0c64stefan@webrtc.org base_interface, interfaces.network, interfaces.rtp_rtcp, 7119f89a1ab2ebe75e38d192c42453e9c50aae0c64stefan@webrtc.org video_channel, device_name); 72b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 73b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // *************************************************************** 74b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // Testing finished. Tear down Video Engine 75b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // *************************************************************** 76b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, capture_interface->StopCapture(capture_id)); 77b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, base_interface->StopReceive(video_channel)); 78b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 795600f6e86d3994726249fd1c77377c1d8534f107phoglund@webrtc.org EXPECT_EQ(0, render_interface->StopRender(video_channel)); 805600f6e86d3994726249fd1c77377c1d8534f107phoglund@webrtc.org EXPECT_EQ(0, render_interface->RemoveRenderer(video_channel)); 815600f6e86d3994726249fd1c77377c1d8534f107phoglund@webrtc.org EXPECT_EQ(0, render_interface->RemoveRenderer(capture_id)); 82b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 83b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, render_interface->DeRegisterVideoRenderModule(*_vrm1)); 84b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, render_interface->DeRegisterVideoRenderModule(*_vrm2)); 85b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 86b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, capture_interface->ReleaseCaptureDevice(capture_id)); 87b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 88b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org video_capture_module->Release(); 89b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org video_capture_module = NULL; 90b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 91b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, base_interface->DeleteChannel(video_channel)); 92b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} 93b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 94b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid ViEAutoTest::ViEBaseExtendedTest() { 95b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // Start with standard test 96b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org ViEBaseAPITest(); 97b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org ViEBaseStandardTest(); 98b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} 99b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 100b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid ViEAutoTest::ViEBaseAPITest() { 101b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // *************************************************************** 102b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // Begin create/initialize WebRTC Video Engine for testing 103b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // *************************************************************** 104b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // Get the ViEBase API 105b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org webrtc::ViEBase* vie_base = webrtc::ViEBase::GetInterface(NULL); 106b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(NULL, vie_base) << "Should return null for a bad ViE pointer"; 107b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 108b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org webrtc::VideoEngine* video_engine = webrtc::VideoEngine::Create(); 109b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_TRUE(NULL != video_engine); 110b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 111b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org std::string trace_file_path = 112b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org ViETest::GetResultOutputPath() + "ViEBaseAPI_trace.txt"; 113b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, video_engine->SetTraceFile(trace_file_path.c_str())); 114b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 115b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org vie_base = webrtc::ViEBase::GetInterface(video_engine); 116b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_TRUE(NULL != vie_base); 117b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 118b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org webrtc::ViENetwork* vie_network = 119b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org webrtc::ViENetwork::GetInterface(video_engine); 120b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_TRUE(vie_network != NULL); 121b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 122b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org webrtc::ViERTP_RTCP* vie_rtp = 123b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org webrtc::ViERTP_RTCP::GetInterface(video_engine); 124b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_TRUE(vie_rtp != NULL); 125b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 126b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // *************************************************************** 127b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // Engine ready. Begin testing class 128b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // *************************************************************** 129b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org char version[1024] = ""; 130b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, vie_base->GetVersion(version)); 131b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, vie_base->LastError()); 132b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 133b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org int video_channel = -1; 134b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, vie_base->Init()); 135b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, vie_base->CreateChannel(video_channel)); 136b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 137b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org int video_channel2 = -1; 138b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org int video_channel3 = -1; 139b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, vie_base->CreateChannel(video_channel2)); 140b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_NE(video_channel, video_channel2) << 141b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org "Should allocate new number for independent channel"; 142b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 143b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, vie_base->DeleteChannel(video_channel2)); 144b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 145b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(-1, vie_base->CreateChannel(video_channel2, video_channel + 1)) 146b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org << "Should fail since neither channel exists (the second must)"; 147b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 148b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // Create a receive only channel and a send channel. Verify we can't send on 149b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // the receive only channel. 150b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, vie_base->CreateReceiveChannel(video_channel2, 151c075e2547e9da14bb80fb16c07fd64052d10dd9bpwestin@webrtc.org video_channel)); 152b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, vie_base->CreateChannel(video_channel3, video_channel)); 153b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 154b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const char* ip_address = "127.0.0.1\0"; 155b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const int send_port = 1234; 156c075e2547e9da14bb80fb16c07fd64052d10dd9bpwestin@webrtc.org 157b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, vie_rtp->SetLocalSSRC(video_channel, 1)); 158b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, vie_rtp->SetLocalSSRC(video_channel, 2)); 159b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, vie_rtp->SetLocalSSRC(video_channel, 3)); 160c075e2547e9da14bb80fb16c07fd64052d10dd9bpwestin@webrtc.org 161c075e2547e9da14bb80fb16c07fd64052d10dd9bpwestin@webrtc.org webrtc::test::VideoChannelTransport* video_channel_transport_1 = 162c075e2547e9da14bb80fb16c07fd64052d10dd9bpwestin@webrtc.org new webrtc::test::VideoChannelTransport(vie_network, video_channel); 163c075e2547e9da14bb80fb16c07fd64052d10dd9bpwestin@webrtc.org 164c075e2547e9da14bb80fb16c07fd64052d10dd9bpwestin@webrtc.org ASSERT_EQ(0, video_channel_transport_1->SetSendDestination(ip_address, 165c075e2547e9da14bb80fb16c07fd64052d10dd9bpwestin@webrtc.org send_port)); 166c075e2547e9da14bb80fb16c07fd64052d10dd9bpwestin@webrtc.org 167c075e2547e9da14bb80fb16c07fd64052d10dd9bpwestin@webrtc.org webrtc::test::VideoChannelTransport* video_channel_transport_2 = 168c075e2547e9da14bb80fb16c07fd64052d10dd9bpwestin@webrtc.org new webrtc::test::VideoChannelTransport(vie_network, video_channel2); 169c075e2547e9da14bb80fb16c07fd64052d10dd9bpwestin@webrtc.org 170c075e2547e9da14bb80fb16c07fd64052d10dd9bpwestin@webrtc.org webrtc::test::VideoChannelTransport* video_channel_transport_3 = 171c075e2547e9da14bb80fb16c07fd64052d10dd9bpwestin@webrtc.org new webrtc::test::VideoChannelTransport(vie_network, video_channel3); 172c075e2547e9da14bb80fb16c07fd64052d10dd9bpwestin@webrtc.org 173c075e2547e9da14bb80fb16c07fd64052d10dd9bpwestin@webrtc.org ASSERT_EQ(0, video_channel_transport_3->SetSendDestination(ip_address, 174c075e2547e9da14bb80fb16c07fd64052d10dd9bpwestin@webrtc.org send_port + 4)); 175b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 176b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, vie_base->StartSend(video_channel)); 177b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(-1, vie_base->StartSend(video_channel2)); 178b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, vie_base->StartSend(video_channel3)); 179b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, vie_base->StopSend(video_channel)); 180b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, vie_base->StopSend(video_channel3)); 181b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 182b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // Test Voice Engine integration with Video Engine. 183b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org webrtc::VoiceEngine* voice_engine = NULL; 184b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org webrtc::VoEBase* voe_base = NULL; 185b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org int audio_channel = -1; 186b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 187b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org voice_engine = webrtc::VoiceEngine::Create(); 188b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_TRUE(NULL != voice_engine); 189b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 190b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org voe_base = webrtc::VoEBase::GetInterface(voice_engine); 191b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_TRUE(NULL != voe_base); 192b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, voe_base->Init()); 193b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 194b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org audio_channel = voe_base->CreateChannel(); 195b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_NE(-1, audio_channel); 196b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 197b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // Connect before setting VoE. 198b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_NE(0, vie_base->ConnectAudioChannel(video_channel, audio_channel)) 199b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org << "Should fail since Voice Engine is not set yet."; 200b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 201b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // Then do it right. 202b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, vie_base->SetVoiceEngine(voice_engine)); 203b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, vie_base->ConnectAudioChannel(video_channel, audio_channel)); 204b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 205b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // *************************************************************** 206b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // Testing finished. Tear down Video Engine 207b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // *************************************************************** 208b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_NE(0, vie_base->DisconnectAudioChannel(video_channel + 5)) << 209b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org "Should fail: disconnecting bogus channel"; 210b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 211b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, vie_base->DisconnectAudioChannel(video_channel)); 212b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 213b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // Clean up voice engine 214b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, vie_rtp->Release()); 215b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, vie_network->Release()); 216b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, vie_base->SetVoiceEngine(NULL)); 217b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // VoiceEngine reference counting is per object, not per interface, so 218b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // Release should return != 0. 219b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_NE(0, voe_base->Release()); 220b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_TRUE(webrtc::VoiceEngine::Delete(voice_engine)); 221b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 222b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org webrtc::ViEBase* vie_base2 = webrtc::ViEBase::GetInterface(video_engine); 223b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_TRUE(NULL != vie_base2); 224b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 225b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(1, vie_base->Release()) << 226b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org "There should be one interface left."; 227b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 228b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_FALSE(webrtc::VideoEngine::Delete(video_engine)) << 229b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org "Should fail since there are interfaces left."; 230b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 231c075e2547e9da14bb80fb16c07fd64052d10dd9bpwestin@webrtc.org delete video_channel_transport_1; 232c075e2547e9da14bb80fb16c07fd64052d10dd9bpwestin@webrtc.org delete video_channel_transport_2; 233c075e2547e9da14bb80fb16c07fd64052d10dd9bpwestin@webrtc.org delete video_channel_transport_3; 234b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_EQ(0, vie_base->Release()); 235b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org EXPECT_TRUE(webrtc::VideoEngine::Delete(video_engine)); 236b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} 237