"Padu" <> wrote:
>
>Basically, I want to tap into the playback stream of an audio device. I've
>been doing audio recording for the last decade using the windows multimedia
>api, but that only works for the input channels (mic and line in for
>example).
>The application requirements dictate that not only I have to capture the
>audio output from a playback channel, but also mix in audio into it.
Unfortunately, pre-Vista and post-Vista require two completely different
approaches for this.
On XP and before, you can do this with an upper filter on your audio
device. It isn't easy, because you have to intercept and parse the KS
ioctl stream to determine the format and grab the data, but with a KMDF
driver it's not too bad.
On Vista, audio stack is almost completely redesigned. Old drivers still
work, but any HDAudio device (which means most motherboard audio) uses the
WaveRT driver model, where the audio never passes through kernel at all.
Instead, you can write a GFX APO, which is a user-mode DLL that lives in
the special audio engine process. The difficulty there is installation;
it's not hard to do for your own experiments, but it's more difficult for
production. There's a good white paper on the topic here:
http://www.microsoft.com/whdc/device/audio/sysfx.mspx
>If yes, what is the catch? How far back can I go in
>terms of platform (win2K would be nice, but we are probably willing to
>sacrifice it - XP mandatory - in lieu of greater productivity/driver
>reliability).
The filter driver works on 2K and XP. The APO works on Vista and beyond.
--
Tim Roberts,
Providenza & Boekelheide, Inc.