PublicUtility/CAHALAudioDevice.h
/* |
File: CAHALAudioDevice.h |
Abstract: Part of CoreAudio Utility Classes |
Version: 2.1.1 |
Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple |
Inc. ("Apple") in consideration of your agreement to the following |
terms, and your use, installation, modification or redistribution of |
this Apple software constitutes acceptance of these terms. If you do |
not agree with these terms, please do not use, install, modify or |
redistribute this Apple software. |
In consideration of your agreement to abide by the following terms, and |
subject to these terms, Apple grants you a personal, non-exclusive |
license, under Apple's copyrights in this original Apple software (the |
"Apple Software"), to use, reproduce, modify and redistribute the Apple |
Software, with or without modifications, in source and/or binary forms; |
provided that if you redistribute the Apple Software in its entirety and |
without modifications, you must retain this notice and the following |
text and disclaimers in all such redistributions of the Apple Software. |
Neither the name, trademarks, service marks or logos of Apple Inc. may |
be used to endorse or promote products derived from the Apple Software |
without specific prior written permission from Apple. Except as |
expressly stated in this notice, no other rights or licenses, express or |
implied, are granted by Apple herein, including but not limited to any |
patent rights that may be infringed by your derivative works or by other |
works in which the Apple Software may be incorporated. |
The Apple Software is provided by Apple on an "AS IS" basis. APPLE |
MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION |
THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS |
FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND |
OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. |
IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL |
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, |
MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED |
AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), |
STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE |
POSSIBILITY OF SUCH DAMAGE. |
Copyright (C) 2012 Apple Inc. All Rights Reserved. |
*/ |
#if !defined(__CAHALAudioDevice_h__) |
#define __CAHALAudioDevice_h__ |
//================================================================================================== |
// Includes |
//================================================================================================== |
// Super Class Includes |
#include "CAHALAudioObject.h" |
//================================================================================================== |
// CAHALAudioDevice |
//================================================================================================== |
class CAHALAudioDevice |
: |
public CAHALAudioObject |
{ |
// Construction/Destruction |
public: |
CAHALAudioDevice(AudioObjectID inAudioDevice); |
CAHALAudioDevice(CFStringRef inUID); |
virtual ~CAHALAudioDevice(); |
// General Stuff |
public: |
CFStringRef CopyDeviceUID() const; |
bool HasModelUID() const; |
CFStringRef CopyModelUID() const; |
CFStringRef CopyConfigurationApplicationBundleID() const; |
CFURLRef CopyIconLocation() const; |
UInt32 GetTransportType() const; |
bool CanBeDefaultDevice(bool inIsInput, bool inIsSystem) const; |
bool HasDevicePlugInStatus() const; |
OSStatus GetDevicePlugInStatus() const; |
bool IsAlive() const; |
bool IsHidden() const; |
pid_t GetHogModeOwner() const; |
bool IsHogModeSettable() const; |
bool TakeHogMode(); |
void ReleaseHogMode(); |
bool HasPreferredStereoChannels(bool inIsInput) const; |
void GetPreferredStereoChannels(bool inIsInput, UInt32& outLeft, UInt32& outRight) const; |
void SetPreferredStereoChannels(bool inIsInput, UInt32 inLeft, UInt32 inRight); |
bool HasPreferredChannelLayout(bool inIsInput) const; |
void GetPreferredChannelLayout(bool inIsInput, AudioChannelLayout& outChannelLayout) const; |
void SetPreferredStereoChannels(bool inIsInput, AudioChannelLayout& inChannelLayout); |
UInt32 GetNumberRelatedAudioDevices() const; |
void GetRelatedAudioDevices(UInt32& ioNumberRelatedDevices, AudioObjectID* outRelatedDevices) const; |
AudioObjectID GetRelatedAudioDeviceByIndex(UInt32 inIndex) const; |
// Stream Stuff |
public: |
UInt32 GetNumberStreams(bool inIsInput) const; |
void GetStreams(bool inIsInput, UInt32& ioNumberStreams, AudioObjectID* outStreamList) const; |
AudioObjectID GetStreamByIndex(bool inIsInput, UInt32 inIndex) const; |
UInt32 GetTotalNumberChannels(bool inIsInput) const; |
void GetCurrentVirtualFormats(bool inIsInput, UInt32& ioNumberStreams, AudioStreamBasicDescription* outFormats) const; |
void GetCurrentPhysicalFormats(bool inIsInput, UInt32& ioNumberStreams, AudioStreamBasicDescription* outFormats) const; |
// IO Stuff |
public: |
bool IsRunning() const; |
bool IsRunningSomewhere() const; |
UInt32 GetLatency(bool inIsInput) const; |
UInt32 GetSafetyOffset(bool inIsInput) const; |
bool HasClockDomain() const; |
UInt32 GetClockDomain() const; |
Float64 GetActualSampleRate() const; |
Float64 GetNominalSampleRate() const; |
void SetNominalSampleRate(Float64 inSampleRate); |
UInt32 GetNumberAvailableNominalSampleRateRanges() const; |
void GetAvailableNominalSampleRateRanges(UInt32& ioNumberRanges, AudioValueRange* outRanges) const; |
void GetAvailableNominalSampleRateRangeByIndex(UInt32 inIndex, Float64& outMinimum, Float64& outMaximum) const; |
bool IsValidNominalSampleRate(Float64 inSampleRate) const; |
bool IsIOBufferSizeSettable() const; |
UInt32 GetIOBufferSize() const; |
void SetIOBufferSize(UInt32 inBufferSize); |
bool UsesVariableIOBufferSizes() const; |
UInt32 GetMaximumVariableIOBufferSize() const; |
bool HasIOBufferSizeRange() const; |
void GetIOBufferSizeRange(UInt32& outMinimum, UInt32& outMaximum) const; |
AudioDeviceIOProcID CreateIOProcID(AudioDeviceIOProc inIOProc, void* inClientData); |
#if defined(__BLOCKS__) && (__MAC_OS_X_VERSION_MAX_ALLOWED > __MAC_10_6) |
AudioDeviceIOProcID CreateIOProcIDWithBlock(dispatch_queue_t inDispatchQueue, AudioDeviceIOBlock inIOBlock); |
#endif |
void DestroyIOProcID(AudioDeviceIOProcID inIOProcID); |
void StartIOProc(AudioDeviceIOProcID inIOProcID); |
void StartIOProcAtTime(AudioDeviceIOProcID inIOProcID, AudioTimeStamp& ioStartTime, bool inIsInput, bool inIgnoreHardware); |
void StopIOProc(AudioDeviceIOProcID inIOProcID); |
void GetIOProcStreamUsage(AudioDeviceIOProcID inIOProcID, bool inIsInput, bool* outStreamUsage) const; |
void SetIOProcStreamUsage(AudioDeviceIOProcID inIOProcID, bool inIsInput, const bool* inStreamUsage); |
Float32 GetIOCycleUsage() const; |
void SetIOCycleUsage(Float32 inValue); |
// Time Operations |
public: |
void GetCurrentTime(AudioTimeStamp& outTime); |
void TranslateTime(const AudioTimeStamp& inTime, AudioTimeStamp& outTime); |
void GetNearestStartTime(AudioTimeStamp& ioTime, bool inIsInput, bool inIgnoreHardware); |
// Controls |
public: |
bool HasVolumeControl(AudioObjectPropertyScope inScope, UInt32 inChannel) const; |
bool VolumeControlIsSettable(AudioObjectPropertyScope inScope, UInt32 inChannel) const; |
Float32 GetVolumeControlScalarValue(AudioObjectPropertyScope inScope, UInt32 inChannel) const; |
Float32 GetVolumeControlDecibelValue(AudioObjectPropertyScope inScope, UInt32 inChannel) const; |
void SetVolumeControlScalarValue(AudioObjectPropertyScope inScope, UInt32 inChannel, Float32 inValue); |
void SetVolumeControlDecibelValue(AudioObjectPropertyScope inScope, UInt32 inChannel, Float32 inValue); |
Float32 GetVolumeControlScalarForDecibelValue(AudioObjectPropertyScope inScope, UInt32 inChannel, Float32 inValue) const; |
Float32 GetVolumeControlDecibelForScalarValue(AudioObjectPropertyScope inScope, UInt32 inChannel, Float32 inValue) const; |
bool HasSubVolumeControl(AudioObjectPropertyScope inScope, UInt32 inChannel) const; |
bool SubVolumeControlIsSettable(AudioObjectPropertyScope inScope, UInt32 inChannel) const; |
Float32 GetSubVolumeControlScalarValue(AudioObjectPropertyScope inScope, UInt32 inChannel) const; |
Float32 GetSubVolumeControlDecibelValue(AudioObjectPropertyScope inScope, UInt32 inChannel) const; |
void SetSubVolumeControlScalarValue(AudioObjectPropertyScope inScope, UInt32 inChannel, Float32 inValue); |
void SetSubVolumeControlDecibelValue(AudioObjectPropertyScope inScope, UInt32 inChannel, Float32 inValue); |
Float32 GetSubVolumeControlScalarForDecibelValue(AudioObjectPropertyScope inScope, UInt32 inChannel, Float32 inValue) const; |
Float32 GetSubVolumeControlDecibelForScalarValue(AudioObjectPropertyScope inScope, UInt32 inChannel, Float32 inValue) const; |
bool HasMuteControl(AudioObjectPropertyScope inScope, UInt32 inChannel) const; |
bool MuteControlIsSettable(AudioObjectPropertyScope inScope, UInt32 inChannel) const; |
bool GetMuteControlValue(AudioObjectPropertyScope inScope, UInt32 inChannel) const; |
void SetMuteControlValue(AudioObjectPropertyScope inScope, UInt32 inChannel, bool inValue); |
bool HasSoloControl(AudioObjectPropertyScope inScope, UInt32 inChannel) const; |
bool SoloControlIsSettable(AudioObjectPropertyScope inScope, UInt32 inChannel) const; |
bool GetSoloControlValue(AudioObjectPropertyScope inScope, UInt32 inChannel) const; |
void SetSoloControlValue(AudioObjectPropertyScope inScope, UInt32 inChannel, bool inValue); |
bool HasStereoPanControl(AudioObjectPropertyScope inScope, UInt32 inChannel) const; |
bool StereoPanControlIsSettable(AudioObjectPropertyScope inScope, UInt32 inChannel) const; |
Float32 GetStereoPanControlValue(AudioObjectPropertyScope inScope, UInt32 inChannel) const; |
void SetStereoPanControlValue(AudioObjectPropertyScope inScope, UInt32 inChannel, Float32 inValue); |
void GetStereoPanControlChannels(AudioObjectPropertyScope inScope, UInt32 inChannel, UInt32& outLeftChannel, UInt32& outRightChannel) const; |
bool HasJackControl(AudioObjectPropertyScope inScope, UInt32 inChannel) const; |
bool GetJackControlValue(AudioObjectPropertyScope inScope, UInt32 inChannel) const; |
bool HasSubMuteControl(AudioObjectPropertyScope inScope, UInt32 inChannel) const; |
bool SubMuteControlIsSettable(AudioObjectPropertyScope inScope, UInt32 inChannel) const; |
bool GetSubMuteControlValue(AudioObjectPropertyScope inScope, UInt32 inChannel) const; |
void SetSubMuteControlValue(AudioObjectPropertyScope inScope, UInt32 inChannel, bool inValue); |
bool HasiSubOwnerControl(AudioObjectPropertyScope inScope, UInt32 inChannel) const; |
bool iSubOwnerControlIsSettable(AudioObjectPropertyScope inScope, UInt32 inChannel) const; |
bool GetiSubOwnerControlValue(AudioObjectPropertyScope inScope, UInt32 inChannel) const; |
void SetiSubOwnerControlValue(AudioObjectPropertyScope inScope, UInt32 inChannel, bool inValue); |
bool HasDataSourceControl(AudioObjectPropertyScope inScope, UInt32 inChannel) const; |
bool DataSourceControlIsSettable(AudioObjectPropertyScope inScope, UInt32 inChannel) const; |
UInt32 GetCurrentDataSourceID(AudioObjectPropertyScope inScope, UInt32 inChannel) const; |
void SetCurrentDataSourceByID(AudioObjectPropertyScope inScope, UInt32 inChannel, UInt32 inID); |
UInt32 GetNumberAvailableDataSources(AudioObjectPropertyScope inScope, UInt32 inChannel) const; |
void GetAvailableDataSources(AudioObjectPropertyScope inScope, UInt32 inChannel, UInt32& ioNumberSources, UInt32* outSources) const; |
UInt32 GetAvailableDataSourceByIndex(AudioObjectPropertyScope inScope, UInt32 inChannel, UInt32 inIndex) const; |
CFStringRef CopyDataSourceNameForID(AudioObjectPropertyScope inScope, UInt32 inChannel, UInt32 inID) const; |
bool HasDataDestinationControl(AudioObjectPropertyScope inScope, UInt32 inChannel) const; |
bool DataDestinationControlIsSettable(AudioObjectPropertyScope inScope, UInt32 inChannel) const; |
UInt32 GetCurrentDataDestinationID(AudioObjectPropertyScope inScope, UInt32 inChannel) const; |
void SetCurrentDataDestinationByID(AudioObjectPropertyScope inScope, UInt32 inChannel, UInt32 inID); |
UInt32 GetNumberAvailableDataDestinations(AudioObjectPropertyScope inScope, UInt32 inChannel) const; |
void GetAvailableDataDestinations(AudioObjectPropertyScope inScope, UInt32 inChannel, UInt32& ioNumberDestinations, UInt32* outDestinations) const; |
UInt32 GetAvailableDataDestinationByIndex(AudioObjectPropertyScope inScope, UInt32 inChannel, UInt32 inIndex) const; |
CFStringRef CopyDataDestinationNameForID(AudioObjectPropertyScope inScope, UInt32 inChannel, UInt32 inID) const; |
bool HasClockSourceControl() const; |
bool ClockSourceControlIsSettable() const; |
UInt32 GetCurrentClockSourceID() const; |
void SetCurrentClockSourceByID(UInt32 inID); |
UInt32 GetNumberAvailableClockSources() const; |
void GetAvailableClockSources(UInt32& ioNumberSources, UInt32* outSources) const; |
UInt32 GetAvailableClockSourceByIndex(UInt32 inIndex) const; |
CFStringRef CopyClockSourceNameForID(UInt32 inID) const; |
UInt32 GetClockSourceKindForID(UInt32 inID) const; |
}; |
#endif |
Copyright © 2012 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2012-11-29