mirror of
https://github.com/nestriness/nestri.git
synced 2026-11-03 22:22:39 +02:00
The guest's audio stream ran about 3.5% short of realtime: 193 packets a second where 200 were due, with no network loss at all. The client plays at its own 48 kHz, so its buffer drained and underran every few seconds, idle or loaded. The graph was running 128-frame (2.67 ms) cycles. The 256 floor for VMs matched on `cpu.vm.name`, which PipeWire reads from DMI and nesbox does not provide, so it never applied, and neswire's 240-frame request was rounded down to a power of two. A busy guest missed ~20 of those cycles a second (pw-top ERR on neswire), and each missed cycle's audio never reached neswire while the graph clock moved on. - PipeWire is fixed at 240 frames, power-of-two rounding off: one cycle, one 5 ms Opus packet, twice the headroom of before. - neswire reads the graph position each cycle and fills exactly the frames a missed cycle skipped, as silence, so the stream stays at 48 kHz whatever the scheduler does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>