From 1948eb3ea6eee336e8cdab9b0c693f93f5f19993 Mon Sep 17 00:00:00 2001 From: Eric Laurent Date: Fri, 13 Apr 2012 16:50:19 -0700 Subject: 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 --- media/libstagefright/AudioPlayer.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'media/libstagefright/AudioPlayer.cpp') 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 &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(); -- cgit v1.1