diff options
author | Preetam Singh Ranawat <apranawat@codeaurora.org> | 2015-08-12 12:11:46 -0700 |
---|---|---|
committer | Eric Laurent <elaurent@google.com> | 2015-08-26 12:41:08 -0700 |
commit | 2e17eef829f1870d9bde963a356dfb11f120a6b5 (patch) | |
tree | 97bd31cddb60843f77dcb35d073eaee6b49e2bb1 /media/libmediaplayerservice/MediaPlayerService.cpp | |
parent | 44a63fa259233d09a4f5e2f30b498edc8ab9aff7 (diff) | |
download | frameworks_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.cpp | 4 |
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); |