[vlc-devel] [PATCH] lib: add libvlc_media_player_set_android_context
Thomas Guillem
thomas at gllm.fr
Thu Jun 25 14:03:54 CEST 2015
Used to pass the Java VM and a rg.videolan.libvlc.IAWindowNativeHandler jobject.
---
include/vlc/libvlc_media_player.h | 21 +++++++++++++++++++++
lib/media_player.c | 20 ++++++++++++++++++++
2 files changed, 41 insertions(+)
diff --git a/include/vlc/libvlc_media_player.h b/include/vlc/libvlc_media_player.h
index d24392d..890c404 100644
--- a/include/vlc/libvlc_media_player.h
+++ b/include/vlc/libvlc_media_player.h
@@ -31,6 +31,12 @@ extern "C" {
# else
# include <stdbool.h>
# endif
+# ifdef __ANDROID__
+# include <jni.h>
+# else
+ typedef void JavaVM;
+ typedef void *jobject;
+# endif
/** \defgroup libvlc_media_player LibVLC media player
* \ingroup libvlc
@@ -514,6 +520,21 @@ LIBVLC_API void libvlc_media_player_set_hwnd ( libvlc_media_player_t *p_mi, void
LIBVLC_API void *libvlc_media_player_get_hwnd ( libvlc_media_player_t *p_mi );
/**
+ * Set the android context.
+ *
+ * \version LibVLC 3.0.0 and later.
+ *
+ * \param p_mi the media player
+ * \param p_jvm the Java VM of the android process.
+ * \param awindow_handler org.videolan.libvlc.IAWindowNativeHandler interface
+ * implemented by the org.videolan.libvlc.MediaPlayer class from the
+ * libvlc-android project.
+ */
+LIBVLC_API void libvlc_media_player_set_android_context( libvlc_media_player_t *p_mi,
+ JavaVM *p_jvm,
+ jobject awindow_handler );
+
+/**
* Callback prototype for audio playback.
* \param data data pointer as passed to libvlc_audio_set_callbacks() [IN]
* \param samples pointer to the first audio sample to play back [IN]
diff --git a/lib/media_player.c b/lib/media_player.c
index f35c0cb..d58865a 100644
--- a/lib/media_player.c
+++ b/lib/media_player.c
@@ -515,6 +515,10 @@ libvlc_media_player_new( libvlc_instance_t *instance )
var_Create (mp, "drawable-agl", VLC_VAR_INTEGER);
var_Create (mp, "drawable-nsobject", VLC_VAR_ADDRESS);
#endif
+#ifdef __ANDROID__
+ var_Create (mp, "android-jvm", VLC_VAR_ADDRESS);
+ var_Create (mp, "drawable-androidwindow", VLC_VAR_ADDRESS);
+#endif
var_Create (mp, "keyboard-events", VLC_VAR_BOOL);
var_SetBool (mp, "keyboard-events", true);
@@ -1097,6 +1101,22 @@ void *libvlc_media_player_get_hwnd( libvlc_media_player_t *p_mi )
#endif
}
+/**************************************************************************
+ * set_android_context
+ **************************************************************************/
+void libvlc_media_player_set_android_context( libvlc_media_player_t *p_mi,
+ JavaVM *p_jvm,
+ jobject awindow_handler )
+{
+ assert (p_mi != NULL);
+#ifdef __ANDROID__
+ var_SetAddress (p_mi, "android-jvm", p_jvm);
+ var_SetAddress (p_mi, "drawable-androidwindow", awindow_handler);
+#else
+ (void) p_mi; (void) p_jvm; (void) awindow_handler;
+#endif
+}
+
void libvlc_audio_set_callbacks( libvlc_media_player_t *mp,
libvlc_audio_play_cb play_cb,
libvlc_audio_pause_cb pause_cb,
--
2.1.4
More information about the vlc-devel
mailing list