pub struct AudioVizBuffer {
pub samples: AtomicRingBuffer,
pub fft_bins: AtomicRingBuffer,
pub rms_left: AtomicF32,
pub rms_right: AtomicF32,
pub peak_left: AtomicF32,
pub peak_right: AtomicF32,
pub phase_correlation: AtomicF32,
pub audio_clock_us: AtomicU64,
pub game_tick_us: AtomicU64,
pub active_lane: AtomicU8,
pub underrun_count: AtomicU32,
}Expand description
Shared visualization buffer between audio and render threads.
Fields§
§samples: AtomicRingBufferPCM stereo interleaved samples.
fft_bins: AtomicRingBufferFFT magnitude bins.
rms_left: AtomicF32RMS levels (300ms integration window).
rms_right: AtomicF32§peak_left: AtomicF32Peak levels (1.7s hold, then decay).
peak_right: AtomicF32§phase_correlation: AtomicF32Phase correlation coefficient (-1.0 to 1.0).
audio_clock_us: AtomicU64Audio thread clock (microseconds since start).
game_tick_us: AtomicU64Game tick clock (microseconds since start).
active_lane: AtomicU8Active lane indicator (0=game, 1=mixer, 2=file).
underrun_count: AtomicU32Buffer underrun counter.
Implementations§
Source§impl AudioVizBuffer
impl AudioVizBuffer
pub fn new(sample_capacity: usize, fft_capacity: usize) -> Self
Sourcepub fn compute_and_store_rms(&self, window: usize)
pub fn compute_and_store_rms(&self, window: usize)
Compute RMS from the last window stereo interleaved samples.
Called by audio thread after writing samples.
Sourcepub fn update_peak_hold(&self)
pub fn update_peak_hold(&self)
Update peak hold with decay. Called by audio thread.
Auto Trait Implementations§
impl !Freeze for AudioVizBuffer
impl RefUnwindSafe for AudioVizBuffer
impl Send for AudioVizBuffer
impl Sync for AudioVizBuffer
impl Unpin for AudioVizBuffer
impl UnsafeUnpin for AudioVizBuffer
impl UnwindSafe for AudioVizBuffer
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more