summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorAndy Hung <hunga@google.com>2015-03-27 18:39:59 -0700
committerAndy Hung <hunga@google.com>2015-03-31 15:31:40 -0700
commit5cbb5785a58655e21f5f7805274b8c78b986216b (patch)
treebeb100fe401a58aea703ba57875c81dba7133d38 /media
parent91e5e043d766e39b0840f2ca2e658e2fe58987e7 (diff)
downloadframeworks_av-5cbb5785a58655e21f5f7805274b8c78b986216b.zip
frameworks_av-5cbb5785a58655e21f5f7805274b8c78b986216b.tar.gz
frameworks_av-5cbb5785a58655e21f5f7805274b8c78b986216b.tar.bz2
Reject sample rate changes for fast tracks
This is needed for a SoundPool fix. Bug: 19970735 Change-Id: I46b69e059aabf0d06b16b31ea436bb71f7146750
Diffstat (limited to 'media')
-rw-r--r--media/libmedia/AudioTrack.cpp10
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;