From 6724c4239bf885e0e608305a21b7307cc7e5fc40 Mon Sep 17 00:00:00 2001 From: "leozwang@webrtc.org" Date: Mon, 11 Jun 2012 21:23:16 +0000 Subject: [PATCH] Add VoiceEngine apm settings to test application Implement apm settings and add a small bug fix BUG= TEST=build and test on android Review URL: https://webrtc-codereview.appspot.com/632008 git-svn-id: http://webrtc.googlecode.com/svn/trunk@2390 4adac7df-926f-26a2-2b94-8c16560cd09d --- ...brtc_videoengineapp_vie_android_java_api.h | 10 +- .../android_test/jni/vie_android_java_api.cc | 39 +++-- .../test/android_test/res/layout/aconfig.xml | 149 +++++++++--------- .../test/android_test/res/values/strings.xml | 16 +- .../videoengineapp/ViEAndroidJavaAPI.java | 21 +-- .../org/webrtc/videoengineapp/WebRTCDemo.java | 28 ++-- 6 files changed, 132 insertions(+), 131 deletions(-) diff --git a/src/video_engine/main/test/android_test/jni/org_webrtc_videoengineapp_vie_android_java_api.h b/src/video_engine/main/test/android_test/jni/org_webrtc_videoengineapp_vie_android_java_api.h index 504a1ca387..939298d192 100644 --- a/src/video_engine/main/test/android_test/jni/org_webrtc_videoengineapp_vie_android_java_api.h +++ b/src/video_engine/main/test/android_test/jni/org_webrtc_videoengineapp_vie_android_java_api.h @@ -408,18 +408,18 @@ JNIEXPORT jint JNICALL Java_org_webrtc_videoengineapp_ViEAndroidJavaAPI_VoE_1Set /* * Class: org_webrtc_videoengineapp_ViEAndroidJavaAPI * Method: VoE_SetECStatus - * Signature: (ZIII)I + * Signature: (Z)I */ JNIEXPORT jint JNICALL Java_org_webrtc_videoengineapp_ViEAndroidJavaAPI_VoE_1SetECStatus - (JNIEnv *, jobject, jboolean, jint, jint, jint); + (JNIEnv *, jobject, jboolean); /* * Class: org_webrtc_videoengineapp_ViEAndroidJavaAPI * Method: VoE_SetAGCStatus - * Signature: (ZI)I + * Signature: (Z)I */ JNIEXPORT jint JNICALL Java_org_webrtc_videoengineapp_ViEAndroidJavaAPI_VoE_1SetAGCStatus - (JNIEnv *, jobject, jboolean, jint); + (JNIEnv *, jobject, jboolean); /* * Class: org_webrtc_videoengineapp_ViEAndroidJavaAPI @@ -427,7 +427,7 @@ JNIEXPORT jint JNICALL Java_org_webrtc_videoengineapp_ViEAndroidJavaAPI_VoE_1Set * Signature: (ZI)I */ JNIEXPORT jint JNICALL Java_org_webrtc_videoengineapp_ViEAndroidJavaAPI_VoE_1SetNSStatus - (JNIEnv *, jobject, jboolean, jint); + (JNIEnv *, jobject, jboolean); #ifdef __cplusplus } diff --git a/src/video_engine/main/test/android_test/jni/vie_android_java_api.cc b/src/video_engine/main/test/android_test/jni/vie_android_java_api.cc index 24de884c83..ff4bc00fde 100644 --- a/src/video_engine/main/test/android_test/jni/vie_android_java_api.cc +++ b/src/video_engine/main/test/android_test/jni/vie_android_java_api.cc @@ -1526,48 +1526,47 @@ JNIEXPORT jint JNICALL Java_org_webrtc_videoengineapp_ViEAndroidJavaAPI_VoE_1Set /* * Class: org_webrtc_videoengineapp_ViEAndroidJavaAPI * Method: VoE_SetECStatus - * Signature: (ZIII)I + * Signature: (Z)I */ JNIEXPORT jint JNICALL Java_org_webrtc_videoengineapp_ViEAndroidJavaAPI_VoE_1SetECStatus( JNIEnv *, jobject, - jboolean enable, - jint mode, - jint AESmode, - jint AESattenuation) -{ - // TODO(leozwang) implement - return -1; + jboolean enable) { + VALIDATE_APM_POINTER; + if (voeData.apm->SetEcStatus(enable, kEcAecm) < 0) + return -1; + return 0; } /* * Class: org_webrtc_videoengineapp_ViEAndroidJavaAPI * Method: VoE_SetAGCStatus - * Signature: (ZI)I + * Signature: (Z)I */ JNIEXPORT jint JNICALL Java_org_webrtc_videoengineapp_ViEAndroidJavaAPI_VoE_1SetAGCStatus( JNIEnv *, jobject, - jboolean enable, - jint mode) -{ - // TODO(leozwang) implement - return -1; + jboolean enable) { + VALIDATE_APM_POINTER; + if (voeData.apm->SetAgcStatus(enable) < 0) + return -1; + return 0; } /* * Class: org_webrtc_videoengineapp_ViEAndroidJavaAPI * Method: VoE_SetNSStatus - * Signature: (ZI)I + * Signature: (Z)I */ JNIEXPORT jint JNICALL Java_org_webrtc_videoengineapp_ViEAndroidJavaAPI_VoE_1SetNSStatus( JNIEnv *, jobject, - jboolean enable, - jint mode) -{ - // TODO(leozwang) implement - return -1; + jboolean enable) { + VALIDATE_APM_POINTER; + if (voeData.apm->SetNsStatus(enable) < 0) { + return -1; + } + return 0; } // diff --git a/src/video_engine/main/test/android_test/res/layout/aconfig.xml b/src/video_engine/main/test/android_test/res/layout/aconfig.xml index e88b7c62c0..df6016f5ad 100644 --- a/src/video_engine/main/test/android_test/res/layout/aconfig.xml +++ b/src/video_engine/main/test/android_test/res/layout/aconfig.xml @@ -1,81 +1,76 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:layout_height="fill_parent" android:orientation="vertical" + xmlns:android="http://schemas.android.com/apk/res/android"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/video_engine/main/test/android_test/res/values/strings.xml b/src/video_engine/main/test/android_test/res/values/strings.xml index 796411b9b4..796491b693 100644 --- a/src/video_engine/main/test/android_test/res/values/strings.xml +++ b/src/video_engine/main/test/android_test/res/values/strings.xml @@ -1,8 +1,8 @@ - - WebRTC - Error - Camera Error + + WebRTC + Error + Camera Error Choose a codec type Video Engine Android Demo Codec Type @@ -22,10 +22,10 @@ Video Rx Port Audio Tx Port Audio Rx Port -Auto Gain Control -Voice Activity Detection -Acoustic Echo Control -Noise Suppression +AGC +VAD +AECM +NS NACK SwitchToFront SwitchToBack diff --git a/src/video_engine/main/test/android_test/src/org/webrtc/videoengineapp/ViEAndroidJavaAPI.java b/src/video_engine/main/test/android_test/src/org/webrtc/videoengineapp/ViEAndroidJavaAPI.java index 46676acc7b..f9cacfea3d 100644 --- a/src/video_engine/main/test/android_test/src/org/webrtc/videoengineapp/ViEAndroidJavaAPI.java +++ b/src/video_engine/main/test/android_test/src/org/webrtc/videoengineapp/ViEAndroidJavaAPI.java @@ -114,15 +114,17 @@ public class ViEAndroidJavaAPI { public native int VoE_SetLoudspeakerStatus(boolean enable); // Playout file locally - public native int VoE_StartPlayingFileLocally(int channel, - String fileName, - boolean loop); + public native int VoE_StartPlayingFileLocally( + int channel, + String fileName, + boolean loop); public native int VoE_StopPlayingFileLocally(int channel); // Play file as microphone - public native int VoE_StartPlayingFileAsMicrophone(int channel, - String fileName, - boolean loop); + public native int VoE_StartPlayingFileAsMicrophone( + int channel, + String fileName, + boolean loop); public native int VoE_StopPlayingFileAsMicrophone(int channel); // Codec-setting functions @@ -131,8 +133,7 @@ public class ViEAndroidJavaAPI { public native int VoE_SetSendCodec(int channel, int index); //VE funtions - public native int VoE_SetECStatus(boolean enable, int mode, - int AESmode, int AESattenuation); - public native int VoE_SetAGCStatus(boolean enable, int mode); - public native int VoE_SetNSStatus(boolean enable, int mode); + public native int VoE_SetECStatus(boolean enable); + public native int VoE_SetAGCStatus(boolean enable); + public native int VoE_SetNSStatus(boolean enable); } diff --git a/src/video_engine/main/test/android_test/src/org/webrtc/videoengineapp/WebRTCDemo.java b/src/video_engine/main/test/android_test/src/org/webrtc/videoengineapp/WebRTCDemo.java index d8043458d6..982baec452 100644 --- a/src/video_engine/main/test/android_test/src/org/webrtc/videoengineapp/WebRTCDemo.java +++ b/src/video_engine/main/test/android_test/src/org/webrtc/videoengineapp/WebRTCDemo.java @@ -131,8 +131,8 @@ public class WebRTCDemo extends TabActivity implements IViEAndroidCallback, private Spinner spCodecType; private int codecType = 0; private Spinner spCodecSize; - private int codecSizeWidth = 352; - private int codecSizeHeight = 288; + private int codecSizeWidth = 0; + private int codecSizeHeight = 0; private TextView etVRxPort; private int receivePortVideo = 11111; private TextView etVTxPort; @@ -497,6 +497,9 @@ public class WebRTCDemo extends TabActivity implements IViEAndroidCallback, cbEnableAGC.setOnClickListener(this); cbEnableNS.setOnClickListener(this); + + // Read settings to refresh each configuration + ReadSettings(); } private void StartCall() { @@ -664,15 +667,22 @@ public class WebRTCDemo extends TabActivity implements IViEAndroidCallback, Log.d(TAG, "VoE set send destination failed"); } - // 0 = iPCM-wb, 5 = PCMU if (0 != ViEAndroidAPI.VoE_SetSendCodec(voiceChannel, voiceCodecType)) { Log.d(TAG, "VoE set send codec failed"); } - if (0 != ViEAndroidAPI.VoE_SetECStatus(enableAECM, 5, 0, 28)){ + if (0 != ViEAndroidAPI.VoE_SetECStatus(enableAECM)) { Log.d(TAG, "VoE set EC Status failed"); } + if (0 != ViEAndroidAPI.VoE_SetAGCStatus(enableAGC)) { + Log.d(TAG, "VoE set AGC Status failed"); + } + + if (0 != ViEAndroidAPI.VoE_SetNSStatus(enableNS)) { + Log.d(TAG, "VoE set NS Status failed"); + } + if (0 != ViEAndroidAPI.VoE_StartSend(voiceChannel)) { Log.d(TAG, "VoE start send failed"); } @@ -765,23 +775,19 @@ public class WebRTCDemo extends TabActivity implements IViEAndroidCallback, case R.id.cbAutoGainControl: enableAGC=cbEnableAGC.isChecked(); if(voERunning) { - // Enable AGC default mode. - ViEAndroidAPI.VoE_SetAGCStatus(enableAGC,1); + ViEAndroidAPI.VoE_SetAGCStatus(enableAGC); } break; case R.id.cbNoiseSuppression: enableNS=cbEnableNS.isChecked(); if(voERunning) { - // Enable NS default mode. - ViEAndroidAPI.VoE_SetNSStatus(enableNS, 1); + ViEAndroidAPI.VoE_SetNSStatus(enableNS); } break; case R.id.cbAECM: enableAECM = cbEnableAECM.isChecked(); if (voERunning) { - // EC_AECM=5 - // AECM_DEFAULT=0 - ViEAndroidAPI.VoE_SetECStatus(enableAECM, 5, 0, 28); + ViEAndroidAPI.VoE_SetECStatus(enableAECM); } break; }