From af7d2c6d24c5a8f7e568ddd2c89fdf649813de8d Mon Sep 17 00:00:00 2001 From: Josh Knapp Date: Mon, 7 Sep 2026 10:43:54 -0700 Subject: [PATCH] fix: pin video quality to stop OBS source resizing; add audio-only mode Live testing (2026-09-07) showed two real problems in one root cause: LiveKit's default subscriber behavior lets the SFU switch simulcast layers on its own bandwidth/adaptive logic, and this plugin never told it not to. For a real camera, that showed up as the OBS source's received frame size visibly hopping between 320x180/640x360/1280x720 mid-show -- OBS's async video source resizes to match, breaking any manual crop/position a director had set up. For the soundboard (a Camera-source track that exists only to satisfy RTMP's video requirement -- Soundboard.tsx -- with no real visual content), the same instability, plus the video showing at all, was pure noise: there was no way to pull just its audio. Both come from RemoteTrackPublication (livekit/remote_track_publication.h in the pinned SDK), on the exact publication object TrackSubscribedEvent and attachExistingTracks already hand this code: - setVideoQuality(VideoQuality::HIGH) on every wanted video track, unconditionally, so the SFU always sends the top simulcast layer instead of switching layers underneath a source with no rendered-size hint to give it (this is a native subscriber, not a sized