summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice/MediaPlayerService.cpp
diff options
context:
space:
mode:
authorWei Jia <wjia@google.com>2015-06-09 11:59:33 -0700
committerWei Jia <wjia@google.com>2015-06-09 12:04:09 -0700
commit0162d00a38cdb5f4eba5dfe8cd272f69ddbc8c21 (patch)
tree23e84b8e8819c1a2106f18f5957815e3ca786014 /media/libmediaplayerservice/MediaPlayerService.cpp
parent9cf332ca156132931da397bae94b89debb40de10 (diff)
downloadframeworks_av-0162d00a38cdb5f4eba5dfe8cd272f69ddbc8c21.zip
frameworks_av-0162d00a38cdb5f4eba5dfe8cd272f69ddbc8c21.tar.gz
frameworks_av-0162d00a38cdb5f4eba5dfe8cd272f69ddbc8c21.tar.bz2
AudioSink: use flags granted by AudioTrack, instead of the requested flags.
Do not call AudioTrack::setPlaybackRate when DIRECT flag is set. Bug: 17459982 Change-Id: Ib8fb07be72558234519590bcc3bb88c4f6edfa37
Diffstat (limited to 'media/libmediaplayerservice/MediaPlayerService.cpp')
-rw-r--r--media/libmediaplayerservice/MediaPlayerService.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/media/libmediaplayerservice/MediaPlayerService.cpp b/media/libmediaplayerservice/MediaPlayerService.cpp
index 7c40121..4e57813 100644
--- a/media/libmediaplayerservice/MediaPlayerService.cpp
+++ b/media/libmediaplayerservice/MediaPlayerService.cpp
@@ -1669,7 +1669,7 @@ status_t MediaPlayerService::AudioOutput::open(
t->setVolume(mLeftVolume, mRightVolume);
mSampleRateHz = sampleRate;
- mFlags = flags;
+ mFlags = t->getFlags(); // we suggest the flags above, but new AudioTrack() may not grant it.
mMsecsPerFrame = 1E3f / (mPlaybackRate.mSpeed * sampleRate);
uint32_t pos;
if (t->getPosition(&pos) == OK) {
@@ -1678,7 +1678,9 @@ status_t MediaPlayerService::AudioOutput::open(
mTrack = t;
status_t res = NO_ERROR;
- if ((flags & AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD) == 0) {
+ // 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) {
res = t->setPlaybackRate(mPlaybackRate);
if (res == NO_ERROR) {
t->setAuxEffectSendLevel(mSendLevel);