OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "media/audio/android/audio_manager_android.h" | 5 #include "media/audio/android/audio_manager_android.h" |
6 | 6 |
7 #include "base/android/build_info.h" | 7 #include "base/android/build_info.h" |
8 #include "base/android/jni_array.h" | 8 #include "base/android/jni_array.h" |
9 #include "base/android/jni_string.h" | 9 #include "base/android/jni_string.h" |
10 #include "base/android/scoped_java_ref.h" | 10 #include "base/android/scoped_java_ref.h" |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
131 buffer_size = buffer_size <= 0 ? kDefaultInputBufferSize : buffer_size; | 131 buffer_size = buffer_size <= 0 ? kDefaultInputBufferSize : buffer_size; |
132 int effects = AudioParameters::NO_EFFECTS; | 132 int effects = AudioParameters::NO_EFFECTS; |
133 effects |= Java_AudioManagerAndroid_shouldUseAcousticEchoCanceler(env) ? | 133 effects |= Java_AudioManagerAndroid_shouldUseAcousticEchoCanceler(env) ? |
134 AudioParameters::ECHO_CANCELLER : AudioParameters::NO_EFFECTS; | 134 AudioParameters::ECHO_CANCELLER : AudioParameters::NO_EFFECTS; |
135 | 135 |
136 int user_buffer_size = GetUserBufferSize(); | 136 int user_buffer_size = GetUserBufferSize(); |
137 if (user_buffer_size) | 137 if (user_buffer_size) |
138 buffer_size = user_buffer_size; | 138 buffer_size = user_buffer_size; |
139 | 139 |
140 AudioParameters params( | 140 AudioParameters params( |
141 AudioParameters::AUDIO_PCM_LOW_LATENCY, channel_layout, 0, | 141 AudioParameters::AUDIO_PCM_LOW_LATENCY, channel_layout, |
142 GetNativeOutputSampleRate(), 16, buffer_size, effects); | 142 GetNativeOutputSampleRate(), 16, buffer_size, effects); |
143 return params; | 143 return params; |
144 } | 144 } |
145 | 145 |
146 AudioOutputStream* AudioManagerAndroid::MakeAudioOutputStream( | 146 AudioOutputStream* AudioManagerAndroid::MakeAudioOutputStream( |
147 const AudioParameters& params, | 147 const AudioParameters& params, |
148 const std::string& device_id) { | 148 const std::string& device_id) { |
149 DCHECK(GetTaskRunner()->BelongsToCurrentThread()); | 149 DCHECK(GetTaskRunner()->BelongsToCurrentThread()); |
150 AudioOutputStream* stream = | 150 AudioOutputStream* stream = |
151 AudioManagerBase::MakeAudioOutputStream(params, std::string()); | 151 AudioManagerBase::MakeAudioOutputStream(params, std::string()); |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
267 AudioParameters AudioManagerAndroid::GetPreferredOutputStreamParameters( | 267 AudioParameters AudioManagerAndroid::GetPreferredOutputStreamParameters( |
268 const std::string& output_device_id, | 268 const std::string& output_device_id, |
269 const AudioParameters& input_params) { | 269 const AudioParameters& input_params) { |
270 // TODO(tommi): Support |output_device_id|. | 270 // TODO(tommi): Support |output_device_id|. |
271 DCHECK(GetTaskRunner()->BelongsToCurrentThread()); | 271 DCHECK(GetTaskRunner()->BelongsToCurrentThread()); |
272 DLOG_IF(ERROR, !output_device_id.empty()) << "Not implemented!"; | 272 DLOG_IF(ERROR, !output_device_id.empty()) << "Not implemented!"; |
273 ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO; | 273 ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO; |
274 int sample_rate = GetNativeOutputSampleRate(); | 274 int sample_rate = GetNativeOutputSampleRate(); |
275 int buffer_size = GetOptimalOutputFrameSize(sample_rate, 2); | 275 int buffer_size = GetOptimalOutputFrameSize(sample_rate, 2); |
276 int bits_per_sample = 16; | 276 int bits_per_sample = 16; |
277 int input_channels = 0; | |
278 if (input_params.IsValid()) { | 277 if (input_params.IsValid()) { |
279 // Use the client's input parameters if they are valid. | 278 // Use the client's input parameters if they are valid. |
280 sample_rate = input_params.sample_rate(); | 279 sample_rate = input_params.sample_rate(); |
281 bits_per_sample = input_params.bits_per_sample(); | 280 bits_per_sample = input_params.bits_per_sample(); |
282 channel_layout = input_params.channel_layout(); | 281 channel_layout = input_params.channel_layout(); |
283 input_channels = input_params.input_channels(); | |
284 buffer_size = GetOptimalOutputFrameSize( | 282 buffer_size = GetOptimalOutputFrameSize( |
285 sample_rate, ChannelLayoutToChannelCount(channel_layout)); | 283 sample_rate, ChannelLayoutToChannelCount(channel_layout)); |
286 } | 284 } |
287 | 285 |
288 int user_buffer_size = GetUserBufferSize(); | 286 int user_buffer_size = GetUserBufferSize(); |
289 if (user_buffer_size) | 287 if (user_buffer_size) |
290 buffer_size = user_buffer_size; | 288 buffer_size = user_buffer_size; |
291 | 289 |
292 return AudioParameters( | 290 return AudioParameters( |
293 AudioParameters::AUDIO_PCM_LOW_LATENCY, channel_layout, input_channels, | 291 AudioParameters::AUDIO_PCM_LOW_LATENCY, channel_layout, |
294 sample_rate, bits_per_sample, buffer_size, AudioParameters::NO_EFFECTS); | 292 sample_rate, bits_per_sample, buffer_size, AudioParameters::NO_EFFECTS); |
295 } | 293 } |
296 | 294 |
297 bool AudioManagerAndroid::HasNoAudioInputStreams() { | 295 bool AudioManagerAndroid::HasNoAudioInputStreams() { |
298 return input_stream_count() == 0; | 296 return input_stream_count() == 0; |
299 } | 297 } |
300 | 298 |
301 void AudioManagerAndroid::InitializeOnAudioThread() { | 299 void AudioManagerAndroid::InitializeOnAudioThread() { |
302 DCHECK(GetTaskRunner()->BelongsToCurrentThread()); | 300 DCHECK(GetTaskRunner()->BelongsToCurrentThread()); |
303 | 301 |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
377 | 375 |
378 void AudioManagerAndroid::DoSetMuteOnAudioThread(bool muted) { | 376 void AudioManagerAndroid::DoSetMuteOnAudioThread(bool muted) { |
379 DCHECK(GetTaskRunner()->BelongsToCurrentThread()); | 377 DCHECK(GetTaskRunner()->BelongsToCurrentThread()); |
380 for (OutputStreams::iterator it = streams_.begin(); | 378 for (OutputStreams::iterator it = streams_.begin(); |
381 it != streams_.end(); ++it) { | 379 it != streams_.end(); ++it) { |
382 (*it)->SetMute(muted); | 380 (*it)->SetMute(muted); |
383 } | 381 } |
384 } | 382 } |
385 | 383 |
386 } // namespace media | 384 } // namespace media |
OLD | NEW |