diff options
author | Wei Jia <wjia@google.com> | 2014-06-05 20:00:28 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-06-05 20:00:28 +0000 |
commit | 5981fc5acb23eecf659bed49f29354b440cbb68e (patch) | |
tree | bb1fd436e9fd4e2bfa995960c466ad4ea0c4215d /media | |
parent | 77d2881940c76c8b4a224e3bf0bba77a6206956c (diff) | |
parent | 704e72658b1082264a26a83c50046da34f07d1a1 (diff) | |
download | frameworks_av-5981fc5acb23eecf659bed49f29354b440cbb68e.zip frameworks_av-5981fc5acb23eecf659bed49f29354b440cbb68e.tar.gz frameworks_av-5981fc5acb23eecf659bed49f29354b440cbb68e.tar.bz2 |
Merge "Added paused state to NuPlayerDecoder"
Diffstat (limited to 'media')
-rw-r--r-- | media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp | 20 | ||||
-rw-r--r-- | media/libmediaplayerservice/nuplayer/NuPlayerDecoder.h | 2 |
2 files changed, 20 insertions, 2 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp index 469c9ca..cfbf282 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp @@ -37,6 +37,7 @@ NuPlayer::Decoder::Decoder( : mNotify(notify), mNativeWindow(nativeWindow), mBufferGeneration(0), + mPaused(true), mComponentName("decoder") { // Every decoder has its own looper because MediaCodec operations // are blocking, but NuPlayer needs asynchronous operations. @@ -112,6 +113,7 @@ void NuPlayer::Decoder::onConfigure(const sp<AMessage> &format) { mOutputBuffers.size()); requestCodecNotification(); + mPaused = false; } void NuPlayer::Decoder::requestCodecNotification() { @@ -352,6 +354,11 @@ void NuPlayer::Decoder::onFlush() { sp<AMessage> notify = mNotify->dup(); notify->setInt32("what", kWhatFlushCompleted); notify->post(); + mPaused = true; +} + +void NuPlayer::Decoder::onResume() { + mPaused = false; } void NuPlayer::Decoder::onShutdown() { @@ -380,6 +387,7 @@ void NuPlayer::Decoder::onShutdown() { sp<AMessage> notify = mNotify->dup(); notify->setInt32("what", kWhatShutdownCompleted); notify->post(); + mPaused = true; } void NuPlayer::Decoder::onMessageReceived(const sp<AMessage> &msg) { @@ -397,7 +405,9 @@ void NuPlayer::Decoder::onMessageReceived(const sp<AMessage> &msg) { case kWhatCodecNotify: { if (!isStaleReply(msg)) { - while (handleAnInputBuffer()) { + if (!mPaused) { + while (handleAnInputBuffer()) { + } } while (handleAnOutputBuffer()) { @@ -430,6 +440,12 @@ void NuPlayer::Decoder::onMessageReceived(const sp<AMessage> &msg) { break; } + case kWhatResume: + { + onResume(); + break; + } + case kWhatShutdown: { onShutdown(); @@ -447,7 +463,7 @@ void NuPlayer::Decoder::signalFlush() { } void NuPlayer::Decoder::signalResume() { - // nothing to do + (new AMessage(kWhatResume, id()))->post(); } void NuPlayer::Decoder::initiateShutdown() { diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.h b/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.h index 94243fc..2892584 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.h +++ b/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.h @@ -87,11 +87,13 @@ private: void onConfigure(const sp<AMessage> &format); void onFlush(); + void onResume(); void onInputBufferFilled(const sp<AMessage> &msg); void onRenderBuffer(const sp<AMessage> &msg); void onShutdown(); int32_t mBufferGeneration; + bool mPaused; AString mComponentName; bool supportsSeamlessAudioFormatChange(const sp<AMessage> &targetFormat) const; |