File indexing completed on 2024-05-12 05:53:13

0001 #include "gstreamer_android.h"
0002 #include <QAndroidJniEnvironment>
0003 #include <QtAndroid>
0004 #include <gst/gst.h>
0005 
0006 extern "C" gboolean gst_qt_android_init(GError **error)
0007 {
0008     QAndroidJniEnvironment jniEnv;
0009     JNIEnv *env = jniEnv;
0010     QAndroidJniObject QJObj = QtAndroid::androidActivity();
0011     jobject context = QJObj.object<jobject>();
0012 
0013     gst_android_init(jniEnv, NULL, context);
0014 
0015     if (env->ExceptionCheck()) {
0016         jclass throwable_class = env->FindClass("java/lang/Throwable");
0017         jmethodID throwable_to_string_id = env->GetMethodID(throwable_class, "toString", "()Ljava/lang/String;");
0018         jstring msg_obj = (jstring)env->CallObjectMethod(context, throwable_to_string_id);
0019         const char *msg_str = env->GetStringUTFChars(msg_obj, 0);
0020 
0021         g_set_error(error, GST_LIBRARY_ERROR, GST_LIBRARY_ERROR_INIT, "%s", msg_str);
0022 
0023         env->ReleaseStringUTFChars(msg_obj, msg_str);
0024         env->DeleteLocalRef(throwable_class);
0025         env->DeleteLocalRef(msg_obj);
0026 
0027         return FALSE;
0028     }
0029 
0030     return TRUE;
0031 }