From 22579ced3d1d847a14683fe3b47fa2076df01751 Mon Sep 17 00:00:00 2001 From: Eskil Queseth Date: Thu, 5 Nov 2020 00:44:04 +0100 Subject: add mute feature --- mumd/src/audio/output.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'mumd/src/audio') diff --git a/mumd/src/audio/output.rs b/mumd/src/audio/output.rs index 56da596..450bcc8 100644 --- a/mumd/src/audio/output.rs +++ b/mumd/src/audio/output.rs @@ -74,7 +74,7 @@ impl SaturatingAdd for u16 { pub fn curry_callback( buf: Arc>>, output_volume_receiver: watch::Receiver, - user_volumes: Arc>>, + user_volumes: Arc>>, ) -> impl FnMut(&mut [T], &OutputCallbackInfo) + Send + 'static { move |data: &mut [T], _info: &OutputCallbackInfo| { for sample in data.iter_mut() { @@ -85,11 +85,12 @@ pub fn curry_callback( let mut lock = buf.lock().unwrap(); for (id, client_stream) in &mut *lock { - let user_volume = user_volumes.lock().unwrap().get(id).cloned().unwrap_or(1.0); + let (user_volume, muted) = user_volumes.lock().unwrap().get(id).cloned().unwrap_or((1.0, false)); for sample in data.iter_mut() { - *sample = sample.saturating_add(Sample::from( - &(client_stream.buffer.pop_front().unwrap_or(0.0) * volume * user_volume), - )); + let s = client_stream.buffer.pop_front().unwrap_or(0.0) * volume * user_volume; + if !muted { + *sample = sample.saturating_add(Sample::from(&s)); + } } } } -- cgit v1.2.1