diff options
| author | Eric Laurent <elaurent@google.com> | 2010-03-17 09:16:27 -0700 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-03-17 09:16:27 -0700 |
| commit | 4889fb75d463278241d5174baac05a41dbef25a8 (patch) | |
| tree | c719571fccc9cbacae416e112cdf8c67dd3c67b8 /media/libmedia | |
| parent | d246ca811575eee9122070648e93b7484f6edd81 (diff) | |
| parent | ef9500fe53b6ec67b610207832b52f8bfbb20cd5 (diff) | |
| download | frameworks_base-4889fb75d463278241d5174baac05a41dbef25a8.zip frameworks_base-4889fb75d463278241d5174baac05a41dbef25a8.tar.gz frameworks_base-4889fb75d463278241d5174baac05a41dbef25a8.tar.bz2 | |
Merge "Fix issue 2416481: Support Voice Dialer over BT SCO."
Diffstat (limited to 'media/libmedia')
| -rw-r--r-- | media/libmedia/AudioSystem.cpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/media/libmedia/AudioSystem.cpp b/media/libmedia/AudioSystem.cpp index 4b364f2..5e6ce42 100644 --- a/media/libmedia/AudioSystem.cpp +++ b/media/libmedia/AudioSystem.cpp @@ -358,7 +358,7 @@ unsigned int AudioSystem::getInputFramesLost(audio_io_handle_t ioHandle) { const sp<IAudioFlinger>& af = AudioSystem::get_audio_flinger(); unsigned int result = 0; if (af == 0) return result; - if (ioHandle == NULL) return result; + if (ioHandle == 0) return result; result = af->getInputFramesLost(ioHandle); return result; @@ -556,7 +556,18 @@ audio_io_handle_t AudioSystem::getOutput(stream_type stream, output_flags flags) { audio_io_handle_t output = 0; - if ((flags & AudioSystem::OUTPUT_FLAG_DIRECT) == 0) { + // Do not use stream to output map cache if the direct output + // flag is set or if we are likely to use a direct output + // (e.g voice call stream @ 8kHz could use BT SCO device and be routed to + // a direct output on some platforms). + // TODO: the output cache and stream to output mapping implementation needs to + // be reworked for proper operation with direct outputs. This code is too specific + // to the first use case we want to cover (Voice Recognition and Voice Dialer over + // Bluetooth SCO + if ((flags & AudioSystem::OUTPUT_FLAG_DIRECT) == 0 && + ((stream != AudioSystem::VOICE_CALL && stream != AudioSystem::BLUETOOTH_SCO) || + channels != AudioSystem::CHANNEL_OUT_MONO || + (samplingRate != 8000 && samplingRate != 16000))) { Mutex::Autolock _l(gLock); output = AudioSystem::gStreamOutputMap.valueFor(stream); LOGV_IF((output != 0), "getOutput() read %d from cache for stream %d", output, stream); |
