summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice/MediaPlayerService.cpp
diff options
context:
space:
mode:
authorPreetam Singh Ranawat <apranawat@codeaurora.org>2015-08-11 17:34:53 +0530
committerLinux Build Service Account <lnxbuild@localhost>2015-10-06 03:24:42 -0600
commit43958295fe856f40f596c7a51885730ff4589f21 (patch)
tree428879bc7fbafc79806c38922a406cf3bc98abef /media/libmediaplayerservice/MediaPlayerService.cpp
parent309e01517353743be4871101fc2f4acae48ae1de (diff)
downloadframeworks_av-43958295fe856f40f596c7a51885730ff4589f21.zip
frameworks_av-43958295fe856f40f596c7a51885730ff4589f21.tar.gz
frameworks_av-43958295fe856f40f596c7a51885730ff4589f21.tar.bz2
AudioSink: Fix for gapless offload playback
Gapless mode is not working for offload playback due to mismatch in flags of current track and next track to be played. AUDIO_OUTPUT_FLAG_DIRECT is added in AudioTrack flags for current track which does not match exactly with requested flags for next track. Because of this mismatch, reuse of the AudioTrack is not allowed. To fix this, update audio sink flags with requested flags and use track flags only to setPlaybackRate if AUDIO_OUTPUT_FLAG_DIRECT flag is not set Change-Id: I52761ccd854b66a7bc218e83c9b44598771c46f7
Diffstat (limited to 'media/libmediaplayerservice/MediaPlayerService.cpp')
-rw-r--r--[-rwxr-xr-x]media/libmediaplayerservice/MediaPlayerService.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/media/libmediaplayerservice/MediaPlayerService.cpp b/media/libmediaplayerservice/MediaPlayerService.cpp
index 25839df..da72a55 100755..100644
--- a/media/libmediaplayerservice/MediaPlayerService.cpp
+++ b/media/libmediaplayerservice/MediaPlayerService.cpp
@@ -1743,7 +1743,7 @@ status_t MediaPlayerService::AudioOutput::open(
t->setVolume(mLeftVolume, mRightVolume);
mSampleRateHz = sampleRate;
- mFlags = t->getFlags(); // we suggest the flags above, but new AudioTrack() may not grant it.
+ mFlags = flags;
mMsecsPerFrame = 1E3f / (mPlaybackRate.mSpeed * sampleRate);
mFrameSize = t->frameSize();
uint32_t pos;
@@ -1755,7 +1755,7 @@ status_t MediaPlayerService::AudioOutput::open(
status_t res = NO_ERROR;
// Note some output devices may give us a direct track even though we don't specify it.
// Example: Line application b/17459982.
- if ((mFlags & (AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD | AUDIO_OUTPUT_FLAG_DIRECT)) == 0) {
+ if ((t->getFlags() & (AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD | AUDIO_OUTPUT_FLAG_DIRECT)) == 0) {
res = t->setPlaybackRate(mPlaybackRate);
if (res == NO_ERROR) {
t->setAuxEffectSendLevel(mSendLevel);