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.
Queue playback STOP, START, and DATA for the same wire generation.
Verify that the client creates a fresh local generation and delivers the
first restarted packet.
Treat the binding phase as the authoritative shutdown state after
graceful stream release.
Cover disconnect while the host drains and unbinds both streams.
Scope the legacy latency offset to classic SPICE and use the LGMP
poll bound as its fixed arrival reserve. Keep learned jitter additive.
Select provider clock feedback only when the current remote endpoint
advertises it, avoiding a failed startup attempt on broker v1.
Advertise optional audio mediation separately from runtime driver
availability, then negotiate ownership through the existing LGMP
client-control path.
Define fixed playback and capture stream records for packed PCM,
endpoint state, clock feedback, and targeted descriptor discovery.
Keep the LGMP queue table, recovery sidecar, and submodule unchanged.
Release LGMP stream slots before dispatching clipboard data so an X11
INCR consumer cannot prevent control queue acknowledgements.
Retain one bounded record in client memory while the sink is blocked.
Cancel abandoned X11 transfers after requestor destruction or a finite
progress timeout.
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.
A stable clock model can request a negative recovery slew while the
unbounded ring is physically underrun. This leaves the reader ahead of
the writer indefinitely and outputs silence until playback is restarted.
Floor active recovery at the physical low-water requirement. Rebase the
device-clock phase by any extra refill so modeled latency remains at the
target without restarting the underrun correction cycle.
Add a deterministic regression for negative physical debt opposing the
stable clock model.
Do not treat the capacity of an allocated PipeWire buffer as the
requested playback period when PipeWire supplies no per-buffer hint.
Use the current stream quantum when available and fall back to the
configured period.
Count one underrun per starvation episode and end the sync diagnostics
epoch when a logical source stops.
Resume a compatible backend synchronously so data after a same-wire
restart is accepted immediately. Rebase the first post-idle device tick
without passing a long gap through the short-step clock filter.
Cancel in-flight backlog trims before fresh audio can be queued.