From 6f41ca9fd212698c413a1970a9127fa231be3a38 Mon Sep 17 00:00:00 2001 From: "fischman@webrtc.org" Date: Wed, 10 Apr 2013 20:33:27 +0000 Subject: [PATCH] WebRTCDemo: Enable making multiple calls. Previously after the first call subsequent attempts to bind the RTP/RTCP ports would fail, since r3754. BUG=1618 Review URL: https://webrtc-codereview.appspot.com/1302007 git-svn-id: http://webrtc.googlecode.com/svn/trunk@3817 4adac7df-926f-26a2-2b94-8c16560cd09d --- .../channel_transport/channel_transport.cc | 21 ++++++++++++------- ...brtc_videoengineapp_vie_android_java_api.h | 8 +++++++ .../test/android/jni/vie_android_java_api.cc | 17 ++++++++++++++- .../videoengineapp/ViEAndroidJavaAPI.java | 1 + .../org/webrtc/videoengineapp/WebRTCDemo.java | 6 ++++-- 5 files changed, 43 insertions(+), 10 deletions(-) diff --git a/webrtc/test/channel_transport/channel_transport.cc b/webrtc/test/channel_transport/channel_transport.cc index 546d4a21d5..51f635c426 100644 --- a/webrtc/test/channel_transport/channel_transport.cc +++ b/webrtc/test/channel_transport/channel_transport.cc @@ -20,6 +20,11 @@ #include "webrtc/voice_engine/include/voe_network.h" #include "webrtc/video_engine/vie_defines.h" +#ifdef WEBRTC_ANDROID +#undef NDEBUG +#include +#endif + namespace webrtc { namespace test { @@ -29,11 +34,12 @@ VoiceChannelTransport::VoiceChannelTransport(VoENetwork* voe_network, voe_network_(voe_network) { uint8_t socket_threads = 1; socket_transport_ = UdpTransport::Create(channel, socket_threads); + int registered = voe_network_->RegisterExternalTransport(channel, + *socket_transport_); #ifndef WEBRTC_ANDROID - EXPECT_EQ(0, voe_network_->RegisterExternalTransport(channel, - *socket_transport_)); + EXPECT_EQ(0, registered); #else - voe_network_->RegisterExternalTransport(channel, *socket_transport_); + assert(registered == 0); #endif } @@ -80,14 +86,15 @@ VideoChannelTransport::VideoChannelTransport(ViENetwork* vie_network, vie_network_(vie_network) { uint8_t socket_threads = 1; socket_transport_ = UdpTransport::Create(channel, socket_threads); + int registered = vie_network_->RegisterSendTransport(channel, + *socket_transport_); #ifndef WEBRTC_ANDROID - EXPECT_EQ(0, vie_network_->RegisterSendTransport(channel, - *socket_transport_)); + EXPECT_EQ(0, registered); #else - vie_network_->RegisterSendTransport(channel, *socket_transport_); + assert(registered == 0); #endif } - + VideoChannelTransport::~VideoChannelTransport() { vie_network_->DeregisterSendTransport(channel_); UdpTransport::Destroy(socket_transport_); diff --git a/webrtc/video_engine/test/android/jni/org_webrtc_videoengineapp_vie_android_java_api.h b/webrtc/video_engine/test/android/jni/org_webrtc_videoengineapp_vie_android_java_api.h index ccfa6a4e8c..7fad82b410 100644 --- a/webrtc/video_engine/test/android/jni/org_webrtc_videoengineapp_vie_android_java_api.h +++ b/webrtc/video_engine/test/android/jni/org_webrtc_videoengineapp_vie_android_java_api.h @@ -289,6 +289,14 @@ JNIEXPORT jint JNICALL Java_org_webrtc_videoengineapp_ViEAndroidJavaAPI_VoE_1Cre JNIEXPORT jint JNICALL Java_org_webrtc_videoengineapp_ViEAndroidJavaAPI_VoE_1DeleteChannel (JNIEnv *, jobject, jint); +/* + * Class: org_webrtc_videoengineapp_ViEAndroidJavaAPI + * Method: ViE_DeleteChannel + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_org_webrtc_videoengineapp_ViEAndroidJavaAPI_ViE_1DeleteChannel + (JNIEnv *, jobject, jint); + /* * Class: org_webrtc_videoengineapp_ViEAndroidJavaAPI * Method: VoE_SetLocalReceiver 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 b51989bfd3..754ca892ef 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 @@ -382,7 +382,7 @@ JNIEXPORT jint JNICALL Java_org_webrtc_videoengineapp_ViEAndroidJavaAPI_Init( __android_log_write(ANDROID_LOG_DEBUG, WEBRTC_LOG_TAG, "SetTraceFilter"); - if (0 != vieData.vie->SetTraceFilter(webrtc::kTraceDefault)) + if (0 != vieData.vie->SetTraceFilter(webrtc::kTraceError)) { __android_log_write(ANDROID_LOG_WARN, WEBRTC_LOG_TAG, "Could not set trace filter"); @@ -1291,6 +1291,21 @@ JNIEXPORT jint JNICALL Java_org_webrtc_videoengineapp_ViEAndroidJavaAPI_VoE_1Del return voeData.base->DeleteChannel(channel); } +/* + * Class: org_webrtc_videoengineapp_ViEAndroidJavaAPI + * Method: ViE_DeleteChannel + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_org_webrtc_videoengineapp_ViEAndroidJavaAPI_ViE_1DeleteChannel( + JNIEnv *, + jobject, + jint channel) +{ + VALIDATE_BASE_POINTER; + vieData.transport.reset(NULL); + return vieData.base->DeleteChannel(channel); +} + /* * Class: org_webrtc_videoengineapp_ViEAndroidJavaAPI * Method: VoE_SetLocalReceiver diff --git a/webrtc/video_engine/test/android/src/org/webrtc/videoengineapp/ViEAndroidJavaAPI.java b/webrtc/video_engine/test/android/src/org/webrtc/videoengineapp/ViEAndroidJavaAPI.java index 9801f766ce..9ce4128ec8 100644 --- a/webrtc/video_engine/test/android/src/org/webrtc/videoengineapp/ViEAndroidJavaAPI.java +++ b/webrtc/video_engine/test/android/src/org/webrtc/videoengineapp/ViEAndroidJavaAPI.java @@ -100,6 +100,7 @@ public class ViEAndroidJavaAPI { // Channel functions public native int VoE_CreateChannel(); public native int VoE_DeleteChannel(int channel); + public native int ViE_DeleteChannel(int channel); // Receiver & Destination functions public native int VoE_SetLocalReceiver(int channel, int port); diff --git a/webrtc/video_engine/test/android/src/org/webrtc/videoengineapp/WebRTCDemo.java b/webrtc/video_engine/test/android/src/org/webrtc/videoengineapp/WebRTCDemo.java index 3385c582f9..a2eaa9ba1b 100644 --- a/webrtc/video_engine/test/android/src/org/webrtc/videoengineapp/WebRTCDemo.java +++ b/webrtc/video_engine/test/android/src/org/webrtc/videoengineapp/WebRTCDemo.java @@ -78,7 +78,7 @@ public class WebRTCDemo extends TabActivity implements IViEAndroidCallback, private SurfaceView svLocal = null; // channel number - private int channel; + private int channel = -1; private int cameraId; private int voiceChannel = -1; @@ -87,7 +87,7 @@ public class WebRTCDemo extends TabActivity implements IViEAndroidCallback, private boolean voERunning = false; // debug - private boolean enableTrace = false; + private boolean enableTrace = true; // Constant private static final String TAG = "WEBRTC"; @@ -418,6 +418,8 @@ public class WebRTCDemo extends TabActivity implements IViEAndroidCallback, vieAndroidAPI.StopReceive(channel); vieAndroidAPI.StopSend(channel); vieAndroidAPI.RemoveRemoteRenderer(channel); + vieAndroidAPI.ViE_DeleteChannel(channel); + channel = -1; vieAndroidAPI.StopCamera(cameraId); vieAndroidAPI.Terminate(); mLlRemoteSurface.removeView(remoteSurfaceView);