Re: Developing a PCI Audio Driver
Re: Developing a PCI Audio Driver
- Subject: Re: Developing a PCI Audio Driver
- From: Nathan Aschbacher <email@hidden>
- Date: Wed, 31 Jul 2002 23:57:21 -0700
Thank you very much for the response.
I just wanted to post a quick blurb taken from the MSDN regarding hardware
accelerated audio using DirectSound.
["DirectSound Buffers on PCI Cards
Most audio cards sold today, if not all, are designed to connect to the PCI
bus. With the movement to this bus comes a large increase in the available
bandwidth between the system and the audio card. It is now practical to have
the audio chip reach directly into system memory to retrieve audio data for
hardware mixing. As a result, it is no longer worthwhile to have on-board
memory for buffers."]
Now that's exactly what I'd like to be able to do with the SB Live! card
under MacOS X. So I'm to understand from your earlier response that if I
were to override the OS's built-in mixing function for the IOAudioFamily
that I could prevent the CPU from touching the audio data and could then
have the EMU10K1 on the SB Live! reach in using DMA and access the buffers
where the preliminary audio data is stored so that it can then do all the
necessary mixing and then play the result through it's output?
If that's correct then I'm very excited about the possibility of providing
the first system-wide accelerated audio solution for MacOS X.
Getting Ever More Hopeful,
Nathan Aschbacher
On 7/31/02 5:58 PM, "Matthew Xavier Mora" <email@hidden> wrote:
>
At 3:40 PM -0700 7/31/02, Nathan Aschbacher wrote:
>
>
> Is it possible to prevent the system's main CPU from pre-processing audio
>
> data/signals so that this can be offloaded to a custom audio chip like the
>
> EMU10k1 and subsequent generations? What I'm trying to do is determine the
>
> possibility and the implementation of an accelerated audio driver for MacOS
>
> X. The intention for this is to try and minimize the CPU load during the
>
> playing of audio. Microsoft's DirectSound driver API offers the ability to
>
> do this, where all audio output is offloaded to the sound processor instead
>
> of running on the main CPU. Though previously impossible under OS 9, I was
>
> hoping that a similar capability would be available in MacOS X's completely
>
> rebuilt audio system. I suppose in simplest terms I'm trying to create a
>
> driver for MacOS X that can accelerate CoreAudio just as a graphics card
>
> vendor would build a driver to accelerate CoreGraphics. The problem is that
>
> the hooks for graphics acceleration are evident and documented. No similar
>
> system seems to be in place for Audio under MacOS X, or at least it's not
>
> obvious.
>
>
>
> After studying the IOAudioEngine documentation as well as the
>
> IOAudioEngineUserClient docs and the Audio HAL I've found it difficult to
>
> determine at what point the CPU actually starts to work with the audio data.
>
> It seems like it's before the data ever reaches the Audio HAL which I guess
>
> means that there's little hope of being able to remove that burden from the
>
> CPU, but I was hoping someone would be able to direct me otherwise.
>
>
IOAudioFamily is responsible for mixing the audio streams before they
>
get to the driver. If you could override the mixing function you
>
could get each client's buffer and mix them and output that data
>
through your card. This would only work for clients that are using
>
your device. (ie if system beeps are still targeted for built in
>
hardware, then your card would not see this data).
>
>
In theory this could work though it has never been tried.
>
>
Good Luck,
>
>
Matt
_______________________________________________
coreaudio-api mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/coreaudio-api
Do not post admin requests to the list. They will be ignored.