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(track_buffers: &TrackBufferMap, track_key: u16) -> usize {
26 let track_buffers = track_buffers.lock().unwrap();
27 match track_buffers.get(&track_key) {
28 Some(track_buffer) => {
29 let track_buffer = track_buffer.lock().unwrap();
30 track_buffer.max_len().saturating_sub(track_buffer.len())
31 }
32 None => 0,
33 }
34}