void J4AC_android_os_Bundle__putString__withCString(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__throwAny(env) || !key) goto fail; value = (*env)->NewStringUTF(env, value_cstr__); if (J4A_ExceptionCheck__throwAny(env) || !value) goto fail; J4AC_android_os_Bundle__putString(env, thiz, key, value); fail: J4A_DeleteLocalRef__p(env, &key); J4A_DeleteLocalRef__p(env, &value); }
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; }
jstring J4AC_android_os_Bundle__getString__withCString(JNIEnv *env, jobject thiz, const char *key_cstr__) { jstring ret_object = NULL; jstring key = NULL; key = (*env)->NewStringUTF(env, key_cstr__); if (J4A_ExceptionCheck__throwAny(env) || !key) goto fail; ret_object = J4AC_android_os_Bundle__getString(env, thiz, key); if (J4A_ExceptionCheck__throwAny(env) || !ret_object) { ret_object = NULL; goto fail; } fail: J4A_DeleteLocalRef__p(env, &key); return ret_object; }
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); }
const char *J4AC_android_os_Bundle__getString__withCString__asCBuffer(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(env, thiz, key_cstr__); if (J4A_ExceptionCheck__throwAny(env) || !local_string) { goto fail; } c_str = (*env)->GetStringUTFChars(env, local_string, NULL ); if (J4A_ExceptionCheck__throwAny(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 jobject IjkMediaPlayer_getMediaMeta(JNIEnv *env, jobject thiz) { MPTRACE("%s\n", __func__); bool is_locked = false; jobject jret_bundle = NULL; jobject jlocal_bundle = NULL; jobject jstream_bundle = NULL; jobject jarray_list = NULL; IjkMediaMeta *meta = NULL; IjkMediaPlayer *mp = jni_get_media_player(env, thiz); JNI_CHECK_GOTO(mp, env, "java/lang/IllegalStateException", "mpjni: getMediaMeta: null mp", LABEL_RETURN); meta = ijkmp_get_meta_l(mp); if (!meta) goto LABEL_RETURN; ijkmeta_lock(meta); is_locked = true; jlocal_bundle = J4AC_Bundle__Bundle(env); if (J4A_ExceptionCheck__throwAny(env)) { goto LABEL_RETURN; } fillMetaInternal(env, jlocal_bundle, meta, IJKM_KEY_FORMAT, NULL ); fillMetaInternal(env, jlocal_bundle, meta, IJKM_KEY_DURATION_US, NULL ); fillMetaInternal(env, jlocal_bundle, meta, IJKM_KEY_START_US, NULL ); fillMetaInternal(env, jlocal_bundle, meta, IJKM_KEY_BITRATE, NULL ); fillMetaInternal(env, jlocal_bundle, meta, IJKM_KEY_VIDEO_STREAM, "-1"); fillMetaInternal(env, jlocal_bundle, meta, IJKM_KEY_AUDIO_STREAM, "-1"); fillMetaInternal(env, jlocal_bundle, meta, IJKM_KEY_TIMEDTEXT_STREAM, "-1"); jarray_list = J4AC_ArrayList__ArrayList(env); if (J4A_ExceptionCheck__throwAny(env)) { goto LABEL_RETURN; } size_t count = ijkmeta_get_children_count_l(meta); for (size_t i = 0; i < count; ++i) { IjkMediaMeta *streamRawMeta = ijkmeta_get_child_l(meta, i); if (streamRawMeta) { jstream_bundle = J4AC_Bundle__Bundle(env); if (J4A_ExceptionCheck__throwAny(env)) { goto LABEL_RETURN; } fillMetaInternal(env, jstream_bundle, streamRawMeta, IJKM_KEY_TYPE, IJKM_VAL_TYPE__UNKNOWN); fillMetaInternal(env, jstream_bundle, streamRawMeta, IJKM_KEY_LANGUAGE, NULL); const char *type = ijkmeta_get_string_l(streamRawMeta, IJKM_KEY_TYPE); if (type) { fillMetaInternal(env, jstream_bundle, streamRawMeta, IJKM_KEY_CODEC_NAME, NULL ); fillMetaInternal(env, jstream_bundle, streamRawMeta, IJKM_KEY_CODEC_PROFILE, NULL ); fillMetaInternal(env, jstream_bundle, streamRawMeta, IJKM_KEY_CODEC_LEVEL, NULL ); fillMetaInternal(env, jstream_bundle, streamRawMeta, IJKM_KEY_CODEC_LONG_NAME, NULL ); fillMetaInternal(env, jstream_bundle, streamRawMeta, IJKM_KEY_CODEC_PIXEL_FORMAT, NULL ); fillMetaInternal(env, jstream_bundle, streamRawMeta, IJKM_KEY_BITRATE, NULL ); fillMetaInternal(env, jstream_bundle, streamRawMeta, IJKM_KEY_CODEC_PROFILE_ID, NULL ); if (0 == strcmp(type, IJKM_VAL_TYPE__VIDEO)) { fillMetaInternal(env, jstream_bundle, streamRawMeta, IJKM_KEY_WIDTH, NULL ); fillMetaInternal(env, jstream_bundle, streamRawMeta, IJKM_KEY_HEIGHT, NULL ); fillMetaInternal(env, jstream_bundle, streamRawMeta, IJKM_KEY_FPS_NUM, NULL ); fillMetaInternal(env, jstream_bundle, streamRawMeta, IJKM_KEY_FPS_DEN, NULL ); fillMetaInternal(env, jstream_bundle, streamRawMeta, IJKM_KEY_TBR_NUM, NULL ); fillMetaInternal(env, jstream_bundle, streamRawMeta, IJKM_KEY_TBR_DEN, NULL ); fillMetaInternal(env, jstream_bundle, streamRawMeta, IJKM_KEY_SAR_NUM, NULL ); fillMetaInternal(env, jstream_bundle, streamRawMeta, IJKM_KEY_SAR_DEN, NULL ); } else if (0 == strcmp(type, IJKM_VAL_TYPE__AUDIO)) { fillMetaInternal(env, jstream_bundle, streamRawMeta, IJKM_KEY_SAMPLE_RATE, NULL ); fillMetaInternal(env, jstream_bundle, streamRawMeta, IJKM_KEY_CHANNEL_LAYOUT, NULL ); } J4AC_ArrayList__add(env, jarray_list, jstream_bundle); if (J4A_ExceptionCheck__throwAny(env)) { goto LABEL_RETURN; } } SDL_JNI_DeleteLocalRefP(env, &jstream_bundle); } } J4AC_Bundle__putParcelableArrayList__withCString__catchAll(env, jlocal_bundle, IJKM_KEY_STREAMS, jarray_list); jret_bundle = jlocal_bundle; jlocal_bundle = NULL; LABEL_RETURN: if (is_locked && meta) ijkmeta_unlock(meta); SDL_JNI_DeleteLocalRefP(env, &jstream_bundle); SDL_JNI_DeleteLocalRefP(env, &jlocal_bundle); SDL_JNI_DeleteLocalRefP(env, &jarray_list); ijkmp_dec_ref_p(&mp); return jret_bundle; }