MediaPlayer2: seekTo does not change state.
Test: MediaPlayer2 plays
Bug: 63934228
Change-Id: I13ec7225277b2f53535274828eb9d06ccd77db0c
diff --git a/media/libmediaplayer2/nuplayer2/NuPlayer2.cpp b/media/libmediaplayer2/nuplayer2/NuPlayer2.cpp
index c414f23..462a904 100644
--- a/media/libmediaplayer2/nuplayer2/NuPlayer2.cpp
+++ b/media/libmediaplayer2/nuplayer2/NuPlayer2.cpp
@@ -641,6 +641,7 @@
mSource = static_cast<Source *>(obj.get());
} else {
err = UNKNOWN_ERROR;
+ ALOGE("kWhatSetDataSource, source should not be NULL");
}
CHECK(mDriver != NULL);
@@ -1453,26 +1454,24 @@
ALOGV("kWhatSeek seekTimeUs=%lld us, mode=%d, needNotify=%d",
(long long)seekTimeUs, mode, needNotify);
- // seeks can take a while, so we essentially paused
- notifyListener(mSrcId, MEDIA2_PAUSED, 0, 0);
-
if (!mStarted) {
- // Seek before the player is started. In order to preview video,
- // need to start the player and pause it. This branch is called
- // only once if needed. After the player is started, any seek
- // operation will go through normal path.
- // Audio-only cases are handled separately.
- onStart(seekTimeUs, (MediaPlayer2SeekMode)mode);
- if (mStarted) {
- onPause();
- mPausedByClient = true;
+ if (!mSourceStarted) {
+ mSourceStarted = true;
+ mSource->start();
}
+ if (seekTimeUs > 0) {
+ performSeek(seekTimeUs, (MediaPlayer2SeekMode)mode);
+ }
+
if (needNotify) {
notifyDriverSeekComplete(mSrcId);
}
break;
}
+ // seeks can take a while, so we essentially paused
+ notifyListener(mSrcId, MEDIA2_PAUSED, 0, 0);
+
mDeferredActions.push_back(
new FlushDecoderAction(FLUSH_CMD_FLUSH /* audio */,
FLUSH_CMD_FLUSH /* video */));
@@ -1565,19 +1564,13 @@
startPlaybackTimer("onresume");
}
-void NuPlayer2::onStart(int64_t startPositionUs, MediaPlayer2SeekMode mode) {
+void NuPlayer2::onStart() {
ALOGV("onStart: mCrypto: %p", mCrypto.get());
if (!mSourceStarted) {
mSourceStarted = true;
mSource->start();
}
- if (startPositionUs > 0) {
- performSeek(startPositionUs, mode);
- if (mSource->getFormat(false /* audio */) == NULL) {
- return;
- }
- }
mOffloadAudio = false;
mAudioEOS = false;
diff --git a/media/libmediaplayer2/nuplayer2/NuPlayer2.h b/media/libmediaplayer2/nuplayer2/NuPlayer2.h
index e884b92..e7b774c 100644
--- a/media/libmediaplayer2/nuplayer2/NuPlayer2.h
+++ b/media/libmediaplayer2/nuplayer2/NuPlayer2.h
@@ -293,9 +293,7 @@
void handleFlushComplete(bool audio, bool isDecoder);
void finishFlushIfPossible();
- void onStart(
- int64_t startPositionUs = -1,
- MediaPlayer2SeekMode mode = MediaPlayer2SeekMode::SEEK_PREVIOUS_SYNC);
+ void onStart();
void onResume();
void onPause();