diff --git a/webrtc/test/channel_transport/channel_transport.cc b/webrtc/test/channel_transport/channel_transport.cc index 877a6012fc..3985688bee 100644 --- a/webrtc/test/channel_transport/channel_transport.cc +++ b/webrtc/test/channel_transport/channel_transport.cc @@ -12,7 +12,9 @@ #include +#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 @@ VoiceChannelTransport::VoiceChannelTransport(VoENetwork* voe_network, 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 @@ VideoChannelTransport::VideoChannelTransport(ViENetwork* vie_network, 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/webrtc/video_engine/test/android/jni/Android.mk b/webrtc/video_engine/test/android/jni/Android.mk index 55eae39f70..1b51044c8d 100644 --- a/webrtc/video_engine/test/android/jni/Android.mk +++ b/webrtc/video_engine/test/android/jni/Android.mk @@ -218,6 +218,12 @@ LOCAL_SRC_FILES := \ $(MY_LIBS_PATH)/libudp_transport.a 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 := \ @@ -349,6 +355,7 @@ LOCAL_STATIC_LIBRARIES := \ librtp_rtcp \ libmedia_file \ libudp_transport \ + libchannel_transport \ libwebrtc_utility \ libaudio_conference_mixer \ libyuv \ diff --git a/webrtc/video_engine/test/android/jni/vie_android_java_api.cc b/webrtc/video_engine/test/android/jni/vie_android_java_api.cc index 8c8aa0b6bb..ce07dd6e17 100644 --- a/webrtc/video_engine/test/android/jni/vie_android_java_api.cc +++ b/webrtc/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 @@ typedef struct VoEHardware* hardware; VoERTP_RTCP* rtp; JavaVM* jvm; + scoped_ptr transport; } VoiceEngineData; class AndroidVideoRenderCallback; @@ -122,7 +127,7 @@ typedef struct ViECapture* capture; ViEExternalCodec* externalCodec; VideoCallbackAndroid* callback; - + scoped_ptr transport; } VideoEngineData; // Global variables @@ -589,7 +594,7 @@ JNIEXPORT jint JNICALL Java_org_webrtc_videoengineapp_ViEAndroidJavaAPI_CreateCh if (voiceChannel >= 0) { vieData.base->ConnectAudioChannel(channel, voiceChannel); } - + vieData.transport.reset(new VideoChannelTransport(vieData.netw, channel)); return channel; } else { @@ -610,13 +615,10 @@ JNIEXPORT jint JNICALL Java_org_webrtc_videoengineapp_ViEAndroidJavaAPI_SetLocal { __android_log_write(ANDROID_LOG_DEBUG, WEBRTC_LOG_TAG, "SetLocalReceiver"); - if (vieData.vie) { - int ret = vieData.netw->SetLocalReceiver(channel, port); - return ret; - } - else { - return -1; + if (vieData.transport.get()) { + return vieData.transport->SetLocalReceiver(port); } + return -1; } /* @@ -646,7 +648,10 @@ JNIEXPORT jint JNICALL Java_org_webrtc_videoengineapp_ViEAndroidJavaAPI_SetSendD "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 @@ JNIEXPORT jint JNICALL Java_org_webrtc_videoengineapp_ViEAndroidJavaAPI_VoE_1Cre } jint channel = voeData.base->CreateChannel(); - + voeData.transport.reset(new VoiceChannelTransport(voeData.netw, channel)); return channel; } @@ -1295,7 +1300,10 @@ JNIEXPORT jint JNICALL Java_org_webrtc_videoengineapp_ViEAndroidJavaAPI_VoE_1Set { __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 @@ JNIEXPORT jint JNICALL Java_org_webrtc_videoengineapp_ViEAndroidJavaAPI_VoE_1Set "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/webrtc/video_engine/test/auto_test/automated/vie_api_integration_test.cc b/webrtc/video_engine/test/auto_test/automated/vie_api_integration_test.cc index 7b49103b9f..96b401b003 100644 --- a/webrtc/video_engine/test/auto_test/automated/vie_api_integration_test.cc +++ b/webrtc/video_engine/test/auto_test/automated/vie_api_integration_test.cc @@ -48,10 +48,6 @@ TEST_F(DISABLED_ON_MAC(ViEApiIntegrationTest), tests_->ViEImageProcessAPITest(); } -TEST_F(DISABLED_ON_MAC(ViEApiIntegrationTest), RunsNetworkTestWithoutErrors) { - tests_->ViENetworkAPITest(); -} - TEST_F(DISABLED_ON_MAC(ViEApiIntegrationTest), RunsRenderTestWithoutErrors) { tests_->ViERenderAPITest(); } diff --git a/webrtc/video_engine/test/auto_test/automated/vie_extended_integration_test.cc b/webrtc/video_engine/test/auto_test/automated/vie_extended_integration_test.cc index c091475cac..d224bdebb9 100644 --- a/webrtc/video_engine/test/auto_test/automated/vie_extended_integration_test.cc +++ b/webrtc/video_engine/test/auto_test/automated/vie_extended_integration_test.cc @@ -50,11 +50,6 @@ TEST_F(DISABLED_ON_MAC(ViEExtendedIntegrationTest), tests_->ViEImageProcessExtendedTest(); } -TEST_F(DISABLED_ON_MAC(ViEExtendedIntegrationTest), - RunsNetworkTestWithoutErrors) { - tests_->ViENetworkExtendedTest(); -} - TEST_F(DISABLED_ON_MAC(ViEExtendedIntegrationTest), RunsRenderTestWithoutErrors) { tests_->ViERenderExtendedTest(); diff --git a/webrtc/video_engine/test/auto_test/automated/vie_standard_integration_test.cc b/webrtc/video_engine/test/auto_test/automated/vie_standard_integration_test.cc index 4f90aace81..30364e0231 100644 --- a/webrtc/video_engine/test/auto_test/automated/vie_standard_integration_test.cc +++ b/webrtc/video_engine/test/auto_test/automated/vie_standard_integration_test.cc @@ -54,10 +54,6 @@ TEST_F(ViEStandardIntegrationTest, RunsImageProcessTestWithoutErrors) { tests_->ViEImageProcessStandardTest(); } -TEST_F(ViEStandardIntegrationTest, RunsNetworkTestWithoutErrors) { - tests_->ViENetworkStandardTest(); -} - TEST_F(ViEStandardIntegrationTest, RunsRenderTestWithoutErrors) { tests_->ViERenderStandardTest(); } diff --git a/webrtc/video_engine/test/auto_test/source/vie_autotest.cc b/webrtc/video_engine/test/auto_test/source/vie_autotest.cc index a707e70ae1..04fe7e7334 100644 --- a/webrtc/video_engine/test/auto_test/source/vie_autotest.cc +++ b/webrtc/video_engine/test/auto_test/source/vie_autotest.cc @@ -67,7 +67,6 @@ void ViEAutoTest::ViEStandardTest() ViEEncryptionStandardTest(); ViEFileStandardTest(); ViEImageProcessStandardTest(); - ViENetworkStandardTest(); ViERenderStandardTest(); ViERtpRtcpStandardTest(); } @@ -80,7 +79,6 @@ void ViEAutoTest::ViEExtendedTest() ViEEncryptionExtendedTest(); ViEFileExtendedTest(); ViEImageProcessExtendedTest(); - ViENetworkExtendedTest(); ViERenderExtendedTest(); ViERtpRtcpExtendedTest(); } @@ -93,7 +91,6 @@ void ViEAutoTest::ViEAPITest() ViEEncryptionAPITest(); ViEFileAPITest(); ViEImageProcessAPITest(); - ViENetworkAPITest(); ViERenderAPITest(); ViERtpRtcpAPITest(); } diff --git a/webrtc/video_engine/test/auto_test/source/vie_autotest_android.cc b/webrtc/video_engine/test/auto_test/source/vie_autotest_android.cc index d1622dba5e..80d8d90f68 100644 --- a/webrtc/video_engine/test/auto_test/source/vie_autotest_android.cc +++ b/webrtc/video_engine/test/auto_test/source/vie_autotest_android.cc @@ -162,21 +162,14 @@ int ViEAutoTestAndroid::RunAutotest(int testSelection, int subTestSelection, 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/webrtc/video_engine/test/auto_test/source/vie_autotest_base.cc b/webrtc/video_engine/test/auto_test/source/vie_autotest_base.cc index e9d24f3c7d..20e41dfd7c 100644 --- a/webrtc/video_engine/test/auto_test/source/vie_autotest_base.cc +++ b/webrtc/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 @@ void ViEAutoTest::ViEBaseAPITest() { // 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 @@ void ViEAutoTest::ViEBaseAPITest() { 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/webrtc/video_engine/test/auto_test/source/vie_autotest_codec.cc b/webrtc/video_engine/test/auto_test/source/vie_autotest_codec.cc index 87169a63a6..a1e0f8d2b4 100644 --- a/webrtc/video_engine/test/auto_test/source/vie_autotest_codec.cc +++ b/webrtc/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 @@ void ViEAutoTest::ViECodecStandardTest() { 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 + 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 @@ void ViEAutoTest::ViECodecExtendedTest() { 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 + 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 @@ void ViEAutoTest::ViECodecExtendedTest() { // 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 @@ void ViEAutoTest::ViECodecExtendedTest() { 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 + 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 + 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 @@ void ViEAutoTest::ViECodecAPITest() { 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/webrtc/video_engine/test/auto_test/source/vie_autotest_custom_call.cc b/webrtc/video_engine/test/auto_test/source/vie_autotest_custom_call.cc index b862b64393..117cd6a167 100644 --- a/webrtc/video_engine/test/auto_test/source/vie_autotest_custom_call.cc +++ b/webrtc/video_engine/test/auto_test/source/vie_autotest_custom_call.cc @@ -15,12 +15,15 @@ #include #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 @@ int ViEAutoTest::ViECustomCall() { "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 ViEAutoTest::ViECustomCall() { int buffer_delay_ms = 0; bool is_image_scale_enabled = false; bool remb = true; + webrtc::scoped_ptr + video_channel_transport; + webrtc::scoped_ptr + voice_channel_transport; while (!start_call) { // Get the IP address to use from call. @@ -340,13 +353,17 @@ int ViEAutoTest::ViECustomCall() { 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 @@ int ViEAutoTest::ViECustomCall() { 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 @@ int ViEAutoTest::ViECustomCall() { // 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/webrtc/video_engine/test/auto_test/source/vie_autotest_file.cc b/webrtc/video_engine/test/auto_test/source/vie_autotest_file.cc index 80831710c4..e79071661b 100644 --- a/webrtc/video_engine/test/auto_test/source/vie_autotest_file.cc +++ b/webrtc/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 @@ void ViEAutoTest::ViEFileStandardTest() break; } } - - const char* ipAddress = "127.0.0.1"; const unsigned short rtpPort = 6000; - EXPECT_EQ(0, ptrViENetwork->SetLocalReceiver(videoChannel, rtpPort)); + + webrtc::scoped_ptr + 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/webrtc/video_engine/test/auto_test/source/vie_autotest_loopback.cc b/webrtc/video_engine/test/auto_test/source/vie_autotest_loopback.cc index e1508917bf..354535d027 100644 --- a/webrtc/video_engine/test/auto_test/source/vie_autotest_loopback.cc +++ b/webrtc/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 @@ int VideoEngineSampleCode(void* window1, void* window2) // 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 @@ int VideoEngineSampleCode(void* window1, void* window2) 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 @@ int VideoEngineSampleCode(void* window1, void* window2) printf("ERROR in ViEBase::DeleteChannel\n"); return -1; } - + delete video_channel_transport; int remainingInterfaces = 0; remainingInterfaces = ptrViECodec->Release(); remainingInterfaces += ptrViECapture->Release(); diff --git a/webrtc/video_engine/test/auto_test/source/vie_autotest_record.cc b/webrtc/video_engine/test/auto_test/source/vie_autotest_record.cc index 15b2a83f27..6e71e6286e 100644 --- a/webrtc/video_engine/test/auto_test/source/vie_autotest_record.cc +++ b/webrtc/video_engine/test/auto_test/source/vie_autotest_record.cc @@ -17,20 +17,22 @@ #include #include -#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 @@ int VideoEngineSampleRecordCode(void* window1, void* window2) { 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 @@ int VideoEngineSampleRecordCode(void* window1, void* window2) { audio_capture_device_index, audio_playbackDeviceName, audio_playback_device_index); - // Get the audio codec for the call. memset(static_cast(&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 + 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 @@ int VideoEngineSampleRecordCode(void* window1, void* window2) { 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 @@ int VideoEngineSampleRecordCode(void* window1, void* window2) { printf("ERROR in ViEBase::DeleteChannel\n"); return -1; } + delete video_channel_transport; int remainingInterfaces = 0; remainingInterfaces = ptrViECodec->Release(); @@ -532,7 +540,6 @@ int VideoEngineSampleRecordCode(void* window1, void* window2) { 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 @@ int ViEAutoTest::ViERecordCall() { } 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/webrtc/video_engine/test/auto_test/source/vie_autotest_rtp_rtcp.cc b/webrtc/video_engine/test/auto_test/source/vie_autotest_rtp_rtcp.cc index a95eab3125..b54b8f191b 100644 --- a/webrtc/video_engine/test/auto_test/source/vie_autotest_rtp_rtcp.cc +++ b/webrtc/video_engine/test/auto_test/source/vie_autotest_rtp_rtcp.cc @@ -104,6 +104,7 @@ void ViEAutoTest::ViERtpRtcpStandardTest() TbExternalTransport myTransport(*(ViE.network), tbChannel.videoChannel, NULL); + ViE.network->DeregisterSendTransport(tbChannel.videoChannel); EXPECT_EQ(0, ViE.network->RegisterSendTransport( tbChannel.videoChannel, myTransport)); diff --git a/webrtc/video_engine/test/auto_test/vie_auto_test.gypi b/webrtc/video_engine/test/auto_test/vie_auto_test.gypi index 984cc7581c..f8993176b7 100644 --- a/webrtc/video_engine/test/auto_test/vie_auto_test.gypi +++ b/webrtc/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/webrtc/video_engine/test/libvietest/include/tb_video_channel.h b/webrtc/video_engine/test/libvietest/include/tb_video_channel.h index 5c7e6f8b82..0409cf3e1b 100644 --- a/webrtc/video_engine/test/libvietest/include/tb_video_channel.h +++ b/webrtc/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 channel_transport_; }; + #endif // WEBRTC_VIDEO_ENGINE_MAIN_TEST_AUTOTEST_INTERFACE_TB_VIDEO_CHANNEL_H_ diff --git a/webrtc/video_engine/test/libvietest/testbed/tb_video_channel.cc b/webrtc/video_engine/test/libvietest/testbed/tb_video_channel.cc index 3359f18edf..675d3bd2f4 100644 --- a/webrtc/video_engine/test/libvietest/testbed/tb_video_channel.cc +++ b/webrtc/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)); }