summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice/nuplayer/GenericSource.cpp
diff options
context:
space:
mode:
authorChong Zhang <chz@google.com>2015-07-14 15:58:51 -0700
committerChong Zhang <chz@google.com>2015-07-14 18:28:36 -0700
commitfcf044a9c5624395d24eb6181e67163ce169458b (patch)
tree19a4b1e23b34fbf68b0cf1a861f476607d9113d9 /media/libmediaplayerservice/nuplayer/GenericSource.cpp
parent54c0659b9efa72d11997c590c4d377c44789c7fd (diff)
downloadframeworks_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.cpp6
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: