MediaPlayer: add notifyAt for TimeProvider
Test: TimeProvider gets correct media time when playback rate is not 1.0
Bug: 65204641
Change-Id: I5020515415e14a2c37eec0d1ece511518b9239e7
diff --git a/media/jni/android_media_MediaPlayer.cpp b/media/jni/android_media_MediaPlayer.cpp
index 59e0816..7f6980d 100644
--- a/media/jni/android_media_MediaPlayer.cpp
+++ b/media/jni/android_media_MediaPlayer.cpp
@@ -675,6 +675,18 @@
process_media_player_call( env, thiz, mp->seekTo((int)msec, (MediaPlayerSeekMode)mode), NULL, NULL );
}
+static void
+android_media_MediaPlayer_notifyAt(JNIEnv *env, jobject thiz, jlong mediaTimeUs)
+{
+ sp<MediaPlayer> mp = getMediaPlayer(env, thiz);
+ if (mp == NULL) {
+ jniThrowException(env, "java/lang/IllegalStateException", NULL);
+ return;
+ }
+ ALOGV("notifyAt: %lld", (long long)mediaTimeUs);
+ process_media_player_call( env, thiz, mp->notifyAt((int64_t)mediaTimeUs), NULL, NULL );
+}
+
static jint
android_media_MediaPlayer_getVideoWidth(JNIEnv *env, jobject thiz)
{
@@ -1401,6 +1413,7 @@
{"setSyncParams", "(Landroid/media/SyncParams;)V", (void *)android_media_MediaPlayer_setSyncParams},
{"getSyncParams", "()Landroid/media/SyncParams;", (void *)android_media_MediaPlayer_getSyncParams},
{"_seekTo", "(JI)V", (void *)android_media_MediaPlayer_seekTo},
+ {"_notifyAt", "(J)V", (void *)android_media_MediaPlayer_notifyAt},
{"_pause", "()V", (void *)android_media_MediaPlayer_pause},
{"isPlaying", "()Z", (void *)android_media_MediaPlayer_isPlaying},
{"getCurrentPosition", "()I", (void *)android_media_MediaPlayer_getCurrentPosition},