MediaPlayer: add notifyAt at native side
Test: media time is correct when playback rate is not 1.0
Bug: 65204641
Change-Id: Ie9f67e3cb37267cfd364c9a9b9f674232b68ef27
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp
index 274f613..75bdccc 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp
+++ b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp
@@ -473,6 +473,13 @@
(new AMessage(kWhatReset, this))->post();
}
+status_t NuPlayer::notifyAt(int64_t mediaTimeUs) {
+ sp<AMessage> notify = new AMessage(kWhatNotifyTime, this);
+ notify->setInt64("timerUs", mediaTimeUs);
+ mMediaClock->addTimer(notify, mediaTimeUs);
+ return OK;
+}
+
void NuPlayer::seekToAsync(int64_t seekTimeUs, MediaPlayerSeekMode mode, bool needNotify) {
sp<AMessage> msg = new AMessage(kWhatSeek, this);
msg->setInt64("seekTimeUs", seekTimeUs);
@@ -1315,6 +1322,16 @@
break;
}
+ case kWhatNotifyTime:
+ {
+ ALOGV("kWhatNotifyTime");
+ int64_t timerUs;
+ CHECK(msg->findInt64("timerUs", &timerUs));
+
+ notifyListener(MEDIA_NOTIFY_TIME, timerUs, 0);
+ break;
+ }
+
case kWhatSeek:
{
int64_t seekTimeUs;