AudioAggregateDevice |
enum { kAudioAggregateDeviceClassID = 'aagg', kAudioDeviceTransportTypeAggregate = 'grup', kAudioDeviceTransportTypeAutoAggregate = 'fgrp' };
Class Constants
- kAudioAggregateDeviceClassID
- The AudioClassID that identifies the AudioAggregateDevice class.
- kAudioDeviceTransportTypeAggregate
- The transport type ID (see kAudioDevicePropertyTransportType) for aggregate devices.
- kAudioDeviceTransportTypeAutoAggregate
- The transport type ID (see kAudioDevicePropertyTransportType) for automatically generated aggregate devices.
AudioAggregateDevice Properties |
enum { kAudioAggregateDevicePropertyFullSubDeviceList = 'grup', kAudioAggregateDevicePropertyActiveSubDeviceList = 'agrp', kAudioAggregateDevicePropertyComposition = 'acom' };
AudioAggregateDevice is a subclass of AudioDevice.
- kAudioAggregateDevicePropertyFullSubDeviceList
- A CFArray of CFStrings that contain the UIDs of all the devices, active or inactive, contained in the AudioAggregateDevice. The order of the items in the array is significant and is used to determine the order of the streams of the AudioAggregateDevice. The caller is responsible for releasing the returned CFObject.
- kAudioAggregateDevicePropertyActiveSubDeviceList
- An array of AudioObjectIDs for all the active sub-devices in the aggregate device.
- kAudioAggregateDevicePropertyComposition
- A CFDictionary that describes the composition of the AudioAggregateDevice. The keys for this CFDicitionary are defined in the AudioAggregateDevice Constants section.
AudioAggregateDevice Properties Implemented via AudioControl objects |
enum { kAudioAggregateDevicePropertyMasterSubDevice = 'amst' };
These properties are also accessible by locating the AudioControl object attached to the AudioAggregateDevice and using that object to access the properties of the control.
- kAudioAggregateDevicePropertyMasterSubDevice
- A CFString that contains the UID for the AudioDevice that is currently serving as the master time base of the aggregate device. This property is also implemented by the AudioClockSourceControl on the master element of the global scope of the AudioAggregateDevice.
AudioBooleanControl |
enum { kAudioMuteControlClassID = 'mute', kAudioSoloControlClassID = 'solo', kAudioJackControlClassID = 'jack', kAudioLFEMuteControlClassID = 'subm', kAudioISubOwnerControlClassID = 'atch' };
Subclass IDs
- kAudioMuteControlClassID
- An AudioBooleanControl where a true value means that mute is enabled making that element inaudible.
- kAudioSoloControlClassID
- An AudioBooleanControl where a true value means that solo is enabled making just that element audible and the other elements inaudible.
- kAudioJackControlClassID
- An AudioBooleanControl where a true value means something is plugged into that element.
- kAudioLFEMuteControlClassID
- An AudioBooleanControl where true means that mute is enabled make that LFE element inaudible. This control is for LFE channels that result from bass management such as the iSub. Note that LFE channels that are represented as normal audio channels (in other words, real data is being fed them in an IOProc) will use kAudioVolumeControlClassID to manipulate mute.
- kAudioISubOwnerClassID
- An AudioBooleanControl where true means that the AudioDevice that ultimately owns the control also owns any iSub attached to the CPU.
AudioBooleanControl Properties |
enum { kAudioBooleanControlPropertyValue = 'bcvl' };
AudioBooleanControl is a subclass of AudioControl and has only the single scope, kAudioObjectPropertyScopeGlobal, and only a master element.
- kAudioBooleanControlPropertyValue
- A UInt32 where 0 means false and 1 means true.
AudioClockSourceControl Properties |
enum { kAudioClockSourceControlPropertyItemKind = 'clkk' };
These properties supplement the regular AudioSelectorControl Properties.
- kAudioClockSourceControlPropertyItemKind
- This property returns a UInt32 that identifies the kind of clock source the item ID refers to. The qualifier contains the ID of the item. Values for this property are defined in
.
AudioControl |
enum { kAudioControlClassID = 'actl', kAudioLevelControlClassID = 'levl', kAudioBooleanControlClassID = 'togl', kAudioSelectorControlClassID = 'slct', kAudioStereoPanControlClassID = 'span' };
Base Class IDs
- kAudioControlClassID
- The AudioClassID that identifies the AudioControl class.
- kAudioLevelControlClassID
- The AudioClassID that identifies the AudioLevelControl class which is a subclass of AudioControl. AudioLevelControls manipulate gain/attenuation stages in the hardware.
- kAudioBooleanControlClassID
- The AudioClassID that identifies the AudioBooleanControl class which is a subclass of AudioControl. AudioBooleanControls manipulate on/off switches in the hardware.
- kAudioSelectorControlClassID
- The AudioClassID that identifies the AudioSelectorControl class which is a subclass of AudioControl. AudioSelectorControls manipulate controls that have multiple, but discreet values.
- kAudioStereoPanControlClassID
- The AudioClassID that identifies the AudioStereoPanControl class which is a subclass of AudioControl. AudioStereoPanControls manipulate the pot for panning a mono signal between a left/right pair of outputs.
AudioControl Properties |
enum { kAudioControlPropertyScope = 'cscp', kAudioControlPropertyElement = 'celm', kAudioControlPropertyVariant = 'cvar' };
AudioControl is a subclass of AudioObject and has only the single scope, kAudioObjectPropertyScopeGlobal, and only a master element.
- kAudioControlPropertyScope
- The AudioObjectPropertyScope in the owning AudioObject that contains the AudioControl.
- kAudioControlPropertyElement
- The AudioObjectPropertyElement in the owning AudioObject that contains the AudioControl.
- kAudioControlPropertyVariant
- A UInt32 that identifies the specific variant of an AudioControl. This allows the owning AudioObject to support controls that are of the same basic class (that is, the values of kAudioObjectPropertyClass are the same) but may control a part of the object for which the standard controls do not control.
AudioDevice |
enum { kAudioDevicePropertyScopeInput = 'inpt', kAudioDevicePropertyScopeOutput = 'outp', kAudioDevicePropertyScopePlayThrough = 'ptru', kAudioDeviceClassID = 'adev', kAudioDeviceUnknown = kAudioObjectUnknown };
Class Constants
- kAudioDevicePropertyScopeInput
- The AudioObjectPropertyScope for properties that apply to the input signal paths of the AudioDevice.
- kAudioDevicePropertyScopeOutput
- The AudioObjectPropertyScope for properties that apply to the output signal paths of the AudioDevice.
- kAudioDevicePropertyScopePlayThrough
- The AudioObjectPropertyScope for properties that apply to the play through signal paths of the AudioDevice.
- kAudioDeviceClassID
- The AudioClassID that identifies the AudioDevice class.
- kAudioDeviceUnknown
- The AudioObjectID for a nonexistent AudioObject.
AudioDevice Properties |
enum { kAudioDevicePropertyPlugIn = 'plug', kAudioDevicePropertyConfigurationApplication = 'capp', kAudioDevicePropertyDeviceUID = 'uid ', kAudioDevicePropertyModelUID = 'muid', kAudioDevicePropertyTransportType = 'tran', kAudioDevicePropertyRelatedDevices = 'akin', kAudioDevicePropertyClockDomain = 'clkd', kAudioDevicePropertyDeviceIsAlive = 'livn', kAudioDevicePropertyDeviceHasChanged = 'diff', kAudioDevicePropertyDeviceIsRunning = 'goin', kAudioDevicePropertyDeviceIsRunningSomewhere = 'gone', kAudioDevicePropertyDeviceCanBeDefaultDevice = 'dflt', kAudioDevicePropertyDeviceCanBeDefaultSystemDevice = 'sflt', kAudioDeviceProcessorOverload = 'over', kAudioDevicePropertyHogMode = 'oink', kAudioDevicePropertyLatency = 'ltnc', kAudioDevicePropertyBufferFrameSize = 'fsiz', kAudioDevicePropertyBufferFrameSizeRange = 'fsz#', kAudioDevicePropertyUsesVariableBufferFrameSizes = 'vfsz', kAudioDevicePropertyStreams = 'stm#', kAudioDevicePropertySafetyOffset = 'saft', kAudioDevicePropertyIOCycleUsage = 'ncyc', kAudioDevicePropertyStreamConfiguration = 'slay', kAudioDevicePropertyIOProcStreamUsage = 'suse', kAudioDevicePropertyPreferredChannelsForStereo = 'dch2', kAudioDevicePropertyPreferredChannelLayout = 'srnd', kAudioDevicePropertyNominalSampleRate = 'nsrt', kAudioDevicePropertyAvailableNominalSampleRates = 'nsr#', kAudioDevicePropertyActualSampleRate = 'asrt' };
AudioDevices have four scopes: kAudioDevicePropertyScopeGlobal, kAudioDevicePropertyScopeInput, kAudioDevicePropertyScopeOutput, and kAudioDevicePropertyScopePlayThrough. They have a master element and an element for each channel in each stream numbered according to the starting channel number of each stream.
- kAudioDevicePropertyPlugIn
- An OSStatus that contains any error codes generated by loading the IOAudio driver plug-in for the AudioDevice or kAudioHardwareNoError if the plug-in loaded successfully. This property only exists for IOAudio-based AudioDevices whose driver has specified a plug-in to load.
- kAudioDevicePropertyConfigurationApplication
- A CFString that contains the bundle ID for an application that provides a GUI for configuring the AudioDevice. By default, the value of this property is the bundle ID for Audio MIDI Setup. The caller is responsible for releasing the returned CFObject.
- kAudioDevicePropertyDeviceUID
- A CFString that contains a persistent identifier for the AudioDevice. An AudioDevice's UID is persistent across boots. The content of the UID string is a black box and may contain information that is unique to a particular instance of an AudioDevice's hardware or unique to the CPU. Therefore they are not suitable for passing between CPUs or for identifying similar models of hardware.
- kAudioDevicePropertyModelUID
- A CFString that contains a persistent identifier for the model of an AudioDevice. The identifier is unique such that the identifier from two AudioDevices are equal if and only if the two AudioDevices are the exact same model from the same manufacturer. Further, the identifier has to be the same no matter on what machine the AudioDevice appears.
- kAudioDevicePropertyTransportType
- A UInt32 whose value indicates how the AudioDevice is connected to the CPU. Constants for some of the values for this property can be found in
. - kAudioDevicePropertyRelatedDevices
- An array of AudioDeviceIDs for devices related to the AudioDevice. For IOAudio-based devices, a AudioDevices are related if they share the same IOAudioDevice object.
- kAudioDevicePropertyClockDomain
- A UInt32 whose value indicates the clock domain to which this AudioDevice belongs. AudioDevices that have the same value for this property are able to be synchronized in hardware. However, a value of 0 indicates that the clock domain for the device is unspecified and should be assumed to be separate from every other device's clock domain, even if they have the value of 0 as their clock domain as well.
- kAudioDevicePropertyDeviceIsAlive
- A UInt32 where a value of 1 means the device is ready and available and 0 means the device is usable and will most likely go away shortly.
- kAudioDevicePropertyDeviceHasChanged
- The type of this property is a UInt32, but it's value has no meaning. This property exists so that clients can listen to it and be told when the configuration of the AudioDevice has changed in ways that cannot otherwise be conveyed through other notifications. In response to this notification, clients should re-evaluate everything they need to know about the device, particularly the layout and values of the controls.
- kAudioDevicePropertyDeviceIsRunning
- A UInt32 where a value of 0 means the AudioDevice is not performing IO and a value of 1 means that it is. Note that the device can be running even if there are no active IOProcs such as by calling AudioDeviceStart() and passing a NULL IOProc. Note that the notification for this property is usually sent from the AudioDevice's IO thread.
- kAudioDevicePropertyDeviceIsRunningSomewhere
- A UInt32 where 1 means that the AudioDevice is running in at least one process on the system and 0 means that it isn't running at all.
- kAudioDevicePropertyDeviceCanBeDefaultDevice
- A UInt32 where 1 means that the AudioDevice is a possible selection for kAudioHardwarePropertyDefaultInputDevice or kAudioHardwarePropertyDefaultOutputDevice depending on the scope.
- kAudioDevicePropertyDeviceCanBeDefaultSystemDevice
- A UInt32 where 1 means that the AudioDevice is a possible selection for kAudioHardwarePropertyDefaultSystemOutputDevice.
- kAudioDeviceProcessorOverload
- A UInt32 where the value has no meaning. This property exists so that clients can be notified when the AudioDevice detects that an IO cycle has run past it's deadline. Note that the notification for this property is usually sent from the AudioDevice's IO thread.
- kAudioDevicePropertyHogMode
- A pid_t indicating the process that currently owns exclusive access to the AudioDevice or a value of -1 indicating that the device is currently available to all processes. If the AudioDevice is in a non-mixable mode, the HAL will automatically take hog mode on behalf of the first process to start an IOProc.
- kAudioDevicePropertyLatency
- A UInt32 containing the number of frames of latency in the AudioDevice. Note that input and output latency may differ. Further, the AudioDevice's AudioStreams may have additional latency so they should be queried as well. If both the device and the stream say they have latency, then the total latency for the stream is the device latency summed with the stream latency.
- kAudioDevicePropertyBufferFrameSize
- A UInt32 whose value indicates the number of frames in the IO buffers.
- kAudioDevicePropertyBufferFrameSizeRange
- An AudioValueRange indicating the minimum and maximum values, inclusive, for kAudioDevicePropertyBufferFrameSize.
- kAudioDevicePropertyUsesVariableBufferFrameSizes
- A UInt32 that, if implemented by a device, indicates that the sizes of the buffers passed to an IOProc will vary by a small amount. The value of this property will indicate the largest buffer that will be passed and kAudioDevicePropertyBufferFrameSize will indicate the smallest buffer that will get passed to the IOProc. The usage of this property is narrowed to only allow for devices whose buffer sizes vary by small amounts greater than kAudioDevicePropertyBufferFrameSize. It is not intended to be a license for devices to be able to send buffers however they please. Rather, it is intended to allow for hardware whose natural rhythms lead to this necessity.
- kAudioDevicePropertyStreams
- An array of AudioStreamIDs that represent the AudioStreams of the AudioDevice. Note that if a notification is received for this property, any cached AudioStreamIDs for the device become invalid and need to be re-fetched.
- kAudioDevicePropertySafetyOffset
- A UInt32 whose value indicates the number for frames in ahead (for output) or behind (for input the current hardware position that is safe to do IO.
- kAudioDevicePropertyIOCycleUsage
- A Float32 whose range is from 0 to 1. This value indicates how much of the client portion of the IO cycle the process will use. The client portion of the IO cycle is the portion of the cycle in which the device calls the IOProcs so this property does not the apply to the duration of the entire cycle.
- kAudioDevicePropertyStreamConfiguration
- This property returns the stream configuration of the device in an AudioBufferList (with the buffer pointers set to NULL) which describes the list of streams and the number of channels in each stream. This corresponds to what will be passed into the IOProc.
- kAudioDevicePropertyIOProcStreamUsage
- An AudioHardwareIOProcStreamUsage structure which details the stream usage of a given IO proc. If a stream is marked as not being used, the given IOProc will see a corresponding NULL buffer pointer in the AudioBufferList passed to it's IO proc. Note that the number of streams detailed in the AudioHardwareIOProcStreamUsage must include all the streams of that direction on the device. Also, when getting the value of the property, one must fill out the mIOProc field of the AudioHardwareIOProcStreamUsage with the address of the of the IOProc whose stream usage is to be retrieved.
- kAudioDevicePropertyPreferredChannelsForStereo
- An array of two UInt32s, the first for the left channel, the second for the right channel, that indicate the channel numbers to use for stereo IO on the device. The value of this property can be different for input and output and there are no restrictions on the channel numbers that can be used.
- kAudioDevicePropertyPreferredChannelLayout
- An AudioChannelLayout that indicates how each channel of the AudioDevice should be used.
- kAudioDevicePropertyNominalSampleRate
- A Float64 that indicates the current nominal sample rate of the AudioDevice.
- kAudioDevicePropertyAvailableNominalSampleRates
- An array of AudioValueRange structs that indicates the valid ranges for the nominal sample rate of the AudioDevice.
- kAudioDevicePropertyActualSampleRate
- A Float64 that indicates the current actual sample rate of the AudioDevice as measured by it's time stamps.
AudioDevice Properties Implemented via AudioControl objects |
enum { kAudioDevicePropertyJackIsConnected = 'jack', kAudioDevicePropertyVolumeScalar = 'volm', kAudioDevicePropertyVolumeDecibels = 'vold', kAudioDevicePropertyVolumeRangeDecibels = 'vdb#', kAudioDevicePropertyVolumeScalarToDecibels = 'v2db', kAudioDevicePropertyVolumeDecibelsToScalar = 'db2v', kAudioDevicePropertyStereoPan = 'span', kAudioDevicePropertyStereoPanChannels = 'spn#', kAudioDevicePropertyMute = 'mute', kAudioDevicePropertySolo = 'solo', kAudioDevicePropertyDataSource = 'ssrc', kAudioDevicePropertyDataSources = 'ssc#', kAudioDevicePropertyDataSourceNameForIDCFString = 'lscn', kAudioDevicePropertyClockSource = 'csrc', kAudioDevicePropertyClockSources = 'csc#', kAudioDevicePropertyClockSourceNameForIDCFString = 'lcsn', kAudioDevicePropertyClockSourceKindForID = 'csck', kAudioDevicePropertyPlayThru = 'thru', kAudioDevicePropertyPlayThruSolo = 'thrs', kAudioDevicePropertyPlayThruVolumeScalar = 'mvsc', kAudioDevicePropertyPlayThruVolumeDecibels = 'mvdb', kAudioDevicePropertyPlayThruVolumeRangeDecibels = 'mvd#', kAudioDevicePropertyPlayThruVolumeScalarToDecibels = 'mv2d', kAudioDevicePropertyPlayThruVolumeDecibelsToScalar = 'mv2s', kAudioDevicePropertyPlayThruStereoPan = 'mspn', kAudioDevicePropertyPlayThruStereoPanChannels = 'msp#', kAudioDevicePropertyPlayThruDestination = 'mdds', kAudioDevicePropertyPlayThruDestinations = 'mdd#', kAudioDevicePropertyPlayThruDestinationNameForIDCFString = 'mddc', kAudioDevicePropertyChannelNominalLineLevel = 'nlvl', kAudioDevicePropertyChannelNominalLineLevels = 'nlv#', kAudioDevicePropertyChannelNominalLineLevelNameForIDCFString = 'lcnl', kAudioDevicePropertyDriverShouldOwniSub = 'isub', kAudioDevicePropertySubVolumeScalar = 'svlm', kAudioDevicePropertySubVolumeDecibels = 'svld', kAudioDevicePropertySubVolumeRangeDecibels = 'svd#', kAudioDevicePropertySubVolumeScalarToDecibels = 'sv2d', kAudioDevicePropertySubVolumeDecibelsToScalar = 'sd2v', kAudioDevicePropertySubMute = 'smut' };
These properties are also accessible by locating the AudioControl object attached to the AudioDevice and using that object to access the properties of the control.
- kAudioDevicePropertyJackIsConnected
- A UInt32 where a value of 0 means that there isn't anything plugged into the jack associated withe given element and scope. This property is implemented by an AudioJackControl, a subclass of AudioBooleanControl.
- kAudioDevicePropertyVolumeScalar
- A Float32 that represents the value of the volume control. The range is between 0.0 and 1.0 (inclusive). This property is implemented by an AudioControl object that is a subclass of AudioVolumeControl.
- kAudioDevicePropertyVolumeDecibels
- A Float32 that represents the value of the volume control in dB. This property is implemented by an AudioControl object that is a subclass of AudioVolumeControl.
- kAudioDevicePropertyVolumeRangeDecibels
- An AudioValueRange that contains the minimum and maximum dB values the control can have. This property is implemented by an AudioControl object that is a subclass of AudioVolumeControl.
- kAudioDevicePropertyVolumeScalarToDecibels
- A Float32 that on input contains a scalar volume value for the and on exit contains the equivalent dB value. This property is implemented by an AudioControl object that is a subclass of AudioVolumeControl.
- kAudioDevicePropertyVolumeDecibelsToScalar
- A Float32 that on input contains a dB volume value for the and on exit contains the equivalent scalar value. This property is implemented by an AudioControl object that is a subclass of AudioVolumeControl.
- kAudioDevicePropertyStereoPan
- A Float32 where 0.0 is full left, 1.0 is full right, and 0.5 is center. This property is implemented by an AudioControl object that is a subclass of AudioStereoPanControl.
- kAudioDevicePropertyStereoPanChannels
- An array of two UInt32s that indicate which elements of the owning object the signal is being panned between. This property is implemented by an AudioControl object that is a subclass of AudioStereoPanControl.
- kAudioDevicePropertyMute
- A UInt32 where a value of 1 means that mute is enabled making that element inaudible. The property is implemented by an AudioControl object that is a subclass of AudioMuteControl.
- kAudioDevicePropertySolo
- A UInt32 where a value of 1 means that just that element is audible and the other elements are inaudible. The property is implemented by an AudioControl object that is a subclass of AudioSoloControl.
- kAudioDevicePropertyDataSource
- A UInt32 whose value is the item ID for the currently selected data source. This property is implemented by an AudioControl object that is a subclass of AudioDataSourceControl.
- kAudioDevicePropertyDataSources
- An array of UInt32s that are represent all the IDs of all the data sources currently available. This property is implemented by an AudioControl object that is a subclass of AudioDataSourceControl.
- kAudioDevicePropertyDataSourceNameForIDCFString
- This property translates the given data source item ID into a human readable name using an AudioValueTranslation structure. The input data is the UInt32 containing the item ID to translated and the output data is a CFString. The caller is responsible for releasing the returned CFObject. This property is implemented by an AudioControl object that is a subclass of AudioDataSourceControl.
- kAudioDevicePropertyClockSource
- A UInt32 whose value is the item ID for the currently selected clock source. This property is implemented by an AudioControl object that is a subclass of AudioClockControl.
- kAudioDevicePropertyClockSources
- An array of UInt32s that are represent all the IDs of all the clock sources currently available. This property is implemented by an AudioControl object that is a subclass of AudioClockControl.
- kAudioDevicePropertyClockSourceNameForIDCFString
- This property translates the given clock source item ID into a human readable name using an AudioValueTranslation structure. The input data is the UInt32 containing the item ID to translated and the output data is a CFString. The caller is responsible for releasing the returned CFObject. This property is implemented by an AudioControl object that is a subclass of AudioClockControl.
- kAudioDevicePropertyClockSourceKindForID
- This property returns a UInt32 that identifies the kind of clock source the item ID refers to using an AudioValueTranslation structure. The input data is the UInt32 containing the item ID and the output data is the UInt32. Values for this property are defined in
. - kAudioDevicePropertyPlayThru
- A UInt32 where a value of 0 means that play through is off and a value of 1 means that it is on. This property is implemented by an AudioControl object that is a subclass of AudioMuteControl. Further, the control that implements this property is only available through kAudioDevicePropertyScopePlayThrough.
- kAudioDevicePropertyPlayThruSolo
- A UInt32 where a value of 1 means that just that play through element is audible and the other elements are inaudible. The property is implemented by an AudioControl object that is a subclass of AudioSoloControl. Further, the control that implements this property is only available through kAudioDevicePropertyScopePlayThrough.
- kAudioDevicePropertyPlayThruVolumeScalar
- A Float32 that represents the value of the volume control. The range is between 0.0 and 1.0 (inclusive). This property is implemented by an AudioControl object that is a subclass of AudioVolumeControl.Further, the control that implements this property is only available through kAudioDevicePropertyScopePlayThrough.
- kAudioDevicePropertyPlayThruVolumeDecibels
- A Float32 that represents the value of the volume control in dB. This property is implemented by an AudioControl object that is a subclass of AudioVolumeControl. Further, the control that implements this property is only available through kAudioDevicePropertyScopePlayThrough.
- kAudioDevicePropertyPlayThruVolumeRangeDecibels
- An AudioValueRange that contains the minimum and maximum dB values the control can have. This property is implemented by an AudioControl object that is a subclass of AudioVolumeControl. Further, the control that implements this property is only available through kAudioDevicePropertyScopePlayThrough.
- kAudioDevicePropertyPlayThruVolumeScalarToDecibels
- A Float32 that on input contains a scalar volume value for the and on exit contains the equivalent dB value. This property is implemented by an AudioControl object that is a subclass of AudioVolumeControl. Further, the control that implements this property is only available through kAudioDevicePropertyScopePlayThrough.
- kAudioDevicePropertyPlayThruVolumeDecibelsToScalar
- A Float32 that on input contains a dB volume value for the and on exit contains the equivalent scalar value. This property is implemented by an AudioControl object that is a subclass of AudioVolumeControl. Further, the control that implements this property is only available through kAudioDevicePropertyScopePlayThrough.
- kAudioDevicePropertyPlayThruStereoPan
- A Float32 where 0.0 is full left, 1.0 is full right, and 0.5 is center. This property is implemented by an AudioControl object that is a subclass of AudioStereoPanControl. Further, the control that implements this property is only available through kAudioDevicePropertyScopePlayThrough.
- kAudioDevicePropertyPlayThruStereoPanChannels
- An array of two UInt32s that indicate which elements of the owning object the signal is being panned between. This property is implemented by an AudioControl object that is a subclass of AudioStereoPanControl. Further, the control that implements this property is only available through kAudioDevicePropertyScopePlayThrough.
- kAudioDevicePropertyPlayThruDestination
- A UInt32 whose value is the item ID for the currently selected play through data destination. This property is implemented by an AudioControl object that is a subclass of AudioDataDestinationControl. Further, the control that implements this property is only available through kAudioDevicePropertyScopePlayThrough.
- kAudioDevicePropertyPlayThruDestinations
- An array of UInt32s that are represent all the IDs of all the play through data destinations currently available. This property is implemented by an AudioControl object that is a subclass of AudioDataDestinationControl. Further, the control that implements this property is only available through kAudioDevicePropertyScopePlayThrough.
- kAudioDevicePropertyPlayThruDestinationNameForIDCFString
- This property translates the given play through data destination item ID into a human readable name using an AudioValueTranslation structure. The input data is the UInt32 containing the item ID to translated and the output data is a CFString. The caller is responsible for releasing the returned CFObject. This property is implemented by an AudioControl object that is a subclass of AudioDataDestinationControl. Further, the control that implements this property is only available through kAudioDevicePropertyScopePlayThrough.
- kAudioDevicePropertyChannelNominalLineLevel
- A UInt32 whose value is the item ID for the currently selected nominal line level. This property is implemented by an AudioControl object that is a subclass of AudioLineLevelControl.
- kAudioDevicePropertyChannelNominalLineLevels
- An array of UInt32s that represent all the IDs of all the nominal line levels currently available. This property is implemented by an AudioControl object that is a subclass of AudioLineLevelControl.
- kAudioDevicePropertyChannelNominalLineLevelNameForIDCFString
- This property translates the given nominal line level item ID into a human readable name using an AudioValueTranslation structure. The input data is the UInt32 containing the item ID to be translated and the output data is a CFString. The caller is responsible for releasing the returned CFObject. This property is implemented by an AudioCOntrol object that is a subclass of AudioLineLevelControl.
- kAudioDevicePropertyDriverShouldOwniSub
- A UInt32 where a value of 0 means that the AudioDevice should not claim ownership of any attached iSub and a value of 1 means that it should. Note that this property is only available for built-in devices and for USB Audio devices that use the standard class compliant driver. This property is implemented by an AudioControl object that is a subclass of AudioISubOwnerControl.
- kAudioDevicePropertySubVolumeScalar
- A Float32 that represents the value of the LFE volume control. The range is between 0.0 and 1.0 (inclusive). This property is implemented by an AudioControl object that is a subclass of AudioLFEVolumeControl.
- kAudioDevicePropertySubVolumeDecibels
- A Float32 that represents the value of the LFE volume control in dB. This property is implemented by an AudioControl object that is a subclass of AudioLFE VolumeControl.
- kAudioDevicePropertySubVolumeRangeDecibels
- An AudioValueRange that contains the minimum and maximum dB values the control can have. This property is implemented by an AudioControl object that is a subclass of AudioLFEVolumeControl.
- kAudioDevicePropertySubVolumeScalarToDecibels
- A Float32 that on input contains a scalar volume value for the and on exit contains the equivalent dB value. This property is implemented by an AudioControl object that is a subclass of AudioLFEVolumeControl.
- kAudioDevicePropertySubVolumeDecibelsToScalar
- A Float32 that on input contains a dB volume value for the and on exit contains the equivalent scalar value. This property is implemented by an AudioControl object that is a subclass of AudioLFEVolumeControl.
- kAudioDevicePropertySubMute
- A UInt32 where a value of 1 means that mute is enabled making the LFE on that element inaudible. The property is implemented by an AudioControl object that is a subclass of AudioLFEMuteControl.
AudioDevice Properties That Ought To Some Day Be Deprecated |
enum { kAudioDevicePropertyDeviceName = 'name', kAudioDevicePropertyDeviceNameCFString = kAudioObjectPropertyName, kAudioDevicePropertyDeviceManufacturer = 'makr', kAudioDevicePropertyDeviceManufacturerCFString = kAudioObjectPropertyManufacturer, kAudioDevicePropertyRegisterBufferList = 'rbuf', kAudioDevicePropertyBufferSize = 'bsiz', kAudioDevicePropertyBufferSizeRange = 'bsz#', kAudioDevicePropertyChannelName = 'chnm', kAudioDevicePropertyChannelNameCFString = kAudioObjectPropertyElementName, kAudioDevicePropertyChannelCategoryName = 'ccnm', kAudioDevicePropertyChannelCategoryNameCFString = kAudioObjectPropertyElementCategoryName, kAudioDevicePropertyChannelNumberName = 'cnnm', kAudioDevicePropertyChannelNumberNameCFString = kAudioObjectPropertyElementNumberName, kAudioDevicePropertySupportsMixing = 'mix?', kAudioDevicePropertyStreamFormat = 'sfmt', kAudioDevicePropertyStreamFormats = 'sfm#', kAudioDevicePropertyStreamFormatSupported = 'sfm?', kAudioDevicePropertyStreamFormatMatch = 'sfmm', kAudioDevicePropertyDataSourceNameForID = 'sscn', kAudioDevicePropertyClockSourceNameForID = 'cscn', kAudioDevicePropertyPlayThruDestinationNameForID = 'mddn', kAudioDevicePropertyChannelNominalLineLevelNameForID = 'cnlv' };
These selectors are still provided for backward compatibility. The description of the property will indicate in parentheses the better selectors to use and why.
- kAudioDevicePropertyDeviceName
- A C-string that contains the human readable name of the AudioDevice. (kAudioObjectPropertyName: CFStrings are better for localization.)
- kAudioDevicePropertyDeviceNameCFString
- A CFStringRef that contains the human readable name of the AudioDevice. The caller is responsible for releasing the returned CFObject. (kAudioObjectPropertyName: This is just another name for the inherited selector.)
- kAudioDevicePropertyDeviceManufacturer
- A C-string that contains the human readable name of the manufacturer of the AudioDevice. (kAudioObjectPropertyManufacturer: CFStrings are better for localization.)
- kAudioDevicePropertyDeviceManufacturerCFString
- A CFString that contains the human readable name of the manufacturer of the AudioDevice. The caller is responsible for releasing the returned CFObject. (kAudioObjectPropertyManufacturer: This is just another name for the inherited selector.)
- kAudioDevicePropertyRegisterBufferList
- This property allows clients to register a fully populated AudioBufferList that matches the topology described by kAudioDevicePropertyStreamConfiguration for doing input using AudioDeviceRead(). The AudioBufferList will be registered with the call the AudioDeviceSetProperty() and will be unregistered with the call to AudioDeviceGetProperty(). If this property isn't implemented by the AudioDevice, it implies that the AudioDevice also doesn't support AudioDeviceRead(). (Aggregate devices make AudioDeviceRead() obsolete for the most part.)
- kAudioDevicePropertyBufferSize
- A UInt32 containing the size in bytes of the IO buffer for the AudioStream containing the element. (kAudioDevicePropertyBufferFrameSize: with multiple AudioStreams and the requirement that all streams' buffers represent the same amount of time, it doesn't make sense to set the buffer size in bytes since it will be different for each stream.)
- kAudioDevicePropertyBufferSizeRange
- An AudioValueRange specifying the minimum and maximum bytes size for the IO buffer for the AudioStream containing the given element. (kAudioDevicePropertyBufferFrameSizeRange: see kAudioDevicePropertyBufferSize.)
- kAudioDevicePropertyChannelName
- A CFString that contains a human readable name for the given element in the given scope. The caller is responsible for releasing the returned CFObject. (kAudioObjectPropertyElementName: CFStrings are better for localization.)
- kAudioDevicePropertyChannelNameCFString
- A CFString that contains a human readable name for the given element in the given scope. The caller is responsible for releasing the returned CFObject. (kAudioObjectPropertyElementName: This is just another name for the inherited selector.)
- kAudioDevicePropertyChannelCategoryName
- A CFString that contains a human readable name for the category of the given element in the given scope. The caller is responsible for releasing the returned CFObject. (kAudioObjectPropertyElementCategoryName: CFStrings are better for localization.)
- kAudioDevicePropertyChannelCategoryNameCFString
- A CFString that contains a human readable name for the category of the given element in the given scope. The caller is responsible for releasing the returned CFObject. (kAudioObjectPropertyElementCategoryName: This is just another name for the inherited selector.)
- kAudioDevicePropertyChannelNumberName
- A CFString that contains a human readable name for the number of the given element in the given scope. The caller is responsible for releasing the returned CFObject. (kAudioObjectPropertyElementNumberName: CFStrings are better for localization.)
- kAudioDevicePropertyChannelNumberNameCFString
- A CFString that contains a human readable name for the number of the given element in the given scope. The caller is responsible for releasing the returned CFObject. (kAudioObjectPropertyElementNumberName: This is just another name for the inherited selector.)
- kAudioDevicePropertySupportsMixing
- A UInt32 where a value of 1 means the AudioDevice supports mixing and a value of 0 means that it doesn't and that all IO is performed in each AudioStream's current physical format. This property is changed indirectly by changing to a format that doesn't support mixing, such as AC-3. (The HAL now vends it's format information with a flag indicating the mixability in order to better support devices with streams that are both mixable and non- mixable.)
- kAudioDevicePropertyStreamFormat
- An AudioStreamBasicDescription that describes the current data format for the AudioStream that contains the channel referred to by the element number. (kAudioStreamPropertyVirtualFormat: Managing format information is inherently an operation on AudioStreams, rather than AudioDevices. It is confusing for the client to work with formats at the AudioDevice level and has been shown to lead to programming mistakes by clients when working with devices that have multiple streams.)
- kAudioDevicePropertyStreamFormats
- An array of AudioStreamBasicDescriptions that describe the available data formats for the AudioStream that contains the channel referred to by the element number. (kAudioStreamPropertyAvailableVirtualFormats: Managing format information is inherently an operation on AudioStreams, rather than AudioDevices. It is confusing for the client to work with formats at the AudioDevice level and has been shown to lead to programming mistakes by clients when working with devices that have multiple streams.)
- kAudioDevicePropertyStreamFormatSupported
- An AudioStreamBasicDescription is passed in to query whether or not the format is supported. A kAudioDeviceUnsupportedFormatError will be returned if the format is not supported and kAudioHardwareNoError will be returned if it is supported. AudioStreamBasicDescription fields set to 0 will be ignored in the query, but otherwise values must match exactly. (kAudioStreamPropertyAvailableVirtualFormats: The proper and most robust way to find a format that the AudioStream can support is to get the list of available formats and look through that rather than using this property.)
- kAudioDevicePropertyStreamFormatMatch
- An AudioStreamBasicDescription is passed in and the AudioStream will modify it to describe the best match, in the AudioDevice's opinion, for the given format. (kAudioStreamPropertyAvailableVirtualFormats: The proper and most robust way to find a format that the AudioStream can support is to get the list of available formats and look through that rather than using this property.)
- kAudioDevicePropertyDataSourceNameForID
- This property translates the given data source item ID into a human readable name using an AudioValueTranslation structure. The input data is the UInt32 holding the item ID to be translated and the output data is a buffer to hold the name as a null terminated c-string. (kAudioDevicePropertyDataSourceNameForIDCFString: CFStrings are better for localization.)
- kAudioDevicePropertyClockSourceNameForID
- This property translates the given clock source item ID into a human readable name using an AudioValueTranslation structure. The input data is the UInt32 holding the item ID to be translated and the output data is a buffer to hold the name as a null terminated c-string. (kAudioDevicePropertyClockSourceNameForIDCFString: CFStrings are better for localization.)
- kAudioDevicePropertyPlayThruDestinationNameForID
- This property translates the given play through destination item ID into a human readable name using an AudioValueTranslation structure. The input data is the UInt32 holding the item ID to be translated and the output data is a buffer to hold the name as a null terminated c-string. (kAudioDevicePropertyPlayThruDestinationNameForIDCFString: CFStrings are better for localization.)
- kAudioDevicePropertyChannelNominalLineLevelNameForID
- This property translates the given nominal line level item ID into a human readable name using an AudioValueTranslation structure. The input data is the UInt32 holding the item ID to be translated and the output data is a buffer to hold the name as a null terminated c-string. (kAudioDevicePropertyChannelNominalLineLevelNameForIDCFString: CFStrings are better for localization.)
AudioLevelControl |
enum { kAudioVolumeControlClassID = 'vlme', kAudioLFEVolumeControlClassID = 'subv', kAudioBootChimeVolumeControlClassID = 'pram' };
Subclass IDs
- kAudioVolumeControlClassID
- An AudioLevelControl for a general gain/attenuation stage.
- kAudioLFEVolumeControlClassID
- An AudioLevelControl for an LFE channel that results from bass management such as the iSub. Note that LFE channels that are represented as normal audio channels (in other words, real data is being fed them in an IOProc) will use kAudioVolumeControlClassID to manipulate the level.
- kAudioBootChimeVolumeControlClassID
- An AudioLevelControl for the boot chime of the CPU.
AudioLevelControl Properties |
enum { kAudioLevelControlPropertyScalarValue = 'lcsv', kAudioLevelControlPropertyDecibelValue = 'lcdv', kAudioLevelControlPropertyDecibelRange = 'lcdr', kAudioLevelControlPropertyConvertScalarToDecibels = 'lcsd', kAudioLevelControlPropertyConvertDecibelsToScalar = 'lcds' };
AudioLevelControl is a subclass of AudioControl and has only the single scope, kAudioObjectPropertyScopeGlobal, and only a master element.
- kAudioLevelControlPropertyScalarValue
- A Float32 that represents the value of the boot chime volume control. The range is between 0.0 and 1.0 (inclusive).
- kAudioLevelControlPropertyDecibelValue
- A Float32 that represents the value of the boot chime volume control in dB.
- kAudioLevelControlPropertyDecibelRange
- An AudioValueRange that contains the minimum and maximum dB values the boot chime control can have.
- kAudioLevelControlPropertyConvertScalarToDecibels
- A Float32 that on input contains a scalar volume value for the boot chime and on exit contains the equivalent dB value.
- kAudioLevelControlPropertyConvertDecibelsToScalar
- A Float32 that on input contains a dB volume value for the boot chime and on exit contains the equivalent scalar value.
AudioObject |
enum { kAudioObjectPropertyScopeGlobal = 'glob', kAudioObjectPropertyElementMaster = 0UL, kAudioObjectClassID = 'aobj', kAudioObjectClassIDWildcard = '****', kAudioObjectUnknown = 0UL };
Class Constants
- kAudioObjectPropertyScopeGlobal
- The AudioObjectPropertyScope for properties that apply to the object as a whole. All AudioObjects have a global scope and for some it is their only scope.
- kAudioObjectPropertyElementMaster
- The AudioObjectPropertyElement value for properties that apply to the master element or to the entire scope.
- kAudioObjectClassID
- The AudioClassID that identifies the AudioObject class.
- kAudioObjectClassIDWildcard
- The wildcard value for AudioClassIDs.
- kAudioObjectUnknown
- The AudioObjectID for a non-existant AudioObject.
AudioObject |
enum { kAudioObjectPropertyClass = 'clas', kAudioObjectPropertyOwner = 'stdv', kAudioObjectPropertyCreator = 'oplg', kAudioObjectPropertyName = 'lnam', kAudioObjectPropertyManufacturer = 'lmak', kAudioObjectPropertyElementName = 'lchn', kAudioObjectPropertyElementCategoryName = 'lccn', kAudioObjectPropertyElementNumberName = 'lcnn', kAudioObjectPropertyOwnedObjects = 'ownd', kAudioObjectPropertyListenerAdded = 'lisa', kAudioObjectPropertyListenerRemoved = 'lisr' };
Property Selectors
- kAudioObjectPropertyClass
- An AudioClassID that identifies the class of the AudioObject.
- kAudioObjectPropertyOwner
- An AudioObjectID that identifies the the AudioObject that owns the given AudioObject. Note that all AudioObjects are owned by some other AudioObject. The only exception is the AudioSystemObject, for which the value of this property is kAudioObjectUnknown.
- kAudioObjectPropertyCreator
- A CFString that contains the bundle ID of the plug-in that instantiated the object.
- kAudioObjectPropertyObjectName
- A CFString that contains the human readable name of the object. The caller is responsible for releasing the returned CFObject.
- kAudioObjectPropertyManufacturer
- A CFString that contains the human readable name of the manufacturer of the hardware the AudioObject is a part of. The caller is responsible for releasing the returned CFObject.
- kAudioObjectPropertyElementName
- A CFString that contains a human readable name for the given element in the given scope. The caller is responsible for releasing the returned CFObject.
- kAudioObjectPropertyElementCategoryName
- A CFString that contains a human readable name for the category of the given element in the given scope. The caller is responsible for releasing the returned CFObject.
- kAudioObjectPropertyElementNumberName
- A CFString that contains a human readable name for the number of the given element in the given scope. The caller is responsible for releasing the returned CFObject.
- kAudioObjectPropertyOwnedObjects
- An array of AudioObjectIDs that represent all the AudioObjects owned by the given object. The qualifier is an array of AudioClassIDs. If it is non-empty, the returned array of AudioObjectIDs will only refer to objects whose class is in the qualifier array or whose is a subclass of one in the qualifier array.
- kAudioObjectPropertyListenerAdded
- An AudioObjectPropertyAddress indicating the address to which a new listener was added. Note that this property is not for applications to use. Rather, this property is for the HAL shell to notify AudioObjects implemented by an AudioPlugIn when a listener is added.
- kAudioObjectPropertyListenerRemoved
- An AudioObjectPropertyAddress indicating the address to which a listener was removed. Note that this property is not for applications to use. Rather, this property is for the HAL shell to notify AudioObjects implemented by an AudioPlugIn when a listener is removed.
AudioPlugIn |
enum { kAudioPlugInClassID = 'aplg' };
Class Constants
- kAudioPlugInClassID
- The AudioClassID that identifies the AudioPlugIn class.
AudioPlugIn Properties |
enum { kAudioPlugInPropertyBundleID = 'piid', kAudioPlugInCreateAggregateDevice = 'cagg', kAudioPlugInDestroyAggregateDevice = 'dagg' };
AudioPlugIn is a subclass of AudioObject that represents a plug-in loaded by the
HAL that conforms to the API in
- kAudioPlugInPropertyBundleID
- A CFString that contains the bundle identifier for the AudioPlugIn. The caller is responsible for releasing the returned CFObject.
- kAudioPlugInCreateAggregateDevice
- This property is used to tell a plug-in to create a new AudioAggregateDevice. It's value is only read. The qualifier data for this property is a CFDictionary containing a description of the AudioAggregateDevice to create. The keys for the CFDictionary are defined in the AudioAggregateDevice Constants section. The value of the property that gets returned is the AudioObjectID of the newly created device.
- kAudioPlugInDestroyAggregateDevice
- This property is used to tell a plug-in to destroy an AudioAggregateDevice. Like kAudioPlugInCreateAggregateDevice, this property is read only. The value of the property is the AudioObjectID of the AudioAggregateDevice to destroy.
AudioSelectorControl |
enum { kAudioDataSourceControlClassID = 'dsrc', kAudioDataDestinationControlClassID = 'dest', kAudioClockSourceControlClassID = 'clck', kAudioLineLevelControlClassID = 'nlvl' };
Subclass IDs
- kAudioDataSourceControlClassID
- An AudioSelectorControl that identifies where the data for the element is coming from.
- kAudioDataDestinationControlClassID
- An AudioSelectorControl that identifies where the data for the element is going.
- kAudioClockSourceControlClassID
- An AudioSelectorControl that identifies where the timing info for the object is coming from.
- kAudioLineLevelControlClassID
- An AudioSelectorControl that identifies the nominal line level for the element. Note that this is not a gain stage but rather indicating the voltage standard (if any) used for the element, such as +4dBu, -10dBV, instrument, etc.
AudioSelectorControl Properties |
enum { kAudioSelectorControlPropertyCurrentItem = 'scci', kAudioSelectorControlPropertyAvailableItems = 'scai', kAudioSelectorControlPropertyItemName = 'scin' };
AudioSelectorControl is a subclass of AudioControl and has only the single scope, kAudioObjectPropertyScopeGlobal, and only a master element.
- kAudioSelectorControlPropertyCurrentItem
- A UInt32 that is the ID of the item currently selected.
- kAudioSelectorControlPropertyAvailableItems
- An array of UInt32s that represent the IDs of all the items available.
- kAudioSelectorControlPropertyItemName
- This property translates the given item ID into a human readable name. The qualifier contains the ID of the item to be translated and name is returned as a CFString as the property data. The caller is responsible for releasing the returned CFObject.
AudioStereoPanControl Properties |
enum { kAudioStereoPanControlPropertyValue = 'spcv', kAudioStereoPanControlPropertyPanningChannels = 'spcc' };
AudioStereoPanControl is a subclass of AudioControl and has only the single scope, kAudioObjectPropertyScopeGlobal, and only a master element.
- kAudioStereoPanControlPropertyValue
- A Float32 where 0.0 is full left, 1.0 is full right, and 0.5 is center.
- kAudioStereoPanControlPropertyPanningChannels
- An array of two UInt32s that indicate which elements of the owning object the signal is being panned between.
AudioStream |
enum { kAudioStreamClassID = 'astr', kAudioStreamUnknown = kAudioObjectUnknown };
Class Constants
- kAudioStreamClassID
- The AudioClassID that identifies the AudioStream class.
- kAudioStreamUnknown
- The AudioObjectID for a nonexistent AudioObject.
AudioStream Properties |
enum { kAudioStreamPropertyDirection = 'sdir', kAudioStreamPropertyTerminalType = 'term', kAudioStreamPropertyStartingChannel = 'schn', kAudioStreamPropertyLatency = kAudioDevicePropertyLatency, kAudioStreamPropertyVirtualFormat = 'sfmt', kAudioStreamPropertyAvailableVirtualFormats = 'sfma', kAudioStreamPropertyPhysicalFormat = 'pft ', kAudioStreamPropertyAvailablePhysicalFormats = 'pfta' };
AudioStream is a subclass of AudioObject and has only the single scope, kAudioObjectPropertyScopeGlobal. They have a master element and an element for each channel in the stream numbered upward from 1. Note that AudioStream objects share AudioControl objects with their owning AudioDevice. Consequently, all the standard AudioControl related property selectors implemented by AudioDevices are also implemented by AudioStreams. The same constants are to be used for such properties.
- kAudioStreamPropertyDirection
- A UInt32 where a value of 0 means that this AudioStream is an output stream and a value of 1 means that it is an input stream.
- kAudioStreamPropertyTerminalType
- A UInt32 whose value describes the general kind of functionality attached to the AudioStream. Constants that describe some of the values of this property are defined in
- kAudioStreamPropertyStartingChannel
- A UInt32 that specifies the first element in the owning device that corresponds to element one of this stream.
- kAudioStreamPropertyLatency
- A UInt32 containing the number of frames of latency in the AudioStream. Note that the owning AudioDevice may have additional latency so it should be queried as well. If both the device and the stream say they have latency, then the total latency for the stream is the device latency summed with the stream latency.
- kAudioStreamPropertyVirtualFormat
- An AudioStreamBasicDescription that describes the current data format for the AudioStream. The virtual format refers to the data format in which all IOProcs for the owning AudioDevice will perform IO transactions.
- kAudioStreamPropertyAvailableVirtualFormats
- An array of AudioStreamRangedDescriptions that describe the available data formats for the AudioStream. The virtual format refers to the data format in which all IOProcs for the owning AudioDevice will perform IO transactions.
- kAudioStreamPropertyPhysicalFormat
- An AudioStreamBasicDescription that describes the current data format for the AudioStream. The physical format refers to the data format in which the hardware for the owning AudioDevice performs it's IO transactions.
- kAudioStreamPropertyAvailablePhysicalFormats
- An array of AudioStreamRangedDescriptions that describe the available data formats for the AudioStream. The physical format refers to the data format in which the hardware for the owning AudioDevice performs it's IO transactions.
AudioStream Properties That Ought To Some Day Be Deprecated |
enum { kAudioStreamPropertyOwningDevice = kAudioObjectPropertyOwner, kAudioStreamPropertyPhysicalFormats = 'pft#', kAudioStreamPropertyPhysicalFormatSupported = 'pft?', kAudioStreamPropertyPhysicalFormatMatch = 'pftm' };
These selectors are still provided for backward compatibility. The description of the property will indicate in parentheses the better selectors to use and why.
- kAudioStreamPropertyOwningDevice
- The AudioObjectID of the AudioDevice of which this AudioStream is a part. (kAudioObjectPropertyOwner: This is just another name for the inherited selector.)
- kAudioStreamPropertyPhysicalFormats
- An array of AudioStreamBasicDescriptions that describe the available data formats for the AudioStream. The physical format refers to the data format in which the hardware for the owning AudioDevice performs it's IO transactions. (kAudioStreamPropertyAvailablePhysicalFormats: The new name for this property is much clearer for readers of the API to see what is meant and the AudioStreamRangedDescription structure provides better information.)
- kAudioStreamPropertyPhysicalFormatSupported
- An AudioStreamBasicDescription is passed in to query whether or not the format is supported. A kAudioDeviceUnsupportedFormatError will be returned if the format is not supported and kAudioHardwareNoError will be returned if it is supported. AudioStreamBasicDescription fields set to 0 will be ignored in the query, but otherwise values must match exactly. The physical format refers to the data format in which the hardware for the owning AudioDevice performs it's IO transactions. (kAudioStreamPropertyAvailablePhysicalFormats: The proper and most robust way to find a format that the AudioStream can support is to get the list of available formats and look through that rather than using this property.)
- kAudioStreamPropertyPhysicalFormatMatch
- An AudioStreamBasicDescription is passed in and the AudioStream will modify it to describe the best match, in the AudioDevice's opinion, for the given format. The physical format refers to the data format in which the hardware for the owning AudioDevice performs it's IO transactions. (kAudioStreamPropertyAvailablePhysicalFormats: The proper and most robust way to find a format that the AudioStream can support is to get the list of available formats and look through that rather than using this property.)
AudioSubDevice |
enum { kAudioSubDeviceClassID = 'asub' };
Class Constants
- kAudioSubDeviceClassID
- The AudioClassID that identifies the AudioSubDevice class.
AudioSubDevice |
enum { kAudioSubDeviceDriftCompensationMinQuality = 0, kAudioSubDeviceDriftCompensationLowQuality = 0x20, kAudioSubDeviceDriftCompensationMediumQuality = 0x40, kAudioSubDeviceDriftCompensationHighQuality = 0x60, kAudioSubDeviceDriftCompensationMaxQuality = 0x7F };
Clock Drift Compensation Methods
AudioSubDevice Properties |
enum { kAudioSubDevicePropertyExtraLatency = 'xltc', kAudioSubDevicePropertyDriftCompensation = 'drft', kAudioSubDevicePropertyDriftCompensationQuality = 'drfq' };
AudioSubDevice is a subclass of AudioDevice that is collected together with other sub-devices in an AudioAggregateDevice. AudioSubDevice objects do not implement an IO path nor any AudioDevice properties associated with the IO path. They also don't have any streams.
- kAudioSubDevicePropertyExtraLatency
- A Float64 indicating the number of sample frames to add to or subtract from the latency compensation used for this AudioSubDevice.
- kAudioSubDevicePropertyDriftCompensation
- A UInt32 where a value of 0 indicates that no drift compensation should be done for this AudioSubDevice and a value of 1 means that it should.
- kAudioSubDevicePropertyDriftCompensationQuality
- A UInt32 that controls the trade-off between quality and CPU load in the drift compensation. The range of values is from 0 to 128, where the lower the number, the worse the quality but also the less CPU is used to do the compensation.
AudioSystemObject |
enum { kAudioSystemObjectClassID = 'asys', kAudioObjectSystemObject = 1UL };
Class Constants
- kAudioSystemObjectClassID
- The AudioClassID that identifies the AudioSystemObject class.
- kAudioObjectSystemObject
- The AudioObjectID that always refers to the one and only instance of the AudioSystemObject.
AudioSystemObject Properties |
enum { kAudioHardwarePropertyProcessIsMaster = 'mast', kAudioHardwarePropertyIsInitingOrExiting = 'inot', kAudioHardwarePropertyDevices = 'dev#', kAudioHardwarePropertyDefaultInputDevice = 'dIn ', kAudioHardwarePropertyDefaultOutputDevice = 'dOut', kAudioHardwarePropertyDefaultSystemOutputDevice = 'sOut', kAudioHardwarePropertyDeviceForUID = 'duid', kAudioHardwarePropertySleepingIsAllowed = 'slep', kAudioHardwarePropertyUnloadingIsAllowed = 'unld', kAudioHardwarePropertyHogModeIsAllowed = 'hogr', kAudioHardwarePropertyRunLoop = 'rnlp', kAudioHardwarePropertyPlugInForBundleID = 'pibi' };
The AudioSystemObject has one scope, kAudioObjectPropertyScopeGlobal, and only a master element.
- kAudioHardwarePropertyProcessIsMaster
- A UInt32 where 1 means that the current process contains the master instance of the HAL. The master instance of the HAL is the only instance in which plug-ins should save/restore their devices' settings.
- kAudioHardwarePropertyIsInitingOrExiting
- A UInt32 whose value will be non-zero if the HAL is either in the midst of initializing or in the midst of exiting the process.
- kAudioHardwarePropertyDevices
- An array of the AudioDeviceIDs that represent all the devices currently available to the system.
- kAudioHardwarePropertyDefaultInputDevice
- The AudioDeviceID of the default input AudioDevice.
- kAudioHardwarePropertyDefaultOutputDevice
- The AudioDeviceID of the default output AudioDevice.
- kAudioHardwarePropertyDefaultOutputDevice
- The AudioDeviceID of the output AudioDevice to use for system related sound from the alert sound to digital call progress.
- kAudioHardwarePropertyDeviceForUID
- Using an AudioValueTranslation structure, this property translates the input CFStringRef containing a UID into the AudioDeviceID that refers to the AudioDevice with that UID. This property will return kAudioDeviceUnknown if the given UID does not match any currently available AudioDevice.
- kAudioHardwarePropertySleepingIsAllowed
- A UInt32 where 1 means that the process will allow the CPU to idle sleep even if there is audio IO in progress. A 0 means that the CPU will not be allowed to idle sleep. Note that this property won't affect when the CPU is forced to sleep.
- kAudioHardwarePropertyUnloadingIsAllowed
- A UInt32 where 1 means that this process wants the HAL to unload itself after a period of inactivity where there are no IOProcs and no listeners registered with any AudioObject.
- kAudioHardwarePropertyHogModeIsAllowed
- A UInt32 where 1 means that this process wants the HAL to automatically take hog mode and 0 means that the HAL should not automatically take hog mode on behalf of the process. Processes that only ever use the default device are the sort of that should set this property's value to 0.
- kAudioHardwarePropertyRunLoop
- The CFRunLoopRef the HAL is currently attaching all of it's system notification handlers to. By default, the HAL will create and manage it's own thread for this job. Clients can set this property to tell the HAL to use a thread of the client's choosing. The caller is responsible for releasing the returned CFObject.
- kAudioHardwarePropertyPlugInForBundleID
- Using an AudioValueTranslation structure, this property translates the input CFString containing a bundle ID into the AudioObjectID of the AudioPlugIn that corresponds to it. This property will return kAudioObjectUnkown if the given bundle ID doesn't match any AudioPlugIns.
AudioSystemObject Properties Implemented via AudioControl objects |
enum { kAudioHardwarePropertyBootChimeVolumeScalar = 'bbvs', kAudioHardwarePropertyBootChimeVolumeDecibels = 'bbvd', kAudioHardwarePropertyBootChimeVolumeRangeDecibels = 'bbd#', kAudioHardwarePropertyBootChimeVolumeScalarToDecibels = 'bv2d', kAudioHardwarePropertyBootChimeVolumeDecibelsToScalar = 'bd2v' };
These properties are also accessible by locating the AudioControl object attached to the AudioSystemObject and using that object to access the properties of the control.
- kAudioHardwarePropertyBootChimeVolumeScalar
- A Float32 that represents the value of the boot chime volume control. The range is between 0.0 and 1.0 (inclusive). This property is implemented by an AudioControl object that is a subclass of AudioBootChimeVolumeControl.
- kAudioHardwarePropertyBootChimeVolumeDecibels
- A Float32 that represents the value of the boot chime volume control in dB. This property is implemented by an AudioControl object that is a subclass of AudioBootChimeVolumeControl.
- kAudioHardwarePropertyBootChimeVolumeRangeDecibels
- An AudioValueRange that contains the minimum and maximum dB values the boot chime control can have. This property is implemented by an AudioControl object that is a subclass of AudioBootChimeVolumeControl.
- kAudioHardwarePropertyBootChimeVolumeScalarToDecibels
- A Float32 that on input contains a scalar volume value for the boot chime and on exit contains the equivalent dB value. This property is implemented by an AudioControl object that is a subclass of AudioBootChimeVolumeControl.
- kAudioHardwarePropertyBootChimeVolumeDecibelsToScalar
- A Float32 that on input contains a dB volume value for the boot chime and on exit contains the equivalent scalar value. This property is implemented by an AudioControl object that is a subclass of AudioBootChimeVolumeControl.
Error Constants |
enum { kAudioHardwareNoError = 0, kAudioHardwareNotRunningError = 'stop', kAudioHardwareUnspecifiedError = 'what', kAudioHardwareUnknownPropertyError = 'who?', kAudioHardwareBadPropertySizeError = '!siz', kAudioHardwareIllegalOperationError = 'nope', kAudioHardwareBadObjectError = '!obj', kAudioHardwareBadDeviceError = '!dev', kAudioHardwareBadStreamError = '!str', kAudioHardwareUnsupportedOperationError = 'unop', kAudioDeviceUnsupportedFormatError = '!dat', kAudioDevicePermissionsError = '!hog' };
These are the error constants that are unique to the HAL. Note that the HAL's functions can and will return other codes that are not listed here. While these constants give a general idea of what might have gone wrong during the execution of an API call, if an API call returns anything other than kAudioHardwareNoError it is to be viewed as the same failure regardless of what constant is actually returned.
- kAudioHardwareNoError
- The function call completed successfully.
- kAudioHardwareNotRunningError
- The function call requires that the hardware be running but it isn't.
- kAudioHardwareUnspecifiedError
- The function call failed while doing something that doesn't provide any error messages.
- kAudioHardwareUnknownPropertyError
- The AudioObject doesn't know about the property at the given address.
- kAudioHardwareBadPropertySizeError
- An improperly sized buffer was provided when accessing the data of a property.
- kAudioHardwareIllegalOperationError
- The requested operation couldn't be completed.
- kAudioHardwareBadObjectError
- The AudioObjectID passed to the function doesn't map to a valid AudioObject.
- kAudioHardwareBadDeviceError
- The AudioDeviceID passed to the function doesn't map to a valid AudioDevice.
- kAudioHardwareBadStreamError
- The AudioStreamID passed to the function doesn't map to a valid AudioStream.
- kAudioHardwareUnsupportedOperationError
- The AudioObject doesn't support the requested operation.
- kAudioDeviceUnsupportedFormatError
- The AudioStream doesn't support the requested format.
- kAudioDevicePermissionsError
- The requested operation can't be completed because the process doesn't have permission.
Property Wildcard Constants |
enum { kAudioObjectPropertySelectorWildcard = '****', kAudioObjectPropertyScopeWildcard = '****', kAudioObjectPropertyElementWildcard = 0xFFFFFFFFUL, kAudioPropertyWildcardPropertyID = kAudioObjectPropertySelectorWildcard, kAudioPropertyWildcardSection = 0xFF, kAudioPropertyWildcardChannel = kAudioObjectPropertyElementWildcard };
Wildcards match any and all values for there associated type. They are especially useful for registering listener procs to receive notifications and for querying an AudioObject's list of AudioControls.
- kAudioObjectPropertySelectorWildcard
- The wildcard value for AudioObjectPropertySelectors.
- kAudioObjectPropertyScopeWildcard
- The wildcard value for AudioObjectPropertyScopes.
- kAudioObjectPropertyElementWildcard
- The wildcard value for AudioObjectPropertyElements.
- kAudioPropertyWildcardPropertyID
- A synonym for kAudioObjectPropertySelectorWildcard.
- kAudioPropertyWildcardSection
- The wildcard value for the isInput argument of AudioDeviceGetPropertyInfo(), AudioDeviceGetProperty(), and AudioDeviceSetProperty().
- kAudioPropertyWildcardChannel
- A synonym for kAudioObjectPropertyElementWildcard.
StartAtTime/GetNearestStartTime |
enum { kAudioDeviceStartTimeIsInputFlag = (1L << 0), kAudioDeviceStartTimeDontConsultDeviceFlag = (1L << 1), kAudioDeviceStartTimeDontConsultHALFlag = (1L << 2) };
Flags
- kAudioDeviceStartTimeIsInputFlag
- Set to indicate that the requested time refers to an input time. Clear to indicate that it is an output time.
- kAudioDeviceStartTimeDontConsultDeviceFlag
- Set to indicate that the device should not be consulted when determining the start time. Clear to indicate that the device should be consulted. This flag cannot be set if kAudioDeviceStartTimeDontConsultHALFlag is set.
- kAudioDeviceStartTimeDontConsultHALFlag
- Set to indicate that the HAL should not be consulted when determining the start time. Clear to indicate that the HAL should be consulted. This flag cannot be set if kAudioDeviceStartTimeDontConsultDeviceFlag is set.
(Last Updated 12/13/2004)