Move the VIE tests to use external transport instead of the built in udp transport
Review URL: https://webrtc-codereview.appspot.com/1216010
git-svn-id: http://webrtc.googlecode.com/svn/trunk/webrtc@3712 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/test/channel_transport/channel_transport.cc b/test/channel_transport/channel_transport.cc
index 877a601..3985688 100644
--- a/test/channel_transport/channel_transport.cc
+++ b/test/channel_transport/channel_transport.cc
@@ -12,7 +12,9 @@
#include <stdio.h>
+#ifndef WEBRTC_ANDROID
#include "gtest/gtest.h"
+#endif
#include "webrtc/test/channel_transport/udp_transport.h"
#include "webrtc/video_engine/include/vie_network.h"
#include "webrtc/voice_engine/include/voe_network.h"
@@ -27,8 +29,12 @@
voe_network_(voe_network) {
WebRtc_UWord8 socket_threads = 1;
socket_transport_ = UdpTransport::Create(channel, socket_threads);
+#ifndef WEBRTC_ANDROID
EXPECT_EQ(0, voe_network_->RegisterExternalTransport(channel,
*socket_transport_));
+#else
+ voe_network_->RegisterExternalTransport(channel, *socket_transport_);
+#endif
}
VoiceChannelTransport::~VoiceChannelTransport() {
@@ -69,8 +75,12 @@
vie_network_(vie_network) {
WebRtc_UWord8 socket_threads = 1;
socket_transport_ = UdpTransport::Create(channel, socket_threads);
+#ifndef WEBRTC_ANDROID
EXPECT_EQ(0, vie_network_->RegisterSendTransport(channel,
*socket_transport_));
+#else
+ vie_network_->RegisterSendTransport(channel, *socket_transport_);
+#endif
}
VideoChannelTransport::~VideoChannelTransport() {
diff --git a/video_engine/test/android/jni/Android.mk b/video_engine/test/android/jni/Android.mk
index 55eae39..1b51044 100644
--- a/video_engine/test/android/jni/Android.mk
+++ b/video_engine/test/android/jni/Android.mk
@@ -219,6 +219,12 @@
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
+LOCAL_MODULE := libchannel_transport
+LOCAL_SRC_FILES := \
+ $(MY_LIBS_PATH)/libchannel_transport.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
LOCAL_MODULE := libwebrtc_utility
LOCAL_SRC_FILES := \
$(MY_LIBS_PATH)/libwebrtc_utility.a
@@ -349,6 +355,7 @@
librtp_rtcp \
libmedia_file \
libudp_transport \
+ libchannel_transport \
libwebrtc_utility \
libaudio_conference_mixer \
libyuv \
diff --git a/video_engine/test/android/jni/vie_android_java_api.cc b/video_engine/test/android/jni/vie_android_java_api.cc
index 8c8aa0b..ce07dd6 100644
--- a/video_engine/test/android/jni/vie_android_java_api.cc
+++ b/video_engine/test/android/jni/vie_android_java_api.cc
@@ -34,6 +34,9 @@
#include "common_types.h"
#include "android_media_codec_decoder.h"
+#include "webrtc/system_wrappers/interface/scoped_ptr.h"
+#include "webrtc/test/channel_transport/include/channel_transport.h"
+
#define WEBRTC_LOG_TAG "*WEBRTCN*"
#define VALIDATE_BASE_POINTER \
if (!voeData.base) \
@@ -88,6 +91,7 @@
}
using namespace webrtc;
+using namespace test;
//Forward declaration.
class VideoCallbackAndroid;
@@ -107,6 +111,7 @@
VoEHardware* hardware;
VoERTP_RTCP* rtp;
JavaVM* jvm;
+ scoped_ptr<VoiceChannelTransport> transport;
} VoiceEngineData;
class AndroidVideoRenderCallback;
@@ -122,7 +127,7 @@
ViECapture* capture;
ViEExternalCodec* externalCodec;
VideoCallbackAndroid* callback;
-
+ scoped_ptr<VideoChannelTransport> transport;
} VideoEngineData;
// Global variables
@@ -589,7 +594,7 @@
if (voiceChannel >= 0) {
vieData.base->ConnectAudioChannel(channel, voiceChannel);
}
-
+ vieData.transport.reset(new VideoChannelTransport(vieData.netw, channel));
return channel;
}
else {
@@ -610,13 +615,10 @@
{
__android_log_write(ANDROID_LOG_DEBUG, WEBRTC_LOG_TAG, "SetLocalReceiver");
- if (vieData.vie) {
- int ret = vieData.netw->SetLocalReceiver(channel, port);
- return ret;
+ if (vieData.transport.get()) {
+ return vieData.transport->SetLocalReceiver(port);
}
- else {
- return -1;
- }
+ return -1;
}
/*
@@ -646,7 +648,10 @@
"SetSendDestination: channel=%d, port=%d, ip=%s\n",
channel, port, ip);
- return vieData.netw->SetSendDestination(channel, ip, port);
+ if (vieData.transport.get()) {
+ return vieData.transport->SetSendDestination(ip, port);
+ }
+ return -1;
}
@@ -1264,7 +1269,7 @@
}
jint channel = voeData.base->CreateChannel();
-
+ voeData.transport.reset(new VoiceChannelTransport(voeData.netw, channel));
return channel;
}
@@ -1295,7 +1300,10 @@
{
__android_log_write(ANDROID_LOG_DEBUG, WEBRTC_LOG_TAG, "SetLocalReceiver");
VALIDATE_BASE_POINTER;
- return voeData.base->SetLocalReceiver(channel, port);
+ if (voeData.transport.get()) {
+ return voeData.transport->SetLocalReceiver(port);
+ }
+ return -1;
}
/*
@@ -1319,9 +1327,13 @@
"Could not get UTF string");
return -1;
}
- jint retVal = voeData.base->SetSendDestination(channel, port, ipaddrNative);
+ if (voeData.transport.get()) {
+ jint retVal = voeData.transport->SetSendDestination(ipaddrNative, port);
+ env->ReleaseStringUTFChars(ipaddr, ipaddrNative);
+ return retVal;
+ }
env->ReleaseStringUTFChars(ipaddr, ipaddrNative);
- return retVal;
+ return -1;
}
/*
diff --git a/video_engine/test/auto_test/automated/vie_api_integration_test.cc b/video_engine/test/auto_test/automated/vie_api_integration_test.cc
index 7b49103..96b401b 100644
--- a/video_engine/test/auto_test/automated/vie_api_integration_test.cc
+++ b/video_engine/test/auto_test/automated/vie_api_integration_test.cc
@@ -48,10 +48,6 @@
tests_->ViEImageProcessAPITest();
}
-TEST_F(DISABLED_ON_MAC(ViEApiIntegrationTest), RunsNetworkTestWithoutErrors) {
- tests_->ViENetworkAPITest();
-}
-
TEST_F(DISABLED_ON_MAC(ViEApiIntegrationTest), RunsRenderTestWithoutErrors) {
tests_->ViERenderAPITest();
}
diff --git a/video_engine/test/auto_test/automated/vie_extended_integration_test.cc b/video_engine/test/auto_test/automated/vie_extended_integration_test.cc
index c091475..d224bde 100644
--- a/video_engine/test/auto_test/automated/vie_extended_integration_test.cc
+++ b/video_engine/test/auto_test/automated/vie_extended_integration_test.cc
@@ -51,11 +51,6 @@
}
TEST_F(DISABLED_ON_MAC(ViEExtendedIntegrationTest),
- RunsNetworkTestWithoutErrors) {
- tests_->ViENetworkExtendedTest();
-}
-
-TEST_F(DISABLED_ON_MAC(ViEExtendedIntegrationTest),
RunsRenderTestWithoutErrors) {
tests_->ViERenderExtendedTest();
}
diff --git a/video_engine/test/auto_test/automated/vie_standard_integration_test.cc b/video_engine/test/auto_test/automated/vie_standard_integration_test.cc
index 4f90aac..30364e0 100644
--- a/video_engine/test/auto_test/automated/vie_standard_integration_test.cc
+++ b/video_engine/test/auto_test/automated/vie_standard_integration_test.cc
@@ -54,10 +54,6 @@
tests_->ViEImageProcessStandardTest();
}
-TEST_F(ViEStandardIntegrationTest, RunsNetworkTestWithoutErrors) {
- tests_->ViENetworkStandardTest();
-}
-
TEST_F(ViEStandardIntegrationTest, RunsRenderTestWithoutErrors) {
tests_->ViERenderStandardTest();
}
diff --git a/video_engine/test/auto_test/source/vie_autotest.cc b/video_engine/test/auto_test/source/vie_autotest.cc
index a707e70..04fe7e7 100644
--- a/video_engine/test/auto_test/source/vie_autotest.cc
+++ b/video_engine/test/auto_test/source/vie_autotest.cc
@@ -67,7 +67,6 @@
ViEEncryptionStandardTest();
ViEFileStandardTest();
ViEImageProcessStandardTest();
- ViENetworkStandardTest();
ViERenderStandardTest();
ViERtpRtcpStandardTest();
}
@@ -80,7 +79,6 @@
ViEEncryptionExtendedTest();
ViEFileExtendedTest();
ViEImageProcessExtendedTest();
- ViENetworkExtendedTest();
ViERenderExtendedTest();
ViERtpRtcpExtendedTest();
}
@@ -93,7 +91,6 @@
ViEEncryptionAPITest();
ViEFileAPITest();
ViEImageProcessAPITest();
- ViENetworkAPITest();
ViERenderAPITest();
ViERtpRtcpAPITest();
}
diff --git a/video_engine/test/auto_test/source/vie_autotest_android.cc b/video_engine/test/auto_test/source/vie_autotest_android.cc
index d1622db..80d8d90 100644
--- a/video_engine/test/auto_test/source/vie_autotest_android.cc
+++ b/video_engine/test/auto_test/source/vie_autotest_android.cc
@@ -162,21 +162,14 @@
vieAutoTest.ViEImageProcessExtendedTest();
break;
- case 8: // network
- vieAutoTest.ViENetworkExtendedTest();
- break;
-
- case 9: // Render
+ case 8: // Render
vieAutoTest.ViERenderExtendedTest();
break;
- case 10: // RTP/RTCP
+ case 9: // RTP/RTCP
vieAutoTest.ViERtpRtcpExtendedTest();
break;
- case 11:
- break;
-
default:
break;
}
diff --git a/video_engine/test/auto_test/source/vie_autotest_base.cc b/video_engine/test/auto_test/source/vie_autotest_base.cc
index e9d24f3..20e41df 100644
--- a/video_engine/test/auto_test/source/vie_autotest_base.cc
+++ b/video_engine/test/auto_test/source/vie_autotest_base.cc
@@ -9,11 +9,12 @@
*/
#include "webrtc/modules/video_capture/include/video_capture_factory.h"
-#include "video_engine/test/auto_test/interface/vie_autotest.h"
-#include "video_engine/test/auto_test/interface/vie_autotest_defines.h"
-#include "video_engine/test/auto_test/primitives/base_primitives.h"
-#include "video_engine/test/auto_test/primitives/general_primitives.h"
-#include "video_engine/test/libvietest/include/tb_interfaces.h"
+#include "webrtc/test/channel_transport/include/channel_transport.h"
+#include "webrtc/video_engine/test/auto_test/interface/vie_autotest.h"
+#include "webrtc/video_engine/test/auto_test/interface/vie_autotest_defines.h"
+#include "webrtc/video_engine/test/auto_test/primitives/base_primitives.h"
+#include "webrtc/video_engine/test/auto_test/primitives/general_primitives.h"
+#include "webrtc/video_engine/test/libvietest/include/tb_interfaces.h"
void ViEAutoTest::ViEBaseStandardTest() {
// ***************************************************************
@@ -150,20 +151,30 @@
// Create a receive only channel and a send channel. Verify we can't send on
// the receive only channel.
EXPECT_EQ(0, vie_base->CreateReceiveChannel(video_channel2,
- video_channel));
+ video_channel));
EXPECT_EQ(0, vie_base->CreateChannel(video_channel3, video_channel));
const char* ip_address = "127.0.0.1\0";
const int send_port = 1234;
+
EXPECT_EQ(0, vie_rtp->SetLocalSSRC(video_channel, 1));
- EXPECT_EQ(0, vie_network->SetSendDestination(video_channel, ip_address,
- send_port));
EXPECT_EQ(0, vie_rtp->SetLocalSSRC(video_channel, 2));
- EXPECT_EQ(0, vie_network->SetSendDestination(video_channel2, ip_address,
- send_port + 2));
EXPECT_EQ(0, vie_rtp->SetLocalSSRC(video_channel, 3));
- EXPECT_EQ(0, vie_network->SetSendDestination(video_channel3, ip_address,
- send_port + 4));
+
+ webrtc::test::VideoChannelTransport* video_channel_transport_1 =
+ new webrtc::test::VideoChannelTransport(vie_network, video_channel);
+
+ ASSERT_EQ(0, video_channel_transport_1->SetSendDestination(ip_address,
+ send_port));
+
+ webrtc::test::VideoChannelTransport* video_channel_transport_2 =
+ new webrtc::test::VideoChannelTransport(vie_network, video_channel2);
+
+ webrtc::test::VideoChannelTransport* video_channel_transport_3 =
+ new webrtc::test::VideoChannelTransport(vie_network, video_channel3);
+
+ ASSERT_EQ(0, video_channel_transport_3->SetSendDestination(ip_address,
+ send_port + 4));
EXPECT_EQ(0, vie_base->StartSend(video_channel));
EXPECT_EQ(-1, vie_base->StartSend(video_channel2));
@@ -220,6 +231,9 @@
EXPECT_FALSE(webrtc::VideoEngine::Delete(video_engine)) <<
"Should fail since there are interfaces left.";
+ delete video_channel_transport_1;
+ delete video_channel_transport_2;
+ delete video_channel_transport_3;
EXPECT_EQ(0, vie_base->Release());
EXPECT_TRUE(webrtc::VideoEngine::Delete(video_engine));
}
diff --git a/video_engine/test/auto_test/source/vie_autotest_codec.cc b/video_engine/test/auto_test/source/vie_autotest_codec.cc
index 87169a6..a1e0f8d 100644
--- a/video_engine/test/auto_test/source/vie_autotest_codec.cc
+++ b/video_engine/test/auto_test/source/vie_autotest_codec.cc
@@ -8,21 +8,24 @@
* be found in the AUTHORS file in the root of the source tree.
*/
-#include "common_types.h" // NOLINT
-#include "engine_configurations.h" // NOLINT
-#include "video_engine/test/auto_test/interface/vie_autotest_defines.h"
-#include "video_engine/test/auto_test/interface/vie_autotest.h"
-#include "video_engine/test/libvietest/include/tb_capture_device.h"
-#include "video_engine/test/libvietest/include/tb_I420_codec.h"
-#include "video_engine/test/libvietest/include/tb_interfaces.h"
-#include "video_engine/test/libvietest/include/tb_video_channel.h"
-#include "video_engine/include/vie_base.h"
-#include "video_engine/include/vie_capture.h"
-#include "video_engine/include/vie_codec.h"
-#include "video_engine/include/vie_network.h"
-#include "video_engine/include/vie_render.h"
-#include "video_engine/include/vie_rtp_rtcp.h"
-#include "voice_engine/include/voe_base.h"
+#include "webrtc/common_types.h"
+#include "webrtc/engine_configurations.h"
+#include "webrtc/system_wrappers/interface/scoped_ptr.h"
+#include "webrtc/test/channel_transport/include/channel_transport.h"
+#include "webrtc/video_engine/test/auto_test/interface/vie_autotest_defines.h"
+#include "webrtc/video_engine/test/auto_test/interface/vie_autotest.h"
+#include "webrtc/video_engine/test/libvietest/include/tb_capture_device.h"
+#include "webrtc/video_engine/test/libvietest/include/tb_I420_codec.h"
+#include "webrtc/video_engine/test/libvietest/include/tb_interfaces.h"
+#include "webrtc/video_engine/test/libvietest/include/tb_video_channel.h"
+#include "webrtc/video_engine/include/vie_base.h"
+#include "webrtc/video_engine/include/vie_capture.h"
+#include "webrtc/video_engine/include/vie_codec.h"
+#include "webrtc/video_engine/include/vie_external_codec.h"
+#include "webrtc/video_engine/include/vie_network.h"
+#include "webrtc/video_engine/include/vie_render.h"
+#include "webrtc/video_engine/include/vie_rtp_rtcp.h"
+#include "webrtc/voice_engine/include/voe_base.h"
class TestCodecObserver
: public webrtc::ViEEncoderObserver,
@@ -164,13 +167,18 @@
break;
}
}
-
const char* ip_address = "127.0.0.1";
const uint16_t rtp_port = 6000;
- EXPECT_EQ(0, network->SetLocalReceiver(video_channel, rtp_port));
+
+ webrtc::scoped_ptr<webrtc::test::VideoChannelTransport>
+ video_channel_transport(
+ new webrtc::test::VideoChannelTransport(network, video_channel));
+
+ ASSERT_EQ(0, video_channel_transport->SetSendDestination(ip_address,
+ rtp_port));
+ ASSERT_EQ(0, video_channel_transport->SetLocalReceiver(rtp_port));
+
EXPECT_EQ(0, base->StartReceive(video_channel));
- EXPECT_EQ(0, network->SetSendDestination(
- video_channel, ip_address, rtp_port));
EXPECT_EQ(0, base->StartSend(video_channel));
// Make sure all codecs runs
@@ -300,11 +308,17 @@
const char* ip_address = "127.0.0.1";
const uint16_t rtp_port = 6000;
- EXPECT_EQ(0, network->SetLocalReceiver(video_channel, rtp_port));
- EXPECT_EQ(0, base->StartReceive(video_channel));
- EXPECT_EQ(0, network->SetSendDestination(
- video_channel, ip_address, rtp_port));
+
+ webrtc::scoped_ptr<webrtc::test::VideoChannelTransport>
+ video_channel_transport(
+ new webrtc::test::VideoChannelTransport(network, video_channel));
+
+ ASSERT_EQ(0, video_channel_transport->SetSendDestination(ip_address,
+ rtp_port));
+ ASSERT_EQ(0, video_channel_transport->SetLocalReceiver(rtp_port));
+
EXPECT_EQ(0, base->StartSend(video_channel));
+ EXPECT_EQ(0, base->StartReceive(video_channel));
// Codec specific tests
memset(&video_codec, 0, sizeof(webrtc::VideoCodec));
@@ -329,6 +343,7 @@
// the received streams.
TbInterfaces video_engine("ViECodecExtendedTest2");
TbCaptureDevice tb_capture(video_engine);
+ webrtc::ViENetwork* network = video_engine.network;
// Create channel 1.
int video_channel_1 = -1;
@@ -341,17 +356,27 @@
EXPECT_NE(video_channel_1, video_channel_2)
<< "Channel 2 should be unique.";
+ const char* ip_address = "127.0.0.1";
uint16_t rtp_port_1 = 12000;
uint16_t rtp_port_2 = 13000;
- EXPECT_EQ(0, video_engine.network->SetLocalReceiver(
- video_channel_1, rtp_port_1));
- EXPECT_EQ(0, video_engine.network->SetSendDestination(
- video_channel_1, "127.0.0.1", rtp_port_1));
+
+ webrtc::scoped_ptr<webrtc::test::VideoChannelTransport>
+ video_channel_transport_1(
+ new webrtc::test::VideoChannelTransport(network, video_channel_1));
+
+ ASSERT_EQ(0, video_channel_transport_1->SetSendDestination(ip_address,
+ rtp_port_1));
+ ASSERT_EQ(0, video_channel_transport_1->SetLocalReceiver(rtp_port_1));
+
+ webrtc::scoped_ptr<webrtc::test::VideoChannelTransport>
+ video_channel_transport_2(
+ new webrtc::test::VideoChannelTransport(network, video_channel_2));
+
+ ASSERT_EQ(0, video_channel_transport_2->SetSendDestination(ip_address,
+ rtp_port_2));
+ ASSERT_EQ(0, video_channel_transport_2->SetLocalReceiver(rtp_port_2));
+
EXPECT_EQ(0, video_engine.rtp_rtcp->SetLocalSSRC(video_channel_1, 1));
- EXPECT_EQ(0, video_engine.network->SetLocalReceiver(
- video_channel_2, rtp_port_2));
- EXPECT_EQ(0, video_engine.network->SetSendDestination(
- video_channel_2, "127.0.0.1", rtp_port_2));
EXPECT_EQ(0, video_engine.rtp_rtcp->SetLocalSSRC(video_channel_2, 2));
tb_capture.ConnectTo(video_channel_1);
tb_capture.ConnectTo(video_channel_2);
@@ -483,9 +508,6 @@
EXPECT_TRUE(webrtc::VideoEngine::Delete(video_engine));
}
-#ifdef WEBRTC_VIDEO_ENGINE_EXTERNAL_CODEC_API
-#include "video_engine/include/vie_external_codec.h"
-#endif
void ViEAutoTest::ViECodecExternalCodecTest() {
ViETest::Log(" ");
ViETest::Log("========================================");
diff --git a/video_engine/test/auto_test/source/vie_autotest_custom_call.cc b/video_engine/test/auto_test/source/vie_autotest_custom_call.cc
index b862b64..117cd6a 100644
--- a/video_engine/test/auto_test/source/vie_autotest_custom_call.cc
+++ b/video_engine/test/auto_test/source/vie_autotest_custom_call.cc
@@ -15,12 +15,15 @@
#include <algorithm>
#include "gflags/gflags.h"
-#include "video_engine/test/auto_test/interface/vie_autotest.h"
-#include "video_engine/test/auto_test/interface/vie_autotest_defines.h"
-#include "video_engine/test/auto_test/primitives/choice_helpers.h"
-#include "video_engine/test/auto_test/primitives/general_primitives.h"
-#include "video_engine/test/auto_test/primitives/input_helpers.h"
-#include "video_engine/test/libvietest/include/vie_to_file_renderer.h"
+#include "webrtc/system_wrappers/interface/scoped_ptr.h"
+#include "webrtc/test/channel_transport/include/channel_transport.h"
+#include "webrtc/video_engine/test/auto_test/interface/vie_autotest.h"
+#include "webrtc/video_engine/test/auto_test/interface/vie_autotest_defines.h"
+#include "webrtc/video_engine/test/auto_test/primitives/choice_helpers.h"
+#include "webrtc/video_engine/test/auto_test/primitives/general_primitives.h"
+#include "webrtc/video_engine/test/auto_test/primitives/input_helpers.h"
+#include "webrtc/video_engine/test/libvietest/include/vie_to_file_renderer.h"
+#include "webrtc/voice_engine/include/voe_network.h"
#define VCM_RED_PAYLOAD_TYPE 96
#define VCM_ULPFEC_PAYLOAD_TYPE 97
@@ -202,6 +205,12 @@
"ERROR: %s at line %d", __FUNCTION__,
__LINE__);
+ webrtc::VoENetwork* voe_network=
+ webrtc::VoENetwork::GetInterface(voe);
+ number_of_errors += ViETest::TestError(voe_network != NULL,
+ "ERROR: %s at line %d", __FUNCTION__,
+ __LINE__);
+
webrtc::VoEAudioProcessing* voe_apm =
webrtc::VoEAudioProcessing::GetInterface(voe);
number_of_errors += ViETest::TestError(voe_apm != NULL,
@@ -270,6 +279,10 @@
int buffer_delay_ms = 0;
bool is_image_scale_enabled = false;
bool remb = true;
+ webrtc::scoped_ptr<webrtc::test::VideoChannelTransport>
+ video_channel_transport;
+ webrtc::scoped_ptr<webrtc::test::VoiceChannelTransport>
+ voice_channel_transport;
while (!start_call) {
// Get the IP address to use from call.
@@ -340,13 +353,17 @@
if (start_call == true) {
// Configure audio channel first.
audio_channel = voe_base->CreateChannel();
- error = voe_base->SetSendDestination(audio_channel, audio_tx_port,
- ip_address.c_str());
+
+ voice_channel_transport.reset(
+ new webrtc::test::VoiceChannelTransport(voe_network, audio_channel));
+
+ error = voice_channel_transport->SetSendDestination(ip_address.c_str(),
+ audio_tx_port);
number_of_errors += ViETest::TestError(error == 0,
"ERROR: %s at line %d",
__FUNCTION__, __LINE__);
- error = voe_base->SetLocalReceiver(audio_channel, audio_rx_port);
+ error = voice_channel_transport->SetLocalReceiver(audio_rx_port);
number_of_errors += ViETest::TestError(error == 0,
"ERROR: %s at line %d",
__FUNCTION__, __LINE__);
@@ -472,13 +489,17 @@
file_renderer.PrepareForRendering(output_path, filename);
RenderToFile(vie_renderer, video_channel, &file_renderer);
}
- error = vie_network->SetSendDestination(video_channel, ip_address.c_str(),
- video_tx_port);
+
+ video_channel_transport.reset(
+ new webrtc::test::VideoChannelTransport(vie_network, video_channel));
+
+ error = video_channel_transport->SetSendDestination(ip_address.c_str(),
+ video_tx_port);
number_of_errors += ViETest::TestError(error == 0,
"ERROR: %s at line %d",
__FUNCTION__, __LINE__);
- error = vie_network->SetLocalReceiver(video_channel, video_rx_port);
+ error = video_channel_transport->SetLocalReceiver(video_rx_port);
number_of_errors += ViETest::TestError(error == 0,
"ERROR: %s at line %d",
__FUNCTION__, __LINE__);
@@ -912,6 +933,9 @@
// Now tear down the ViE engine.
error = vie_base->DisconnectAudioChannel(video_channel);
+ voice_channel_transport.reset(NULL);
+ video_channel_transport.reset(NULL);
+
// If Encoder/Decoder Observer is running, delete them.
if (codec_encoder_observer) {
error = vie_codec->DeregisterEncoderObserver(video_channel);
diff --git a/video_engine/test/auto_test/source/vie_autotest_file.cc b/video_engine/test/auto_test/source/vie_autotest_file.cc
index 8083171..e790716 100644
--- a/video_engine/test/auto_test/source/vie_autotest_file.cc
+++ b/video_engine/test/auto_test/source/vie_autotest_file.cc
@@ -18,6 +18,9 @@
#include "voe_codec.h"
+#include "webrtc/system_wrappers/interface/scoped_ptr.h"
+#include "webrtc/test/channel_transport/include/channel_transport.h"
+
class ViEAutotestFileObserver: public webrtc::ViEFileObserver
{
public:
@@ -103,14 +106,19 @@
break;
}
}
-
-
const char* ipAddress = "127.0.0.1";
const unsigned short rtpPort = 6000;
- EXPECT_EQ(0, ptrViENetwork->SetLocalReceiver(videoChannel, rtpPort));
+
+ webrtc::scoped_ptr<webrtc::test::VideoChannelTransport>
+ video_channel_transport(
+ new webrtc::test::VideoChannelTransport(ptrViENetwork,
+ videoChannel));
+
+ EXPECT_EQ(0, video_channel_transport->SetSendDestination(ipAddress,
+ rtpPort));
+ EXPECT_EQ(0, video_channel_transport->SetLocalReceiver(rtpPort));
+
EXPECT_EQ(0, ptrViEBase->StartReceive(videoChannel));
- EXPECT_EQ(0, ptrViENetwork->SetSendDestination(
- videoChannel, ipAddress, rtpPort));
EXPECT_EQ(0, ptrViEBase->StartSend(videoChannel));
webrtc::ViEFile* ptrViEFile = webrtc::ViEFile::GetInterface(ptrViE);
EXPECT_TRUE(ptrViEFile != NULL);
diff --git a/video_engine/test/auto_test/source/vie_autotest_loopback.cc b/video_engine/test/auto_test/source/vie_autotest_loopback.cc
index e150891..354535d 100644
--- a/video_engine/test/auto_test/source/vie_autotest_loopback.cc
+++ b/video_engine/test/auto_test/source/vie_autotest_loopback.cc
@@ -34,6 +34,8 @@
#include "webrtc/video_engine/test/auto_test/interface/vie_autotest_defines.h"
#include "webrtc/video_engine/test/libvietest/include/tb_external_transport.h"
#include "webrtc/voice_engine/include/voe_base.h"
+#include "webrtc/system_wrappers/interface/scoped_ptr.h"
+#include "webrtc/test/channel_transport/include/channel_transport.h"
#define VCM_RED_PAYLOAD_TYPE 96
#define VCM_ULPFEC_PAYLOAD_TYPE 97
@@ -495,6 +497,9 @@
// Setting External transport
TbExternalTransport extTransport(*(ptrViENetwork), videoChannel, NULL);
+ webrtc::test::VideoChannelTransport* video_channel_transport =
+ new webrtc::test::VideoChannelTransport(ptrViENetwork, videoChannel);
+
int testMode = 0;
std::cout << std::endl;
std::cout << "Enter 1 for testing packet loss and delay with "
@@ -547,17 +552,17 @@
std::cout << std::endl;
std::cout << "Using rtp port: " << rtpPort << std::endl;
std::cout << std::endl;
- error = ptrViENetwork->SetLocalReceiver(videoChannel, rtpPort);
+
+ error = video_channel_transport->SetLocalReceiver(rtpPort);
if (error == -1)
{
- printf("ERROR in ViENetwork::SetLocalReceiver\n");
+ printf("ERROR in SetLocalReceiver\n");
return -1;
}
- error = ptrViENetwork->SetSendDestination(videoChannel,
- ipAddress, rtpPort);
+ error = video_channel_transport->SetSendDestination(ipAddress, rtpPort);
if (error == -1)
{
- printf("ERROR in ViENetwork::SetSendDestination\n");
+ printf("ERROR in SetSendDestination\n");
return -1;
}
}
@@ -660,7 +665,7 @@
printf("ERROR in ViEBase::DeleteChannel\n");
return -1;
}
-
+ delete video_channel_transport;
int remainingInterfaces = 0;
remainingInterfaces = ptrViECodec->Release();
remainingInterfaces += ptrViECapture->Release();
diff --git a/video_engine/test/auto_test/source/vie_autotest_record.cc b/video_engine/test/auto_test/source/vie_autotest_record.cc
index 15b2a83..6e71e62 100644
--- a/video_engine/test/auto_test/source/vie_autotest_record.cc
+++ b/video_engine/test/auto_test/source/vie_autotest_record.cc
@@ -17,20 +17,22 @@
#include <stdio.h>
#include <fstream>
-#include "common_types.h"
-#include "video_engine/test/libvietest/include/tb_external_transport.h"
-#include "voice_engine/include/voe_base.h"
-#include "video_engine/test/auto_test/interface/vie_autotest_defines.h"
-#include "video_engine/test/auto_test/interface/vie_autotest.h"
-#include "video_engine/include/vie_base.h"
-#include "video_engine/include/vie_capture.h"
-#include "video_engine/include/vie_codec.h"
-#include "video_engine/include/vie_file.h"
-#include "video_engine/include/vie_network.h"
-#include "video_engine/include/vie_render.h"
-#include "video_engine/include/vie_rtp_rtcp.h"
-#include "voice_engine/include/voe_rtp_rtcp.h"
-#include "system_wrappers/interface/tick_util.h"
+#include "webrtc/common_types.h"
+#include "webrtc/system_wrappers/interface/tick_util.h"
+#include "webrtc/test/channel_transport/include/channel_transport.h"
+#include "webrtc/video_engine/test/libvietest/include/tb_external_transport.h"
+#include "webrtc/voice_engine/include/voe_base.h"
+#include "webrtc/video_engine/test/auto_test/interface/vie_autotest_defines.h"
+#include "webrtc/video_engine/test/auto_test/interface/vie_autotest.h"
+#include "webrtc/video_engine/include/vie_base.h"
+#include "webrtc/video_engine/include/vie_capture.h"
+#include "webrtc/video_engine/include/vie_codec.h"
+#include "webrtc/video_engine/include/vie_file.h"
+#include "webrtc/video_engine/include/vie_network.h"
+#include "webrtc/video_engine/include/vie_render.h"
+#include "webrtc/video_engine/include/vie_rtp_rtcp.h"
+#include "webrtc/voice_engine/include/voe_network.h"
+#include "webrtc/voice_engine/include/voe_rtp_rtcp.h"
#define VCM_RED_PAYLOAD_TYPE 96
#define VCM_ULPFEC_PAYLOAD_TYPE 97
@@ -139,6 +141,8 @@
webrtc::VoECodec* voe_codec = webrtc::VoECodec::GetInterface(voe);
webrtc::VoEAudioProcessing* voe_apm =
webrtc::VoEAudioProcessing::GetInterface(voe);
+ webrtc::VoENetwork* voe_network =
+ webrtc::VoENetwork::GetInterface(voe);
// Get the audio device for the call.
memset(audio_capture_device_name, 0, KMaxUniqueIdLength);
@@ -147,20 +151,24 @@
audio_capture_device_index, audio_playbackDeviceName,
audio_playback_device_index);
-
// Get the audio codec for the call.
memset(static_cast<void*>(&audio_codec), 0, sizeof(audio_codec));
GetAudioCodecRecord(voe_codec, audio_codec);
audio_channel = voe_base->CreateChannel();
- error = voe_base->SetSendDestination(audio_channel, audio_tx_port,
- ipAddress);
- error = voe_base->SetLocalReceiver(audio_channel, audio_rx_port);
- error = voe_hardware->SetRecordingDevice(audio_capture_device_index);
- error = voe_hardware->SetPlayoutDevice(audio_playback_device_index);
- error = voe_codec->SetSendCodec(audio_channel, audio_codec);
- error = voe_apm->SetAgcStatus(true, webrtc::kAgcDefault);
- error = voe_apm->SetNsStatus(true, webrtc::kNsHighSuppression);
+
+ webrtc::scoped_ptr<webrtc::test::VoiceChannelTransport>
+ voice_channel_transport(
+ new webrtc::test::VoiceChannelTransport(voe_network, audio_channel));
+
+ voice_channel_transport->SetSendDestination(ipAddress, audio_tx_port);
+ voice_channel_transport->SetLocalReceiver(audio_rx_port);
+
+ voe_hardware->SetRecordingDevice(audio_capture_device_index);
+ voe_hardware->SetPlayoutDevice(audio_playback_device_index);
+ voe_codec->SetSendCodec(audio_channel, audio_codec);
+ voe_apm->SetAgcStatus(true, webrtc::kAgcDefault);
+ voe_apm->SetNsStatus(true, webrtc::kNsHighSuppression);
//
// List available capture devices, allocate and connect.
@@ -352,18 +360,17 @@
printf("ERROR in ViENetwork::GetInterface\n");
return -1;
}
+ webrtc::test::VideoChannelTransport* video_channel_transport =
+ new webrtc::test::VideoChannelTransport(ptrViENetwork, videoChannel);
- // Setting External transport
- TbExternalTransport extTransport(*(ptrViENetwork), videoChannel, NULL);
- error = ptrViENetwork->SetLocalReceiver(videoChannel, rtpPort);
+ error = video_channel_transport->SetSendDestination(ipAddress, rtpPort);
if (error == -1) {
- printf("ERROR in ViENetwork::SetLocalReceiver\n");
+ printf("ERROR in SetSendDestination\n");
return -1;
}
- error = ptrViENetwork->SetSendDestination(videoChannel,
- ipAddress, rtpPort);
+ error = video_channel_transport->SetLocalReceiver(rtpPort);
if (error == -1) {
- printf("ERROR in ViENetwork::SetSendDestination\n");
+ printf("ERROR in SetLocalReceiver\n");
return -1;
}
@@ -520,6 +527,7 @@
printf("ERROR in ViEBase::DeleteChannel\n");
return -1;
}
+ delete video_channel_transport;
int remainingInterfaces = 0;
remainingInterfaces = ptrViECodec->Release();
@@ -532,7 +540,6 @@
printf("ERROR: Could not release all interfaces\n");
return -1;
}
-
bool deleted = webrtc::VideoEngine::Delete(ptrViE);
if (deleted == false) {
printf("ERROR in VideoEngine::Delete\n");
@@ -564,7 +571,7 @@
}
bool GetAudioCodecRecord(webrtc::VoECodec* voe_codec,
- webrtc::CodecInst& audio_codec) {
+ webrtc::CodecInst& audio_codec) {
int error = 0;
int number_of_errors = 0;
memset(&audio_codec, 0, sizeof(webrtc::CodecInst));
diff --git a/video_engine/test/auto_test/source/vie_autotest_rtp_rtcp.cc b/video_engine/test/auto_test/source/vie_autotest_rtp_rtcp.cc
index a95eab3..b54b8f1 100644
--- a/video_engine/test/auto_test/source/vie_autotest_rtp_rtcp.cc
+++ b/video_engine/test/auto_test/source/vie_autotest_rtp_rtcp.cc
@@ -104,6 +104,7 @@
TbExternalTransport myTransport(*(ViE.network), tbChannel.videoChannel,
NULL);
+ ViE.network->DeregisterSendTransport(tbChannel.videoChannel);
EXPECT_EQ(0, ViE.network->RegisterSendTransport(
tbChannel.videoChannel, myTransport));
diff --git a/video_engine/test/auto_test/vie_auto_test.gypi b/video_engine/test/auto_test/vie_auto_test.gypi
index 984cc75..f899317 100644
--- a/video_engine/test/auto_test/vie_auto_test.gypi
+++ b/video_engine/test/auto_test/vie_auto_test.gypi
@@ -20,6 +20,7 @@
'<(DEPTH)/third_party/google-gflags/google-gflags.gyp:google-gflags',
'<(webrtc_root)/test/metrics.gyp:metrics',
'<(webrtc_root)/test/test.gyp:test_support',
+ '<(webrtc_root)/test/channel_transport.gyp:channel_transport',
'<(webrtc_root)/test/libtest/libtest.gyp:libtest',
'video_engine_core',
'libvietest',
@@ -81,7 +82,6 @@
'source/vie_autotest_image_process.cc',
'source/vie_autotest_loopback.cc',
'source/vie_autotest_main.cc',
- 'source/vie_autotest_network.cc',
'source/vie_autotest_render.cc',
'source/vie_autotest_record.cc',
'source/vie_autotest_rtp_rtcp.cc',
diff --git a/video_engine/test/libvietest/include/tb_video_channel.h b/video_engine/test/libvietest/include/tb_video_channel.h
index 5c7e6f8..0409cf3 100644
--- a/video_engine/test/libvietest/include/tb_video_channel.h
+++ b/video_engine/test/libvietest/include/tb_video_channel.h
@@ -11,32 +11,41 @@
#ifndef WEBRTC_VIDEO_ENGINE_MAIN_TEST_AUTOTEST_INTERFACE_TB_VIDEO_CHANNEL_H_
#define WEBRTC_VIDEO_ENGINE_MAIN_TEST_AUTOTEST_INTERFACE_TB_VIDEO_CHANNEL_H_
-#include "video_engine/test/libvietest/include/tb_interfaces.h"
+#include "webrtc/system_wrappers/interface/scoped_ptr.h"
+#include "webrtc/video_engine/test/libvietest/include/tb_interfaces.h"
-class TbVideoChannel
-{
-public:
- TbVideoChannel(TbInterfaces& Engine,
- webrtc::VideoCodecType sendCodec = webrtc::kVideoCodecVP8,
- int width = 352, int height = 288, int frameRate = 30,
- int startBitrate = 300);
+namespace webrtc {
+namespace test {
+class VideoChannelTransport;
+} // namespace test
+} // namespace webrtc
- ~TbVideoChannel(void);
+class TbVideoChannel {
+ public:
+ TbVideoChannel(TbInterfaces& Engine,
+ webrtc::VideoCodecType sendCodec = webrtc::kVideoCodecVP8,
+ int width = 352, int height = 288, int frameRate = 30,
+ int startBitrate = 300);
- void SetFrameSettings(int width, int height, int frameRate);
+ ~TbVideoChannel(void);
- void StartSend(const unsigned short rtpPort = 11000,
- const char* ipAddress = "127.0.0.1");
+ void SetFrameSettings(int width, int height, int frameRate);
- void StopSend();
+ void StartSend(const unsigned short rtpPort = 11000,
+ const char* ipAddress = "127.0.0.1");
- void StartReceive(const unsigned short rtpPort = 11000);
+ void StopSend();
- void StopReceive();
+ void StartReceive(const unsigned short rtpPort = 11000);
- int videoChannel;
-private:
- TbInterfaces& ViE;
+ void StopReceive();
+
+ int videoChannel;
+
+ private:
+ TbInterfaces& ViE;
+ webrtc::scoped_ptr<webrtc::test::VideoChannelTransport> channel_transport_;
};
+
#endif // WEBRTC_VIDEO_ENGINE_MAIN_TEST_AUTOTEST_INTERFACE_TB_VIDEO_CHANNEL_H_
diff --git a/video_engine/test/libvietest/testbed/tb_video_channel.cc b/video_engine/test/libvietest/testbed/tb_video_channel.cc
index 3359f18..675d3bd 100644
--- a/video_engine/test/libvietest/testbed/tb_video_channel.cc
+++ b/video_engine/test/libvietest/testbed/tb_video_channel.cc
@@ -11,82 +11,73 @@
#include "video_engine/test/libvietest/include/tb_video_channel.h"
#include "gtest/gtest.h"
+#include "webrtc/test/channel_transport/include/channel_transport.h"
TbVideoChannel::TbVideoChannel(TbInterfaces& Engine,
webrtc::VideoCodecType sendCodec, int width,
- int height, int frameRate, int startBitrate) :
- videoChannel(-1), ViE(Engine)
-{
- EXPECT_EQ(0, ViE.base->CreateChannel(videoChannel));
+ int height, int frameRate, int startBitrate)
+ : videoChannel(-1),
+ ViE(Engine) {
+ EXPECT_EQ(0, ViE.base->CreateChannel(videoChannel));
+ channel_transport_.reset(new webrtc::test::VideoChannelTransport(
+ ViE.network, videoChannel));
- webrtc::VideoCodec videoCodec;
- memset(&videoCodec, 0, sizeof(webrtc::VideoCodec));
- bool sendCodecSet = false;
- for (int idx = 0; idx < ViE.codec->NumberOfCodecs(); idx++)
- {
- EXPECT_EQ(0, ViE.codec->GetCodec(idx, videoCodec));
- videoCodec.width = width;
- videoCodec.height = height;
- videoCodec.maxFramerate = frameRate;
-
- if (videoCodec.codecType == sendCodec && sendCodecSet == false)
- {
- if(videoCodec.codecType != webrtc::kVideoCodecI420 )
- {
- videoCodec.startBitrate = startBitrate;
- videoCodec.maxBitrate = startBitrate * 3;
- }
- EXPECT_EQ(0, ViE.codec->SetSendCodec(videoChannel, videoCodec));
- sendCodecSet = true;
- }
- if (videoCodec.codecType == webrtc::kVideoCodecVP8)
- {
- videoCodec.width = 352;
- videoCodec.height = 288;
- }
- EXPECT_EQ(0, ViE.codec->SetReceiveCodec(videoChannel, videoCodec));
- }
- EXPECT_TRUE(sendCodecSet);
-}
-
-TbVideoChannel::~TbVideoChannel(void)
-{
- EXPECT_EQ(0, ViE.base->DeleteChannel(videoChannel));
-}
-
-void TbVideoChannel::StartSend(const unsigned short rtpPort /*= 11000*/,
- const char* ipAddress /*= "127.0.0.1"*/)
-{
- EXPECT_EQ(0, ViE.network->SetSendDestination(videoChannel, ipAddress,
- rtpPort));
-
- EXPECT_EQ(0, ViE.base->StartSend(videoChannel));
-}
-
-void TbVideoChannel::SetFrameSettings(int width, int height, int frameRate)
-{
- webrtc::VideoCodec videoCodec;
- EXPECT_EQ(0, ViE.codec->GetSendCodec(videoChannel, videoCodec));
+ webrtc::VideoCodec videoCodec;
+ memset(&videoCodec, 0, sizeof(webrtc::VideoCodec));
+ bool sendCodecSet = false;
+ for (int idx = 0; idx < ViE.codec->NumberOfCodecs(); idx++) {
+ EXPECT_EQ(0, ViE.codec->GetCodec(idx, videoCodec));
videoCodec.width = width;
videoCodec.height = height;
videoCodec.maxFramerate = frameRate;
- EXPECT_EQ(0, ViE.codec->SetSendCodec(videoChannel, videoCodec));
+ if (videoCodec.codecType == sendCodec && sendCodecSet == false) {
+ if (videoCodec.codecType != webrtc::kVideoCodecI420) {
+ videoCodec.startBitrate = startBitrate;
+ videoCodec.maxBitrate = startBitrate * 3;
+ }
+ EXPECT_EQ(0, ViE.codec->SetSendCodec(videoChannel, videoCodec));
+ sendCodecSet = true;
+ }
+ if (videoCodec.codecType == webrtc::kVideoCodecVP8) {
+ videoCodec.width = 352;
+ videoCodec.height = 288;
+ }
EXPECT_EQ(0, ViE.codec->SetReceiveCodec(videoChannel, videoCodec));
+ }
+ EXPECT_TRUE(sendCodecSet);
}
-void TbVideoChannel::StopSend()
-{
- EXPECT_EQ(0, ViE.base->StopSend(videoChannel));
+TbVideoChannel::~TbVideoChannel() {
+ EXPECT_EQ(0, ViE.base->DeleteChannel(videoChannel));
}
-void TbVideoChannel::StartReceive(const unsigned short rtpPort /*= 11000*/)
-{
- EXPECT_EQ(0, ViE.network->SetLocalReceiver(videoChannel, rtpPort));
- EXPECT_EQ(0, ViE.base->StartReceive(videoChannel));
+void TbVideoChannel::StartSend(const unsigned short rtp_port,
+ const char* ip_address) {
+ EXPECT_EQ(0, channel_transport_->SetSendDestination(ip_address, rtp_port));
+ EXPECT_EQ(0, ViE.base->StartSend(videoChannel));
}
-void TbVideoChannel::StopReceive()
-{
- EXPECT_EQ(0, ViE.base->StopReceive(videoChannel));
+void TbVideoChannel::SetFrameSettings(int width, int height, int frameRate) {
+ webrtc::VideoCodec videoCodec;
+ EXPECT_EQ(0, ViE.codec->GetSendCodec(videoChannel, videoCodec));
+ videoCodec.width = width;
+ videoCodec.height = height;
+ videoCodec.maxFramerate = frameRate;
+
+ EXPECT_EQ(0, ViE.codec->SetSendCodec(videoChannel, videoCodec));
+ EXPECT_EQ(0, ViE.codec->SetReceiveCodec(videoChannel, videoCodec));
+}
+
+void TbVideoChannel::StopSend() {
+ EXPECT_EQ(0, ViE.base->StopSend(videoChannel));
+}
+
+void TbVideoChannel::StartReceive(unsigned short rtp_port) {
+ EXPECT_EQ(0, channel_transport_->SetLocalReceiver(rtp_port));
+ EXPECT_EQ(0, ViE.base->StartReceive(videoChannel));
+}
+
+void TbVideoChannel::StopReceive() {
+ EXPECT_EQ(0, ViE.base->StopReceive(videoChannel));
}