| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/alsa/audio_manager_alsa.h" | 5 #include "media/audio/alsa/audio_manager_alsa.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/environment.h" | 8 #include "base/environment.h" |
| 9 #include "base/files/file_path.h" | 9 #include "base/files/file_path.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 304 AudioParameters AudioManagerAlsa::GetPreferredOutputStreamParameters( | 304 AudioParameters AudioManagerAlsa::GetPreferredOutputStreamParameters( |
| 305 const std::string& output_device_id, | 305 const std::string& output_device_id, |
| 306 const AudioParameters& input_params) { | 306 const AudioParameters& input_params) { |
| 307 // TODO(tommi): Support |output_device_id|. | 307 // TODO(tommi): Support |output_device_id|. |
| 308 DLOG_IF(ERROR, !output_device_id.empty()) << "Not implemented!"; | 308 DLOG_IF(ERROR, !output_device_id.empty()) << "Not implemented!"; |
| 309 static const int kDefaultOutputBufferSize = 2048; | 309 static const int kDefaultOutputBufferSize = 2048; |
| 310 ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO; | 310 ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO; |
| 311 int sample_rate = kDefaultSampleRate; | 311 int sample_rate = kDefaultSampleRate; |
| 312 int buffer_size = kDefaultOutputBufferSize; | 312 int buffer_size = kDefaultOutputBufferSize; |
| 313 int bits_per_sample = 16; | 313 int bits_per_sample = 16; |
| 314 int input_channels = 0; |
| 314 if (input_params.IsValid()) { | 315 if (input_params.IsValid()) { |
| 315 // Some clients, such as WebRTC, have a more limited use case and work | 316 // Some clients, such as WebRTC, have a more limited use case and work |
| 316 // acceptably with a smaller buffer size. The check below allows clients | 317 // acceptably with a smaller buffer size. The check below allows clients |
| 317 // which want to try a smaller buffer size on Linux to do so. | 318 // which want to try a smaller buffer size on Linux to do so. |
| 318 // TODO(dalecurtis): This should include bits per channel and channel layout | 319 // TODO(dalecurtis): This should include bits per channel and channel layout |
| 319 // eventually. | 320 // eventually. |
| 320 sample_rate = input_params.sample_rate(); | 321 sample_rate = input_params.sample_rate(); |
| 321 bits_per_sample = input_params.bits_per_sample(); | 322 bits_per_sample = input_params.bits_per_sample(); |
| 322 channel_layout = input_params.channel_layout(); | 323 channel_layout = input_params.channel_layout(); |
| 324 input_channels = input_params.input_channels(); |
| 323 buffer_size = std::min(input_params.frames_per_buffer(), buffer_size); | 325 buffer_size = std::min(input_params.frames_per_buffer(), buffer_size); |
| 324 } | 326 } |
| 325 | 327 |
| 326 int user_buffer_size = GetUserBufferSize(); | 328 int user_buffer_size = GetUserBufferSize(); |
| 327 if (user_buffer_size) | 329 if (user_buffer_size) |
| 328 buffer_size = user_buffer_size; | 330 buffer_size = user_buffer_size; |
| 329 | 331 |
| 330 return AudioParameters( | 332 return AudioParameters( |
| 331 AudioParameters::AUDIO_PCM_LOW_LATENCY, channel_layout, | 333 AudioParameters::AUDIO_PCM_LOW_LATENCY, channel_layout, input_channels, |
| 332 sample_rate, bits_per_sample, buffer_size, AudioParameters::NO_EFFECTS); | 334 sample_rate, bits_per_sample, buffer_size, AudioParameters::NO_EFFECTS); |
| 333 } | 335 } |
| 334 | 336 |
| 335 AudioOutputStream* AudioManagerAlsa::MakeOutputStream( | 337 AudioOutputStream* AudioManagerAlsa::MakeOutputStream( |
| 336 const AudioParameters& params) { | 338 const AudioParameters& params) { |
| 337 std::string device_name = AlsaPcmOutputStream::kAutoSelectDevice; | 339 std::string device_name = AlsaPcmOutputStream::kAutoSelectDevice; |
| 338 if (CommandLine::ForCurrentProcess()->HasSwitch( | 340 if (CommandLine::ForCurrentProcess()->HasSwitch( |
| 339 switches::kAlsaOutputDevice)) { | 341 switches::kAlsaOutputDevice)) { |
| 340 device_name = CommandLine::ForCurrentProcess()->GetSwitchValueASCII( | 342 device_name = CommandLine::ForCurrentProcess()->GetSwitchValueASCII( |
| 341 switches::kAlsaOutputDevice); | 343 switches::kAlsaOutputDevice); |
| 342 } | 344 } |
| 343 return new AlsaPcmOutputStream(device_name, params, wrapper_.get(), this); | 345 return new AlsaPcmOutputStream(device_name, params, wrapper_.get(), this); |
| 344 } | 346 } |
| 345 | 347 |
| 346 AudioInputStream* AudioManagerAlsa::MakeInputStream( | 348 AudioInputStream* AudioManagerAlsa::MakeInputStream( |
| 347 const AudioParameters& params, const std::string& device_id) { | 349 const AudioParameters& params, const std::string& device_id) { |
| 348 std::string device_name = (device_id == AudioManagerBase::kDefaultDeviceId) ? | 350 std::string device_name = (device_id == AudioManagerBase::kDefaultDeviceId) ? |
| 349 AlsaPcmInputStream::kAutoSelectDevice : device_id; | 351 AlsaPcmInputStream::kAutoSelectDevice : device_id; |
| 350 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAlsaInputDevice)) { | 352 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAlsaInputDevice)) { |
| 351 device_name = CommandLine::ForCurrentProcess()->GetSwitchValueASCII( | 353 device_name = CommandLine::ForCurrentProcess()->GetSwitchValueASCII( |
| 352 switches::kAlsaInputDevice); | 354 switches::kAlsaInputDevice); |
| 353 } | 355 } |
| 354 | 356 |
| 355 return new AlsaPcmInputStream(this, device_name, params, wrapper_.get()); | 357 return new AlsaPcmInputStream(this, device_name, params, wrapper_.get()); |
| 356 } | 358 } |
| 357 | 359 |
| 358 } // namespace media | 360 } // namespace media |
| OLD | NEW |