Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(16)

Side by Side Diff: media/audio/mac/audio_manager_mac.cc

Issue 11344005: Handle audio device changes on Mac (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: bind to right thread Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 <CoreAudio/AudioHardware.h> 5 #include <CoreAudio/AudioHardware.h>
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/bind.h"
9 #include "base/command_line.h" 10 #include "base/command_line.h"
10 #include "base/mac/mac_logging.h" 11 #include "base/mac/mac_logging.h"
11 #include "base/mac/scoped_cftyperef.h" 12 #include "base/mac/scoped_cftyperef.h"
12 #include "base/sys_string_conversions.h" 13 #include "base/sys_string_conversions.h"
14 #include "media/audio/mac/audio_device_listener_mac.h"
13 #include "media/audio/mac/audio_input_mac.h" 15 #include "media/audio/mac/audio_input_mac.h"
14 #include "media/audio/mac/audio_low_latency_input_mac.h" 16 #include "media/audio/mac/audio_low_latency_input_mac.h"
15 #include "media/audio/mac/audio_low_latency_output_mac.h" 17 #include "media/audio/mac/audio_low_latency_output_mac.h"
16 #include "media/audio/mac/audio_manager_mac.h" 18 #include "media/audio/mac/audio_manager_mac.h"
17 #include "media/audio/mac/audio_output_mac.h" 19 #include "media/audio/mac/audio_output_mac.h"
18 #include "media/audio/mac/audio_synchronized_mac.h" 20 #include "media/audio/mac/audio_synchronized_mac.h"
19 #include "media/audio/mac/audio_unified_mac.h" 21 #include "media/audio/mac/audio_unified_mac.h"
22 #include "media/base/bind_to_loop.h"
20 #include "media/base/limits.h" 23 #include "media/base/limits.h"
21 #include "media/base/media_switches.h" 24 #include "media/base/media_switches.h"
22 25
23 namespace media { 26 namespace media {
24 27
25 // Maximum number of output streams that can be open simultaneously. 28 // Maximum number of output streams that can be open simultaneously.
26 static const int kMaxOutputStreams = 50; 29 static const int kMaxOutputStreams = 50;
27 30
28 static bool HasAudioHardware(AudioObjectPropertySelector selector) { 31 static bool HasAudioHardware(AudioObjectPropertySelector selector) {
29 AudioDeviceID output_device_id = kAudioObjectUnknown; 32 AudioDeviceID output_device_id = kAudioObjectUnknown;
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 if (result) { 228 if (result) {
226 OSSTATUS_DLOG(WARNING, result) << "Unable to query device " << device_id 229 OSSTATUS_DLOG(WARNING, result) << "Unable to query device " << device_id
227 << " for AudioDeviceID"; 230 << " for AudioDeviceID";
228 } 231 }
229 232
230 return audio_device_id; 233 return audio_device_id;
231 } 234 }
232 235
233 AudioManagerMac::AudioManagerMac() { 236 AudioManagerMac::AudioManagerMac() {
234 SetMaxOutputStreamsAllowed(kMaxOutputStreams); 237 SetMaxOutputStreamsAllowed(kMaxOutputStreams);
238
239 output_device_listener_.reset(new AudioDeviceListenerMac(BindToLoop(
DaleCurtis 2012/10/29 01:58:45 You need to do this in the InitializeOnAudioThread
sail 2012/10/29 04:21:46 Done.
240 GetMessageLoop(),
241 base::Bind(&AudioManagerMac::NotifyAllOutputDeviceChangeListeners,
242 base::Unretained(this)))));
235 } 243 }
236 244
237 AudioManagerMac::~AudioManagerMac() { 245 AudioManagerMac::~AudioManagerMac() {
238 Shutdown(); 246 Shutdown();
239 } 247 }
240 248
241 bool AudioManagerMac::HasAudioOutputDevices() { 249 bool AudioManagerMac::HasAudioOutputDevices() {
242 return HasAudioHardware(kAudioHardwarePropertyDefaultOutputDevice); 250 return HasAudioHardware(kAudioHardwarePropertyDefaultOutputDevice);
243 } 251 }
244 252
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 stream = new AUAudioInputStream(this, params, audio_device_id); 311 stream = new AUAudioInputStream(this, params, audio_device_id);
304 312
305 return stream; 313 return stream;
306 } 314 }
307 315
308 AudioManager* CreateAudioManager() { 316 AudioManager* CreateAudioManager() {
309 return new AudioManagerMac(); 317 return new AudioManagerMac();
310 } 318 }
311 319
312 } // namespace media 320 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698