MediaPlayer2: allow prepared->pause
Test: cts
Bug: 112549021
Change-Id: I3ead79f5c2441c01b80483e454d34e559129727e
diff --git a/media/libmediaplayer2/nuplayer2/NuPlayer2.cpp b/media/libmediaplayer2/nuplayer2/NuPlayer2.cpp
index e51727b..5bd1674 100644
--- a/media/libmediaplayer2/nuplayer2/NuPlayer2.cpp
+++ b/media/libmediaplayer2/nuplayer2/NuPlayer2.cpp
@@ -969,7 +969,7 @@
onResume();
}
} else {
- onStart();
+ onStart(true /* play */);
}
mPausedByClient = false;
notifyListener(mSrcId, MEDIA2_STARTED, 0, 0);
@@ -1502,6 +1502,9 @@
case kWhatPause:
{
+ if (!mStarted) {
+ onStart(false /* play */);
+ }
onPause();
notifyListener(mSrcId, MEDIA2_PAUSED, 0, 0);
mPausedByClient = true;
@@ -1575,7 +1578,7 @@
startPlaybackTimer("onresume");
}
-void NuPlayer2::onStart() {
+void NuPlayer2::onStart(bool play) {
ALOGV("onStart: mCrypto: %p", mCrypto.get());
if (!mSourceStarted) {
@@ -1649,6 +1652,11 @@
mRenderer->setVideoFrameRate(rate);
}
+ // Renderer is created in paused state.
+ if (play) {
+ mRenderer->resume();
+ }
+
if (mVideoDecoder != NULL) {
mVideoDecoder->setRenderer(mRenderer);
}
@@ -2472,7 +2480,7 @@
mRenderer->resume();
}
- onStart();
+ onStart(true /* play */);
mPausedByClient = false;
notifyListener(mSrcId, MEDIA2_STARTED, 0, 0);
}