Bypassing Windows Mixer

From Hydrogenaudio Knowledgebase
Jump to: navigation, search

Impact on audio quality

Quality gains are questionable at best. In most cases the differences are irrelevant unless the output is digitally captured back and needs to be bit-exact for further processing.

Impact on latency

Bypassing Windows Mixer typically results in lower latency between decoding/rendering and output, though Windows Vista and newer allows low latency playback through WASAPI shared mode without bypassing the mixer.

Note that low latency playback is relevant to real-time processing and editing only. It's completely useless for music playback; in fact, higher latency is better in this case as it gives better protection against glitching from buffer underruns.

Player support

foobar2000 can bypass Windows Mixer using optional output components. Other players also support techniques for bypassing Windows mixer.

Pros

  • Full control over what gets delivered to your soundcard drivers.
  • Full control over what gets delivered to your soundcard, but only when your configuration ensures preventing other software from playing sounds at the same time (e.g. by using WASAPI exclusive mode).
  • Switching to ASIO mode can bypass driver conflicts within the WDM framework in windows.

Cons

  • Forfeits advantages of modern Windows audio pipeline: audio stream formats that aren't natively supported by your audio hardware will fail to play. You're likely to get errors with:
    • Mono streams.
    • Multichannel (more than two channels) streams on a soundcard with stereo output only.
    • Uncommon channel configurations.
    • Uncommon sample rates.

To workaround these issues, you'll have to use additional DSPs such as resampler or "convert mono to stereo" in foobar2000.

  • Interacting with soundcard drivers directly rather than letting Windows Mixer do it will often expose soundcard driver bugs that can't be triggered otherwise and lead to system-wide instability. There have been countless documented cases of otherwise stable soundcard drivers causing BSODs when using KS, ASIO or WASAPI. This happens because:
    • KS and WASAPI: while these output methods rely on the same driver code as playing sounds through Windows Mixer, various quirks such as buffer sizes are different; drivers tend to make unsafe assumptions that whoever is invoking them behaves exactly as Windows Mixer does; these drivers would also stop working correctly after OS updates that change these behaviors.
    • ASIO: many major hardware vendors release massively buggy ASIO drivers and suspend any work on their drivers as soon as they get some subset of ASIO software working with their product without obvious problem symptoms.

Alternate solutions

  • Windows Vista and newer lets you control what data format gets sent to your soundcard so you can get rid of the resampling step without bypassing the mixer by setting mixer's output sample rate matching the sample rate of what you play (44100Hz for CD-sourced material).