code: throwing out mp3mini, fixing cargo issues on windows with ksni

This commit is contained in:
Gabor Körber 2025-02-17 23:42:18 +01:00
parent 543ea46ad0
commit 61ed1afe9f
3 changed files with 5950 additions and 37 deletions

5946
Cargo.lock generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -14,7 +14,6 @@ dotenvy = "0.15.7"
enigo = "0.2.1"
log = "0.4.20"
minijinja = { version = "2.0.1", features = ["loader"] }
minimp3 = "0.5.1"
mp3-duration = "0.1.10"
regex = "1.9.0"
rodio = "0.18.1"
@ -22,11 +21,14 @@ serde = { version = "1.0.171", features = ["derive"] }
tokio = { version = "1.29.1", features = ["full"] }
xxhash-rust = { version = "0.8.6", features = ["xxh3", "const_xxh3"] }
eframe = "0.27.2"
tray-item = { version = "0.10", features = ["ksni"] }
tray-item = { version = "0.10" }
once_cell = "1.19.0"
raw-window-handle = "0.6.2"
image = "0.25.1"
[target.'cfg(target_os = "linux")'.dependencies]
tray-item = { version = "0.10", features = ["ksni"] }
[target.'cfg(windows)'.dependencies]
winit = "0.30"

View File

@ -1,7 +1,6 @@
use cpal::traits::{DeviceTrait, HostTrait};
use cpal::{Device, Host};
use log::{debug, error, info};
use minimp3::{Decoder, Error};
use regex::Regex;
use std::fs::File;
use std::io::Read;
@ -17,7 +16,6 @@ use std::thread;
#[derive(Clone)]
pub enum SoundDecoder {
Detect,
Mp3Mini,
Rodio,
}
@ -250,39 +248,6 @@ fn detect_decoder(_file_name: &str, sound_decoder: &SoundDecoder) -> SoundDecode
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).expect("Failed opening sound file.");
let mut file_data = Vec::new();
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 {
match decoder.next_frame() {
Ok(frame) => {
let source = rodio::buffer::SamplesBuffer::new(
2,
frame
.sample_rate
.try_into()
.expect("Sample Rate unlocking failed"),
&*frame.data,
);
sink.append(source);
}
Err(Error::Eof) => {
debug!("EOF");
break;
}
Err(e) => {
error!("{:?}", e);
break;
}
}
}
}
SoundDecoder::Rodio => {
// Rodio currently supports Ogg, Mp3, WAV and Flac
let file = File::open(&file_name).unwrap();