use std::sync::atomic::{AtomicU32, AtomicU64, Ordering};
#[derive(Default)]
pub struct MediaStats {
pub sent: AtomicU64,
pub send_dropped: AtomicU64,
pub received: AtomicU64,
pub lost: AtomicU64,
pub shed: AtomicU64,
pub rebuilt: AtomicU64,
pub concealed: AtomicU64,
pub late: AtomicU64,
pub depth_ms: AtomicU32,
pub jitter_ms: AtomicU32,
pub clicks_cut: AtomicU64,
pub bitrate_kbps: AtomicU32,
pub net_loss: AtomicU32,
pub mic_level: AtomicU32,
pub peer_level: AtomicU32,
pub share_sent: AtomicU64,
pub share_received: AtomicU64,
pub next_seq: AtomicU32,
pub next_share_seq: AtomicU32,
}
impl MediaStats {
pub fn mic_level(&self) -> f32 {
f32::from_bits(self.mic_level.load(Ordering::Relaxed))
}
pub fn peer_level(&self) -> f32 {
f32::from_bits(self.peer_level.load(Ordering::Relaxed))
}
pub fn net_loss(&self) -> f32 {
f32::from_bits(self.net_loss.load(Ordering::Relaxed))
}
}