int J4A_ThrowException(JNIEnv* env, const char* class_sign, const char* msg) { int ret = -1; if (J4A_ExceptionCheck__catchAll(env)) { J4A_ALOGE("pending exception throwed.\n"); } jclass exceptionClass = J4A_FindClass__catchAll(env, class_sign); if (exceptionClass == NULL) { J4A_FUNC_FAIL_TRACE(); ret = -1; goto fail; } ret = J4A_ThrowExceptionOfClass(env, exceptionClass, msg); if (ret) { J4A_FUNC_FAIL_TRACE(); goto fail; } ret = 0; fail: J4A_DeleteLocalRef__p(env, exceptionClass); return ret; }
void J4AC_android_os_Bundle__putString__withCString__catchAll(JNIEnv *env, jobject thiz, const char *key_cstr__, const char *value_cstr__) { jstring key = NULL; jstring value = NULL; key = (*env)->NewStringUTF(env, key_cstr__); if (J4A_ExceptionCheck__catchAll(env) || !key) goto fail; value = (*env)->NewStringUTF(env, value_cstr__); if (J4A_ExceptionCheck__catchAll(env) || !value) goto fail; J4AC_android_os_Bundle__putString__catchAll(env, thiz, key, value); fail: J4A_DeleteLocalRef__p(env, &key); J4A_DeleteLocalRef__p(env, &value); }
jbyteArray J4A_NewByteArray__asGlobalRef__catchAll(JNIEnv *env, jsize capacity) { jbyteArray local = (*env)->NewByteArray(env, capacity); if (J4A_ExceptionCheck__catchAll(env) || !local) return NULL; jbyteArray global = (*env)->NewGlobalRef(env, local); J4A_DeleteLocalRef__p(env, &local); return global; }
void J4AC_android_os_Bundle__putParcelableArrayList__withCString(JNIEnv *env, jobject thiz, const char *key_cstr__, jobject value) { jstring key = NULL; key = (*env)->NewStringUTF(env, key_cstr__); if (J4A_ExceptionCheck__throwAny(env) || !key) goto fail; J4AC_android_os_Bundle__putParcelableArrayList(env, thiz, key, value); fail: J4A_DeleteLocalRef__p(env, &key); }
jclass J4A_FindClass__asGlobalRef__catchAll(JNIEnv *env, const char *class_sign) { jclass clazz_global = NULL; jclass clazz = J4A_FindClass__catchAll(env, class_sign); if (!clazz) { J4A_FUNC_FAIL_TRACE1(class_sign); goto fail; } clazz_global = J4A_NewGlobalRef__catchAll(env, clazz); if (!clazz_global) { J4A_FUNC_FAIL_TRACE1(class_sign); goto fail; } fail: J4A_DeleteLocalRef__p(env, &clazz); return clazz_global; }
jint J4AC_android_os_Bundle__getInt__withCString(JNIEnv *env, jobject thiz, const char *key_cstr__, jint defaultValue) { jint ret_value = 0; jstring key = NULL; key = (*env)->NewStringUTF(env, key_cstr__); if (J4A_ExceptionCheck__throwAny(env) || !key) goto fail; ret_value = J4AC_android_os_Bundle__getInt(env, thiz, key, defaultValue); if (J4A_ExceptionCheck__throwAny(env)) { ret_value = 0; goto fail; } fail: J4A_DeleteLocalRef__p(env, &key); return ret_value; }
jobject J4AC_android_os_Bundle__Bundle__asGlobalRef__catchAll(JNIEnv *env) { jobject ret_object = NULL; jobject local_object = J4AC_android_os_Bundle__Bundle__catchAll(env); if (J4A_ExceptionCheck__catchAll(env) || !local_object) { ret_object = NULL; goto fail; } ret_object = J4A_NewGlobalRef__catchAll(env, local_object); if (!ret_object) { ret_object = NULL; goto fail; } fail: J4A_DeleteLocalRef__p(env, &local_object); return ret_object; }
jstring J4AC_android_os_Bundle__getString__withCString__asGlobalRef__catchAll(JNIEnv *env, jobject thiz, const char *key_cstr__) { jstring ret_object = NULL; jstring local_object = J4AC_android_os_Bundle__getString__withCString__catchAll(env, thiz, key_cstr__); if (J4A_ExceptionCheck__catchAll(env) || !local_object) { ret_object = NULL; goto fail; } ret_object = J4A_NewGlobalRef__catchAll(env, local_object); if (!ret_object) { ret_object = NULL; goto fail; } fail: J4A_DeleteLocalRef__p(env, &local_object); return ret_object; }
jstring J4AC_android_os_Bundle__getString__withCString__catchAll(JNIEnv *env, jobject thiz, const char *key_cstr__) { jstring ret_object = NULL; jstring key = NULL; key = (*env)->NewStringUTF(env, key_cstr__); if (J4A_ExceptionCheck__catchAll(env) || !key) goto fail; ret_object = J4AC_android_os_Bundle__getString__catchAll(env, thiz, key); if (J4A_ExceptionCheck__catchAll(env) || !ret_object) { ret_object = NULL; goto fail; } fail: J4A_DeleteLocalRef__p(env, &key); return ret_object; }
const char *J4AC_android_os_Bundle__getString__withCString__asCBuffer__catchAll(JNIEnv *env, jobject thiz, const char *key_cstr__, char *out_buf, int out_len) { const char *ret_value = NULL; const char *c_str = NULL; jstring local_string = J4AC_android_os_Bundle__getString__withCString__catchAll(env, thiz, key_cstr__); if (J4A_ExceptionCheck__catchAll(env) || !local_string) { goto fail; } c_str = (*env)->GetStringUTFChars(env, local_string, NULL ); if (J4A_ExceptionCheck__catchAll(env) || !c_str) { goto fail; } strlcpy(out_buf, c_str, out_len); ret_value = out_buf; fail: J4A_ReleaseStringUTFChars__p(env, local_string, &c_str); J4A_DeleteLocalRef__p(env, &local_string); return ret_value; }
static void message_loop_n(JNIEnv *env, IjkMediaPlayer *mp) { jobject weak_thiz = (jobject) ijkmp_get_weak_thiz(mp); JNI_CHECK_GOTO(weak_thiz, env, NULL, "mpjni: message_loop_n: null weak_thiz", LABEL_RETURN); while (1) { AVMessage msg; int retval = ijkmp_get_msg(mp, &msg, 1); if (retval < 0) break; // block-get should never return 0 assert(retval > 0); switch (msg.what) { case FFP_MSG_FLUSH: MPTRACE("FFP_MSG_FLUSH:\n"); post_event(env, weak_thiz, MEDIA_NOP, 0, 0); break; case FFP_MSG_ERROR: MPTRACE("FFP_MSG_ERROR: %d\n", msg.arg1); post_event(env, weak_thiz, MEDIA_ERROR, MEDIA_ERROR_IJK_PLAYER, msg.arg1); break; case FFP_MSG_PREPARED: MPTRACE("FFP_MSG_PREPARED:\n"); post_event(env, weak_thiz, MEDIA_PREPARED, 0, 0); break; case FFP_MSG_COMPLETED: MPTRACE("FFP_MSG_COMPLETED:\n"); post_event(env, weak_thiz, MEDIA_PLAYBACK_COMPLETE, 0, 0); break; case FFP_MSG_VIDEO_SIZE_CHANGED: MPTRACE("FFP_MSG_VIDEO_SIZE_CHANGED: %d, %d\n", msg.arg1, msg.arg2); post_event(env, weak_thiz, MEDIA_SET_VIDEO_SIZE, msg.arg1, msg.arg2); break; case FFP_MSG_SAR_CHANGED: MPTRACE("FFP_MSG_SAR_CHANGED: %d, %d\n", msg.arg1, msg.arg2); post_event(env, weak_thiz, MEDIA_SET_VIDEO_SAR, msg.arg1, msg.arg2); break; case FFP_MSG_VIDEO_RENDERING_START: MPTRACE("FFP_MSG_VIDEO_RENDERING_START:\n"); post_event(env, weak_thiz, MEDIA_INFO, MEDIA_INFO_VIDEO_RENDERING_START, 0); break; case FFP_MSG_AUDIO_RENDERING_START: MPTRACE("FFP_MSG_AUDIO_RENDERING_START:\n"); post_event(env, weak_thiz, MEDIA_INFO, MEDIA_INFO_AUDIO_RENDERING_START, 0); break; case FFP_MSG_VIDEO_ROTATION_CHANGED: MPTRACE("FFP_MSG_VIDEO_ROTATION_CHANGED: %d\n", msg.arg1); post_event(env, weak_thiz, MEDIA_INFO, MEDIA_INFO_VIDEO_ROTATION_CHANGED, msg.arg1); break; case FFP_MSG_BUFFERING_START: MPTRACE("FFP_MSG_BUFFERING_START:\n"); post_event(env, weak_thiz, MEDIA_INFO, MEDIA_INFO_BUFFERING_START, 0); break; case FFP_MSG_BUFFERING_END: MPTRACE("FFP_MSG_BUFFERING_END:\n"); post_event(env, weak_thiz, MEDIA_INFO, MEDIA_INFO_BUFFERING_END, 0); break; case FFP_MSG_BUFFERING_UPDATE: // MPTRACE("FFP_MSG_BUFFERING_UPDATE: %d, %d", msg.arg1, msg.arg2); post_event(env, weak_thiz, MEDIA_BUFFERING_UPDATE, msg.arg1, msg.arg2); break; case FFP_MSG_BUFFERING_BYTES_UPDATE: break; case FFP_MSG_BUFFERING_TIME_UPDATE: break; case FFP_MSG_SEEK_COMPLETE: MPTRACE("FFP_MSG_SEEK_COMPLETE:\n"); post_event(env, weak_thiz, MEDIA_SEEK_COMPLETE, 0, 0); break; case FFP_MSG_PLAYBACK_STATE_CHANGED: break; case FFP_MSG_TIMED_TEXT: if (msg.obj) { jstring text = (*env)->NewStringUTF(env, (char *)msg.obj); post_event2(env, weak_thiz, MEDIA_TIMED_TEXT, 0, 0, text); J4A_DeleteLocalRef__p(env, &text); } else { post_event2(env, weak_thiz, MEDIA_TIMED_TEXT, 0, 0, NULL); } break; default: ALOGE("unknown FFP_MSG_xxx(%d)\n", msg.what); break; } msg_free_res(&msg); } LABEL_RETURN: ; }