summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/AwesomePlayer.cpp
diff options
context:
space:
mode:
authorEric Laurent <elaurent@google.com>2012-04-13 16:50:19 -0700
committerEric Laurent <elaurent@google.com>2012-04-20 14:17:02 -0700
commit1948eb3ea6eee336e8cdab9b0c693f93f5f19993 (patch)
tree448eed49a4ba18fb1ab4f2fb1b2c0d5cef6d242f /media/libstagefright/AwesomePlayer.cpp
parent21e8c50bd13ebe44f3088e26c9c6df0e163c469c (diff)
downloadframeworks_av-1948eb3ea6eee336e8cdab9b0c693f93f5f19993.zip
frameworks_av-1948eb3ea6eee336e8cdab9b0c693f93f5f19993.tar.gz
frameworks_av-1948eb3ea6eee336e8cdab9b0c693f93f5f19993.tar.bz2
Add support for deep audio buffers
Allow AudioSink to use deep audio buffering when the source is audio only and its duration is more than a certain threshold. This helps improve battery life but implies higher audio latency. Change-Id: Ie79915b61c370292f05aabda9779356570e03cbb
Diffstat (limited to 'media/libstagefright/AwesomePlayer.cpp')
-rw-r--r--media/libstagefright/AwesomePlayer.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp
index b67476b..b15cb67 100644
--- a/media/libstagefright/AwesomePlayer.cpp
+++ b/media/libstagefright/AwesomePlayer.cpp
@@ -870,7 +870,18 @@ status_t AwesomePlayer::play_l() {
if (mAudioSource != NULL) {
if (mAudioPlayer == NULL) {
if (mAudioSink != NULL) {
- mAudioPlayer = new AudioPlayer(mAudioSink, this);
+ bool allowDeepBuffering;
+ int64_t cachedDurationUs;
+ bool eos;
+ if (mVideoSource == NULL && (mDurationUs > AUDIO_SINK_MIN_DEEP_BUFFER_DURATION_US ||
+ getCachedDuration_l(&cachedDurationUs, &eos) &&
+ cachedDurationUs > AUDIO_SINK_MIN_DEEP_BUFFER_DURATION_US)) {
+ allowDeepBuffering = true;
+ } else {
+ allowDeepBuffering = false;
+ }
+
+ mAudioPlayer = new AudioPlayer(mAudioSink, allowDeepBuffering, this);
mAudioPlayer->setSource(mAudioSource);
mTimeSource = mAudioPlayer;