browser_protocol/webaudio/
mod.rs1use serde::{Serialize, Deserialize};
5
6pub type GraphObjectId = String;
9
10#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
13pub enum ContextType {
14 #[default]
15 Realtime,
16 Offline,
17}
18
19#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
22pub enum ContextState {
23 #[default]
24 Suspended,
25 Running,
26 Closed,
27 Interrupted,
28}
29
30pub type NodeType = String;
33
34#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
37pub enum ChannelCountMode {
38 #[default]
39 ClampedMax,
40 Explicit,
41 Max,
42}
43
44#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
47pub enum ChannelInterpretation {
48 #[default]
49 Discrete,
50 Speakers,
51}
52
53pub type ParamType = String;
56
57#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
60pub enum AutomationRate {
61 #[default]
62 ARate,
63 KRate,
64}
65
66#[derive(Debug, Clone, Serialize, Deserialize, Default)]
69#[serde(rename_all = "camelCase")]
70pub struct ContextRealtimeData {
71 pub currentTime: f64,
74 pub renderCapacity: f64,
79 pub callbackIntervalMean: f64,
82 pub callbackIntervalVariance: f64,
85}
86
87#[derive(Debug, Clone, Serialize, Deserialize, Default)]
90#[serde(rename_all = "camelCase")]
91pub struct BaseAudioContext {
92
93 pub contextId: GraphObjectId,
94
95 pub contextType: ContextType,
96
97 pub contextState: ContextState,
98
99 #[serde(skip_serializing_if = "Option::is_none")]
100 pub realtimeData: Option<ContextRealtimeData>,
101 pub callbackBufferSize: f64,
104 pub maxOutputChannelCount: f64,
107 pub sampleRate: f64,
110}
111
112#[derive(Debug, Clone, Serialize, Deserialize, Default)]
115#[serde(rename_all = "camelCase")]
116pub struct AudioListener {
117
118 pub listenerId: GraphObjectId,
119
120 pub contextId: GraphObjectId,
121}
122
123#[derive(Debug, Clone, Serialize, Deserialize, Default)]
126#[serde(rename_all = "camelCase")]
127pub struct AudioNode {
128
129 pub nodeId: GraphObjectId,
130
131 pub contextId: GraphObjectId,
132
133 pub nodeType: NodeType,
134
135 pub numberOfInputs: f64,
136
137 pub numberOfOutputs: f64,
138
139 pub channelCount: f64,
140
141 pub channelCountMode: ChannelCountMode,
142
143 pub channelInterpretation: ChannelInterpretation,
144}
145
146#[derive(Debug, Clone, Serialize, Deserialize, Default)]
149#[serde(rename_all = "camelCase")]
150pub struct AudioParam {
151
152 pub paramId: GraphObjectId,
153
154 pub nodeId: GraphObjectId,
155
156 pub contextId: GraphObjectId,
157
158 pub paramType: ParamType,
159
160 pub rate: AutomationRate,
161
162 pub defaultValue: f64,
163
164 pub minValue: f64,
165
166 pub maxValue: f64,
167}
168
169#[derive(Debug, Clone, Serialize, Deserialize, Default)]
172#[serde(rename_all = "camelCase")]
173pub struct GetRealtimeDataParams {
174
175 pub contextId: GraphObjectId,
176}
177
178#[derive(Debug, Clone, Serialize, Deserialize, Default)]
181#[serde(rename_all = "camelCase")]
182pub struct GetRealtimeDataReturns {
183
184 pub realtimeData: ContextRealtimeData,
185}