Audio Server PlugIn Custom Properties
Audio Server PlugIn Custom Properties
- Subject: Audio Server PlugIn Custom Properties
- From: Daniel Lindenfelser <email@hidden>
- Date: Sun, 28 Dec 2014 16:38:04 +0100
Hi
i have a problem using the Custom Properties on a Audio Server PlugIn.
My Code looks like this:
On my PlugIn i configure the Custom Properties like this:
GetPropertyData:
case kAudioObjectPropertyCustomPropertyInfoList: {
UInt32 theNumberItemsToFetch;
// Calculate the number of items that have been requested. Note that this
// number is allowed to be smaller than the actual size of the list. In such
// case, only that number of items will be returned
theNumberItemsToFetch = (UInt32)(inDataSize / sizeof(AudioServerPlugInCustomPropertyInfo));
// clamp it to the number of items we have
if (theNumberItemsToFetch > kAudioPlugInPropertyUltraschallNumberOfObjects) {
theNumberItemsToFetch = kAudioPlugInPropertyUltraschallNumberOfObjects;
}
if (theNumberItemsToFetch > 0) {
((AudioServerPlugInCustomPropertyInfo*)outData)[0].mSelector = kAudioPlugInPropertyUltraschallSettings;
((AudioServerPlugInCustomPropertyInfo*)outData)[0].mPropertyDataType = kAudioServerPlugInCustomPropertyDataTypeCFPropertyList;
((AudioServerPlugInCustomPropertyInfo*)outData)[0].mQualifierDataType = kAudioServerPlugInCustomPropertyDataTypeNone;
}
if (theNumberItemsToFetch > 1) {
((AudioServerPlugInCustomPropertyInfo*)outData)[1].mSelector = kAudioPlugInPropertyUltraschallDump;
((AudioServerPlugInCustomPropertyInfo*)outData)[1].mPropertyDataType = kAudioServerPlugInCustomPropertyDataTypeCFString;
((AudioServerPlugInCustomPropertyInfo*)outData)[1].mQualifierDataType = kAudioServerPlugInCustomPropertyDataTypeNone;
}
// report how much we wrote
outDataSize = (UInt32)(theNumberItemsToFetch * sizeof(AudioServerPlugInCustomPropertyInfo));
break;
}
and my test values returned like this:
case kAudioPlugInPropertyUltraschallSettings: {
// check the arguments
ThrowIf(inDataSize < sizeof(AudioObjectID), CAException(kAudioHardwareBadPropertySizeError), "UltHub_GetPlugInPropertyData: not enough space for the return value of kAudioPlugInPropertyUltraschallSettings");
CACFDictionary test;
test.AddBool(CFSTR("TEST"), true);
CFPropertyListRef data = test.AsPropertyList();
*reinterpret_cast<CFPropertyListRef*>(outData) = data;
outDataSize = sizeof(CFPropertyListRef);
break;
}
case kAudioPlugInPropertyUltraschallDump: {
CAMutex::Locker theLocker(mMutex);
// check the arguments
ThrowIf(inDataSize < sizeof(AudioObjectID), CAException(kAudioHardwareBadPropertySizeError), "UltHub_GetPlugInPropertyData: not enough space for the return value of kAudioPlugInPropertyUltraschallSettings");
*reinterpret_cast<CFStringRef*>(outData) = CFSTR(“Test");
outDataSize = sizeof(CFStringRef);
break;
}
after i debug my plugin all looks right on the plugin side.
But on my Console Test Application i always get a EXEC_BAS_ACCESS exception.
CAHALAudioSystemObject systemObject;
AudioObjectID pluginID = systemObject.GetAudioPlugInForBundleID(CFSTR("fm.ultraschall.UltraschallHub"));
CAHALAudioObject plugin(pluginID);
AudioObjectShow(pluginID);
CAPropertyAddress inAddress(kAudioPlugInPropertyUltraschallDump);
if (plugin.HasProperty(inAddress)) {
CFStringRef dump = plugin.GetPropertyData_CFString(inAddress);
NSLog(@"dump: %@", dump);
}
I can’t find any documentation of Custom Properties but it looks like i can’t access the memory where the CFStringRef points to.
Do i use the Custom Properties in a wrong way or is this a bug?
regards
Daniel
_______________________________________________
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