AU hosting and AU life cycle management
AU hosting and AU life cycle management
- Subject: AU hosting and AU life cycle management
- From: Paul Davis <email@hidden>
- Date: Mon, 8 Feb 2010 14:58:56 -0500
We (Ardour/Mixbus) are having trouble with some details of hosting a
few specific AU plugins, particularly those from Universal Audio. Most
(an overwhelming majority) of AU plugins are well behaved in our host,
but several will dramatically misbehave (massive output spikes, noise
and worse) in specific circumstances, most of which are related to I/O
reconfiguration or the need to flush the current state of the plugin
for one reason or another.
I suspect the problem is with the AU "life cycle". The documentation
about Reset is tricky: AudioUnitReset() requires a scope and an
element, but the docs for AU developers say thing like "When you
develop an audio unit’s DSP code, you implement a Reset method to
return the DSP state of the audio unit to what it was when the audio
unit was first initialized. Host applications call the Reset method as
needed.". This doesn't really make it very clear what the relationship
is between the concept of a global reset, as show in the first diagram
here:
http://developer.apple.com/mac/library/DOCUMENTATION/MusicAudio/Conceptual/AudioUnitProgrammingGuide/TheAudioUnit/TheAudioUnit.html
and the actual API. Should a host call all N possible resets? (3
scopes, N elements at each scope)? As it stands, there is no clear
"Reset" method in the API, just a way to reset various parts of the
AU.
The host locating to a different point on the timeline seems like a
tremendously common case, yet its very hard to find out what a host
should do the an AU plugin when this occurs. Bill recently confirmed
that it is not intended that host calls Initialize() after a reset,
but there are strong hints (e.g. from discussions on a KVR thread a
year ago) that plugin deveopers are also confused over the
relationship between Reset and Initialize.
Furthermore it would be helpful know if other host developers have
made special accomodations for the hardware-based plugins such as
Universal Audio, or will they "just work" once we get the life cycle
right?
Because we are an open-source project, we can provide full source code
showing precisely what calls we make as a host - any advice we get has
the additional benefit of adding to the common knowledge of AU plugin
hosting (via google or svn, of course!) :).
thanks,
--p
_______________________________________________
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