firefly_rust/audio/
time.rs1use super::*;
2
3pub struct Time(pub(super) u32);
4
5impl Time {
6 pub const ZERO: Self = Self(0);
7
8 #[must_use]
9 pub fn samples(s: u32) -> Self {
10 Self(s)
11 }
12
13 #[must_use]
14 pub fn seconds(s: u32) -> Self {
15 Self(s * SAMPLE_RATE)
16 }
17
18 #[must_use]
19 pub fn ms(s: u32) -> Self {
20 Self(s * SAMPLE_RATE / 1000)
21 }
22
23 #[must_use]
24 pub fn duration(s: core::time::Duration) -> Self {
25 let s = s.as_secs_f32() * 44_100.;
26 #[expect(clippy::cast_sign_loss)]
27 let s = s as u32;
28 Self(s)
29 }
30}