summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice/MediaPlayerService.cpp
diff options
context:
space:
mode:
authorPreetam Singh Ranawat <apranawat@codeaurora.org>2015-08-12 12:11:46 -0700
committerEric Laurent <elaurent@google.com>2015-08-26 12:41:08 -0700
commit2e17eef829f1870d9bde963a356dfb11f120a6b5 (patch)
tree97bd31cddb60843f77dcb35d073eaee6b49e2bb1 /media/libmediaplayerservice/MediaPlayerService.cpp
parent44a63fa259233d09a4f5e2f30b498edc8ab9aff7 (diff)
downloadframeworks_av-2e17eef829f1870d9bde963a356dfb11f120a6b5.zip
frameworks_av-2e17eef829f1870d9bde963a356dfb11f120a6b5.tar.gz
frameworks_av-2e17eef829f1870d9bde963a356dfb11f120a6b5.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. Bug: 23221273 authored-by: Preetam Singh Ranawat <apranawat@codeaurora.org> Change-Id: I52761ccd854b66a7bc218e83c9b44598771c46f7
Diffstat (limited to 'media/libmediaplayerservice/MediaPlayerService.cpp')
-rw-r--r--media/libmediaplayerservice/MediaPlayerService.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/media/libmediaplayerservice/MediaPlayerService.cpp b/media/libmediaplayerservice/MediaPlayerService.cpp
index 56521a2..bcfd83a 100644
--- a/media/libmediaplayerservice/MediaPlayerService.cpp
+++ b/media/libmediaplayerservice/MediaPlayerService.cpp
@@ -1734,7 +1734,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;
@@ -1746,7 +1746,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);