Geoffrey McRae ff665c2031 [client] usb audio: support up to 192khz 24-bit
We can not support 32-bit because Windows is buggy:

The exact Windows 11 mmsys.cpl from build 26100.8737 populates Speaker
Setup testing against hard-coded speaker masks and for each calls
IKsFormatSupport::IsFormatSupported() using 24 hard-coded PCM formats.

These formats do not include 32-bit in 32-bit, consequently, every one
of the wizard’s format probes fails and it inserts zero channel-list
entries.

It does however test for 24-bit in 32-bit which passes, however this
exposes another breakage due to an inconsistency inside Windows
usbaudio2.sys

For bSubslotSize = 4, bBitResolution = 24, Windows does this:

1. It publishes a KS range whose minimum and maximum bit depths are both
   taken from bBitResolution, so the range says 24-bit.
2. It correctly constructs the actual stream format as:
   wBitsPerSample = 32, wValidBitsPerSample = 24
3. KS range intersection rejects that 24-in-32 format because its
   container is 32 bits while the published range says 24.
4. A packed 24-bit candidate passes range intersection, but the
   subsequent exact stream check rejects it because it uses a three-byte
   container while USB advertises four bytes.

Therefore no format can pass both checks. That exactly explains:

* USB Device Tree Viewer seeing 24-bit device ranges.
* The MMDevice endpoint exposing no usable formats.
* Windows being unable to start playback.

I verified this in the exact Windows 10.0.26100.8737 driver:

* KSPin::AddDataRange stores bBitResolution into both KS bit-depth
  bounds.
* MiniportWave::DataRangeIntersection tests those bounds.
* WaveFormatInfo::IsMatchingStreamFormat separately compares both the
  container width and valid-bit count.
2026-08-10 03:47:55 +10:00
2017-12-14 22:22:44 +11:00
2026-05-31 15:13:57 +10:00
2018-05-31 13:28:36 +10:00
2017-10-31 19:07:16 +11:00

Looking Glass

An extremely low latency KVMFR (KVM FrameRelay) implementation for guests with VGA PCI Passthrough.

Documentation

IMPORTANT

This project contains submodules that must be checked out if building from the git repository! If you are not a developer and just want to compile Looking Glass, please download the source archive from the website instead:

https://looking-glass.io/downloads

Source code for the documentation can be found in the /doc directory.

You may view this locally as HTML by running make html with python3-sphinx and python3-sphinx-rtd-theme installed.

Description
An extremely low latency KVMFR (KVM FrameRelay) implementation for guests with VGA PCI Passthrough.
Readme GPL-2.0 18 MiB
Languages
C 76.8%
C++ 20.3%
CMake 1.6%
NSIS 0.6%
GLSL 0.5%
Other 0.2%