feat(room): per-peer VU meters, own mic meter, local mute, call info bar
Enriches the in-room screen: - Per-peer VU meters: a live level bar per peer card (reuses the per-peer audio_levels stream), green while speaking, dim when idle/locally-muted. - Your own mic meter on the self-card (reuses the in-call MicLevel), green when transmitting, grey when muted or PTT-inactive. - Per-peer local mute (🔊/🔇): silences a peer for you only — decoded so their VU still moves, but not mixed. New CoreCommand::SetPeerMuted + a locally_muted set in the core/mixer, distinct from per-peer volume. - Header call-info: participant count + a live m:ss / h:mm:ss call timer (dependency-free — rides the in-call event stream rather than a tick sub). format_duration unit-tested. Build + clippy clean, 70 lib tests. Field-verified on a real desktop<->dopedart call. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -11,6 +11,9 @@ pub enum CoreCommand {
|
||||
SetPttMode(bool),
|
||||
SetPttActive(bool),
|
||||
SetPeerVolume(EndpointId, f32),
|
||||
/// Locally mute/unmute a peer: when muted, their audio is decoded (so levels
|
||||
/// still show) but not mixed into our output.
|
||||
SetPeerMuted(EndpointId, bool),
|
||||
SetNoiseGateThreshold(f32),
|
||||
/// App-internal capture gain (mic), applied before the gate/encode. 1.0 = unity.
|
||||
SetInputVolume(f32),
|
||||
|
||||
Reference in New Issue
Block a user