Re: User-land CoreAudio driver and Leopard
Re: User-land CoreAudio driver and Leopard
- Subject: Re: User-land CoreAudio driver and Leopard
- From: Stéphane Letz <email@hidden>
- Date: Wed, 28 Nov 2007 10:44:32 +0100
On Nov 27, 2007, at 3:36 AM, Stéphane Letz wrote:
Actually I found out that some applications call StopIOProc in the
IO callback... and since my system cannot handle that, I had to
reorganize the while thing. Now I'm using an additional thread that
execute pending commands (with ExecuteAllCommands) when these
commands are triggered from the IO callback, and this works well.
A primary example of such a construct is AUHAL. It pretty much always
stops it's IOProc from the IO thread.
Note that when an app stops it's IOProc from inside the IOProc, it has
a very specific semantic that you have to be sure to implement:
Stopping an IOProc from inside that IOProc has the guarantee that the
IOProc being stopped won't get called again.
Hum... not sure i can simply guarantee that, but I've never seen any
problem... What could happen?
The last problem I have is DVD Player that refuses to start when our
JackRouter driver is selected as default : I see AddIOProc but no
StartIOProc is ever called... If on the contrary "Built-in Audio" is
selected as default, *then* DVD Player is launched, DVD Player plays
correctly and in this case switching to JackRouter *dynamically*
using AMS while DVD Player is running works: DVD Player correctly
see the JackRouter driver and start playing...
Any idea on this specific problem?
When the DVD Player is outputting linear PCM, it just uses AUHAL like
any other application. When it is outputting AC-3 it uses the HAL
directly and has some strict requirements about what it expects the
device to look like (has to say it supports AC-3, etc).
I think the DVD Player also wants to set the buffer size to something
specific.
This was the problem. DVD Player tries to use a buffer of 1024 frames.
Since our plugin can only work with a single buffer-size (for a given
setting of the server), DVD Player fails to start is the server is
currently running with a size different from 1024.... But the strange
thing is that if DVD Player is first starting with another device
(like Built-in) then switched to JackRouter running at 512 frames, it
works!
So I guess this should be considered like a bug in DVD Player... Where
can this be reported?
Thanks
Stephane Letz _______________________________________________
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