From 23a4649b37cb85edbe98f5a35f2c60dd8856987b Mon Sep 17 00:00:00 2001 From: Russell Ballestrini Date: Wed, 3 Jun 2026 17:45:50 -0400 Subject: [PATCH] =?UTF-8?q?zebra-spaces:=20music-mode=20polish=20=E2=80=94?= =?UTF-8?q?=20510k=20Opus,=20fullband=20pins,=20NACK,=20speaker=20picker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Codec headroom (Tier 1): - Opus 256 kbps → 510 kbps (spec ceiling) at every music-mode site: mic publish (SFU + mesh), screen audio, game-share audio. Both SDP maxaveragebitrate and RTP-level encodings[0].maxBitrate raised. - Pin Opus fullband: maxplaybackrate=48000, sprop-maxcapturerate=48000 so BWE pressure can't opportunistically narrow to 16/24 kHz. - cbr=0 explicit (VBR — Opus only spends what it needs). Loss resilience (Tier 2): - Audio NACK feedback (a=rtcp-fb: nack) injected after Opus rtpmap. Reactive packet recovery, near-zero overhead, ignored by browsers that don't honor it. - a=maxptime:120 in music mode advertises tolerance for larger frames from peers (more encode context = cleaner music at same bitrate). Playback chain (Tier 3): - New speaker output selector (setSinkId) so listeners can route peer audio to studio monitors / external DAC. Hidden on Safari (no setSinkId on HTMLMediaElement). Persists to localStorage; applied to every remote