Re: advice to associate custom signal processing with a device
Re: advice to associate custom signal processing with a device
- Subject: Re: advice to associate custom signal processing with a device
- From: Jeff Moore <email@hidden>
- Date: Mon, 2 Nov 2009 11:11:24 -0800
On Nov 1, 2009, at 5:38 PM, Iain McCowan wrote:
Can anyone advise what is the best way to achieve my goal, of
associating my signal processing with a particular hardware device,
transparently across all applications?
This processing would need to be done in the kernel as part of your
driver's mix-and-clip processing. That's really the easiest place to
put it. I believe that is where the USB Audio driver's plug-ins patch
into the signal path, so you should be good to go in that regard.
I have attempted to extend the SampleUSBAudioPlugin kext example to
achieve this, however I need FFT and vector math routines. These
don't seem to be available in the Kernel or IOKit frameworks (I see
only a few limited vector math operations), and I am not sure that
it is possible build or run a kernel extension linked to other
frameworks or libraries with FFT and vector routines, such as Intel
IPP library or the Accelerate Framework (vDSP).
Obviously, you can't link in user-land frameworks or shared libraries.
That just won't work. You need to either use the facilities the kernel
provides, which includes a limited version of the routines in
Accelerate.framework, or you need to build all the code you need for
your signal processing into your kext.
One thing to be aware of is that kexts don't really allow for floating
point code to be built into them. Typically what audio drivers do to
work around this is to build all the floating point code into a static
library that is linked into the kext. You can see an example of doing
this in the AudioReflectorDriver in /Developer/Examples/CoreAudio/HAL.
--
Jeff Moore
Core Audio
Apple
_______________________________________________
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