• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: advice to associate custom signal processing with a device
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


References: 
 >advice to associate custom signal processing with a device (From: Iain McCowan <email@hidden>)

  • Prev by Date: "Best Practices" for temp buffers in Audio Units?
  • Next by Date: Re: play audio stream when app isn't running?
  • Previous by thread: advice to associate custom signal processing with a device
  • Next by thread: Re: Audio Video sync with Core Audio Queue Services
  • Index(es):
    • Date
    • Thread