proteus_lib/audio/
buffer.rs1use dasp_ring_buffer::Bounded;
4use std::{
5 collections::HashMap,
6 sync::{Arc, Mutex},
7};
8
9pub type TrackBuffer = Arc<Mutex<Bounded<Vec<f32>>>>;
11pub type TrackBufferMap = Arc<Mutex<HashMap<u16, TrackBuffer>>>;
13
14pub fn init_buffer_map() -> TrackBufferMap {
18 let track_buffers: TrackBufferMap = Arc::new(Mutex::new(HashMap::new()));
19 track_buffers
20}
21
22pub fn buffer_remaining_space(
26 track_buffers: &TrackBufferMap,
27 track_key: u16,
28) -> usize {
29 let track_buffers = track_buffers.lock().unwrap();
30 match track_buffers.get(&track_key) {
31 Some(track_buffer) => {
32 let track_buffer = track_buffer.lock().unwrap();
33 track_buffer.max_len().saturating_sub(track_buffer.len())
34 }
35 None => 0,
36 }
37}