int ASDK_Build_VERSION__SDK_INT(JNIEnv *env) { jint sdk_int = (*env)->GetStaticIntField(env, g_clazz_VERSION.clazz, g_clazz_VERSION.jfid_SDK_INT); if (SDL_JNI_RethrowException(env)) { return 0; } return sdk_int; }
static jobject IjkMediaPlayer_getMediaMeta(JNIEnv *env, jobject thiz) { MPTRACE("%s", __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 = ASDK_Bundle__init(env); if (SDL_JNI_RethrowException(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_START_US, NULL ); fillMetaInternal(env, jlocal_bundle, meta, IJKM_KEY_VIDEO_STREAM, "-1"); fillMetaInternal(env, jlocal_bundle, meta, IJKM_KEY_AUDIO_STREAM, "-1"); jarray_list = ASDK_ArrayList__init(env); if (SDL_JNI_RethrowException(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 = ASDK_Bundle__init(env); if (SDL_JNI_RethrowException(env)) { goto LABEL_RETURN; } fillMetaInternal(env, jstream_bundle, streamRawMeta, IJKM_KEY_TYPE, IJKM_VAL_TYPE__UNKNOWN); 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_LONG_NAME, NULL ); fillMetaInternal(env, jstream_bundle, streamRawMeta, IJKM_KEY_BITRATE, 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 ); } ASDK_ArrayList__add(env, jarray_list, jstream_bundle); if (SDL_JNI_RethrowException(env)) { goto LABEL_RETURN; } } SDL_JNI_DeleteLocalRefP(env, &jstream_bundle); } } ASDK_Bundle__putParcelableArrayList_c(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; }