diff options
author | Wei Jia <wjia@google.com> | 2017-01-16 10:18:15 -0800 |
---|---|---|
committer | Wei Jia <wjia@google.com> | 2017-01-25 11:54:56 -0800 |
commit | 23dfee521a7782bf901344beec6f94614e0b02b8 (patch) | |
tree | d6c4e86b2192f9d1d49171eaed093eec139577e6 /media/jni/android_media_MediaPlayer.cpp | |
parent | 65e8f0adf31f8af2fea5d2ab9bdbf95ecf693852 (diff) |
mediaplayer: add buffering settings API
Test: compiles, ensured that params is passed all the way to source
Bug:32524218
Change-Id: I90d65e10012ecc1a78989eba80d025d513ceaadf
Diffstat (limited to 'media/jni/android_media_MediaPlayer.cpp')
-rw-r--r-- | media/jni/android_media_MediaPlayer.cpp | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/media/jni/android_media_MediaPlayer.cpp b/media/jni/android_media_MediaPlayer.cpp index c52ed941af85..822505242426 100644 --- a/media/jni/android_media_MediaPlayer.cpp +++ b/media/jni/android_media_MediaPlayer.cpp @@ -37,6 +37,7 @@ #include "utils/Errors.h" // for status_t #include "utils/KeyedVector.h" #include "utils/String8.h" +#include "android_media_BufferingParams.h" #include "android_media_MediaDataSource.h" #include "android_media_PlaybackParams.h" #include "android_media_SyncParams.h" @@ -69,6 +70,7 @@ struct fields_t { }; static fields_t fields; +static BufferingParams::fields_t gBufferingParamsFields; static PlaybackParams::fields_t gPlaybackParamsFields; static SyncParams::fields_t gSyncParamsFields; @@ -343,6 +345,66 @@ android_media_MediaPlayer_setVideoSurface(JNIEnv *env, jobject thiz, jobject jsu setVideoSurface(env, thiz, jsurface, true /* mediaPlayerMustBeAlive */); } +static jobject +android_media_MediaPlayer_getDefaultBufferingParams(JNIEnv *env, jobject thiz) +{ + sp<MediaPlayer> mp = getMediaPlayer(env, thiz); + if (mp == NULL) { + jniThrowException(env, "java/lang/IllegalStateException", NULL); + return NULL; + } + + BufferingParams bp; + BufferingSettings &settings = bp.settings; + process_media_player_call( + env, thiz, mp->getDefaultBufferingSettings(&settings), + "java/lang/IllegalStateException", "unexpected error"); + ALOGV("getDefaultBufferingSettings:{%s}", settings.toString().string()); + + return bp.asJobject(env, gBufferingParamsFields); +} + +static jobject +android_media_MediaPlayer_getBufferingParams(JNIEnv *env, jobject thiz) +{ + sp<MediaPlayer> mp = getMediaPlayer(env, thiz); + if (mp == NULL) { + jniThrowException(env, "java/lang/IllegalStateException", NULL); + return NULL; + } + + BufferingParams bp; + BufferingSettings &settings = bp.settings; + process_media_player_call( + env, thiz, mp->getBufferingSettings(&settings), + "java/lang/IllegalStateException", "unexpected error"); + ALOGV("getBufferingSettings:{%s}", settings.toString().string()); + + return bp.asJobject(env, gBufferingParamsFields); +} + +static void +android_media_MediaPlayer_setBufferingParams(JNIEnv *env, jobject thiz, jobject params) +{ + if (params == NULL) { + return; + } + + sp<MediaPlayer> mp = getMediaPlayer(env, thiz); + if (mp == NULL) { + jniThrowException(env, "java/lang/IllegalStateException", NULL); + return; + } + + BufferingParams bp; + bp.fillFromJobject(env, gBufferingParamsFields, params); + ALOGV("setBufferingParams:{%s}", bp.settings.toString().string()); + + process_media_player_call( + env, thiz, mp->setBufferingSettings(bp.settings), + "java/lang/IllegalStateException", "unexpected error"); +} + static void android_media_MediaPlayer_prepare(JNIEnv *env, jobject thiz) { @@ -860,6 +922,7 @@ android_media_MediaPlayer_native_init(JNIEnv *env) env->DeleteLocalRef(clazz); + gBufferingParamsFields.init(env); gPlaybackParamsFields.init(env); gSyncParamsFields.init(env); } @@ -1046,6 +1109,9 @@ static const JNINativeMethod gMethods[] = { {"_setDataSource", "(Ljava/io/FileDescriptor;JJ)V", (void *)android_media_MediaPlayer_setDataSourceFD}, {"_setDataSource", "(Landroid/media/MediaDataSource;)V",(void *)android_media_MediaPlayer_setDataSourceCallback }, {"_setVideoSurface", "(Landroid/view/Surface;)V", (void *)android_media_MediaPlayer_setVideoSurface}, + {"getDefaultBufferingParams", "()Landroid/media/BufferingParams;", (void *)android_media_MediaPlayer_getDefaultBufferingParams}, + {"getBufferingParams", "()Landroid/media/BufferingParams;", (void *)android_media_MediaPlayer_getBufferingParams}, + {"setBufferingParams", "(Landroid/media/BufferingParams;)V", (void *)android_media_MediaPlayer_setBufferingParams}, {"_prepare", "()V", (void *)android_media_MediaPlayer_prepare}, {"prepareAsync", "()V", (void *)android_media_MediaPlayer_prepareAsync}, {"_start", "()V", (void *)android_media_MediaPlayer_start}, |