f9bbcdee47
The real cost in the "frame by frame" stutter wasn't the custom capture path — it was LiveKit re-encoding via VP9 software with L3T3_KEY SVC (three spatial × three temporal layers, all CPU). Switching the per-publish codec to H.264 lets Chromium's hardware encoder take over on Windows and sidesteps the SVC mode entirely (H.264 has no SVC). Also pushes `contentHint = 'detail'` on the track — setScreenShareEnabled does this internally, the manual publishTrack paths had been missing it, which changes how the encoder allocates its frame budget for static UI content. Auto preset default framerate 60 → 30. 60fps desktop share burns three full-res encodes per frame at sizes up to 4K; 30 is what getDisplayMedia practically delivers anyway. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>