rskit_media/stream/
audio.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
7pub struct SampleRate(pub u32);
8
9impl SampleRate {
10 pub fn hz(n: u32) -> Self {
12 Self(n)
13 }
14 pub fn cd() -> Self {
16 Self(44100)
17 }
18 pub fn dvd() -> Self {
20 Self(48000)
21 }
22 pub fn hd() -> Self {
24 Self(96000)
25 }
26}
27
28#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
30pub enum ChannelLayout {
31 Mono,
33 Stereo,
35 Surround51,
37 Surround71,
39 Custom(u16),
41}
42
43impl ChannelLayout {
44 pub fn channel_count(&self) -> u16 {
46 match self {
47 Self::Mono => 1,
48 Self::Stereo => 2,
49 Self::Surround51 => 6,
50 Self::Surround71 => 8,
51 Self::Custom(n) => *n,
52 }
53 }
54}