From 90b51017647087cc3fb1656a8c933bec5623934b Mon Sep 17 00:00:00 2001
From: Ghislain MARY <ghislain.mary@belledonne-communications.com>
Date: Mon, 7 Apr 2014 12:48:00 +0200
Subject: [PATCH] Changes to add support of OpenH264 on Android.

---
 build/android/Android.mk    |  8 ++++++++
 coreapi/linphonecore_jni.cc | 10 ++++++++++
 mediastreamer2              |  2 +-
 3 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/build/android/Android.mk b/build/android/Android.mk
index c2b04b3897..18fbbdbfd3 100755
--- a/build/android/Android.mk
+++ b/build/android/Android.mk
@@ -87,6 +87,9 @@ LOCAL_CFLAGS += -DVIDEO_ENABLED
 ifeq ($(BUILD_X264),1)
 LOCAL_CFLAGS += -DHAVE_X264
 endif
+ifeq ($(BUILD_OPENH264),1)
+LOCAL_CFLAGS += -DHAVE_OPENH264
+endif
 endif
 
 ifeq ($(BUILD_CONTACT_HEADER),1)
@@ -175,6 +178,11 @@ LOCAL_STATIC_LIBRARIES += \
 	libmsx264 \
 	libx264
 endif
+ifeq ($(BUILD_OPENH264),1)
+LOCAL_STATIC_LIBRARIES += \
+	libmsopenh264 \
+	libwels
+endif
 endif
 
 ifeq ($(BUILD_UPNP),1)
diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc
index f7c8f46eba..8248524187 100644
--- a/coreapi/linphonecore_jni.cc
+++ b/coreapi/linphonecore_jni.cc
@@ -26,6 +26,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
 extern "C" {
 #include "mediastreamer2/mediastream.h"
+#include "mediastreamer2/mscommon.h"
 }
 #include "mediastreamer2/msjava.h"
 #include "private.h"
@@ -39,6 +40,9 @@ extern "C" void libmsilbc_init();
 #ifdef HAVE_X264
 extern "C" void libmsx264_init();
 #endif
+#ifdef HAVE_OPENH264
+extern "C" void libmsopenh264_init();
+#endif
 #ifdef HAVE_AMR
 extern "C" void libmsamr_init();
 #endif
@@ -742,12 +746,17 @@ extern "C" jlong Java_org_linphone_core_LinphoneCoreImpl_newLinphoneCore(JNIEnv*
 	const char* factoryConfig = jfactoryConfig?env->GetStringUTFChars(jfactoryConfig, NULL):NULL;
 	LinphoneCoreData* ldata = new LinphoneCoreData(env,thiz,jlistener,juserdata);
 
+	ms_init(); // Initialize mediastreamer2 before loading the plugins
+
 #ifdef HAVE_ILBC
 	libmsilbc_init(); // requires an fpu
 #endif
 #ifdef HAVE_X264
 	libmsx264_init();
 #endif
+#ifdef HAVE_OPENH264
+	libmsopenh264_init();
+#endif
 #ifdef HAVE_AMR
 	libmsamr_init();
 #endif
@@ -776,6 +785,7 @@ extern "C" void Java_org_linphone_core_LinphoneCoreImpl_delete(JNIEnv*  env
 		,jlong lc) {
 	LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data((LinphoneCore*)lc);
 	linphone_core_destroy((LinphoneCore*)lc);
+	ms_exit();
 	delete lcData;
 }
 
diff --git a/mediastreamer2 b/mediastreamer2
index a33899b52d..7111661bd8 160000
--- a/mediastreamer2
+++ b/mediastreamer2
@@ -1 +1 @@
-Subproject commit a33899b52d15236fe99b5399242ab9d8c2a0f24e
+Subproject commit 7111661bd810352ed7a4ecc9c30c7754d3006a92
-- 
GitLab