mirror of
https://github.com/Droid-Deck/DroidDeck.git
synced 2026-11-12 03:21:08 +00:00
- The output stream started before the client had its ring, so every connection opened with a run of short callbacks: six clicks per stream on a RedMagic, even idle. The callback now plays silence until the ring holds its target, and only a real underrun afterwards counts. - An underrun ends the block with a short fade and waits for the ring to refill to target before resuming with a fade in, instead of zero-padding every short callback. Each callback spent starved grows the target, so one stall sizes it for the next. With a producer freezing 60 ms every 2 s: 14 underruns before, 1 after. - During a reopen the outgoing and incoming streams could both drain the ring. Only the promoted stream reads it now; any other plays silence. - The ring target starts at 40 ms instead of two bursts (8 ms) and keeps what it learned across reopens. - The device buffer is at least two bursts; 12 ms was a single burst on devices that grant a 20 ms legacy stream.