From c0bd6fb61e03a3592ed4e3164f1234f68372b6b7 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 27 Feb 2014 10:28:10 +0100 Subject: [PATCH] JNI wrapper for accept_early_media methods --- coreapi/linphonecore_jni.cc | 15 +++++++++++++ .../org/linphone/core/LinphoneCore.java | 22 +++++++++++++++++++ .../org/linphone/core/LinphoneCoreImpl.java | 14 ++++++++++++ 3 files changed, 51 insertions(+) diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index 9d5461147..036e73c87 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -1015,6 +1015,21 @@ extern "C" void Java_org_linphone_core_LinphoneCoreImpl_deferCallUpdate(JNIEnv * linphone_core_defer_call_update((LinphoneCore*)lc,(LinphoneCall*)call); } +extern "C" jboolean Java_org_linphone_core_LinphoneCoreImpl_acceptEarlyMedia(JNIEnv *env, jobject thiz, jlong lc, jlong c) { + LinphoneCore *core = (LinphoneCore *)lc; + LinphoneCall *call = (LinphoneCall *)c; + int ret = linphone_core_accept_early_media(core, call); + return (jboolean) ret == 0; +} + +extern "C" jboolean Java_org_linphone_core_LinphoneCoreImpl_acceptEarlyMediaWithParams(JNIEnv *env, jobject thiz, jlong lc, jlong c, jlong params) { + LinphoneCore *core = (LinphoneCore *)lc; + LinphoneCall *call = (LinphoneCall *)c; + const LinphoneCallParams *call_params = (LinphoneCallParams *) params; + int ret = linphone_core_accept_early_media_with_params(core, call, call_params); + return (jboolean) ret == 0; +} + extern "C" jlong Java_org_linphone_core_LinphoneCoreImpl_getCallLog( JNIEnv* env ,jobject thiz ,jlong lc diff --git a/java/common/org/linphone/core/LinphoneCore.java b/java/common/org/linphone/core/LinphoneCore.java index 55be3eb24..03d946a4e 100644 --- a/java/common/org/linphone/core/LinphoneCore.java +++ b/java/common/org/linphone/core/LinphoneCore.java @@ -1496,4 +1496,26 @@ public interface LinphoneCore { * @returns 1 if migration was done, 0 if not done because unnecessary or already done, -1 in case of error. */ public int migrateToMultiTransport(); + + /** + * When receiving an incoming, accept to start a media session as early-media. + * This means the call is not accepted but audio & video streams can be established if the remote party supports early media. + * However, unlike after call acceptance, mic and camera input are not sent during early-media, though received audio & video are played normally. + * The call can then later be fully accepted using linphone_core_accept_call() or linphone_core_accept_call_with_params(). + * @param lc the linphonecore + * @param call the call + * @param params the call params, can be NULL. + * @return true if successful, false otherwise. + */ + public boolean acceptEarlyMedia(LinphoneCall call); + + /** + * Accept an early media session for an incoming call. + * This is identical as calling linphone_core_accept_early_media_with_params() with NULL call parameters. + * @see linphone_core_accept_early_media_with_params() + * @param lc the core + * @param call the incoming call + * @return true if successful, false otherwise. + */ + public boolean acceptEarlyMediaWithParams(LinphoneCall call, LinphoneCallParams params); } diff --git a/java/impl/org/linphone/core/LinphoneCoreImpl.java b/java/impl/org/linphone/core/LinphoneCoreImpl.java index f7d91c1e9..9b885a6b2 100644 --- a/java/impl/org/linphone/core/LinphoneCoreImpl.java +++ b/java/impl/org/linphone/core/LinphoneCoreImpl.java @@ -1115,4 +1115,18 @@ class LinphoneCoreImpl implements LinphoneCore { public int migrateToMultiTransport() { return migrateToMultiTransport(nativePtr); } + + private native boolean acceptEarlyMedia(long lc, long call); + @Override + public boolean acceptEarlyMedia(LinphoneCall call) { + return acceptEarlyMedia(nativePtr, getCallPtr(call)); + } + + private native boolean acceptEarlyMediaWithParams(long lc, long call, long params); + @Override + public boolean acceptEarlyMediaWithParams(LinphoneCall call, + LinphoneCallParams params) { + long ptrParams = params != null ? ((LinphoneCallParamsImpl) params).nativePtr : 0; + return acceptEarlyMediaWithParams(nativePtr, getCallPtr(call), ptrParams); + } }