MediaPlayer: fix state for setPlaybackParams.
Bug: 29032949
Change-Id: I7580a04cc03f96109a770f95abd3fb884c810103
diff --git a/media/libmedia/mediaplayer.cpp b/media/libmedia/mediaplayer.cpp
index 2795101..4c98d66 100644
--- a/media/libmedia/mediaplayer.cpp
+++ b/media/libmedia/mediaplayer.cpp
@@ -396,11 +396,22 @@
}
Mutex::Autolock _l(mLock);
if (mPlayer == 0) return INVALID_OPERATION;
+
+ if (rate.mSpeed != 0.f && !(mCurrentState & MEDIA_PLAYER_STARTED)
+ && (mCurrentState & (MEDIA_PLAYER_PREPARED | MEDIA_PLAYER_PAUSED
+ | MEDIA_PLAYER_PLAYBACK_COMPLETE))) {
+ mPlayer->setLooping(mLoop);
+ mPlayer->setVolume(mLeftVolume, mRightVolume);
+ mPlayer->setAuxEffectSendLevel(mSendLevel);
+ }
+
status_t err = mPlayer->setPlaybackSettings(rate);
if (err == OK) {
if (rate.mSpeed == 0.f && mCurrentState == MEDIA_PLAYER_STARTED) {
mCurrentState = MEDIA_PLAYER_PAUSED;
- } else if (rate.mSpeed != 0.f && mCurrentState == MEDIA_PLAYER_PAUSED) {
+ } else if (rate.mSpeed != 0.f
+ && (mCurrentState & (MEDIA_PLAYER_PREPARED | MEDIA_PLAYER_PAUSED
+ | MEDIA_PLAYER_PLAYBACK_COMPLETE))) {
mCurrentState = MEDIA_PLAYER_STARTED;
}
}