1b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* 2b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. 3b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * 4b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Use of this source code is governed by a BSD-style license 5b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * that can be found in the LICENSE file in the root of the source 6b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * tree. An additional intellectual property rights grant can be found 7b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * in the file PATENTS. All contributing project authors may 8b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * be found in the AUTHORS file in the root of the source tree. 9b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 10b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 11b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#ifndef WEBRTC_AUDIO_DEVICE_AUDIO_MIXER_MANAGER_MAC_H 12b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define WEBRTC_AUDIO_DEVICE_AUDIO_MIXER_MANAGER_MAC_H 13b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 14bc669ace8f09d73e95f923253ecdadd366f9b7f1pbos@webrtc.org#include "webrtc/modules/audio_device/include/audio_device.h" 15bc669ace8f09d73e95f923253ecdadd366f9b7f1pbos@webrtc.org#include "webrtc/system_wrappers/interface/critical_section_wrapper.h" 16bc669ace8f09d73e95f923253ecdadd366f9b7f1pbos@webrtc.org#include "webrtc/typedefs.h" 17b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 18b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#include <CoreAudio/CoreAudio.h> 19b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 20b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgnamespace webrtc { 21b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 22b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgclass AudioMixerManagerMac 23b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 24b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgpublic: 2564a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t OpenSpeaker(AudioDeviceID deviceID); 2664a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t OpenMicrophone(AudioDeviceID deviceID); 2764a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t SetSpeakerVolume(uint32_t volume); 2864a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t SpeakerVolume(uint32_t& volume) const; 2964a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t MaxSpeakerVolume(uint32_t& maxVolume) const; 3064a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t MinSpeakerVolume(uint32_t& minVolume) const; 3164a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t SpeakerVolumeStepSize(uint16_t& stepSize) const; 3264a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t SpeakerVolumeIsAvailable(bool& available); 3364a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t SpeakerMuteIsAvailable(bool& available); 3464a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t SetSpeakerMute(bool enable); 3564a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t SpeakerMute(bool& enabled) const; 3664a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t StereoPlayoutIsAvailable(bool& available); 3764a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t StereoRecordingIsAvailable(bool& available); 3864a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t MicrophoneMuteIsAvailable(bool& available); 3964a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t SetMicrophoneMute(bool enable); 4064a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t MicrophoneMute(bool& enabled) const; 4164a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t MicrophoneBoostIsAvailable(bool& available); 4264a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t SetMicrophoneBoost(bool enable); 4364a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t MicrophoneBoost(bool& enabled) const; 4464a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t MicrophoneVolumeIsAvailable(bool& available); 4564a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t SetMicrophoneVolume(uint32_t volume); 4664a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t MicrophoneVolume(uint32_t& volume) const; 4764a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t MaxMicrophoneVolume(uint32_t& maxVolume) const; 4864a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t MinMicrophoneVolume(uint32_t& minVolume) const; 4964a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t MicrophoneVolumeStepSize(uint16_t& stepSize) const; 5064a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t Close(); 5164a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t CloseSpeaker(); 5264a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t CloseMicrophone(); 53b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org bool SpeakerIsInitialized() const; 54b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org bool MicrophoneIsInitialized() const; 55b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 56b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgpublic: 5764a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org AudioMixerManagerMac(const int32_t id); 58b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org ~AudioMixerManagerMac(); 59b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 60b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgprivate: 61b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org static void logCAMsg(const TraceLevel level, 62b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const TraceModule module, 6364a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org const int32_t id, const char *msg, 64b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const char *err); 65b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 66b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgprivate: 67b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org CriticalSectionWrapper& _critSect; 6864a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t _id; 69b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 70b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org AudioDeviceID _inputDeviceID; 71b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org AudioDeviceID _outputDeviceID; 72b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 7364a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org uint16_t _noInputChannels; 7464a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org uint16_t _noOutputChannels; 75b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 76b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}; 77b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 783b89e10f31160da35b408fd00cb8f89d2b08862dpbos@webrtc.org} // namespace webrtc 79b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 80b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif // AUDIO_MIXER_MAC_H 81