xref: /aosp_15_r20/external/crosvm/devices/src/virtio/snd/constants.rs (revision bb4ee6a4ae7042d18b07a98463b9c8b875e44b39)
1 // Copyright 2020 The ChromiumOS Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 pub const VIRTIO_SND_R_JACK_INFO: u32 = 1;
6 pub const VIRTIO_SND_R_JACK_REMAP: u32 = 2;
7 
8 /* PCM control request types */
9 pub const VIRTIO_SND_R_PCM_INFO: u32 = 0x0100;
10 pub const VIRTIO_SND_R_PCM_SET_PARAMS: u32 = 0x0101;
11 pub const VIRTIO_SND_R_PCM_PREPARE: u32 = 0x0102;
12 pub const VIRTIO_SND_R_PCM_RELEASE: u32 = 0x0103;
13 pub const VIRTIO_SND_R_PCM_START: u32 = 0x0104;
14 pub const VIRTIO_SND_R_PCM_STOP: u32 = 0x0105;
15 
16 /* channel map control request types */
17 pub const VIRTIO_SND_R_CHMAP_INFO: u32 = 0x0200;
18 
19 /* jack event types */
20 pub const VIRTIO_SND_EVT_JACK_CONNECTED: u32 = 0x1000;
21 pub const VIRTIO_SND_EVT_JACK_DISCONNECTED: u32 = 0x1001;
22 
23 /* PCM event types */
24 pub const VIRTIO_SND_EVT_PCM_PERIOD_ELAPSED: u32 = 0x1100;
25 pub const VIRTIO_SND_EVT_PCM_XRUN: u32 = 0x1101;
26 
27 /* common status codes */
28 pub const VIRTIO_SND_S_OK: u32 = 0x8000;
29 pub const VIRTIO_SND_S_BAD_MSG: u32 = 0x8001;
30 pub const VIRTIO_SND_S_NOT_SUPP: u32 = 0x8002;
31 pub const VIRTIO_SND_S_IO_ERR: u32 = 0x8003;
32 
33 pub enum StatusCode {
34     OK = VIRTIO_SND_S_OK as isize,
35     IoErr = VIRTIO_SND_S_IO_ERR as isize,
36 }
37 
38 /* stream direction */
39 pub const VIRTIO_SND_D_OUTPUT: u8 = 0;
40 pub const VIRTIO_SND_D_INPUT: u8 = 1;
41 
42 /* supported jack features */
43 pub const VIRTIO_SND_JACK_F_REMAP: u32 = 0;
44 
45 /* supported PCM stream features */
46 pub const VIRTIO_SND_PCM_F_SHMEM_HOST: u8 = 0;
47 pub const VIRTIO_SND_PCM_F_SHMEM_GUEST: u8 = 1;
48 pub const VIRTIO_SND_PCM_F_MSG_POLLING: u8 = 2;
49 pub const VIRTIO_SND_PCM_F_EVT_SHMEM_PERIODS: u8 = 3;
50 pub const VIRTIO_SND_PCM_F_EVT_XRUNS: u8 = 4;
51 
52 /* supported PCM sample formats */
53 pub const VIRTIO_SND_PCM_FMT_IMA_ADPCM: u8 = 0;
54 pub const VIRTIO_SND_PCM_FMT_MU_LAW: u8 = 1;
55 pub const VIRTIO_SND_PCM_FMT_A_LAW: u8 = 2;
56 pub const VIRTIO_SND_PCM_FMT_S8: u8 = 3;
57 pub const VIRTIO_SND_PCM_FMT_U8: u8 = 4;
58 pub const VIRTIO_SND_PCM_FMT_S16: u8 = 5;
59 pub const VIRTIO_SND_PCM_FMT_U16: u8 = 6;
60 pub const VIRTIO_SND_PCM_FMT_S18_3: u8 = 7;
61 pub const VIRTIO_SND_PCM_FMT_U18_3: u8 = 8;
62 pub const VIRTIO_SND_PCM_FMT_S20_3: u8 = 9;
63 pub const VIRTIO_SND_PCM_FMT_U20_3: u8 = 10;
64 pub const VIRTIO_SND_PCM_FMT_S24_3: u8 = 11;
65 pub const VIRTIO_SND_PCM_FMT_U24_3: u8 = 12;
66 pub const VIRTIO_SND_PCM_FMT_S20: u8 = 13;
67 pub const VIRTIO_SND_PCM_FMT_U20: u8 = 14;
68 pub const VIRTIO_SND_PCM_FMT_S24: u8 = 15;
69 pub const VIRTIO_SND_PCM_FMT_U24: u8 = 16;
70 pub const VIRTIO_SND_PCM_FMT_S32: u8 = 17;
71 pub const VIRTIO_SND_PCM_FMT_U32: u8 = 18;
72 pub const VIRTIO_SND_PCM_FMT_FLOAT: u8 = 19;
73 pub const VIRTIO_SND_PCM_FMT_FLOAT64: u8 = 20;
74 /* digital formats (width / physical width) */
75 pub const VIRTIO_SND_PCM_FMT_DSD_U8: u8 = 21;
76 pub const VIRTIO_SND_PCM_FMT_DSD_U16: u8 = 22;
77 pub const VIRTIO_SND_PCM_FMT_DSD_U32: u8 = 23;
78 pub const VIRTIO_SND_PCM_FMT_IEC958_SUBFRAME: u8 = 24;
79 
80 /* supported PCM frame rates */
81 pub const VIRTIO_SND_PCM_RATE_5512: u8 = 0;
82 pub const VIRTIO_SND_PCM_RATE_8000: u8 = 1;
83 pub const VIRTIO_SND_PCM_RATE_11025: u8 = 2;
84 pub const VIRTIO_SND_PCM_RATE_16000: u8 = 3;
85 pub const VIRTIO_SND_PCM_RATE_22050: u8 = 4;
86 pub const VIRTIO_SND_PCM_RATE_32000: u8 = 5;
87 pub const VIRTIO_SND_PCM_RATE_44100: u8 = 6;
88 pub const VIRTIO_SND_PCM_RATE_48000: u8 = 7;
89 pub const VIRTIO_SND_PCM_RATE_64000: u8 = 8;
90 pub const VIRTIO_SND_PCM_RATE_88200: u8 = 9;
91 pub const VIRTIO_SND_PCM_RATE_96000: u8 = 10;
92 pub const VIRTIO_SND_PCM_RATE_176400: u8 = 11;
93 pub const VIRTIO_SND_PCM_RATE_192000: u8 = 12;
94 pub const VIRTIO_SND_PCM_RATE_384000: u8 = 13;
95 
96 /* standard channel position definition */
97 pub const VIRTIO_SND_CHMAP_NONE: u8 = 0; /* undefined */
98 pub const VIRTIO_SND_CHMAP_NA: u8 = 1; /* silent */
99 pub const VIRTIO_SND_CHMAP_MONO: u8 = 2; /* mono stream */
100 pub const VIRTIO_SND_CHMAP_FL: u8 = 3; /* front left */
101 pub const VIRTIO_SND_CHMAP_FR: u8 = 4; /* front right */
102 pub const VIRTIO_SND_CHMAP_RL: u8 = 5; /* rear left */
103 pub const VIRTIO_SND_CHMAP_RR: u8 = 6; /* rear right */
104 pub const VIRTIO_SND_CHMAP_FC: u8 = 7; /* front center */
105 pub const VIRTIO_SND_CHMAP_LFE: u8 = 8; /* low frequency (LFE) */
106 pub const VIRTIO_SND_CHMAP_SL: u8 = 9; /* side left */
107 pub const VIRTIO_SND_CHMAP_SR: u8 = 10; /* side right */
108 pub const VIRTIO_SND_CHMAP_RC: u8 = 11; /* rear center */
109 pub const VIRTIO_SND_CHMAP_FLC: u8 = 12; /* front left center */
110 pub const VIRTIO_SND_CHMAP_FRC: u8 = 13; /* front right center */
111 pub const VIRTIO_SND_CHMAP_RLC: u8 = 14; /* rear left center */
112 pub const VIRTIO_SND_CHMAP_RRC: u8 = 15; /* rear right center */
113 pub const VIRTIO_SND_CHMAP_FLW: u8 = 16; /* front left wide */
114 pub const VIRTIO_SND_CHMAP_FRW: u8 = 17; /* front right wide */
115 pub const VIRTIO_SND_CHMAP_FLH: u8 = 18; /* front left high */
116 pub const VIRTIO_SND_CHMAP_FCH: u8 = 19; /* front center high */
117 pub const VIRTIO_SND_CHMAP_FRH: u8 = 20; /* front right high */
118 pub const VIRTIO_SND_CHMAP_TC: u8 = 21; /* top center */
119 pub const VIRTIO_SND_CHMAP_TFL: u8 = 22; /* top front left */
120 pub const VIRTIO_SND_CHMAP_TFR: u8 = 23; /* top front right */
121 pub const VIRTIO_SND_CHMAP_TFC: u8 = 24; /* top front center */
122 pub const VIRTIO_SND_CHMAP_TRL: u8 = 25; /* top rear left */
123 pub const VIRTIO_SND_CHMAP_TRR: u8 = 26; /* top rear right */
124 pub const VIRTIO_SND_CHMAP_TRC: u8 = 27; /* top rear center */
125 pub const VIRTIO_SND_CHMAP_TFLC: u8 = 28; /* top front left center */
126 pub const VIRTIO_SND_CHMAP_TFRC: u8 = 29; /* top front right center */
127 pub const VIRTIO_SND_CHMAP_TSL: u8 = 34; /* top side left */
128 pub const VIRTIO_SND_CHMAP_TSR: u8 = 35; /* top side right */
129 pub const VIRTIO_SND_CHMAP_LLFE: u8 = 36; /* left LFE */
130 pub const VIRTIO_SND_CHMAP_RLFE: u8 = 37; /* right LFE */
131 pub const VIRTIO_SND_CHMAP_BC: u8 = 38; /* bottom center */
132 pub const VIRTIO_SND_CHMAP_BLC: u8 = 39; /* bottom left center */
133 pub const VIRTIO_SND_CHMAP_BRC: u8 = 40; /* bottom right center */
134 
135 pub const VIRTIO_SND_CHMAP_MAX_SIZE: usize = 18;
136