diff options
author | Chong Zhang <chz@google.com> | 2015-04-17 15:49:06 -0700 |
---|---|---|
committer | Chong Zhang <chz@google.com> | 2015-04-17 15:53:17 -0700 |
commit | 3b032b3865fd93173aadca0591eeea32853206f9 (patch) | |
tree | fdc80def5b8a99b7360230497758a973e5eacbc2 /media/libmediaplayerservice/nuplayer/NuPlayerDecoderPassThrough.cpp | |
parent | 2170233c49e50f3986cdc4f726016d6003cb5b8e (diff) | |
download | frameworks_av-3b032b3865fd93173aadca0591eeea32853206f9.zip frameworks_av-3b032b3865fd93173aadca0591eeea32853206f9.tar.gz frameworks_av-3b032b3865fd93173aadca0591eeea32853206f9.tar.bz2 |
NuPlayer: queue a deferred scan sources when flushing during scan
also refactor code to move scheduleRequestBuffers to decoder base.
bug: 20267388
Change-Id: I48f16adc6b4d4008f8fcda8b3b01c595ad199f8b
Diffstat (limited to 'media/libmediaplayerservice/nuplayer/NuPlayerDecoderPassThrough.cpp')
-rw-r--r-- | media/libmediaplayerservice/nuplayer/NuPlayerDecoderPassThrough.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerDecoderPassThrough.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerDecoderPassThrough.cpp index 563de5e..fdb9039 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayerDecoderPassThrough.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayerDecoderPassThrough.cpp @@ -113,7 +113,10 @@ bool NuPlayer::DecoderPassThrough::isDoneFetching() const { return mCachedBytes >= kMaxCachedBytes || mReachedEOS || mPaused; } -void NuPlayer::DecoderPassThrough::doRequestBuffers() { +/* + * returns true if we should request more data + */ +bool NuPlayer::DecoderPassThrough::doRequestBuffers() { status_t err = OK; while (!isDoneFetching()) { sp<AMessage> msg = new AMessage(); @@ -126,10 +129,8 @@ void NuPlayer::DecoderPassThrough::doRequestBuffers() { onInputBufferFetched(msg); } - if (err == -EWOULDBLOCK - && mSource->feedMoreTSData() == OK) { - scheduleRequestBuffers(); - } + return err == -EWOULDBLOCK + && mSource->feedMoreTSData() == OK; } status_t NuPlayer::DecoderPassThrough::dequeueAccessUnit(sp<ABuffer> *accessUnit) { |