kAudioObjectPropertyControlList and control properties
kAudioObjectPropertyControlList and control properties
- Subject: kAudioObjectPropertyControlList and control properties
- From: Dominic Feira <email@hidden>
- Date: Tue, 13 Nov 2012 19:48:53 -0500
I am poking around core audio to look at the AudioControls that belong to a specified device. I have run into several problems. All of these observations are with built-in audio (both input and output) on my MacBook Pro 13-inch, Mid 2010 running 10.8.2. I have also tried an external USB microphone with similarly disappointing results.
1. kAudioObjectPropertyControlList is returning empty data
I am able to get kAudioObjectPropertyOwnedObjects from a device, but when I ask for kAudioObjectPropertyControlList the data that I get back is empty. The size of the data is correct. It's supposed to be an array of AudioObjectIDs, but the entire array is zeros.
I work around this problem by iterating through the kAudioObjectPropertyOwnedObjects and comparing the AudioClassID to the enumerated types in AudioHardwareBase.h. For example I can see that one of the owned objects returned is of class kAudioJackControlClassID and I know that is a control.
2. kAudioObjectPropertyBaseClass returns kAudioHardwareUnknownPropertyError for all AudioControls
When I ask an AudioControl for it's class ID I get the expected result. For example I see that one is kAudioJackControlClassID. However, when I ask for it's kAudioObjectPropertyBaseClass I get kAudioHardwareUnknownPropertyError. I would like to be able to directly determine that a control is kAudioBooleanControlClassID, but I am unable to. Instead I'm having to determine that kAudioJackControlClassID is a kAudioBooleanControlClassID because it is defined as such in the header. This leads to some extra code that should be unnecessary.
If I ask a stream or audio device for it's base class I get the correct answer, kAudioObjectClassID.
3. kAudioControlPropertyScope and kAudioControlPropertyElement return kAudioHardwareUnknownPropertyError for all AudioControls
Similarily when I ask for kAudioControlPropertyScope or kAudioControlPropertyElement from an AudioControl it is returning kAudioHardwareUnknownPropertyError. I would like to programmatically determine which element of a device the control affects.
I have found very little information about querying AudioControls on a device. The only reference to them that I have found is providing AudioControls in a HAL Plugin. Is what I am doing unsupported or deprecated?
-- Dominic
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden