diff options
author | Chong Zhang <chz@google.com> | 2015-05-07 22:42:17 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-05-07 22:42:18 +0000 |
commit | e5e9a0df67ae23d16bf48e4a8fd652684434a3b6 (patch) | |
tree | d62d2d9b56d6fba9c8acb7948ca6561b041d8401 /media/libmediaplayerservice/nuplayer | |
parent | f52b2284405ec1d8941334718f580157417f9d60 (diff) | |
parent | 8a048338d9291b2db1b3a325fff58cb1aa69f04d (diff) | |
download | frameworks_av-e5e9a0df67ae23d16bf48e4a8fd652684434a3b6.zip frameworks_av-e5e9a0df67ae23d16bf48e4a8fd652684434a3b6.tar.gz frameworks_av-e5e9a0df67ae23d16bf48e4a8fd652684434a3b6.tar.bz2 |
Merge "nuplayer: fixes for subtitle pause/resume" into mnc-dev
Diffstat (limited to 'media/libmediaplayerservice/nuplayer')
-rw-r--r-- | media/libmediaplayerservice/nuplayer/NuPlayer.cpp | 20 | ||||
-rw-r--r-- | media/libmediaplayerservice/nuplayer/NuPlayer.h | 3 |
2 files changed, 18 insertions, 5 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp index a118dec..1fb4365 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp @@ -189,7 +189,8 @@ NuPlayer::NuPlayer() mVideoFpsHint(-1.f), mStarted(false), mPaused(false), - mPausedByClient(false) { + mPausedByClient(false), + mPausedForBuffering(false) { clearFlushComplete(); } @@ -683,7 +684,10 @@ void NuPlayer::onMessageReceived(const sp<AMessage> &msg) { { ALOGV("kWhatStart"); if (mStarted) { - onResume(); + // do not resume yet if the source is still buffering + if (!mPausedForBuffering) { + onResume(); + } } else { onStart(); } @@ -2007,9 +2011,10 @@ void NuPlayer::onSourceNotify(const sp<AMessage> &msg) { case Source::kWhatPauseOnBufferingStart: { // ignore if not playing - if (mStarted && !mPausedByClient) { + if (mStarted) { ALOGI("buffer low, pausing..."); + mPausedForBuffering = true; onPause(); } // fall-thru @@ -2024,10 +2029,15 @@ void NuPlayer::onSourceNotify(const sp<AMessage> &msg) { case Source::kWhatResumeOnBufferingEnd: { // ignore if not playing - if (mStarted && !mPausedByClient) { + if (mStarted) { ALOGI("buffer ready, resuming..."); - onResume(); + mPausedForBuffering = false; + + // do not resume yet if client didn't unpause + if (!mPausedByClient) { + onResume(); + } } // fall-thru } diff --git a/media/libmediaplayerservice/nuplayer/NuPlayer.h b/media/libmediaplayerservice/nuplayer/NuPlayer.h index 6b7d71e..df9debc 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayer.h +++ b/media/libmediaplayerservice/nuplayer/NuPlayer.h @@ -203,6 +203,9 @@ private: // still become true, when we pause internally due to buffering. bool mPausedByClient; + // Pause state as requested by source (internally) due to buffering + bool mPausedForBuffering; + inline const sp<DecoderBase> &getDecoder(bool audio) { return audio ? mAudioDecoder : mVideoDecoder; } |