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/webrtc@3817 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/test/channel_transport/channel_transport.cc b/test/channel_transport/channel_transport.cc
index 546d4a2..51f635c 100644
--- a/test/channel_transport/channel_transport.cc
+++ b/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 <assert.h>
+#endif
+
 namespace webrtc {
 namespace test {
 
@@ -29,11 +34,12 @@
       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 @@
       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/video_engine/test/android/jni/org_webrtc_videoengineapp_vie_android_java_api.h b/video_engine/test/android/jni/org_webrtc_videoengineapp_vie_android_java_api.h
index ccfa6a4..7fad82b 100644
--- a/video_engine/test/android/jni/org_webrtc_videoengineapp_vie_android_java_api.h
+++ b/video_engine/test/android/jni/org_webrtc_videoengineapp_vie_android_java_api.h
@@ -291,6 +291,14 @@
 
 /*
  * 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
  * Signature: (II)I
  */
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 b51989b..754ca89 100644
--- a/video_engine/test/android/jni/vie_android_java_api.cc
+++ b/video_engine/test/android/jni/vie_android_java_api.cc
@@ -382,7 +382,7 @@
 
             __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");
@@ -1293,6 +1293,21 @@
 
 /*
  * 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
  * Signature: (II)I
  */
diff --git a/video_engine/test/android/src/org/webrtc/videoengineapp/ViEAndroidJavaAPI.java b/video_engine/test/android/src/org/webrtc/videoengineapp/ViEAndroidJavaAPI.java
index 9801f76..9ce4128 100644
--- a/video_engine/test/android/src/org/webrtc/videoengineapp/ViEAndroidJavaAPI.java
+++ b/video_engine/test/android/src/org/webrtc/videoengineapp/ViEAndroidJavaAPI.java
@@ -100,6 +100,7 @@
     // 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/video_engine/test/android/src/org/webrtc/videoengineapp/WebRTCDemo.java b/video_engine/test/android/src/org/webrtc/videoengineapp/WebRTCDemo.java
index 3385c58..a2eaa9b 100644
--- a/video_engine/test/android/src/org/webrtc/videoengineapp/WebRTCDemo.java
+++ b/video_engine/test/android/src/org/webrtc/videoengineapp/WebRTCDemo.java
@@ -78,7 +78,7 @@
     private SurfaceView svLocal = null;
 
     // channel number
-    private int channel;
+    private int channel = -1;
     private int cameraId;
     private int voiceChannel = -1;
 
@@ -87,7 +87,7 @@
     private boolean voERunning = false;
 
     // debug
-    private boolean enableTrace = false;
+    private boolean enableTrace = true;
 
     // Constant
     private static final String TAG = "WEBRTC";
@@ -418,6 +418,8 @@
                 vieAndroidAPI.StopReceive(channel);
                 vieAndroidAPI.StopSend(channel);
                 vieAndroidAPI.RemoveRemoteRenderer(channel);
+                vieAndroidAPI.ViE_DeleteChannel(channel);
+                channel = -1;
                 vieAndroidAPI.StopCamera(cameraId);
                 vieAndroidAPI.Terminate();
                 mLlRemoteSurface.removeView(remoteSurfaceView);