Re: User Space Audio Driver
Re: User Space Audio Driver
- Subject: Re: User Space Audio Driver
- From: Jeff Moore <email@hidden>
- Date: Wed, 06 May 2009 14:40:17 -0700
On May 6, 2009, at 12:05 AM, AI Developer wrote:
We need to write an audio device driver where the actual hardware is
connected over Ethernet (we use raw ethernet frames, using a
proprietary protocol).
We're trying to decide whether to write an I/O Kit based kernel
driver/kext (IOAudioDevice based) or to create a user space driver
(AudioHardwarePlugin).
It seems that most existing drivers are I/O Kit based kexts, even
when the underlying device access mechanism is available in user-
space (USB, 1394).
Indeed. This is to, among other things, foster the sharing of the
device amongst many processes.
From what I understand, it's much more work to create a user space
driver (or maybe that's a subjective view, as I've written a number
of I/O Kit based kexts).
That's probably a fair statement. There is definitely more to a user-
land audio driver than a kernel-based audio driver.
Also, it seems that there's very little documentation available on
creating the user space driver.
Although there is the SampleHardwarePlugin example in the CoreAudio
SDK.
This is also probably a fair statement. The archives of this list also
have a wealth of information.
Is this a good starting point?
That's pretty much it's job.
Are there any other examples or source of documentation for writing
a user space driver?
There are a few open-source projects, like Jack, that have created a
user-land driver.
Any limitations that we need to be aware of?
Probably the biggest thing that you need to be aware of is that in
every process that uses the HAL, there will be an instance of your
driver. This is very different than the way drivers work in the
kernel. It makes sharing global state much more difficult as you have
to co-ordinate it across all the individual instance of your driver in
all of the processes. Note that this becomes very important if you
want your device to be able to be chosen as the default device as
every process has to have the same view of your device in such a case.
--
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