summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/AudioPlayer.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/AudioPlayer.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/AudioPlayer.cpp')
-rw-r--r--media/libstagefright/AudioPlayer.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/media/libstagefright/AudioPlayer.cpp b/media/libstagefright/AudioPlayer.cpp
index 468fe2c..2e0b013 100644
--- a/media/libstagefright/AudioPlayer.cpp
+++ b/media/libstagefright/AudioPlayer.cpp
@@ -33,6 +33,7 @@ namespace android {
AudioPlayer::AudioPlayer(
const sp<MediaPlayerBase::AudioSink> &audioSink,
+ bool allowDeepBuffering,
AwesomePlayer *observer)
: mAudioTrack(NULL),
mInputBuffer(NULL),
@@ -50,6 +51,7 @@ AudioPlayer::AudioPlayer(
mFirstBufferResult(OK),
mFirstBuffer(NULL),
mAudioSink(audioSink),
+ mAllowDeepBuffering(allowDeepBuffering),
mObserver(observer) {
}
@@ -120,10 +122,15 @@ status_t AudioPlayer::start(bool sourceAlreadyStarted) {
}
if (mAudioSink.get() != NULL) {
+
status_t err = mAudioSink->open(
mSampleRate, numChannels, channelMask, AUDIO_FORMAT_PCM_16_BIT,
DEFAULT_AUDIOSINK_BUFFERCOUNT,
- &AudioPlayer::AudioSinkCallback, this);
+ &AudioPlayer::AudioSinkCallback,
+ this,
+ (mAllowDeepBuffering ?
+ AUDIO_OUTPUT_FLAG_DEEP_BUFFER :
+ AUDIO_OUTPUT_FLAG_NONE));
if (err != OK) {
if (mFirstBuffer != NULL) {
mFirstBuffer->release();