static void IjkMediaPlayer_setDataSourceFd(JNIEnv *env, jobject thiz, jint fd) { MPTRACE("%s\n", __func__); int retval = 0; int dupFd = 0; char uri[128]; IjkMediaPlayer *mp = jni_get_media_player(env, thiz); JNI_CHECK_GOTO(fd > 0, env, "java/lang/IllegalArgumentException", "mpjni: setDataSourceFd: null fd", LABEL_RETURN); JNI_CHECK_GOTO(mp, env, "java/lang/IllegalStateException", "mpjni: setDataSourceFd: null mp", LABEL_RETURN); dupFd = dup(fd); ALOGV("setDataSourceFd: dup(%d)=%d\n", fd, dupFd); snprintf(uri, sizeof(uri), "pipe:%d", dupFd); retval = ijkmp_set_data_source(mp, uri); IJK_CHECK_MPRET_GOTO(retval, env, LABEL_RETURN); LABEL_RETURN: ijkmp_dec_ref_p(&mp); }
static void IjkMediaPlayer_setDataSourceAndHeaders( JNIEnv *env, jobject thiz, jstring path, jobjectArray keys, jobjectArray values) { MPTRACE("IjkMediaPlayer_setDataSourceAndHeaders"); int retval = 0; const char *c_path = NULL; IjkMediaPlayer *mp = jni_get_media_player(env, thiz); JNI_CHECK_GOTO(path, env, "java/lang/IllegalArgumentException", "mpjni: setDataSource: null path", LABEL_RETURN); JNI_CHECK_GOTO(mp, env, "java/lang/IllegalStateException", "mpjni: setDataSource: null mp", LABEL_RETURN); c_path = (*env)->GetStringUTFChars(env, path, NULL); JNI_CHECK_GOTO(c_path, env, "java/lang/OutOfMemoryError", "mpjni: setDataSource: path.string oom", LABEL_RETURN); ALOGV("setDataSource: path %s", c_path); retval = ijkmp_set_data_source(mp, c_path); (*env)->ReleaseStringUTFChars(env, path, c_path); IJK_CHECK_MPRET_GOTO(retval, env, LABEL_RETURN); LABEL_RETURN: ijkmp_dec_ref_p(&mp); }
static void IjkMediaPlayer_setDataSourceIjkIOHttpCallback(JNIEnv *env, jobject thiz, jobject callback) { MPTRACE("%s\n", __func__); int retval = 0; char uri[128]; int64_t nativeIjkIOHttp = 0; IjkMediaPlayer *mp = jni_get_media_player(env, thiz); JNI_CHECK_GOTO(callback, env, "java/lang/IllegalArgumentException", "mpjni: setDataSourceIjkIOCallback: null fd", LABEL_RETURN); JNI_CHECK_GOTO(mp, env, "java/lang/IllegalStateException", "mpjni: setDataSourceIjkIOCallback: null mp", LABEL_RETURN); nativeIjkIOHttp = jni_set_ijkio_http(env, thiz, callback); JNI_CHECK_GOTO(nativeIjkIOHttp, env, "java/lang/IllegalStateException", "mpjni: jni_set_ijkio_http: NewGlobalRef", LABEL_RETURN); ALOGV("setDataSourceIjkIOHttpCallback: %"PRId64"\n", nativeIjkIOHttp); snprintf(uri, sizeof(uri), "ijkio:http:%"PRId64, nativeIjkIOHttp); retval = ijkmp_set_data_source(mp, uri); IJK_CHECK_MPRET_GOTO(retval, env, LABEL_RETURN); LABEL_RETURN: ijkmp_dec_ref_p(&mp); }