Commit Graph

8 Commits

Author SHA1 Message Date
Geoffrey McRae
0b0f227c08 [client/idd] network: discard stale audio after stalls
Keep PCM and its clock sample in cancellable datagrams so recovery
cannot replay audio buffered before a Wi-Fi stall.

Drop blocked real-time packets with an explicit discontinuity and make
a newer reconnect supersede stale audio authorities.
2026-11-06 14:40:30 +11:00
Geoffrey McRae
36e170d93a [client/idd] audio: support multiple playback clients
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.
2026-11-06 14:34:25 +11:00
Geoffrey McRae
f7b1133785 [client] audio: poll LGMP streams at 25 microseconds
Use the active polling floor as the maximum wait and advertised
playback delivery reserve. Keep learned scheduling jitter adaptive.
2026-11-06 14:34:25 +11:00
Geoffrey McRae
25d87e1c6d [client] lgmp: test same-generation audio restart
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.
2026-11-06 14:34:25 +11:00
Geoffrey McRae
b8ab04507e [client] audio: complete LGMP shutdown release
Treat the binding phase as the authoritative shutdown state after
graceful stream release.

Cover disconnect while the host drains and unbinds both streams.
2026-11-06 14:34:25 +11:00
Geoffrey McRae
f2f3787aec [client] audio: reduce LGMP poll reserve
Reduce the active LGMP poll bound and matching playback reserve from
250 us to 125 us.
2026-11-06 14:34:25 +11:00
Geoffrey McRae
4c395bb488 [client] audio: minimize LGMP playback latency
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.
2026-11-06 14:34:25 +11:00
Geoffrey McRae
3cd005ac74 [client] audio: add optional LGMP transport 2026-11-06 14:32:14 +11:00