Replace the single-owner PCM queues with one shared LGMP SPMC stream.
Give each admitted client reliable state and an independent playback
cursor, while clients without clock authority resample locally.
Extend the audio protocol with per-client epochs and barriers.
Keep capture exclusive and bound authority backpressure so slow
secondary readers cannot affect the disciplined low-latency path.
Give microphone data priority over replaceable clock feedback and
reduce feedback traffic on the shared client-to-host FIFO.
Retry short FIFO stalls outside the realtime thread and coalesce
consecutive packets in the existing fixed Windows buffers.
Avoid one broker write per tiny PipeWire quantum without adding
allocations or intentional capture latency.
Advertise signed and floating-point 32-bit formats across mono,
stereo, quad, surround, 5.1, and 7.1 at every supported rate.
Carry sample encoding through the broker and LGMP protocol so integer
and floating-point streams remain distinct.
Expand packet, shared-memory, and ring capacity for eight-channel
32-bit audio.
Forward coalesced feedback through the broker to the render clock.
Keep capture independent and apply the rate to WaveRT timing.
Bound and slew targets, then restore unity when feedback stalls.
Withdraw feedback after the watchdog makes fallback safe.
Keep initial playback prewarming, but announce STOP when a stream that
has already run enters PAUSE or ACQUIRE. Restart it when RUN returns.
Keep RUN history across owner changes so a paused stream is not
mistaken for a new prewarm generation.
Only announce capture while it is running. Derive active status flags
from the stream generations successfully announced to the client.
Persist hardware-ID installation for the LGAudio WDK project and
enable deployment in every existing solution configuration.
This allows LGAudio to run as the kernel-debugger startup project.
Publish committed WaveRT render frames on a 4 kHz timer while keeping
packet completion and notification semantics unchanged.
Serialize clock sampling with position updates to prevent concurrent
queries from replaying elapsed time.
Move audio ingress and playback-credit recovery off the display timer.
Poll through a dedicated MMCSS worker at sub-millisecond intervals.
Wake capture retries immediately and drain queued client records during
release so backpressure cannot stall recording or shutdown.
Add optional playback and capture streams to the LGMP transport.
Negotiate ownership over the existing control path and keep audio
availability isolated from display transport readiness.
Route broker packets through public LGMP stream APIs without changing
the LGMP queue table or shared-memory mapping.
Open the optional audio broker from a passive worker and move bounded
playback and capture packets through a transport-neutral audio hub.
Attach audio sources after transport initialization without making audio
driver availability part of display transport readiness.
Expose cancel-safe direct-I/O queues for reading rendered frames and
writing captured frames through the private broker endpoint.
Separate render and capture storage, publish format and state
generations, and preserve local loopback while no broker is bound.
Expose a private, versioned control device that lets the IDD discover
and claim the active audio adapter without using the public PortCls
endpoints.
Restrict access to SYSTEM and UMDF hosts, track adapter and binding
generations, and keep broker failure optional. Reserve data-plane
capabilities without advertising them until PCM queues are available.
Add a WaveRT adapter with render and capture endpoints backed by a
local ring buffer and shared presentation clock.
Advertise PCM formats through 192 kHz, eight channels, and packed
24-bit samples. Register LGAudio in the IDD solution and package it as
Looking Glass Audio.
Add LGProtocol as a pinned submodule and consume its KVMFR protocol
definitions throughout the client, host, IDD, OBS, and profiler.
Keep Looking Glass framebuffer helpers local while removing duplicated
protocol headers and migrating users to KVMFR-scoped types.
Do not publish the default all-off LED value until Windows supplies a
real HID output report. Treat the first all-off report as valid and
retain known state across pipe reconnects.
Serialize feedback processing with connection invalidation so a stale
message cannot restore validity after disconnect.
Advertise PNG offers as delayed CF_DIBV5 data while retaining the
registered PNG representation. Decode requests with the native WIC
PNG decoder so applications that only accept DIB formats can paste
the image.
Report guest HID keyboard LED state from LGInput to LGIdd and
publish it with the LGMP input endpoint status.
Forward SPICE modifier updates through the same provider state so evdev
can synchronize physical keyboard LEDs across transport changes and
reconnects.
Bump the versioned pipe and KVMFR input status contracts for the new
feedback state.
Accept earlier LGMP input status versions without LED feedback so the
client retains input while the guest driver is being upgraded.
The interactive Helper can start when the console user token exists but
before WinSta0\Default is ready. SetDisplayConfig then returns
ERROR_ACCESS_DENIED while recovery exit caches the failure and keeps
topology enforcement suppressed.
Keep the recovery request pending while desktop access is transient.
Move the pipe worker to the input desktop and retry without caching
intermediate failures. Leave an exhausted access failure uncached so a
later replay can recover.
Restore the periodic enforcement timer and retry topology without
reapplying a display mode that Windows has already accepted.