diff options
author | Glenn Kasten <gkasten@google.com> | 2012-01-23 13:58:49 -0800 |
---|---|---|
committer | Glenn Kasten <gkasten@google.com> | 2012-01-26 16:50:19 -0800 |
commit | 0f0fbd9441f40c6f99470b89774e397f99bf61eb (patch) | |
tree | adf3ce158913a54fe6526ada1220424fe9de6d68 /services/audioflinger | |
parent | 0f73d75da069e8af200092c0c6a8487108fdcbfb (diff) | |
download | frameworks_base-0f0fbd9441f40c6f99470b89774e397f99bf61eb.zip frameworks_base-0f0fbd9441f40c6f99470b89774e397f99bf61eb.tar.gz frameworks_base-0f0fbd9441f40c6f99470b89774e397f99bf61eb.tar.bz2 |
Use audio_source_t consistently
Was a mix of audio_source_t, uint8_t, and int.
Related fixes:
- fix comments in MediaRecorder.java
- AudioPolicyService server side was not checking source parameter at
all, so if the client wrapper was bypassed, invalid values could be
passed into audio HAL
- JNI android_media_AudioRecord_setup was checking source for positive
values, but not negative values. This test is redundant, since already
checked at Java and now checked by AudioPolicyService also, but might
as well make it correct.
Change-Id: Ie5e25d646dcd59a86d7985aa46cfcb4a1ba64a4a
Diffstat (limited to 'services/audioflinger')
-rw-r--r-- | services/audioflinger/AudioPolicyService.cpp | 8 | ||||
-rw-r--r-- | services/audioflinger/AudioPolicyService.h | 2 |
2 files changed, 7 insertions, 3 deletions
diff --git a/services/audioflinger/AudioPolicyService.cpp b/services/audioflinger/AudioPolicyService.cpp index 28b1c89..2df1385 100644 --- a/services/audioflinger/AudioPolicyService.cpp +++ b/services/audioflinger/AudioPolicyService.cpp @@ -287,7 +287,7 @@ void AudioPolicyService::releaseOutput(audio_io_handle_t output) mpAudioPolicy->release_output(mpAudioPolicy, output); } -audio_io_handle_t AudioPolicyService::getInput(int inputSource, +audio_io_handle_t AudioPolicyService::getInput(audio_source_t inputSource, uint32_t samplingRate, audio_format_t format, uint32_t channels, @@ -297,6 +297,10 @@ audio_io_handle_t AudioPolicyService::getInput(int inputSource, if (mpAudioPolicy == NULL) { return 0; } + // already checked by client, but double-check in case the client wrapper is bypassed + if (uint32_t(inputSource) >= AUDIO_SOURCE_CNT) { + return 0; + } Mutex::Autolock _l(mLock); audio_io_handle_t input = mpAudioPolicy->get_input(mpAudioPolicy, inputSource, samplingRate, format, channels, acoustics); @@ -305,7 +309,7 @@ audio_io_handle_t AudioPolicyService::getInput(int inputSource, return input; } // create audio pre processors according to input source - ssize_t index = mInputSources.indexOfKey((audio_source_t)inputSource); + ssize_t index = mInputSources.indexOfKey(inputSource); if (index < 0) { return input; } diff --git a/services/audioflinger/AudioPolicyService.h b/services/audioflinger/AudioPolicyService.h index 9811670..3c0f5ed 100644 --- a/services/audioflinger/AudioPolicyService.h +++ b/services/audioflinger/AudioPolicyService.h @@ -74,7 +74,7 @@ public: audio_stream_type_t stream, int session = 0); virtual void releaseOutput(audio_io_handle_t output); - virtual audio_io_handle_t getInput(int inputSource, + virtual audio_io_handle_t getInput(audio_source_t inputSource, uint32_t samplingRate = 0, audio_format_t format = AUDIO_FORMAT_DEFAULT, uint32_t channels = 0, |