summaryrefslogtreecommitdiffstats
path: root/media/audio/mac/audio_manager_mac.cc
diff options
context:
space:
mode:
authorxians@chromium.org <xians@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-03 11:09:05 +0000
committerxians@chromium.org <xians@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-03 11:09:05 +0000
commit2372e96427d128a67ada47547bd1826276a0e62a (patch)
tree7b19533629dc2188b186e14a54f592168d994df7 /media/audio/mac/audio_manager_mac.cc
parentc5ab76dfd2e6fd9e84f67e7223fa5dad80919853 (diff)
downloadchromium_src-2372e96427d128a67ada47547bd1826276a0e62a.zip
chromium_src-2372e96427d128a67ada47547bd1826276a0e62a.tar.gz
chromium_src-2372e96427d128a67ada47547bd1826276a0e62a.tar.bz2
Try relanding this CL, the original CL passed the try bots but failed the mac 10.7 bot because the oroginal CL queried the device info while there is no device on the bot.
Hook up the device selection to the WebAudio live audio. WebAudio live audio needs to pass the session_id to the browser process so that Chrome can open the correct input device for unitfied IO. This CL looks big because it touches quite some interfaces from the render to the browser. But the change is simple and basically adding a session_id/device_id to the classes. All the changes some together and it is very hard to break it down. It also makes the media output code more similar to the media input code as well, and it will be easier to merge them for the future. TBR=henrika@chormium.org BUG=147327 TEST=http://chromium.googlecode.com/svn/trunk/samples/audio/visualizer-live.html Change the device using the camera icon on the right of the omnibox, then reload. Verify the sound is coming from the correct input device. Review URL: https://codereview.chromium.org/15979015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@203695 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/audio/mac/audio_manager_mac.cc')
-rw-r--r--media/audio/mac/audio_manager_mac.cc13
1 files changed, 9 insertions, 4 deletions
diff --git a/media/audio/mac/audio_manager_mac.cc b/media/audio/mac/audio_manager_mac.cc
index 3671317..33dcff0 100644
--- a/media/audio/mac/audio_manager_mac.cc
+++ b/media/audio/mac/audio_manager_mac.cc
@@ -421,11 +421,11 @@ AudioParameters AudioManagerMac::GetInputStreamParameters(
AudioOutputStream* AudioManagerMac::MakeLinearOutputStream(
const AudioParameters& params) {
- return MakeLowLatencyOutputStream(params);
+ return MakeLowLatencyOutputStream(params, std::string());
}
AudioOutputStream* AudioManagerMac::MakeLowLatencyOutputStream(
- const AudioParameters& params) {
+ const AudioParameters& params, const std::string& input_device_id) {
// Handle basic output with no input channels.
if (params.input_channels() == 0) {
AudioDeviceID device = kAudioObjectUnknown;
@@ -462,7 +462,8 @@ AudioOutputStream* AudioManagerMac::MakeLowLatencyOutputStream(
LOG(INFO) << "Using AGGREGATE audio device";
}
- if (device != kAudioObjectUnknown)
+ if (device != kAudioObjectUnknown &&
+ input_device_id == AudioManagerBase::kDefaultDeviceId)
return new AUHALStream(this, params, device);
// Fallback to AudioSynchronizedStream which will handle completely
@@ -471,9 +472,13 @@ AudioOutputStream* AudioManagerMac::MakeLowLatencyOutputStream(
// kAudioDeviceUnknown translates to "use default" here.
// TODO(crogers): consider tracking UMA stats on AUHALStream
// versus AudioSynchronizedStream.
+ AudioDeviceID audio_device_id = GetAudioDeviceIdByUId(true, input_device_id);
+ if (audio_device_id == kAudioObjectUnknown)
+ return NULL;
+
return new AudioSynchronizedStream(this,
params,
- kAudioDeviceUnknown,
+ audio_device_id,
kAudioDeviceUnknown);
}