diff options
author | Andy Hung <hunga@google.com> | 2015-04-01 01:41:41 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-04-01 01:41:41 +0000 |
commit | 7260af3af195da47cf9d5ad51cb854627f8fd672 (patch) | |
tree | e948ba71284ce1b2d415c0e427d8d039af9786c3 /media | |
parent | 253930b927d375413a42f170fa1ef8d98b8f7cb4 (diff) | |
parent | 5cbb5785a58655e21f5f7805274b8c78b986216b (diff) | |
download | frameworks_av-7260af3af195da47cf9d5ad51cb854627f8fd672.zip frameworks_av-7260af3af195da47cf9d5ad51cb854627f8fd672.tar.gz frameworks_av-7260af3af195da47cf9d5ad51cb854627f8fd672.tar.bz2 |
Merge "Reject sample rate changes for fast tracks"
Diffstat (limited to 'media')
-rw-r--r-- | media/libmedia/AudioTrack.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/media/libmedia/AudioTrack.cpp b/media/libmedia/AudioTrack.cpp index 98f64fe..ce30c62 100644 --- a/media/libmedia/AudioTrack.cpp +++ b/media/libmedia/AudioTrack.cpp @@ -667,14 +667,18 @@ void AudioTrack::getAuxEffectSendLevel(float* level) const status_t AudioTrack::setSampleRate(uint32_t rate) { - if (mIsTimed || isOffloadedOrDirect()) { + AutoMutex lock(mLock); + if (rate == mSampleRate) { + return NO_ERROR; + } + if (mIsTimed || isOffloadedOrDirect_l() || (mFlags & AUDIO_OUTPUT_FLAG_FAST)) { return INVALID_OPERATION; } - - AutoMutex lock(mLock); if (mOutput == AUDIO_IO_HANDLE_NONE) { return NO_INIT; } + // NOTE: it is theoretically possible, but highly unlikely, that a device change + // could mean a previously allowed sampling rate is no longer allowed. uint32_t afSamplingRate; if (AudioSystem::getSamplingRate(mOutput, &afSamplingRate) != NO_ERROR) { return NO_INIT; |