41 #if !defined(__CAHALAudioObject_h__)
42 #define __CAHALAudioObject_h__
49 #include "CADebugMacros.h"
52 #if !defined(__COREAUDIO_USE_FLAT_INCLUDES__)
53 #include <CoreAudio/CoreAudio.h>
54 #include <CoreFoundation/CoreFoundation.h>
56 #include <CoreAudio.h>
57 #include <CoreFoundation.h>
64 class CAHALAudioObject
69 CAHALAudioObject(AudioObjectID inObjectID);
70 virtual ~CAHALAudioObject();
74 AudioObjectID GetObjectID()
const;
75 void SetObjectID(AudioObjectID inObjectID);
76 AudioClassID GetClassID()
const;
77 AudioObjectID GetOwnerObjectID()
const;
78 CFStringRef CopyOwningPlugInBundleID()
const;
79 CFStringRef CopyName()
const;
80 CFStringRef CopyManufacturer()
const;
81 CFStringRef CopyNameForElement(AudioObjectPropertyScope inScope, AudioObjectPropertyElement inElement)
const;
82 CFStringRef CopyCategoryNameForElement(AudioObjectPropertyScope inScope, AudioObjectPropertyElement inElement)
const;
83 CFStringRef CopyNumberNameForElement(AudioObjectPropertyScope inScope, AudioObjectPropertyElement inElement)
const;
87 UInt32 GetNumberOwnedObjects(AudioClassID inClass)
const;
88 void GetAllOwnedObjects(AudioClassID inClass, UInt32& ioNumberObjects, AudioObjectID* ioObjectIDs)
const;
89 AudioObjectID GetOwnedObjectByIndex(AudioClassID inClass, UInt32 inIndex);
93 bool HasProperty(
const AudioObjectPropertyAddress& inAddress)
const;
94 bool IsPropertySettable(
const AudioObjectPropertyAddress& inAddress)
const;
95 UInt32 GetPropertyDataSize(
const AudioObjectPropertyAddress& inAddress, UInt32 inQualifierDataSize,
const void* inQualifierData)
const;
97 void GetPropertyData(
const AudioObjectPropertyAddress& inAddress, UInt32 inQualifierDataSize,
const void* inQualifierData, UInt32& ioDataSize,
void* outData)
const;
98 void SetPropertyData(
const AudioObjectPropertyAddress& inAddress, UInt32 inQualifierDataSize,
const void* inQualifierData, UInt32 inDataSize,
const void* inData);
100 UInt32 GetPropertyData_UInt32(
const AudioObjectPropertyAddress& inAddress, UInt32 inQualifierDataSize = 0,
const void* inQualifierData = NULL)
const { UInt32 theAnswer = 0; UInt32 theDataSize = SizeOf32(UInt32); GetPropertyData(inAddress, inQualifierDataSize, inQualifierData, theDataSize, &theAnswer);
return theAnswer; }
101 void SetPropertyData_UInt32(
const AudioObjectPropertyAddress& inAddress, UInt32 inValue, UInt32 inQualifierDataSize = 0,
const void* inQualifierData = NULL) { SetPropertyData(inAddress, inQualifierDataSize, inQualifierData, SizeOf32(UInt32), &inValue); }
103 Float32 GetPropertyData_Float32(
const AudioObjectPropertyAddress& inAddress, UInt32 inQualifierDataSize = 0,
const void* inQualifierData = NULL)
const { Float32 theAnswer = 0; UInt32 theDataSize = SizeOf32(Float32); GetPropertyData(inAddress, inQualifierDataSize, inQualifierData, theDataSize, &theAnswer);
return theAnswer; }
104 void SetPropertyData_Float32(
const AudioObjectPropertyAddress& inAddress, Float32 inValue, UInt32 inQualifierDataSize = 0,
const void* inQualifierData = NULL) { SetPropertyData(inAddress, inQualifierDataSize, inQualifierData, SizeOf32(Float32), &inValue); }
106 Float64 GetPropertyData_Float64(
const AudioObjectPropertyAddress& inAddress, UInt32 inQualifierDataSize = 0,
const void* inQualifierData = NULL)
const { Float64 theAnswer = 0; UInt32 theDataSize = SizeOf32(Float64); GetPropertyData(inAddress, inQualifierDataSize, inQualifierData, theDataSize, &theAnswer);
return theAnswer; }
107 void SetPropertyData_Float64(
const AudioObjectPropertyAddress& inAddress, Float64 inValue, UInt32 inQualifierDataSize = 0,
const void* inQualifierData = NULL) { SetPropertyData(inAddress, inQualifierDataSize, inQualifierData, SizeOf32(Float64), &inValue); }
109 CFTypeRef GetPropertyData_CFType(
const AudioObjectPropertyAddress& inAddress, UInt32 inQualifierDataSize = 0,
const void* inQualifierData = NULL)
const { CFTypeRef theAnswer = NULL; UInt32 theDataSize = SizeOf32(CFTypeRef); GetPropertyData(inAddress, inQualifierDataSize, inQualifierData, theDataSize, &theAnswer);
return theAnswer; }
110 void SetPropertyData_CFType(
const AudioObjectPropertyAddress& inAddress, UInt32 inValue, UInt32 inQualifierDataSize = 0,
const void* inQualifierData = NULL) { SetPropertyData(inAddress, inQualifierDataSize, inQualifierData, SizeOf32(CFTypeRef), &inValue); }
112 CFStringRef GetPropertyData_CFString(
const AudioObjectPropertyAddress& inAddress, UInt32 inQualifierDataSize = 0,
const void* inQualifierData = NULL)
const { CFStringRef theAnswer = NULL; UInt32 theDataSize = SizeOf32(CFStringRef); GetPropertyData(inAddress, inQualifierDataSize, inQualifierData, theDataSize, &theAnswer);
return theAnswer; }
113 void SetPropertyData_CFString(
const AudioObjectPropertyAddress& inAddress, UInt32 inValue, UInt32 inQualifierDataSize = 0,
const void* inQualifierData = NULL) { SetPropertyData(inAddress, inQualifierDataSize, inQualifierData, SizeOf32(CFStringRef), &inValue); }
115 template <
class T>
void GetPropertyData_Struct(
const AudioObjectPropertyAddress& inAddress, T& outStruct, UInt32 inQualifierDataSize = 0,
const void* inQualifierData = NULL)
const { UInt32 theDataSize = SizeOf32(T); GetPropertyData(inAddress, inQualifierDataSize, inQualifierData, theDataSize, &outStruct); }
116 template <
class T>
void SetPropertyData_Struct(
const AudioObjectPropertyAddress& inAddress, T& inStruct, UInt32 inQualifierDataSize = 0,
const void* inQualifierData = NULL) { SetPropertyData(inAddress, inQualifierDataSize, inQualifierData, SizeOf32(T), &inStruct); }
118 template <
class T> UInt32 GetPropertyData_ArraySize(
const AudioObjectPropertyAddress& inAddress, UInt32 inQualifierDataSize = 0,
const void* inQualifierData = NULL)
const {
return GetPropertyDataSize(inAddress, inQualifierDataSize, inQualifierData) / SizeOf32(T); }
119 template <
class T>
void GetPropertyData_Array(
const AudioObjectPropertyAddress& inAddress, UInt32& ioNumberItems, T* outArray, UInt32 inQualifierDataSize = 0,
const void* inQualifierData = NULL)
const { UInt32 theDataSize = ioNumberItems * SizeOf32(T); GetPropertyData(inAddress, inQualifierDataSize, inQualifierData, theDataSize, outArray); ioNumberItems = theDataSize / SizeOf32(T); }
120 template <
class T>
void SetPropertyData_Array(
const AudioObjectPropertyAddress& inAddress, UInt32 inNumberItems, T* inArray, UInt32 inQualifierDataSize = 0,
const void* inQualifierData = NULL) { SetPropertyData(inAddress, inQualifierDataSize, inQualifierData, inNumberItems * SizeOf32(T), inArray); }
122 void AddPropertyListener(
const AudioObjectPropertyAddress& inAddress, AudioObjectPropertyListenerProc inListenerProc,
void* inClientData);
123 void RemovePropertyListener(
const AudioObjectPropertyAddress& inAddress, AudioObjectPropertyListenerProc inListenerProc,
void* inClientData);
127 AudioObjectID mObjectID;