From 809123e9500c15663d51b32c7129ae150f00a6da Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 28 Jan 2014 13:59:55 +0100 Subject: [PATCH] Get supported video resolutions in Android from linphonecore --- coreapi/linphonecore.c | 24 +++++++++---------- coreapi/linphonecore_jni.cc | 20 ++++++++++++++++ .../org/linphone/core/LinphoneCore.java | 6 +++++ .../org/linphone/core/LinphoneCoreImpl.java | 6 +++++ 4 files changed, 44 insertions(+), 12 deletions(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 968272242..0ab3a0646 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -5094,21 +5094,21 @@ int linphone_core_get_camera_sensor_rotation(LinphoneCore *lc) { } static MSVideoSizeDef supported_resolutions[]={ - { { MS_VIDEO_SIZE_1080P_W,MS_VIDEO_SIZE_1080P_H } , "1080p" }, - { { MS_VIDEO_SIZE_UXGA_W, MS_VIDEO_SIZE_UXGA_H } , "uxga" }, + { { MS_VIDEO_SIZE_1080P_W, MS_VIDEO_SIZE_1080P_H } , "1080p" }, + { { MS_VIDEO_SIZE_UXGA_W, MS_VIDEO_SIZE_UXGA_H } , "uxga" }, { { MS_VIDEO_SIZE_SXGA_MINUS_W, MS_VIDEO_SIZE_SXGA_MINUS_H } , "sxga-" }, - { { MS_VIDEO_SIZE_720P_W,MS_VIDEO_SIZE_720P_H } , "720p" }, - { { MS_VIDEO_SIZE_XGA_W, MS_VIDEO_SIZE_XGA_H } , "xga" }, - { {MS_VIDEO_SIZE_SVGA_W,MS_VIDEO_SIZE_SVGA_H} , "svga" }, - { {MS_VIDEO_SIZE_4CIF_W,MS_VIDEO_SIZE_4CIF_H} , "4cif" }, - { {MS_VIDEO_SIZE_VGA_W,MS_VIDEO_SIZE_VGA_H} , "vga" }, + { { MS_VIDEO_SIZE_720P_W, MS_VIDEO_SIZE_720P_H } , "720p" }, + { { MS_VIDEO_SIZE_XGA_W, MS_VIDEO_SIZE_XGA_H } , "xga" }, + { { MS_VIDEO_SIZE_SVGA_W, MS_VIDEO_SIZE_SVGA_H } , "svga" }, + { { MS_VIDEO_SIZE_4CIF_W, MS_VIDEO_SIZE_4CIF_H } , "4cif" }, + { { MS_VIDEO_SIZE_VGA_W, MS_VIDEO_SIZE_VGA_H } , "vga" }, #ifdef __ios - { {MS_VIDEO_SIZE_IOS_MEDIUM_H,MS_VIDEO_SIZE_IOS_MEDIUM_W} , "ios-medium" }, + { { MS_VIDEO_SIZE_IOS_MEDIUM_H, MS_VIDEO_SIZE_IOS_MEDIUM_W } , "ios-medium" }, #endif - { {MS_VIDEO_SIZE_CIF_W,MS_VIDEO_SIZE_CIF_H} , "cif" }, - { {MS_VIDEO_SIZE_QVGA_W,MS_VIDEO_SIZE_QVGA_H} , "qvga" }, - { {MS_VIDEO_SIZE_QCIF_W,MS_VIDEO_SIZE_QCIF_H} , "qcif" }, - { {0,0} , NULL } + { { MS_VIDEO_SIZE_CIF_W, MS_VIDEO_SIZE_CIF_H } , "cif" }, + { { MS_VIDEO_SIZE_QVGA_W, MS_VIDEO_SIZE_QVGA_H } , "qvga" }, + { { MS_VIDEO_SIZE_QCIF_W, MS_VIDEO_SIZE_QCIF_H } , "qcif" }, + { { 0,0 } , NULL } }; /** diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index 5839f0c4b..b44a37643 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -2979,6 +2979,26 @@ extern "C" jint Java_org_linphone_core_LinphoneCoreImpl_getVideoDevice(JNIEnv *e return 0; } +extern "C" jobjectArray Java_org_linphone_core_LinphoneCoreImpl_listSupportedVideoResolutions(JNIEnv *env, jobject thiz, jlong lc) { + const MSVideoSizeDef *pdef = linphone_core_get_supported_video_sizes((LinphoneCore *)lc); + int count = 0; + int i = 0; + for (; pdef->name!=NULL; pdef++) { + i++; + } + count = i; + + jobjectArray resolutions = (jobjectArray) env->NewObjectArray(count, env->FindClass("java/lang/String"), env->NewStringUTF("")); + pdef = linphone_core_get_supported_video_sizes((LinphoneCore *)lc); + i = 0; + for (; pdef->name!=NULL; pdef++) { + env->SetObjectArrayElement(resolutions, i, env->NewStringUTF(pdef->name)); + i++; + } + + return resolutions; +} + extern "C" jstring Java_org_linphone_core_LinphoneCallImpl_getAuthenticationToken(JNIEnv* env,jobject thiz,jlong ptr) { LinphoneCall *call = (LinphoneCall *) ptr; const char* token = linphone_call_get_authentication_token(call); diff --git a/java/common/org/linphone/core/LinphoneCore.java b/java/common/org/linphone/core/LinphoneCore.java index 0cedc40f8..50d109a9e 100644 --- a/java/common/org/linphone/core/LinphoneCore.java +++ b/java/common/org/linphone/core/LinphoneCore.java @@ -1413,4 +1413,10 @@ public interface LinphoneCore { * @return an array of LinphoneChatRoom */ public LinphoneChatRoom[] getChatRooms(); + + /** + * Gets the linphonecore supported resolutions for video + * @return an array of String + */ + public String[] getSupportedVideoSizes(); } diff --git a/java/impl/org/linphone/core/LinphoneCoreImpl.java b/java/impl/org/linphone/core/LinphoneCoreImpl.java index f9a61acf8..bdb3540aa 100644 --- a/java/impl/org/linphone/core/LinphoneCoreImpl.java +++ b/java/impl/org/linphone/core/LinphoneCoreImpl.java @@ -1088,4 +1088,10 @@ class LinphoneCoreImpl implements LinphoneCore { long ptrParams =((LinphoneCallParamsImpl)params).nativePtr; return startReferedCall(nativePtr, getCallPtr(call), ptrParams); } + + private native String[] listSupportedVideoResolutions(long ptr); + @Override + public String[] getSupportedVideoSizes() { + return listSupportedVideoResolutions(nativePtr); + } }