diff options
author | Chong Zhang <chz@google.com> | 2015-07-14 15:58:51 -0700 |
---|---|---|
committer | Chong Zhang <chz@google.com> | 2015-07-14 18:28:36 -0700 |
commit | fcf044a9c5624395d24eb6181e67163ce169458b (patch) | |
tree | 19a4b1e23b34fbf68b0cf1a861f476607d9113d9 /media/libmediaplayerservice/nuplayer/GenericSource.cpp | |
parent | 54c0659b9efa72d11997c590c4d377c44789c7fd (diff) | |
download | frameworks_av-fcf044a9c5624395d24eb6181e67163ce169458b.zip frameworks_av-fcf044a9c5624395d24eb6181e67163ce169458b.tar.gz frameworks_av-fcf044a9c5624395d24eb6181e67163ce169458b.tar.bz2 |
NuPlayer: pull more video buffers in advance in GenericSource
pull 4 video buffers at a time, and start pulling when we're down
to 1 buffers to avoid starving the decoder.
bug: 22320866
Change-Id: I10914dc092f3830ecb6296e2d9ebf9064ff7a5dc
Diffstat (limited to 'media/libmediaplayerservice/nuplayer/GenericSource.cpp')
-rw-r--r-- | media/libmediaplayerservice/nuplayer/GenericSource.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/media/libmediaplayerservice/nuplayer/GenericSource.cpp b/media/libmediaplayerservice/nuplayer/GenericSource.cpp index 64d172e..7dc9be7 100644 --- a/media/libmediaplayerservice/nuplayer/GenericSource.cpp +++ b/media/libmediaplayerservice/nuplayer/GenericSource.cpp @@ -1005,7 +1005,9 @@ status_t NuPlayer::GenericSource::dequeueAccessUnit( status_t result = track->mPackets->dequeueAccessUnit(accessUnit); - if (!track->mPackets->hasBufferAvailable(&finalResult)) { + // start pulling in more buffers if we only have one (or no) buffer left + // so that decoder has less chance of being starved + if (track->mPackets->getAvailableBufferCount(&finalResult) < 2) { postReadBuffer(audio? MEDIA_TRACK_TYPE_AUDIO : MEDIA_TRACK_TYPE_VIDEO); } @@ -1458,6 +1460,8 @@ void NuPlayer::GenericSource::readBuffer( track = &mVideoTrack; if (mIsWidevine) { maxBuffers = 2; + } else { + maxBuffers = 4; } break; case MEDIA_TRACK_TYPE_AUDIO: |