Re: IOAudioFamily : driver structure
Re: IOAudioFamily : driver structure
- Subject: Re: IOAudioFamily : driver structure
- From: Phil Montoya <email@hidden>
- Date: Mon, 20 Sep 2004 10:26:11 -0700
The single full duplex engine is more efficient and provides you with a
more compatible driver. However in order to use a single engine it is
critical that your hardware provide a single time stamp for all of the
streams (both input and output). There is just one call to start and
stop the engine and the timing is shared among all streams.
Initially I created two engines one for input and the other for output
mainly because our hardware had separate wrap interrupts for the input
and output buffers. I discovered this driver worked in most
applications but there were some applications that assumed the output
device was full duplex and could also do input. Logic Platinum 6 is
one example, it never saw the input engine or input stream.
I rewrote the driver to have a single engine and life is better.
The design flexibility you have in core audio is somewhat of a myth and
you can get yourself coded into a corner even if you do something that
is totally within the design guidelines but not really supported by
applications that use core audio. To me, it made perfect sense to
have separate engines with separate start/stop/and time stamping for
each stream since that is how our hardware was modeled. But if you use
the single engine model the assumption is that the hardware's input and
output are somehow synchronized and buffers are the same size.
Fortunately using an interrupt that fires every buffers worth of
samples and some offset calculations we could make this model work.
-Phil
On Sep 20, 2004, at 1:51 AM, nick wrote:
Hi,
I've noticed that some drivers create one AudioEngine with multiple
streams, whilst others create multiple audio engines with 1 audio
stream each.
Is there *any* advantage to having only one AudioEngine?
Does it have *any* subtle effects (eg performance for duplex audio
i/o)?
I'd like to know before a commit too much code to any one design!
Cheers,
Nick
_______________________________________________
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
_______________________________________________
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