Chromium Code Reviews| Index: media/audio/mac/audio_device_listener_mac.cc |
| diff --git a/media/audio/mac/audio_device_listener_mac.cc b/media/audio/mac/audio_device_listener_mac.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..f8d44df3deb03f898adf7a582fac530073363251 |
| --- /dev/null |
| +++ b/media/audio/mac/audio_device_listener_mac.cc |
| @@ -0,0 +1,53 @@ |
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "media/audio/mac/audio_device_listener_mac.h" |
| + |
| +#include "base/logging.h" |
| + |
| +namespace media { |
| + |
| +AudioDeviceListenerMac::AudioDeviceListenerMac(const base::Closure& listener_cb) |
| + : listener_cb_(listener_cb) { |
|
DaleCurtis
2012/10/29 01:58:45
4 space indent.
sail
2012/10/29 04:21:46
Done.
|
| + AudioObjectPropertyAddress property = { |
| + kAudioHardwarePropertyDefaultOutputDevice, |
|
DaleCurtis
2012/10/29 01:58:45
Can you add a listener for preferred sample rate a
sail
2012/10/29 04:21:46
Added kAudioDevicePropertyNominalSampleRate.
Do yo
|
| + kAudioObjectPropertyScopeGlobal, |
| + kAudioObjectPropertyElementMaster |
| + }; |
| + AudioObjectAddPropertyListener( |
|
DaleCurtis
2012/10/29 01:58:45
Do you need to be error checking these things?
sail
2012/10/29 04:21:46
Done.
|
| + kAudioObjectSystemObject, |
| + &property, |
| + &AudioDeviceListenerMac::OnDefaultDeviceChanged, |
| + this); |
| +} |
| + |
| +AudioDeviceListenerMac::~AudioDeviceListenerMac() { |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| + |
| + AudioObjectPropertyAddress property = { |
| + kAudioHardwarePropertyDefaultOutputDevice, |
| + kAudioObjectPropertyScopeGlobal, |
| + kAudioObjectPropertyElementMaster |
| + }; |
| + AudioObjectRemovePropertyListener( |
|
DaleCurtis
2012/10/29 01:58:45
Ditto?
sail
2012/10/29 04:21:46
Done.
|
| + kAudioObjectSystemObject, |
| + &property, |
| + &AudioDeviceListenerMac::OnDefaultDeviceChanged, |
| + this); |
| +} |
| + |
| +// static |
| +OSStatus AudioDeviceListenerMac::OnDefaultDeviceChanged( |
| + AudioObjectID object, |
| + UInt32 size, |
| + const AudioObjectPropertyAddress addresses[], |
| + void* context) { |
| + AudioDeviceListenerMac* listener = |
| + static_cast<AudioDeviceListenerMac*>(context); |
| + DCHECK(listener->thread_checker_.CalledOnValidThread()); |
| + listener->listener_cb_.Run(); |
| + return noErr; |
| +} |
| + |
| +} // namespace media |