Screen share enhancements: audio profiles, preview panel, and volume controls#3762
Conversation
Introduce a ScreenShareAudioProfile enum with four quality levels (Music, MusicStereo, MusicHighQuality, MusicHighQualityStereo) and a persisted setting that defaults to MusicHighQuality. Stereo profiles implicitly enable stereo capture instead of requiring a separate toggle.
Read the user's screen share audio profile setting and pass it as publish options to setScreenShareEnabled. Disable audio processing (AGC, echo cancellation, noise suppression) for screen share audio, and derive stereo capture from the selected profile rather than a separate setting.
Add a dedicated Screen Share tab with radio buttons for selecting the audio quality profile (Music 48kbps, Music Stereo 64kbps, Music High Quality 96kbps, Music HQ Stereo 96kbps). Add corresponding translation keys.
Screen shares no longer appear in spotlight automatically. A new BehaviorSubject tracks which screen share IDs the user has accepted. Local screen shares bypass opt-in and always appear in spotlight. Modifies spotlight$, pip$, and hasRemoteScreenShares$ to filter through accepted shares. Stale accepted IDs are cleaned up when screen shares end. Exposes screenShares$, acceptedScreenShareIds$, acceptScreenShare(), and dismissScreenShare() on the CallViewModel interface. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
New panel shows a grid of remote screen share tiles with live video previews (no audio) and sharer display names. Clicking a tile toggles opt-in. Accepted shares show a "Viewing" badge. Adds translation keys for the preview panel UI. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds ScreenShareViewButton to the toolbar when remote screen shares are active. The button opens a modal containing the preview panel where users can opt in to individual screen shares. The button only renders when there are remote screen shares available. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds a dismiss button on remote screen share items in the spotlight tile. Clicking it calls dismissScreenShare to remove the share from the accepted set, returning the user to the grid or next accepted share. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Screen share audio can now be independently controlled via a menu button on the spotlight tile. Uses track-level volume (ScreenShareAudio) rather than participant-level volume to avoid conflicts with per-user controls. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
There are some new components in this PR. |
Is this tab always shown. I think adding another required step (next to the browser permissions ui) would be undesired. |
I will be adding these soon when I get time to work on my PRs (hoping it will be tomorrow). |
These are just quality settings in the settings section. They control the quality of the RTC screen share. These settings are needed as afaik there is no way to expose them as part of the browser screen share settings. We could potentially expose them next to the screen share button somehow though. |
Summary
Test plan
🤖 Generated with Claude Code