code: updating project and trying to fix error: seems that minimp3 has some unsafe exception

This commit is contained in:
Gabor Körber 2025-02-17 23:21:44 +01:00
parent e5b572fcc1
commit b90a37d671
3 changed files with 1212 additions and 720 deletions

1917
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -85,6 +85,8 @@ fn main() {
println!("Server task completed successfully");
}
println!("Setting shutdown timeout...");
rt.shutdown_timeout(tokio::time::Duration::from_secs(5));
audio.lock().unwrap().exit();

View File

@ -243,7 +243,7 @@ fn detect_decoder(_file_name: &str, sound_decoder: &SoundDecoder) -> SoundDecode
// TODO: File detection via ending or whitelisting?
// This function MUST NOT return SoundDecoder::Detect
match sound_decoder {
SoundDecoder::Detect => SoundDecoder::Mp3Mini,
SoundDecoder::Detect => SoundDecoder::Rodio, // Mp3Mini seems bugged.
other => other.clone(),
}
}
@ -252,9 +252,11 @@ fn play_file(sink: &rodio::Sink, file_name: String, sound_decoder: &SoundDecoder
match detect_decoder(&file_name, sound_decoder) {
SoundDecoder::Mp3Mini => {
// MP3 Mini provides low latency playback
let mut sound_file = File::open(file_name).unwrap();
let mut sound_file = File::open(file_name).expect("Failed opening sound file.");
let mut file_data = Vec::new();
sound_file.read_to_end(&mut file_data).unwrap();
sound_file
.read_to_end(&mut file_data)
.expect("Failed reading sound file.");
// Iterate over the MP3 frames and play them
let mut decoder = Decoder::new(Cursor::new(file_data));
loop {
@ -262,7 +264,10 @@ fn play_file(sink: &rodio::Sink, file_name: String, sound_decoder: &SoundDecoder
Ok(frame) => {
let source = rodio::buffer::SamplesBuffer::new(
2,
frame.sample_rate.try_into().unwrap(),
frame
.sample_rate
.try_into()
.expect("Sample Rate unlocking failed"),
&*frame.data,
);
sink.append(source);