summaryrefslogtreecommitdiff
path: root/client/src/audio.rs
diff options
context:
space:
mode:
Diffstat (limited to 'client/src/audio.rs')
-rw-r--r--client/src/audio.rs53
1 files changed, 31 insertions, 22 deletions
diff --git a/client/src/audio.rs b/client/src/audio.rs
index d90898a..e61f333 100644
--- a/client/src/audio.rs
+++ b/client/src/audio.rs
@@ -16,6 +16,7 @@
*/
use std::{
collections::{HashMap, VecDeque},
+ env::var,
sync::mpsc::{Receiver, SyncSender, sync_channel},
time::Instant,
};
@@ -34,8 +35,8 @@ use log::{debug, info, warn};
use nnnoiseless::{DenoiseState, RnnModel};
pub struct Audio {
- _instream: Stream,
- _outstream: Stream,
+ _instream: Option<Stream>,
+ _outstream: Option<Stream>,
rx: Receiver<Vec<u8>>,
tx: SyncSender<APlayPacket>,
}
@@ -63,26 +64,34 @@ impl Audio {
let (mut aenc, rx) = AEncoder::new()?;
let (mut adec, tx) = ADecoder::new()?;
- let instream = indev.build_input_stream(
- &inconf,
- move |samples: &[f32], _| {
- if let Err(e) = aenc.data(samples) {
- warn!("encoder error: {e}");
- }
- },
- |err| warn!("audio input error: {err}"),
- None,
- )?;
- let outstream = outdev.build_output_stream(
- &outconf,
- move |samples: &mut [f32], _| {
- if let Err(e) = adec.data(samples) {
- warn!("decoder error: {e}");
- }
- },
- |err| warn!("audio output error: {err}"),
- None,
- )?;
+ let instream = if var("DISABLE_AUDIO_IN").is_err() {
+ Some(indev.build_input_stream(
+ &inconf,
+ move |samples: &[f32], _| {
+ if let Err(e) = aenc.data(samples) {
+ warn!("encoder error: {e}");
+ }
+ },
+ |err| warn!("audio input error: {err}"),
+ None,
+ )?)
+ } else {
+ None
+ };
+ let outstream = if var("DISABLE_AUDIO_OUT").is_err() {
+ Some(outdev.build_output_stream(
+ &outconf,
+ move |samples: &mut [f32], _| {
+ if let Err(e) = adec.data(samples) {
+ warn!("decoder error: {e}");
+ }
+ },
+ |err| warn!("audio output error: {err}"),
+ None,
+ )?)
+ } else {
+ None
+ };
Ok(Self {
_instream: instream,