Loop forever, handle errors more gracefully
This commit is contained in:
parent
22ac4dbc2b
commit
10c9753262
18
src/main.rs
18
src/main.rs
@ -8,7 +8,7 @@ use audiopus::{Application, Channels, SampleRate};
|
|||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
use cpal::traits::{DeviceTrait, HostTrait, StreamTrait};
|
use cpal::traits::{DeviceTrait, HostTrait, StreamTrait};
|
||||||
use cpal::{FromSample, Sample, StreamConfig};
|
use cpal::{FromSample, Sample, StreamConfig};
|
||||||
use log::{LevelFilter, info};
|
use log::{LevelFilter, info, error};
|
||||||
use std::net::SocketAddr;
|
use std::net::SocketAddr;
|
||||||
use std::sync::{Arc, Mutex};
|
use std::sync::{Arc, Mutex};
|
||||||
|
|
||||||
@ -68,11 +68,8 @@ fn main() -> Result<(), anyhow::Error> {
|
|||||||
udp_connection,
|
udp_connection,
|
||||||
)));
|
)));
|
||||||
|
|
||||||
// A flag to indicate that recording is in progress.
|
|
||||||
println!("Begin recording...");
|
|
||||||
|
|
||||||
let err_fn = move |err| {
|
let err_fn = move |err| {
|
||||||
eprintln!("an error occurred on stream: {err}");
|
error!("an error occurred on stream: {err}");
|
||||||
};
|
};
|
||||||
|
|
||||||
let sound_buffer2 = sound_buffer.clone();
|
let sound_buffer2 = sound_buffer.clone();
|
||||||
@ -108,13 +105,12 @@ fn main() -> Result<(), anyhow::Error> {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
info!("Running tap...");
|
||||||
stream.play()?;
|
stream.play()?;
|
||||||
|
|
||||||
// Let recording go for roughly three seconds.
|
std::thread::park();
|
||||||
std::thread::sleep(std::time::Duration::from_secs(3));
|
|
||||||
drop(stream);
|
|
||||||
drop(sound_buffer);
|
|
||||||
|
|
||||||
|
info!("Exiting...");
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -128,6 +124,8 @@ fn write_input_data<const N: usize, T>(
|
|||||||
if let Ok(mut ctx) = ctx.try_lock() {
|
if let Ok(mut ctx) = ctx.try_lock() {
|
||||||
let sample: Vec<f32> = input.iter().map(|s| f32::from_sample(*s)).collect();
|
let sample: Vec<f32> = input.iter().map(|s| f32::from_sample(*s)).collect();
|
||||||
|
|
||||||
ctx.write_data(&sample).unwrap();
|
if let Err(err) = ctx.write_data(&sample) {
|
||||||
|
error!("Got error when writing data to sound buffer: {err}")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user