summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authordalecurtis@chromium.org <dalecurtis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-09 00:06:32 +0000
committerdalecurtis@chromium.org <dalecurtis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-09 00:06:32 +0000
commit1a7bacd216d783755f5336c4b0ce9259dc76d3ce (patch)
tree723b6388b989088c85de704aaba510c36249131c /media
parentc7c0c92c4d53cc26080e3358b61f7ecea809ecaa (diff)
downloadchromium_src-1a7bacd216d783755f5336c4b0ce9259dc76d3ce.zip
chromium_src-1a7bacd216d783755f5336c4b0ce9259dc76d3ce.tar.gz
chromium_src-1a7bacd216d783755f5336c4b0ce9259dc76d3ce.tar.bz2
Provide fake audio parameters when devices don't exist.
These methods should always return valid parameters, even if a device doesn't exist. Output code will automatically fall back to a fake path at a later time if those parameters are used to open a stream. Input code will fail because no input devices can be enumerated. BUG=331675 TEST=no more crashes. Review URL: https://codereview.chromium.org/127363002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@243704 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media')
-rw-r--r--media/audio/mac/audio_manager_mac.cc19
1 files changed, 11 insertions, 8 deletions
diff --git a/media/audio/mac/audio_manager_mac.cc b/media/audio/mac/audio_manager_mac.cc
index 1dca1c3..75af516 100644
--- a/media/audio/mac/audio_manager_mac.cc
+++ b/media/audio/mac/audio_manager_mac.cc
@@ -401,16 +401,12 @@ void AudioManagerMac::GetAudioOutputDeviceNames(
AudioParameters AudioManagerMac::GetInputStreamParameters(
const std::string& device_id) {
- // Due to the sharing of the input and output buffer sizes, we need to choose
- // the input buffer size based on the output sample rate. See
- // http://crbug.com/154352.
- const int buffer_size = ChooseBufferSize(
- AUAudioOutputStream::HardwareSampleRate());
-
AudioDeviceID device = GetAudioDeviceIdByUId(true, device_id);
if (device == kAudioObjectUnknown) {
DLOG(ERROR) << "Invalid device " << device_id;
- return AudioParameters();
+ return AudioParameters(
+ AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO,
+ kFallbackSampleRate, 16, ChooseBufferSize(kFallbackSampleRate));
}
int channels = 0;
@@ -427,6 +423,11 @@ AudioParameters AudioManagerMac::GetInputStreamParameters(
if (!sample_rate)
sample_rate = kFallbackSampleRate;
+ // Due to the sharing of the input and output buffer sizes, we need to choose
+ // the input buffer size based on the output sample rate. See
+ // http://crbug.com/154352.
+ const int buffer_size = ChooseBufferSize(sample_rate);
+
// TODO(xians): query the native channel layout for the specific device.
return AudioParameters(
AudioParameters::AUDIO_PCM_LOW_LATENCY, channel_layout,
@@ -646,7 +647,9 @@ AudioParameters AudioManagerMac::GetPreferredOutputStreamParameters(
AudioDeviceID device = GetAudioDeviceIdByUId(false, output_device_id);
if (device == kAudioObjectUnknown) {
DLOG(ERROR) << "Invalid output device " << output_device_id;
- return AudioParameters();
+ return input_params.IsValid() ? input_params : AudioParameters(
+ AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO,
+ kFallbackSampleRate, 16, ChooseBufferSize(kFallbackSampleRate));
}
int hardware_channels = 2;