xxxxx@gmail.com wrote:
Some advanced or professional music instruments have critically demand about these.
Yes, some have done so. However, that’s mostly the lunatic fringe. 99%
of users never have a problem. If you do not have a specific problem
you are trying to solve, then you will experience nothing but
frustration. You need to have a number you can measure, so you can
prove that things aren’t good enough, and so you can prove whether or
not your changes have any effect. Otherwise, you’re just wasting your time.
I think there do exist some latency to some extent , I just want to know if it is caused by the “kmix.sys” , and the improving method is BYPASS the the stream .
Windows XP is 9 years old. If there were a simple answer, it would have
been implemented a very long time ago. Latency has a large number of
possible causes, and each one adds a little bit to it.
> I thind this should be the explains of you , the DirectSound uses the
> wrapper filter “ksproxy.ax” , and these is a layer over the hardware??
> not dircetly.
>
No.
Do you consider that the DirectSound can be also thought to access to the hardware directly?
Look, NONE of these audio APIs “access the hardware directly”. You need
to get rid of that concept. It is simply impossible. It cannot be
done. ALL of these APIs go through an audio driver (the SAME audio
driver). The only difference is how many additional layers they add.
The audio driver, in the USB case, is usbaudio.sys. Usbaudio.sys
supports the kernel streaming protocol (through those IOCTL_KS ioctls I
mentioned previously). Anybody that wants to use a USB audio device in
Windows will eventually be sending IOCTL_KS ioctls to usbaudio.sys.
For DirectShow, the application hooks up a set of DirectShow filters to
ksproxy.ax, which talks to usbaudio.sys. For ASIO, the application
talks to the ASIO “driver”, which uses DirectKS to talk to
usbaudio.sys. For DirectSound, the DirectSound DLL talks to
usbaudio.sys (although this changed somewhat in Vista).
It’s all layers.
All hardware access in Windows happens in layers. Each driver talks to
the driver below it, using whatever interface it supports, and offers
services to drivers and applications above it, using some well-defined
interface. Thus, each layer is responsible for a relatively small part
of the puzzle, which makes things much easier to manage.
Usbaudio.sys is an audio driver. USBD doesn’t know anything about audio.
I think you mean that the audio data "should / must / have to" be pass though some filters , can not go to the USB bus directly.
Well, “filters” or “layers”. Audio data doesn’t know anything about
USB, so it has to pass through usbaudio.sys. After that, they’re just
USB packets with no concept of audio.
–
Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.