objc2_audio_toolbox/generated/
AudioUnitProperties.rs

1//! This file has been automatically generated by `objc2`'s `header-translator`.
2//! DO NOT EDIT
3use core::ffi::*;
4use core::ptr::NonNull;
5use objc2::__framework_prelude::*;
6#[cfg(feature = "objc2-core-audio-types")]
7use objc2_core_audio_types::*;
8#[cfg(feature = "objc2-core-foundation")]
9use objc2_core_foundation::*;
10#[cfg(feature = "objc2-core-midi")]
11use objc2_core_midi::*;
12
13use crate::*;
14
15/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaupresetversionkey?language=objc)
16pub const kAUPresetVersionKey: &CStr = unsafe { CStr::from_bytes_with_nul_unchecked(b"version\0") };
17/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaupresettypekey?language=objc)
18pub const kAUPresetTypeKey: &CStr = unsafe { CStr::from_bytes_with_nul_unchecked(b"type\0") };
19/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaupresetsubtypekey?language=objc)
20pub const kAUPresetSubtypeKey: &CStr = unsafe { CStr::from_bytes_with_nul_unchecked(b"subtype\0") };
21/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaupresetmanufacturerkey?language=objc)
22pub const kAUPresetManufacturerKey: &CStr =
23    unsafe { CStr::from_bytes_with_nul_unchecked(b"manufacturer\0") };
24/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaupresetdatakey?language=objc)
25pub const kAUPresetDataKey: &CStr = unsafe { CStr::from_bytes_with_nul_unchecked(b"data\0") };
26/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaupresetnamekey?language=objc)
27pub const kAUPresetNameKey: &CStr = unsafe { CStr::from_bytes_with_nul_unchecked(b"name\0") };
28/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaupresetnumberkey?language=objc)
29pub const kAUPresetNumberKey: &CStr =
30    unsafe { CStr::from_bytes_with_nul_unchecked(b"preset-number\0") };
31/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaupresetrenderqualitykey?language=objc)
32pub const kAUPresetRenderQualityKey: &CStr =
33    unsafe { CStr::from_bytes_with_nul_unchecked(b"render-quality\0") };
34/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaupresetcpuloadkey?language=objc)
35pub const kAUPresetCPULoadKey: &CStr =
36    unsafe { CStr::from_bytes_with_nul_unchecked(b"cpu-load\0") };
37/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaupresetelementnamekey?language=objc)
38pub const kAUPresetElementNameKey: &CStr =
39    unsafe { CStr::from_bytes_with_nul_unchecked(b"element-name\0") };
40/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaupresetexternalfilerefs?language=objc)
41pub const kAUPresetExternalFileRefs: &CStr =
42    unsafe { CStr::from_bytes_with_nul_unchecked(b"file-references\0") };
43/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaupresetvstdatakey?language=objc)
44pub const kAUPresetVSTDataKey: &CStr = unsafe { CStr::from_bytes_with_nul_unchecked(b"vstdata\0") };
45/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaupresetvstpresetkey?language=objc)
46pub const kAUPresetVSTPresetKey: &CStr =
47    unsafe { CStr::from_bytes_with_nul_unchecked(b"vstpreset\0") };
48/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaupresetmasdatakey?language=objc)
49pub const kAUPresetMASDataKey: &CStr = unsafe { CStr::from_bytes_with_nul_unchecked(b"masdata\0") };
50/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaupresetpartkey?language=objc)
51pub const kAUPresetPartKey: &CStr = unsafe { CStr::from_bytes_with_nul_unchecked(b"part\0") };
52/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitconfigurationinfo_hascustomview?language=objc)
53pub const kAudioUnitConfigurationInfo_HasCustomView: &CStr =
54    unsafe { CStr::from_bytes_with_nul_unchecked(b"HasCustomView\0") };
55/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitconfigurationinfo_channelconfigurations?language=objc)
56pub const kAudioUnitConfigurationInfo_ChannelConfigurations: &CStr =
57    unsafe { CStr::from_bytes_with_nul_unchecked(b"ChannelConfigurations\0") };
58/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitconfigurationinfo_initialinputs?language=objc)
59pub const kAudioUnitConfigurationInfo_InitialInputs: &CStr =
60    unsafe { CStr::from_bytes_with_nul_unchecked(b"InitialInputs\0") };
61/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitconfigurationinfo_initialoutputs?language=objc)
62pub const kAudioUnitConfigurationInfo_InitialOutputs: &CStr =
63    unsafe { CStr::from_bytes_with_nul_unchecked(b"InitialOutputs\0") };
64/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitconfigurationinfo_iconurl?language=objc)
65pub const kAudioUnitConfigurationInfo_IconURL: &CStr =
66    unsafe { CStr::from_bytes_with_nul_unchecked(b"IconURL\0") };
67/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitconfigurationinfo_buscountwritable?language=objc)
68pub const kAudioUnitConfigurationInfo_BusCountWritable: &CStr =
69    unsafe { CStr::from_bytes_with_nul_unchecked(b"BusCountWritable\0") };
70/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitconfigurationinfo_supportedchannellayouttags?language=objc)
71pub const kAudioUnitConfigurationInfo_SupportedChannelLayoutTags: &CStr =
72    unsafe { CStr::from_bytes_with_nul_unchecked(b"SupportedChannelLayoutTags\0") };
73/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitconfigurationinfo_midiprotocol?language=objc)
74pub const kAudioUnitConfigurationInfo_MIDIProtocol: &CStr =
75    unsafe { CStr::from_bytes_with_nul_unchecked(b"MIDIProtocol\0") };
76/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitconfigurationinfo_migratefromplugin?language=objc)
77pub const kAudioUnitConfigurationInfo_MigrateFromPlugin: &CStr =
78    unsafe { CStr::from_bytes_with_nul_unchecked(b"MigrateFromPlugin\0") };
79/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitconfigurationinfo_availablearchitectures?language=objc)
80pub const kAudioUnitConfigurationInfo_AvailableArchitectures: &CStr =
81    unsafe { CStr::from_bytes_with_nul_unchecked(b"AvailableArchitectures\0") };
82/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitscope_global?language=objc)
83#[cfg(feature = "AUComponent")]
84pub const kAudioUnitScope_Global: AudioUnitScope = 0;
85/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitscope_input?language=objc)
86#[cfg(feature = "AUComponent")]
87pub const kAudioUnitScope_Input: AudioUnitScope = 1;
88/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitscope_output?language=objc)
89#[cfg(feature = "AUComponent")]
90pub const kAudioUnitScope_Output: AudioUnitScope = 2;
91/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitscope_group?language=objc)
92#[cfg(feature = "AUComponent")]
93pub const kAudioUnitScope_Group: AudioUnitScope = 3;
94/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitscope_part?language=objc)
95#[cfg(feature = "AUComponent")]
96pub const kAudioUnitScope_Part: AudioUnitScope = 4;
97/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitscope_note?language=objc)
98#[cfg(feature = "AUComponent")]
99pub const kAudioUnitScope_Note: AudioUnitScope = 5;
100/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitscope_layer?language=objc)
101#[cfg(feature = "AUComponent")]
102pub const kAudioUnitScope_Layer: AudioUnitScope = 6;
103/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitscope_layeritem?language=objc)
104#[cfg(feature = "AUComponent")]
105pub const kAudioUnitScope_LayerItem: AudioUnitScope = 7;
106
107/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_classinfo?language=objc)
108#[cfg(feature = "AUComponent")]
109pub const kAudioUnitProperty_ClassInfo: AudioUnitPropertyID = 0;
110/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_makeconnection?language=objc)
111#[cfg(feature = "AUComponent")]
112pub const kAudioUnitProperty_MakeConnection: AudioUnitPropertyID = 1;
113/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_samplerate?language=objc)
114#[cfg(feature = "AUComponent")]
115pub const kAudioUnitProperty_SampleRate: AudioUnitPropertyID = 2;
116/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_parameterlist?language=objc)
117#[cfg(feature = "AUComponent")]
118pub const kAudioUnitProperty_ParameterList: AudioUnitPropertyID = 3;
119/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_parameterinfo?language=objc)
120#[cfg(feature = "AUComponent")]
121pub const kAudioUnitProperty_ParameterInfo: AudioUnitPropertyID = 4;
122/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_cpuload?language=objc)
123#[cfg(feature = "AUComponent")]
124pub const kAudioUnitProperty_CPULoad: AudioUnitPropertyID = 6;
125/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_streamformat?language=objc)
126#[cfg(feature = "AUComponent")]
127pub const kAudioUnitProperty_StreamFormat: AudioUnitPropertyID = 8;
128/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_elementcount?language=objc)
129#[cfg(feature = "AUComponent")]
130pub const kAudioUnitProperty_ElementCount: AudioUnitPropertyID = 11;
131/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_latency?language=objc)
132#[cfg(feature = "AUComponent")]
133pub const kAudioUnitProperty_Latency: AudioUnitPropertyID = 12;
134/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_supportednumchannels?language=objc)
135#[cfg(feature = "AUComponent")]
136pub const kAudioUnitProperty_SupportedNumChannels: AudioUnitPropertyID = 13;
137/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_maximumframesperslice?language=objc)
138#[cfg(feature = "AUComponent")]
139pub const kAudioUnitProperty_MaximumFramesPerSlice: AudioUnitPropertyID = 14;
140/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_parametervaluestrings?language=objc)
141#[cfg(feature = "AUComponent")]
142pub const kAudioUnitProperty_ParameterValueStrings: AudioUnitPropertyID = 16;
143/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_audiochannellayout?language=objc)
144#[cfg(feature = "AUComponent")]
145pub const kAudioUnitProperty_AudioChannelLayout: AudioUnitPropertyID = 19;
146/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_tailtime?language=objc)
147#[cfg(feature = "AUComponent")]
148pub const kAudioUnitProperty_TailTime: AudioUnitPropertyID = 20;
149/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_bypasseffect?language=objc)
150#[cfg(feature = "AUComponent")]
151pub const kAudioUnitProperty_BypassEffect: AudioUnitPropertyID = 21;
152/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_lastrendererror?language=objc)
153#[cfg(feature = "AUComponent")]
154pub const kAudioUnitProperty_LastRenderError: AudioUnitPropertyID = 22;
155/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_setrendercallback?language=objc)
156#[cfg(feature = "AUComponent")]
157pub const kAudioUnitProperty_SetRenderCallback: AudioUnitPropertyID = 23;
158/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_factorypresets?language=objc)
159#[cfg(feature = "AUComponent")]
160pub const kAudioUnitProperty_FactoryPresets: AudioUnitPropertyID = 24;
161/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_renderquality?language=objc)
162#[cfg(feature = "AUComponent")]
163pub const kAudioUnitProperty_RenderQuality: AudioUnitPropertyID = 26;
164/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_hostcallbacks?language=objc)
165#[cfg(feature = "AUComponent")]
166pub const kAudioUnitProperty_HostCallbacks: AudioUnitPropertyID = 27;
167/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_inplaceprocessing?language=objc)
168#[cfg(feature = "AUComponent")]
169pub const kAudioUnitProperty_InPlaceProcessing: AudioUnitPropertyID = 29;
170/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_elementname?language=objc)
171#[cfg(feature = "AUComponent")]
172pub const kAudioUnitProperty_ElementName: AudioUnitPropertyID = 30;
173/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_supportedchannellayouttags?language=objc)
174#[cfg(feature = "AUComponent")]
175pub const kAudioUnitProperty_SupportedChannelLayoutTags: AudioUnitPropertyID = 32;
176/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_presentpreset?language=objc)
177#[cfg(feature = "AUComponent")]
178pub const kAudioUnitProperty_PresentPreset: AudioUnitPropertyID = 36;
179/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_dependentparameters?language=objc)
180#[cfg(feature = "AUComponent")]
181pub const kAudioUnitProperty_DependentParameters: AudioUnitPropertyID = 45;
182/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_inputsamplesinoutput?language=objc)
183#[cfg(feature = "AUComponent")]
184pub const kAudioUnitProperty_InputSamplesInOutput: AudioUnitPropertyID = 49;
185/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_shouldallocatebuffer?language=objc)
186#[cfg(feature = "AUComponent")]
187pub const kAudioUnitProperty_ShouldAllocateBuffer: AudioUnitPropertyID = 51;
188/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_frequencyresponse?language=objc)
189#[cfg(feature = "AUComponent")]
190pub const kAudioUnitProperty_FrequencyResponse: AudioUnitPropertyID = 52;
191/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_parameterhistoryinfo?language=objc)
192#[cfg(feature = "AUComponent")]
193pub const kAudioUnitProperty_ParameterHistoryInfo: AudioUnitPropertyID = 53;
194/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_nickname?language=objc)
195#[cfg(feature = "AUComponent")]
196pub const kAudioUnitProperty_NickName: AudioUnitPropertyID = 54;
197/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_offlinerender?language=objc)
198#[cfg(feature = "AUComponent")]
199pub const kAudioUnitProperty_OfflineRender: AudioUnitPropertyID = 37;
200/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_parameteridname?language=objc)
201#[cfg(feature = "AUComponent")]
202pub const kAudioUnitProperty_ParameterIDName: AudioUnitPropertyID = 34;
203/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_parameterstringfromvalue?language=objc)
204#[cfg(feature = "AUComponent")]
205pub const kAudioUnitProperty_ParameterStringFromValue: AudioUnitPropertyID = 33;
206/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_parameterclumpname?language=objc)
207#[cfg(feature = "AUComponent")]
208pub const kAudioUnitProperty_ParameterClumpName: AudioUnitPropertyID = 35;
209/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_parametervaluefromstring?language=objc)
210#[cfg(feature = "AUComponent")]
211pub const kAudioUnitProperty_ParameterValueFromString: AudioUnitPropertyID = 38;
212/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_contextname?language=objc)
213#[cfg(feature = "AUComponent")]
214pub const kAudioUnitProperty_ContextName: AudioUnitPropertyID = 25;
215/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_presentationlatency?language=objc)
216#[cfg(feature = "AUComponent")]
217pub const kAudioUnitProperty_PresentationLatency: AudioUnitPropertyID = 40;
218/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_classinfofromdocument?language=objc)
219#[cfg(feature = "AUComponent")]
220pub const kAudioUnitProperty_ClassInfoFromDocument: AudioUnitPropertyID = 50;
221/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_requestviewcontroller?language=objc)
222#[cfg(feature = "AUComponent")]
223pub const kAudioUnitProperty_RequestViewController: AudioUnitPropertyID = 56;
224/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_parametersforoverview?language=objc)
225#[cfg(feature = "AUComponent")]
226pub const kAudioUnitProperty_ParametersForOverview: AudioUnitPropertyID = 57;
227/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_supportsmpe?language=objc)
228#[cfg(feature = "AUComponent")]
229pub const kAudioUnitProperty_SupportsMPE: AudioUnitPropertyID = 58;
230/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_rendercontextobserver?language=objc)
231#[cfg(feature = "AUComponent")]
232pub const kAudioUnitProperty_RenderContextObserver: AudioUnitPropertyID = 60;
233/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_lastrendersampletime?language=objc)
234#[cfg(feature = "AUComponent")]
235pub const kAudioUnitProperty_LastRenderSampleTime: AudioUnitPropertyID = 61;
236/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_loadedoutofprocess?language=objc)
237#[cfg(feature = "AUComponent")]
238pub const kAudioUnitProperty_LoadedOutOfProcess: AudioUnitPropertyID = 62;
239/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_fastdispatch?language=objc)
240#[cfg(feature = "AUComponent")]
241pub const kAudioUnitProperty_FastDispatch: AudioUnitPropertyID = 5;
242/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_setexternalbuffer?language=objc)
243#[cfg(feature = "AUComponent")]
244pub const kAudioUnitProperty_SetExternalBuffer: AudioUnitPropertyID = 15;
245/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_getuicomponentlist?language=objc)
246#[cfg(feature = "AUComponent")]
247pub const kAudioUnitProperty_GetUIComponentList: AudioUnitPropertyID = 18;
248/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_cocoaui?language=objc)
249#[cfg(feature = "AUComponent")]
250pub const kAudioUnitProperty_CocoaUI: AudioUnitPropertyID = 31;
251/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_iconlocation?language=objc)
252#[cfg(feature = "AUComponent")]
253pub const kAudioUnitProperty_IconLocation: AudioUnitPropertyID = 39;
254/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_auhostidentifier?language=objc)
255#[cfg(feature = "AUComponent")]
256pub const kAudioUnitProperty_AUHostIdentifier: AudioUnitPropertyID = 46;
257/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_midioutputcallbackinfo?language=objc)
258#[cfg(feature = "AUComponent")]
259pub const kAudioUnitProperty_MIDIOutputCallbackInfo: AudioUnitPropertyID = 47;
260/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_midioutputcallback?language=objc)
261#[cfg(feature = "AUComponent")]
262pub const kAudioUnitProperty_MIDIOutputCallback: AudioUnitPropertyID = 48;
263/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_midioutputeventlistcallback?language=objc)
264#[cfg(feature = "AUComponent")]
265pub const kAudioUnitProperty_MIDIOutputEventListCallback: AudioUnitPropertyID = 63;
266/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_audiounitmidiprotocol?language=objc)
267#[cfg(feature = "AUComponent")]
268pub const kAudioUnitProperty_AudioUnitMIDIProtocol: AudioUnitPropertyID = 64;
269/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_hostmidiprotocol?language=objc)
270#[cfg(feature = "AUComponent")]
271pub const kAudioUnitProperty_HostMIDIProtocol: AudioUnitPropertyID = 65;
272/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_midioutputbuffersizehint?language=objc)
273#[cfg(feature = "AUComponent")]
274pub const kAudioUnitProperty_MIDIOutputBufferSizeHint: AudioUnitPropertyID = 66;
275
276/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_remotecontroleventlistener?language=objc)
277#[cfg(feature = "AUComponent")]
278pub const kAudioUnitProperty_RemoteControlEventListener: AudioUnitPropertyID = 100;
279/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_isinterappconnected?language=objc)
280#[cfg(feature = "AUComponent")]
281pub const kAudioUnitProperty_IsInterAppConnected: AudioUnitPropertyID = 101;
282/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_peerurl?language=objc)
283#[cfg(feature = "AUComponent")]
284pub const kAudioUnitProperty_PeerURL: AudioUnitPropertyID = 102;
285
286/// This structure contains the information needed to make a connection between a source
287/// and destination audio unit.
288///
289/// The structure is set on the destination audio unit's input element
290///
291/// The audio unit that is the source for the connection
292///
293/// The source audio unit's output element to be used in the connection
294///
295/// The destination audio unit's input element to be used in the connection
296///
297/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiounitconnection?language=objc)
298#[cfg(all(feature = "AUComponent", feature = "AudioComponent"))]
299#[repr(C)]
300#[derive(Clone, Copy, Debug, PartialEq)]
301pub struct AudioUnitConnection {
302    pub sourceAudioUnit: AudioUnit,
303    pub sourceOutputNumber: u32,
304    pub destInputNumber: u32,
305}
306
307#[cfg(all(feature = "AUComponent", feature = "AudioComponent"))]
308unsafe impl Encode for AudioUnitConnection {
309    const ENCODING: Encoding = Encoding::Struct(
310        "AudioUnitConnection",
311        &[<AudioUnit>::ENCODING, <u32>::ENCODING, <u32>::ENCODING],
312    );
313}
314
315#[cfg(all(feature = "AUComponent", feature = "AudioComponent"))]
316unsafe impl RefEncode for AudioUnitConnection {
317    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
318}
319
320/// Define an audio unit's channel handling capabilities
321///
322/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/auchannelinfo?language=objc)
323#[repr(C)]
324#[derive(Clone, Copy, Debug, PartialEq)]
325pub struct AUChannelInfo {
326    pub inChannels: i16,
327    pub outChannels: i16,
328}
329
330unsafe impl Encode for AUChannelInfo {
331    const ENCODING: Encoding =
332        Encoding::Struct("AUChannelInfo", &[<i16>::ENCODING, <i16>::ENCODING]);
333}
334
335unsafe impl RefEncode for AUChannelInfo {
336    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
337}
338
339/// Allow a host to tell an audio unit to use the provided memory for its input callback
340///
341/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiounitexternalbuffer?language=objc)
342#[repr(C)]
343#[derive(Clone, Copy, Debug, PartialEq)]
344pub struct AudioUnitExternalBuffer {
345    pub buffer: NonNull<Byte>,
346    pub size: u32,
347}
348
349unsafe impl Encode for AudioUnitExternalBuffer {
350    const ENCODING: Encoding = Encoding::Struct(
351        "AudioUnitExternalBuffer",
352        &[<NonNull<Byte>>::ENCODING, <u32>::ENCODING],
353    );
354}
355
356unsafe impl RefEncode for AudioUnitExternalBuffer {
357    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
358}
359
360/// Used by a host when registering a callback with the audio unit to provide input
361///
362/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/aurendercallbackstruct?language=objc)
363#[cfg(all(feature = "AUComponent", feature = "objc2-core-audio-types"))]
364#[repr(C)]
365#[allow(unpredictable_function_pointer_comparisons)]
366#[derive(Clone, Copy, Debug, PartialEq)]
367pub struct AURenderCallbackStruct {
368    pub inputProc: AURenderCallback,
369    pub inputProcRefCon: *mut c_void,
370}
371
372#[cfg(all(feature = "AUComponent", feature = "objc2-core-audio-types"))]
373unsafe impl Encode for AURenderCallbackStruct {
374    const ENCODING: Encoding = Encoding::Struct(
375        "AURenderCallbackStruct",
376        &[<AURenderCallback>::ENCODING, <*mut c_void>::ENCODING],
377    );
378}
379
380#[cfg(all(feature = "AUComponent", feature = "objc2-core-audio-types"))]
381unsafe impl RefEncode for AURenderCallbackStruct {
382    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
383}
384
385/// Used to publish and set factory presets on an audio unit
386///
387/// If
388/// <
389/// 0, then preset is a user preset
390/// If >= 0, then this field is used to select the factory preset
391///
392/// If a factory preset, the name of the specified factory preset
393///
394/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/aupreset?language=objc)
395#[cfg(feature = "objc2-core-foundation")]
396#[repr(C)]
397#[derive(Clone, Copy, Debug, PartialEq)]
398pub struct AUPreset {
399    pub presetNumber: i32,
400    pub presetName: *const CFString,
401}
402
403#[cfg(feature = "objc2-core-foundation")]
404unsafe impl Encode for AUPreset {
405    const ENCODING: Encoding =
406        Encoding::Struct("AUPreset", &[<i32>::ENCODING, <*const CFString>::ENCODING]);
407}
408
409#[cfg(feature = "objc2-core-foundation")]
410unsafe impl RefEncode for AUPreset {
411    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
412}
413
414/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/krenderquality_max?language=objc)
415pub const kRenderQuality_Max: c_uint = 127;
416/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/krenderquality_high?language=objc)
417pub const kRenderQuality_High: c_uint = 96;
418/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/krenderquality_medium?language=objc)
419pub const kRenderQuality_Medium: c_uint = 64;
420/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/krenderquality_low?language=objc)
421pub const kRenderQuality_Low: c_uint = 32;
422/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/krenderquality_min?language=objc)
423pub const kRenderQuality_Min: c_uint = 0;
424
425/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/knumberofresponsefrequencies?language=objc)
426pub const kNumberOfResponseFrequencies: c_uint = 1024;
427
428/// Structure used to get the magnitude of the frequency response at a particular frequency via kAudioUnitProperty_FrequencyResponse.
429///
430/// An array of AudioUnitFrequencyResponseBin are passed in to kAudioUnitProperty_FrequencyResponse
431/// with the mFrequency field filled in. The array is returned with the mMagnitude fields filled in.
432/// If fewer than kNumberOfResponseFrequencies are needed, then the first unused bin should be marked with
433/// a negative frequency.
434///
435/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiounitfrequencyresponsebin?language=objc)
436#[repr(C)]
437#[derive(Clone, Copy, Debug, PartialEq)]
438pub struct AudioUnitFrequencyResponseBin {
439    pub mFrequency: f64,
440    pub mMagnitude: f64,
441}
442
443unsafe impl Encode for AudioUnitFrequencyResponseBin {
444    const ENCODING: Encoding = Encoding::Struct(
445        "AudioUnitFrequencyResponseBin",
446        &[<f64>::ENCODING, <f64>::ENCODING],
447    );
448}
449
450unsafe impl RefEncode for AudioUnitFrequencyResponseBin {
451    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
452}
453
454/// Retrieve information about the current beat and/or tempo
455///
456/// If the host app has set this callback, then the audio unit can use this to get the current
457/// beat and tempo as they relate to the first sample in the render buffer. The audio unit can
458/// call this callback only from within the audio unit render call (otherwise the host is unable
459/// to provide information accurately to the audio unit as the information obtained is relate to
460/// the current AudioUnitRender call). If the host cannot provide the requested information, it
461/// will return kAudioUnitErr_CannotDoInCurrentContext.
462///
463/// The AudioUnit can provide NULL for any of the requested parameters (except for
464/// inHostUserData) if it is not interested in that particular piece of information
465///
466///
467/// Parameter `inHostUserData`: Must be provided by the audio unit when it makes this call. It is the client data provided by the host when it set the HostCallbacks property
468///
469/// Parameter `outCurrentBeat`: The current beat, where 0 is the first beat. Tempo is defined as the number of whole-number (integer) beat values (as indicated by the outCurrentBeat field) per minute.
470///
471/// Parameter `outCurrentTempo`: The current tempo
472///
473/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/hostcallback_getbeatandtempo?language=objc)
474pub type HostCallback_GetBeatAndTempo =
475    Option<unsafe extern "C-unwind" fn(*mut c_void, *mut f64, *mut f64) -> OSStatus>;
476
477/// Retrieve information about the musical time state of the host
478///
479/// If the host app has set this callback, then the audio unit can use this to obtain
480/// information about the state of musical time in the host. The audio unit can call this
481/// callback only from within the audio unit render call (otherwise the host is unable to
482/// provide information accurately to the audio unit as the information obtained is relate to
483/// the current AudioUnitRender call). If the host cannot provide the requested information, it
484/// will return kAudioUnitErr_CannotDoInCurrentContext.
485///
486/// The AudioUnit can provide NULL for any of the requested parameters (except for
487/// inHostUserData) if it is not interested in that particular piece of information
488///
489///
490/// Parameter `inHostUserData`: Must be provided by the audio unit when it makes this call. It is the client data provided by the host when it set the HostCallbacks property
491///
492/// Parameter `outDeltaSampleOffsetToNextBeat`: The number of samples until the next whole beat from the start sample of the current rendering buffer
493///
494/// Parameter `outTimeSig_Numerator`: The Numerator of the current time signature
495///
496/// Parameter `outTimeSig_Denominator`: The Denominator of the current time signature (4 is a quarter note, etc)
497///
498/// Parameter `outCurrentMeasureDownBeat`: The beat that corresponds to the downbeat (first beat) of the current measure that is being rendered
499///
500/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/hostcallback_getmusicaltimelocation?language=objc)
501pub type HostCallback_GetMusicalTimeLocation = Option<
502    unsafe extern "C-unwind" fn(*mut c_void, *mut u32, *mut f32, *mut u32, *mut f64) -> OSStatus,
503>;
504
505/// Retrieve information about the time line's (or transport) state of the host.
506///
507/// If the host app has set this callback, then the audio unit can use this to obtain
508/// information about the transport state of the host's time line. The audio unit can call this
509/// callback only from within the audio unit render call (otherwise the host is unable to
510/// provide information accurately to the audio unit as the information obtained is relate to
511/// the current AudioUnitRender call. If the host cannot provide the requested information, it
512/// will return kAudioUnitErr_CannotDoInCurrentContext.
513///
514/// The AudioUnit can provide NULL for any of the requested parameters (except for
515/// inHostUserData) if it is not interested in that particular piece of information
516///
517///
518/// Parameter `inHostUserData`: Must be provided by the audio unit when it makes this call. It is the client data provided by the host when it set the HostCallbacks property
519///
520/// Parameter `outIsPlaying`: Returns true if the host's transport is currently playing, false if stopped
521///
522/// Parameter `outTransportStateChanged`: Returns true if there was a change to the state of, or discontinuities in, the host's transport (generally since the callback was last called). Can indicate such state changes as start/top, time moves (jump from one time line to another).
523///
524/// Parameter `outCurrentSampleInTimeLine`: Returns the current sample count in the time line of the host's transport time.
525///
526/// Parameter `outIsCycling`: Returns true if the host's transport is currently cycling or looping
527///
528/// Parameter `outCycleStartBeat`: If cycling is true, the start beat of the cycle or loop point in the host's transport
529///
530/// Parameter `outCycleEndBeat`: If cycling is true, the end beat of the cycle or loop point in the host's transport
531///
532/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/hostcallback_gettransportstate?language=objc)
533pub type HostCallback_GetTransportState = Option<
534    unsafe extern "C-unwind" fn(
535        *mut c_void,
536        *mut Boolean,
537        *mut Boolean,
538        *mut f64,
539        *mut Boolean,
540        *mut f64,
541        *mut f64,
542    ) -> OSStatus,
543>;
544
545/// Retrieve information about the time line's (or transport) state of the host.
546///
547/// If the host app has set this callback, then the audio unit can use this to obtain
548/// information about the transport state of the host's time line. The audio unit can call this
549/// callback only from within the audio unit render call (otherwise the host is unable to
550/// provide information accurately to the audio unit as the information obtained is relate to
551/// the current AudioUnitRender call. If the host cannot provide the requested information, it
552/// will return kAudioUnitErr_CannotDoInCurrentContext.
553///
554/// The AudioUnit can provide NULL for any of the requested parameters (except for
555/// inHostUserData) if it is not interested in that particular piece of information
556///
557///
558/// Parameter `inHostUserData`: Must be provided by the audio unit when it makes this call. It is the client data provided by the host when it set the HostCallbacks property
559///
560/// Parameter `outIsPlaying`: Returns true if the host's transport is currently playing, false if stopped
561///
562/// Parameter `outIsRecording`: Returns true if the host is currently record-enabled, otherwise false.
563///
564/// Parameter `outTransportStateChanged`: Returns true if there was a change to the state of, or discontinuities in, the host's transport (generally since the callback was last called). Can indicate such state changes as start/top, time moves (jump from one time line to another).
565///
566/// Parameter `outCurrentSampleInTimeLine`: Returns the current sample count in the time line of the host's transport time.
567///
568/// Parameter `outIsCycling`: Returns true if the host's transport is currently cycling or looping
569///
570/// Parameter `outCycleStartBeat`: If cycling is true, the start beat of the cycle or loop point in the host's transport
571///
572/// Parameter `outCycleEndBeat`: If cycling is true, the end beat of the cycle or loop point in the host's transport
573///
574/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/hostcallback_gettransportstate2?language=objc)
575pub type HostCallback_GetTransportState2 = Option<
576    unsafe extern "C-unwind" fn(
577        *mut c_void,
578        *mut Boolean,
579        *mut Boolean,
580        *mut Boolean,
581        *mut f64,
582        *mut Boolean,
583        *mut f64,
584        *mut f64,
585    ) -> OSStatus,
586>;
587
588/// Contains the various callbacks for an audio unit to call
589///
590/// Any callback can be NULL.
591///
592/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/hostcallbackinfo?language=objc)
593#[repr(C)]
594#[allow(unpredictable_function_pointer_comparisons)]
595#[derive(Clone, Copy, Debug, PartialEq)]
596pub struct HostCallbackInfo {
597    pub hostUserData: *mut c_void,
598    pub beatAndTempoProc: HostCallback_GetBeatAndTempo,
599    pub musicalTimeLocationProc: HostCallback_GetMusicalTimeLocation,
600    pub transportStateProc: HostCallback_GetTransportState,
601    pub transportStateProc2: HostCallback_GetTransportState2,
602}
603
604unsafe impl Encode for HostCallbackInfo {
605    const ENCODING: Encoding = Encoding::Struct(
606        "HostCallbackInfo",
607        &[
608            <*mut c_void>::ENCODING,
609            <HostCallback_GetBeatAndTempo>::ENCODING,
610            <HostCallback_GetMusicalTimeLocation>::ENCODING,
611            <HostCallback_GetTransportState>::ENCODING,
612            <HostCallback_GetTransportState2>::ENCODING,
613        ],
614    );
615}
616
617unsafe impl RefEncode for HostCallbackInfo {
618    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
619}
620
621/// Used to represent a dependent parameter that can change as a result of its parent meta-parameter
622/// changing
623///
624/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audependentparameter?language=objc)
625#[cfg(feature = "AUComponent")]
626#[repr(C)]
627#[derive(Clone, Copy, Debug, PartialEq)]
628pub struct AUDependentParameter {
629    pub mScope: AudioUnitScope,
630    pub mParameterID: AudioUnitParameterID,
631}
632
633#[cfg(feature = "AUComponent")]
634unsafe impl Encode for AUDependentParameter {
635    const ENCODING: Encoding = Encoding::Struct(
636        "AUDependentParameter",
637        &[<AudioUnitScope>::ENCODING, <AudioUnitParameterID>::ENCODING],
638    );
639}
640
641#[cfg(feature = "AUComponent")]
642unsafe impl RefEncode for AUDependentParameter {
643    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
644}
645
646/// The location and class name of one or more view factory objects an Audio Unit publishes
647///
648/// Contains the location of the bundle which the host app can then use to locate the bundle
649///
650/// Contains the names of the classes that implements the required protocol (AUCocoaUIBase). This class is a view factory that creates the NSView object that is the AudioUnit view.
651///
652/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiounitcocoaviewinfo?language=objc)
653#[cfg(feature = "objc2-core-foundation")]
654#[repr(C)]
655#[derive(Clone, Copy, Debug, PartialEq)]
656pub struct AudioUnitCocoaViewInfo {
657    pub mCocoaAUViewBundleLocation: NonNull<CFURL>,
658    pub mCocoaAUViewClass: [NonNull<CFString>; 1],
659}
660
661#[cfg(feature = "objc2-core-foundation")]
662unsafe impl Encode for AudioUnitCocoaViewInfo {
663    const ENCODING: Encoding = Encoding::Struct(
664        "AudioUnitCocoaViewInfo",
665        &[
666            <NonNull<CFURL>>::ENCODING,
667            <[NonNull<CFString>; 1]>::ENCODING,
668        ],
669    );
670}
671
672#[cfg(feature = "objc2-core-foundation")]
673unsafe impl RefEncode for AudioUnitCocoaViewInfo {
674    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
675}
676
677/// Used to describe the name and version of the audio unit's host
678///
679/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/auhostversionidentifier?language=objc)
680#[cfg(feature = "objc2-core-foundation")]
681#[repr(C)]
682#[derive(Clone, Copy, Debug, PartialEq)]
683pub struct AUHostVersionIdentifier {
684    pub hostName: NonNull<CFString>,
685    pub hostVersion: u32,
686}
687
688#[cfg(feature = "objc2-core-foundation")]
689unsafe impl Encode for AUHostVersionIdentifier {
690    const ENCODING: Encoding = Encoding::Struct(
691        "AUHostVersionIdentifier",
692        &[<NonNull<CFString>>::ENCODING, <u32>::ENCODING],
693    );
694}
695
696#[cfg(feature = "objc2-core-foundation")]
697unsafe impl RefEncode for AUHostVersionIdentifier {
698    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
699}
700
701/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/aumidioutputcallback?language=objc)
702#[cfg(all(feature = "objc2-core-audio-types", feature = "objc2-core-midi"))]
703pub type AUMIDIOutputCallback = Option<
704    unsafe extern "C-unwind" fn(
705        *mut c_void,
706        NonNull<AudioTimeStamp>,
707        u32,
708        NonNull<MIDIPacketList>,
709    ) -> OSStatus,
710>;
711
712/// Set by host application to provide the callback and user data for an audio
713/// unit that provides MIDI output
714///
715/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/aumidioutputcallbackstruct?language=objc)
716#[cfg(all(feature = "objc2-core-audio-types", feature = "objc2-core-midi"))]
717#[repr(C)]
718#[allow(unpredictable_function_pointer_comparisons)]
719#[derive(Clone, Copy, Debug, PartialEq)]
720pub struct AUMIDIOutputCallbackStruct {
721    pub midiOutputCallback: AUMIDIOutputCallback,
722    pub userData: *mut c_void,
723}
724
725#[cfg(all(feature = "objc2-core-audio-types", feature = "objc2-core-midi"))]
726unsafe impl Encode for AUMIDIOutputCallbackStruct {
727    const ENCODING: Encoding = Encoding::Struct(
728        "AUMIDIOutputCallbackStruct",
729        &[<AUMIDIOutputCallback>::ENCODING, <*mut c_void>::ENCODING],
730    );
731}
732
733#[cfg(all(feature = "objc2-core-audio-types", feature = "objc2-core-midi"))]
734unsafe impl RefEncode for AUMIDIOutputCallbackStruct {
735    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
736}
737
738/// Used by a host when registering a callback with an audio unit, to provide
739/// input-to-output samples mapping
740///
741/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/auinputsamplesinoutputcallbackstruct?language=objc)
742#[cfg(all(feature = "AUComponent", feature = "objc2-core-audio-types"))]
743#[repr(C)]
744#[allow(unpredictable_function_pointer_comparisons)]
745#[derive(Clone, Copy, Debug, PartialEq)]
746pub struct AUInputSamplesInOutputCallbackStruct {
747    pub inputToOutputCallback: AUInputSamplesInOutputCallback,
748    pub userData: *mut c_void,
749}
750
751#[cfg(all(feature = "AUComponent", feature = "objc2-core-audio-types"))]
752unsafe impl Encode for AUInputSamplesInOutputCallbackStruct {
753    const ENCODING: Encoding = Encoding::Struct(
754        "AUInputSamplesInOutputCallbackStruct",
755        &[
756            <AUInputSamplesInOutputCallback>::ENCODING,
757            <*mut c_void>::ENCODING,
758        ],
759    );
760}
761
762#[cfg(all(feature = "AUComponent", feature = "objc2-core-audio-types"))]
763unsafe impl RefEncode for AUInputSamplesInOutputCallbackStruct {
764    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
765}
766
767/// This structure contains the suggested update rate and history duration for parameters which have the kAudioUnitParameterFlag_PlotHistory flag set.
768/// The structure is filled out by getting kAudioUnitProperty_ParameterHistoryInfo.
769///
770/// This is the number of times per second that it is suggested that the host get the value of this parameter.
771///
772/// This is the duration in seconds of history that should be plotted.
773///
774/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiounitparameterhistoryinfo?language=objc)
775#[repr(C)]
776#[derive(Clone, Copy, Debug, PartialEq)]
777pub struct AudioUnitParameterHistoryInfo {
778    pub updatesPerSecond: f32,
779    pub historyDurationInSeconds: f32,
780}
781
782unsafe impl Encode for AudioUnitParameterHistoryInfo {
783    const ENCODING: Encoding = Encoding::Struct(
784        "AudioUnitParameterHistoryInfo",
785        &[<f32>::ENCODING, <f32>::ENCODING],
786    );
787}
788
789unsafe impl RefEncode for AudioUnitParameterHistoryInfo {
790    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
791}
792
793/// Expresses time as a sample count.
794///
795/// Sample times are normally positive, but hosts can propagate HAL sample times through audio
796/// units, and HAL sample times can be small negative numbers.
797///
798/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/aueventsampletime?language=objc)
799pub type AUEventSampleTime = i64;
800
801/// untyped value generally between 0.0 and 1.0
802///
803/// takes an integer value (good for menu selections)
804///
805/// 0.0 means FALSE, non-zero means TRUE
806///
807/// usually from 0 -> 100, sometimes -50 -> +50
808///
809/// absolute or relative time
810///
811/// one sample frame equals (1.0/sampleRate) seconds
812///
813/// -180 to 180 degrees
814///
815/// rate multiplier, for playback speed, etc. (e.g. 2.0 == twice as fast)
816///
817/// absolute frequency/pitch in cycles/second
818///
819/// unit of relative pitch
820///
821/// useful for coarse detuning
822///
823/// absolute pitch as defined in the MIDI spec (exact freq may depend on tuning table)
824///
825/// a generic MIDI controller value from 0 -> 127
826///
827/// logarithmic relative gain
828///
829/// linear relative gain
830///
831/// -180 to 180 degrees, similar to phase but more general (good for 3D coord system)
832///
833/// 0 -> 100, crossfade mix two sources according to sqrt(x) and sqrt(1.0 - x)
834///
835/// 0.0 -> 1.0, pow(x, 3.0) -> linear gain to simulate a reasonable mixer channel fader response
836///
837/// standard left to right mixer pan
838///
839/// distance measured in meters
840///
841/// absolute frequency measurement :
842/// if f is freq in hertz then absoluteCents = 1200 * log2(f / 440) + 6900
843///
844/// octaves in relative pitch where a value of 1 is equal to 1200 cents
845///
846/// beats per minute, ie tempo
847///
848/// time relative to tempo, i.e., 1.0 at 120 BPM would equal 1/2 a second
849///
850/// parameter is expressed in milliseconds
851///
852/// for compression, expansion ratio, etc.
853///
854/// this is the parameter unit type for parameters that present a custom unit name
855///
856/// a generic MIDI 2.0 controller value with 32-bit range
857///
858/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiounitparameterunit?language=objc)
859// NS_ENUM
860#[repr(transparent)]
861#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
862pub struct AudioUnitParameterUnit(pub u32);
863impl AudioUnitParameterUnit {
864    #[doc(alias = "kAudioUnitParameterUnit_Generic")]
865    pub const Generic: Self = Self(0);
866    #[doc(alias = "kAudioUnitParameterUnit_Indexed")]
867    pub const Indexed: Self = Self(1);
868    #[doc(alias = "kAudioUnitParameterUnit_Boolean")]
869    pub const Boolean: Self = Self(2);
870    #[doc(alias = "kAudioUnitParameterUnit_Percent")]
871    pub const Percent: Self = Self(3);
872    #[doc(alias = "kAudioUnitParameterUnit_Seconds")]
873    pub const Seconds: Self = Self(4);
874    #[doc(alias = "kAudioUnitParameterUnit_SampleFrames")]
875    pub const SampleFrames: Self = Self(5);
876    #[doc(alias = "kAudioUnitParameterUnit_Phase")]
877    pub const Phase: Self = Self(6);
878    #[doc(alias = "kAudioUnitParameterUnit_Rate")]
879    pub const Rate: Self = Self(7);
880    #[doc(alias = "kAudioUnitParameterUnit_Hertz")]
881    pub const Hertz: Self = Self(8);
882    #[doc(alias = "kAudioUnitParameterUnit_Cents")]
883    pub const Cents: Self = Self(9);
884    #[doc(alias = "kAudioUnitParameterUnit_RelativeSemiTones")]
885    pub const RelativeSemiTones: Self = Self(10);
886    #[doc(alias = "kAudioUnitParameterUnit_MIDINoteNumber")]
887    pub const MIDINoteNumber: Self = Self(11);
888    #[doc(alias = "kAudioUnitParameterUnit_MIDIController")]
889    pub const MIDIController: Self = Self(12);
890    #[doc(alias = "kAudioUnitParameterUnit_Decibels")]
891    pub const Decibels: Self = Self(13);
892    #[doc(alias = "kAudioUnitParameterUnit_LinearGain")]
893    pub const LinearGain: Self = Self(14);
894    #[doc(alias = "kAudioUnitParameterUnit_Degrees")]
895    pub const Degrees: Self = Self(15);
896    #[doc(alias = "kAudioUnitParameterUnit_EqualPowerCrossfade")]
897    pub const EqualPowerCrossfade: Self = Self(16);
898    #[doc(alias = "kAudioUnitParameterUnit_MixerFaderCurve1")]
899    pub const MixerFaderCurve1: Self = Self(17);
900    #[doc(alias = "kAudioUnitParameterUnit_Pan")]
901    pub const Pan: Self = Self(18);
902    #[doc(alias = "kAudioUnitParameterUnit_Meters")]
903    pub const Meters: Self = Self(19);
904    #[doc(alias = "kAudioUnitParameterUnit_AbsoluteCents")]
905    pub const AbsoluteCents: Self = Self(20);
906    #[doc(alias = "kAudioUnitParameterUnit_Octaves")]
907    pub const Octaves: Self = Self(21);
908    #[doc(alias = "kAudioUnitParameterUnit_BPM")]
909    pub const BPM: Self = Self(22);
910    #[doc(alias = "kAudioUnitParameterUnit_Beats")]
911    pub const Beats: Self = Self(23);
912    #[doc(alias = "kAudioUnitParameterUnit_Milliseconds")]
913    pub const Milliseconds: Self = Self(24);
914    #[doc(alias = "kAudioUnitParameterUnit_Ratio")]
915    pub const Ratio: Self = Self(25);
916    #[doc(alias = "kAudioUnitParameterUnit_CustomUnit")]
917    pub const CustomUnit: Self = Self(26);
918    #[doc(alias = "kAudioUnitParameterUnit_MIDI2Controller")]
919    pub const MIDI2Controller: Self = Self(27);
920}
921
922unsafe impl Encode for AudioUnitParameterUnit {
923    const ENCODING: Encoding = u32::ENCODING;
924}
925
926unsafe impl RefEncode for AudioUnitParameterUnit {
927    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
928}
929
930/// Bit positions 18, 17, and 16 are set aside for display scales. Bit 19 is reserved.
931///
932///
933///
934///
935///
936///
937///
938///
939///
940///
941///
942///
943///
944/// This flag provides a hint to a host that this parameter should be controlled through the
945/// highest resolution if the host has limitations on the control resolution of parameter
946/// values. Generally this means that controlling this parameter with a single MIDI Control
947/// message (i.e. 128 values) is too course a grain for that parameter, and a finer control
948/// resolution should be used if possible. If this flag is not set, then a host can assume that
949/// a 7-bit control quantization is acceptable. Ideally, parameters should be controlled in the
950/// fullest resolution that they are published with.
951///
952/// Changing the parameter in real-time will cause a glitch or otherwise undesirable effect.
953///
954/// If set, the parameter can be ramped.
955///
956/// If set, the parameter is obscure (hint to UI to only display in expert mode).
957///
958/// In the original ParameterInfo a C string only was specified. With MacOS 10.2 and later, the
959/// last four bytes of this string are reserved for a CFStringRef, which gives the ability to
960/// used Unicode encoding, necessary for providing a name in languages using non-ASCII
961/// characters. If this flag bit is set, the CFStringRef is valid.
962///
963/// If set, changing this parameter may change any number of others in the AudioUnit.
964///
965/// If set, changing this parameter may change others in the same element as the current
966/// parameter.
967///
968/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiounitparameteroptions?language=objc)
969// NS_OPTIONS
970#[repr(transparent)]
971#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
972pub struct AudioUnitParameterOptions(pub u32);
973bitflags::bitflags! {
974    impl AudioUnitParameterOptions: u32 {
975        #[doc(alias = "kAudioUnitParameterFlag_CFNameRelease")]
976        const Flag_CFNameRelease = 1<<4;
977        #[doc(alias = "kAudioUnitParameterFlag_OmitFromPresets")]
978        const Flag_OmitFromPresets = 1<<13;
979        #[doc(alias = "kAudioUnitParameterFlag_PlotHistory")]
980        const Flag_PlotHistory = 1<<14;
981        #[doc(alias = "kAudioUnitParameterFlag_MeterReadOnly")]
982        const Flag_MeterReadOnly = 1<<15;
983        #[doc(alias = "kAudioUnitParameterFlag_DisplayMask")]
984        const Flag_DisplayMask = (7<<16)|(1<<22);
985        #[doc(alias = "kAudioUnitParameterFlag_DisplaySquareRoot")]
986        const Flag_DisplaySquareRoot = 1<<16;
987        #[doc(alias = "kAudioUnitParameterFlag_DisplaySquared")]
988        const Flag_DisplaySquared = 2<<16;
989        #[doc(alias = "kAudioUnitParameterFlag_DisplayCubed")]
990        const Flag_DisplayCubed = 3<<16;
991        #[doc(alias = "kAudioUnitParameterFlag_DisplayCubeRoot")]
992        const Flag_DisplayCubeRoot = 4<<16;
993        #[doc(alias = "kAudioUnitParameterFlag_DisplayExponential")]
994        const Flag_DisplayExponential = 5<<16;
995        #[doc(alias = "kAudioUnitParameterFlag_HasClump")]
996        const Flag_HasClump = 1<<20;
997        #[doc(alias = "kAudioUnitParameterFlag_ValuesHaveStrings")]
998        const Flag_ValuesHaveStrings = 1<<21;
999        #[doc(alias = "kAudioUnitParameterFlag_DisplayLogarithmic")]
1000        const Flag_DisplayLogarithmic = 1<<22;
1001        #[doc(alias = "kAudioUnitParameterFlag_IsHighResolution")]
1002        const Flag_IsHighResolution = 1<<23;
1003        #[doc(alias = "kAudioUnitParameterFlag_NonRealTime")]
1004        const Flag_NonRealTime = 1<<24;
1005        #[doc(alias = "kAudioUnitParameterFlag_CanRamp")]
1006        const Flag_CanRamp = 1<<25;
1007        #[doc(alias = "kAudioUnitParameterFlag_ExpertMode")]
1008        const Flag_ExpertMode = 1<<26;
1009        #[doc(alias = "kAudioUnitParameterFlag_HasCFNameString")]
1010        const Flag_HasCFNameString = 1<<27;
1011        #[doc(alias = "kAudioUnitParameterFlag_IsGlobalMeta")]
1012        const Flag_IsGlobalMeta = 1<<28;
1013        #[doc(alias = "kAudioUnitParameterFlag_IsElementMeta")]
1014        const Flag_IsElementMeta = 1<<29;
1015        #[doc(alias = "kAudioUnitParameterFlag_IsReadable")]
1016        const Flag_IsReadable = 1<<30;
1017        #[doc(alias = "kAudioUnitParameterFlag_IsWritable")]
1018        const Flag_IsWritable = 1<<31;
1019    }
1020}
1021
1022unsafe impl Encode for AudioUnitParameterOptions {
1023    const ENCODING: Encoding = u32::ENCODING;
1024}
1025
1026unsafe impl RefEncode for AudioUnitParameterOptions {
1027    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
1028}
1029
1030/// UNUSED - set to zero - UTF8 encoded C string (originally).
1031///
1032/// Only valid if the unit field equals kAudioUnitParameterUnit_CustomUnit, in
1033/// which case, unitName must contain a valid CFStringRef. As with cfNameString,
1034/// if (flags
1035/// &
1036/// kAudioUnitParameterFlag_CFNameRelease) is non-zero, the
1037/// AudioUnit must return a +1 reference to this string, and the host must
1038/// release it.
1039///
1040/// Only valid if kAudioUnitParameterFlag_HasClump is set.
1041///
1042/// Only valid if kAudioUnitParameterFlag_HasCFNameString is set.
1043///
1044/// If the "unit" field contains a value not in the enum above, then assume
1045/// kAudioUnitParameterUnit_Generic
1046///
1047/// The parameter's minimum value.
1048///
1049/// The parameter's maximum value.
1050///
1051/// The parameter's default value.
1052///
1053/// Due to some vagaries about the ways in which Parameter's CFNames have been
1054/// described, it was necessary to add a flag:
1055/// kAudioUnitParameterFlag_CFNameRelease. In normal usage a parameter name is
1056/// essentially a static object, but sometimes an audio unit will generate
1057/// parameter names dynamically.. As these are expected to be CFStrings, in that
1058/// case the host should release those names when it is finished with them, but
1059/// there was no way to communicate this distinction in behavior. Thus, if an
1060/// audio unit will (or could) generate a name dynamically, it should set this
1061/// flag in the parameter's info. The host should check for this flag, and if
1062/// present, release the parameter name when it is finished with it.
1063///
1064/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiounitparameterinfo?language=objc)
1065#[cfg(all(feature = "AUComponent", feature = "objc2-core-foundation"))]
1066#[repr(C)]
1067#[derive(Clone, Copy, Debug, PartialEq)]
1068pub struct AudioUnitParameterInfo {
1069    pub name: [c_char; 52],
1070    pub unitName: *const CFString,
1071    pub clumpID: u32,
1072    pub cfNameString: *const CFString,
1073    pub unit: AudioUnitParameterUnit,
1074    pub minValue: AudioUnitParameterValue,
1075    pub maxValue: AudioUnitParameterValue,
1076    pub defaultValue: AudioUnitParameterValue,
1077    pub flags: AudioUnitParameterOptions,
1078}
1079
1080#[cfg(all(feature = "AUComponent", feature = "objc2-core-foundation"))]
1081unsafe impl Encode for AudioUnitParameterInfo {
1082    const ENCODING: Encoding = Encoding::Struct(
1083        "AudioUnitParameterInfo",
1084        &[
1085            <[c_char; 52]>::ENCODING,
1086            <*const CFString>::ENCODING,
1087            <u32>::ENCODING,
1088            <*const CFString>::ENCODING,
1089            <AudioUnitParameterUnit>::ENCODING,
1090            <AudioUnitParameterValue>::ENCODING,
1091            <AudioUnitParameterValue>::ENCODING,
1092            <AudioUnitParameterValue>::ENCODING,
1093            <AudioUnitParameterOptions>::ENCODING,
1094        ],
1095    );
1096}
1097
1098#[cfg(all(feature = "AUComponent", feature = "objc2-core-foundation"))]
1099unsafe impl RefEncode for AudioUnitParameterInfo {
1100    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
1101}
1102
1103/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitclumpid_system?language=objc)
1104pub const kAudioUnitClumpID_System: c_uint = 0;
1105
1106// TODO: pub fn GetAudioUnitParameterDisplayType(flags: AudioUnitParameterOptions,) -> AudioUnitParameterOptions;
1107
1108// TODO: pub fn SetAudioUnitParameterDisplayType(flags: AudioUnitParameterOptions,display_type: AudioUnitParameterOptions,) -> AudioUnitParameterOptions;
1109
1110/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitparametername_full?language=objc)
1111pub const kAudioUnitParameterName_Full: c_int = -1;
1112
1113/// Used to provide shorter names for a specified parameter
1114///
1115/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiounitparameternameinfo?language=objc)
1116#[cfg(all(feature = "AUComponent", feature = "objc2-core-foundation"))]
1117#[repr(C)]
1118#[derive(Clone, Copy, Debug, PartialEq)]
1119pub struct AudioUnitParameterNameInfo {
1120    pub inID: AudioUnitParameterID,
1121    pub inDesiredLength: i32,
1122    pub outName: *const CFString,
1123}
1124
1125#[cfg(all(feature = "AUComponent", feature = "objc2-core-foundation"))]
1126unsafe impl Encode for AudioUnitParameterNameInfo {
1127    const ENCODING: Encoding = Encoding::Struct(
1128        "AudioUnitParameterNameInfo",
1129        &[
1130            <AudioUnitParameterID>::ENCODING,
1131            <i32>::ENCODING,
1132            <*const CFString>::ENCODING,
1133        ],
1134    );
1135}
1136
1137#[cfg(all(feature = "AUComponent", feature = "objc2-core-foundation"))]
1138unsafe impl RefEncode for AudioUnitParameterNameInfo {
1139    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
1140}
1141
1142/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiounitparameteridname?language=objc)
1143#[cfg(all(feature = "AUComponent", feature = "objc2-core-foundation"))]
1144pub type AudioUnitParameterIDName = AudioUnitParameterNameInfo;
1145
1146/// Provide a string representation of a parameter's value
1147///
1148/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiounitparameterstringfromvalue?language=objc)
1149#[cfg(all(feature = "AUComponent", feature = "objc2-core-foundation"))]
1150#[repr(C)]
1151#[derive(Clone, Copy, Debug, PartialEq)]
1152pub struct AudioUnitParameterStringFromValue {
1153    pub inParamID: AudioUnitParameterID,
1154    pub inValue: NonNull<AudioUnitParameterValue>,
1155    pub outString: *const CFString,
1156}
1157
1158#[cfg(all(feature = "AUComponent", feature = "objc2-core-foundation"))]
1159unsafe impl Encode for AudioUnitParameterStringFromValue {
1160    const ENCODING: Encoding = Encoding::Struct(
1161        "AudioUnitParameterStringFromValue",
1162        &[
1163            <AudioUnitParameterID>::ENCODING,
1164            <NonNull<AudioUnitParameterValue>>::ENCODING,
1165            <*const CFString>::ENCODING,
1166        ],
1167    );
1168}
1169
1170#[cfg(all(feature = "AUComponent", feature = "objc2-core-foundation"))]
1171unsafe impl RefEncode for AudioUnitParameterStringFromValue {
1172    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
1173}
1174
1175/// Provide the parameter's value for a given string representation of it
1176///
1177/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiounitparametervaluefromstring?language=objc)
1178#[cfg(all(feature = "AUComponent", feature = "objc2-core-foundation"))]
1179#[repr(C)]
1180#[derive(Clone, Copy, Debug, PartialEq)]
1181pub struct AudioUnitParameterValueFromString {
1182    pub inParamID: AudioUnitParameterID,
1183    pub inString: NonNull<CFString>,
1184    pub outValue: AudioUnitParameterValue,
1185}
1186
1187#[cfg(all(feature = "AUComponent", feature = "objc2-core-foundation"))]
1188unsafe impl Encode for AudioUnitParameterValueFromString {
1189    const ENCODING: Encoding = Encoding::Struct(
1190        "AudioUnitParameterValueFromString",
1191        &[
1192            <AudioUnitParameterID>::ENCODING,
1193            <NonNull<CFString>>::ENCODING,
1194            <AudioUnitParameterValue>::ENCODING,
1195        ],
1196    );
1197}
1198
1199#[cfg(all(feature = "AUComponent", feature = "objc2-core-foundation"))]
1200unsafe impl RefEncode for AudioUnitParameterValueFromString {
1201    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
1202}
1203
1204/// In inter-app audio, messages to control the host's transport state.
1205///
1206/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiounitremotecontrolevent?language=objc)
1207// NS_ENUM
1208#[repr(transparent)]
1209#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
1210pub struct AudioUnitRemoteControlEvent(pub u32);
1211impl AudioUnitRemoteControlEvent {
1212    #[doc(alias = "kAudioUnitRemoteControlEvent_TogglePlayPause")]
1213    pub const TogglePlayPause: Self = Self(1);
1214    #[doc(alias = "kAudioUnitRemoteControlEvent_ToggleRecord")]
1215    pub const ToggleRecord: Self = Self(2);
1216    #[doc(alias = "kAudioUnitRemoteControlEvent_Rewind")]
1217    pub const Rewind: Self = Self(3);
1218}
1219
1220unsafe impl Encode for AudioUnitRemoteControlEvent {
1221    const ENCODING: Encoding = u32::ENCODING;
1222}
1223
1224unsafe impl RefEncode for AudioUnitRemoteControlEvent {
1225    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
1226}
1227
1228/// Block called to receive a remote control event.
1229///
1230/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiounitremotecontroleventlistener?language=objc)
1231#[cfg(feature = "block2")]
1232pub type AudioUnitRemoteControlEventListener =
1233    *mut block2::DynBlock<dyn Fn(AudioUnitRemoteControlEvent)>;
1234
1235/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_allparametermidimappings?language=objc)
1236#[cfg(feature = "AUComponent")]
1237pub const kAudioUnitProperty_AllParameterMIDIMappings: AudioUnitPropertyID = 41;
1238/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_addparametermidimapping?language=objc)
1239#[cfg(feature = "AUComponent")]
1240pub const kAudioUnitProperty_AddParameterMIDIMapping: AudioUnitPropertyID = 42;
1241/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_removeparametermidimapping?language=objc)
1242#[cfg(feature = "AUComponent")]
1243pub const kAudioUnitProperty_RemoveParameterMIDIMapping: AudioUnitPropertyID = 43;
1244/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_hotmapparametermidimapping?language=objc)
1245#[cfg(feature = "AUComponent")]
1246pub const kAudioUnitProperty_HotMapParameterMIDIMapping: AudioUnitPropertyID = 44;
1247
1248/// General defined values to customize the behavior of parameter-to-MIDI mappings
1249///
1250///
1251///
1252/// If this flag is set and the value of the mStatus field is a MIDI channel message, then
1253/// the MIDI channel number in the status byte is ignored; the mapping is from the specified
1254/// MIDI message on any channel.
1255///
1256///
1257///
1258/// If this flag is set and the value of the mStatus field is a Note On, Note Off, or
1259/// Polyphonic Pressure message, the message's note number is ignored. The mapping is from
1260/// any note number.
1261///
1262///
1263///
1264/// Set this flag if the MIDI control should map only to a sub-range of the parameter's value.
1265/// Then specify that range in the mSubRangeMin and mSubRangeMax member fields.
1266///
1267///
1268///
1269/// Intended for Boolean typed parameters. When this property is set, it means that the
1270/// parameter's value should be toggled when the mapped MIDI message is received. For example,
1271/// if the parameter's value is currently TRUE, when the mapped MIDI message is received
1272/// the value changes to FALSE.
1273///
1274///
1275///
1276/// This property is useful when mapping a parameter to a MIDI Controller. When set, it
1277/// indicates that the parameter can assume only two values: on or off. For this reason, a
1278/// parameter associated with this property is typically Boolean. For example, if this
1279/// property is set for a parameter mapped to a sustain pedal MIDI controller, controller
1280/// values from 0 to 64 result in the parameter switched to its "off" state; controller
1281/// values from 65 to 127 result in the parameter switched to its "on" state.
1282///
1283/// This property works in connection with the kAUParameterMIDIMapping_Bipolar_On property.
1284/// The value of the kAUParameterMIDIMapping_Bipolar_On property
1285///
1286///
1287///
1288/// Determines whether the  "on" state of a parameter is mapped to the "on" or "off" state
1289/// of the associated MIDI controller. Only valid  if the  kAUParameterMIDIMapping_Bipolar
1290/// property is set.
1291///
1292/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/auparametermidimappingflags?language=objc)
1293// NS_OPTIONS
1294#[repr(transparent)]
1295#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
1296pub struct AUParameterMIDIMappingFlags(pub u32);
1297bitflags::bitflags! {
1298    impl AUParameterMIDIMappingFlags: u32 {
1299        #[doc(alias = "kAUParameterMIDIMapping_AnyChannelFlag")]
1300        const AnyChannelFlag = 1<<0;
1301        #[doc(alias = "kAUParameterMIDIMapping_AnyNoteFlag")]
1302        const AnyNoteFlag = 1<<1;
1303        #[doc(alias = "kAUParameterMIDIMapping_SubRange")]
1304        const SubRange = 1<<2;
1305        #[doc(alias = "kAUParameterMIDIMapping_Toggle")]
1306        const Toggle = 1<<3;
1307        #[doc(alias = "kAUParameterMIDIMapping_Bipolar")]
1308        const Bipolar = 1<<4;
1309        #[doc(alias = "kAUParameterMIDIMapping_Bipolar_On")]
1310        const Bipolar_On = 1<<5;
1311    }
1312}
1313
1314unsafe impl Encode for AUParameterMIDIMappingFlags {
1315    const ENCODING: Encoding = u32::ENCODING;
1316}
1317
1318unsafe impl RefEncode for AUParameterMIDIMappingFlags {
1319    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
1320}
1321
1322/// Represents a mapping between a MIDI message and an audio unit's parameter.
1323///
1324/// The reserved fields in this structure are for future use. In the current implementation,
1325/// they help align the structure to 64 bit size. Do not use the names of these fields in a
1326/// host application. They are subject to change.
1327///
1328/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/auparametermidimapping?language=objc)
1329#[cfg(feature = "AUComponent")]
1330#[repr(C)]
1331#[derive(Clone, Copy, Debug, PartialEq)]
1332pub struct AUParameterMIDIMapping {
1333    pub mScope: AudioUnitScope,
1334    pub mElement: AudioUnitElement,
1335    pub mParameterID: AudioUnitParameterID,
1336    pub mFlags: AUParameterMIDIMappingFlags,
1337    pub mSubRangeMin: AudioUnitParameterValue,
1338    pub mSubRangeMax: AudioUnitParameterValue,
1339    pub mStatus: u8,
1340    pub mData1: u8,
1341    pub reserved1: u8,
1342    pub reserved2: u8,
1343    pub reserved3: u32,
1344}
1345
1346#[cfg(feature = "AUComponent")]
1347unsafe impl Encode for AUParameterMIDIMapping {
1348    const ENCODING: Encoding = Encoding::Struct(
1349        "AUParameterMIDIMapping",
1350        &[
1351            <AudioUnitScope>::ENCODING,
1352            <AudioUnitElement>::ENCODING,
1353            <AudioUnitParameterID>::ENCODING,
1354            <AUParameterMIDIMappingFlags>::ENCODING,
1355            <AudioUnitParameterValue>::ENCODING,
1356            <AudioUnitParameterValue>::ENCODING,
1357            <u8>::ENCODING,
1358            <u8>::ENCODING,
1359            <u8>::ENCODING,
1360            <u8>::ENCODING,
1361            <u32>::ENCODING,
1362        ],
1363    );
1364}
1365
1366#[cfg(feature = "AUComponent")]
1367unsafe impl RefEncode for AUParameterMIDIMapping {
1368    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
1369}
1370
1371/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kmusicdeviceproperty_midixmlnames?language=objc)
1372#[cfg(feature = "AUComponent")]
1373pub const kMusicDeviceProperty_MIDIXMLNames: AudioUnitPropertyID = 1006;
1374/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kmusicdeviceproperty_partgroup?language=objc)
1375#[cfg(feature = "AUComponent")]
1376pub const kMusicDeviceProperty_PartGroup: AudioUnitPropertyID = 1010;
1377/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kmusicdeviceproperty_dualschedulingmode?language=objc)
1378#[cfg(feature = "AUComponent")]
1379pub const kMusicDeviceProperty_DualSchedulingMode: AudioUnitPropertyID = 1013;
1380/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kmusicdeviceproperty_supportsstartstopnote?language=objc)
1381#[cfg(feature = "AUComponent")]
1382pub const kMusicDeviceProperty_SupportsStartStopNote: AudioUnitPropertyID = 1014;
1383
1384/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kmusicdevicesampleframemask_sampleoffset?language=objc)
1385pub const kMusicDeviceSampleFrameMask_SampleOffset: c_uint = 0xFFFFFF;
1386/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kmusicdevicesampleframemask_isscheduled?language=objc)
1387pub const kMusicDeviceSampleFrameMask_IsScheduled: c_uint = 0x01000000;
1388
1389/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitofflineproperty_inputsize?language=objc)
1390#[cfg(feature = "AUComponent")]
1391pub const kAudioUnitOfflineProperty_InputSize: AudioUnitPropertyID = 3020;
1392/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitofflineproperty_outputsize?language=objc)
1393#[cfg(feature = "AUComponent")]
1394pub const kAudioUnitOfflineProperty_OutputSize: AudioUnitPropertyID = 3021;
1395/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitofflineproperty_startoffset?language=objc)
1396#[cfg(feature = "AUComponent")]
1397pub const kAudioUnitOfflineProperty_StartOffset: AudioUnitPropertyID = 3022;
1398/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitofflineproperty_preflightrequirements?language=objc)
1399#[cfg(feature = "AUComponent")]
1400pub const kAudioUnitOfflineProperty_PreflightRequirements: AudioUnitPropertyID = 3023;
1401/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitofflineproperty_preflightname?language=objc)
1402#[cfg(feature = "AUComponent")]
1403pub const kAudioUnitOfflineProperty_PreflightName: AudioUnitPropertyID = 3024;
1404
1405/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kofflinepreflight_notrequired?language=objc)
1406pub const kOfflinePreflight_NotRequired: c_uint = 0;
1407/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kofflinepreflight_optional?language=objc)
1408pub const kOfflinePreflight_Optional: c_uint = 1;
1409/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kofflinepreflight_required?language=objc)
1410pub const kOfflinePreflight_Required: c_uint = 2;
1411
1412/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_distanceattenuationdata?language=objc)
1413#[cfg(feature = "AUComponent")]
1414#[deprecated = "no longer supported"]
1415pub const kAudioUnitProperty_DistanceAttenuationData: AudioUnitPropertyID = 3600;
1416
1417/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitmigrateproperty_fromplugin?language=objc)
1418#[cfg(feature = "AUComponent")]
1419pub const kAudioUnitMigrateProperty_FromPlugin: AudioUnitPropertyID = 4000;
1420/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitmigrateproperty_oldautomation?language=objc)
1421#[cfg(feature = "AUComponent")]
1422pub const kAudioUnitMigrateProperty_OldAutomation: AudioUnitPropertyID = 4001;
1423
1424/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kotherpluginformat_undefined?language=objc)
1425pub const kOtherPluginFormat_Undefined: u32 = 0;
1426/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kotherpluginformat_kmas?language=objc)
1427pub const kOtherPluginFormat_kMAS: u32 = 1;
1428/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kotherpluginformat_kvst?language=objc)
1429pub const kOtherPluginFormat_kVST: u32 = 2;
1430/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kotherpluginformat_au?language=objc)
1431pub const kOtherPluginFormat_AU: u32 = 3;
1432
1433/// One of the OtherPluginFormat values
1434///
1435///
1436/// struct AudioClassDescription {
1437/// OSType mType;
1438/// OSType mSubType;
1439/// OSType mManufacturer;
1440/// };
1441/// is defined in
1442/// <CoreAudioTypes
1443/// /CoreAudioTypes.h>
1444///
1445/// mType specifies a generic, plug-in format defined descriptor
1446/// mSubType is usually left to the manufacturer to use at their discretion
1447/// mManufacturer is a registered code to identify all plugins from the same manufacturer
1448///
1449/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiounitotherplugindesc?language=objc)
1450#[cfg(feature = "objc2-core-audio-types")]
1451#[repr(C)]
1452#[derive(Clone, Copy, Debug, PartialEq)]
1453pub struct AudioUnitOtherPluginDesc {
1454    pub format: u32,
1455    pub plugin: AudioClassDescription,
1456}
1457
1458#[cfg(feature = "objc2-core-audio-types")]
1459unsafe impl Encode for AudioUnitOtherPluginDesc {
1460    const ENCODING: Encoding = Encoding::Struct(
1461        "AudioUnitOtherPluginDesc",
1462        &[<u32>::ENCODING, <AudioClassDescription>::ENCODING],
1463    );
1464}
1465
1466#[cfg(feature = "objc2-core-audio-types")]
1467unsafe impl RefEncode for AudioUnitOtherPluginDesc {
1468    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
1469}
1470
1471/// Used to translate another plug-in's parameter values to  audio unit parameter
1472/// values
1473///
1474/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiounitparametervaluetranslation?language=objc)
1475#[cfg(all(feature = "AUComponent", feature = "objc2-core-audio-types"))]
1476#[repr(C)]
1477#[derive(Clone, Copy, Debug, PartialEq)]
1478pub struct AudioUnitParameterValueTranslation {
1479    pub otherDesc: AudioUnitOtherPluginDesc,
1480    pub otherParamID: u32,
1481    pub otherValue: f32,
1482    pub auParamID: AudioUnitParameterID,
1483    pub auValue: AudioUnitParameterValue,
1484}
1485
1486#[cfg(all(feature = "AUComponent", feature = "objc2-core-audio-types"))]
1487unsafe impl Encode for AudioUnitParameterValueTranslation {
1488    const ENCODING: Encoding = Encoding::Struct(
1489        "AudioUnitParameterValueTranslation",
1490        &[
1491            <AudioUnitOtherPluginDesc>::ENCODING,
1492            <u32>::ENCODING,
1493            <f32>::ENCODING,
1494            <AudioUnitParameterID>::ENCODING,
1495            <AudioUnitParameterValue>::ENCODING,
1496        ],
1497    );
1498}
1499
1500#[cfg(all(feature = "AUComponent", feature = "objc2-core-audio-types"))]
1501unsafe impl RefEncode for AudioUnitParameterValueTranslation {
1502    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
1503}
1504
1505/// AU-MAS specific structs for the data contained in the "masdata" key of an audio
1506/// unit preset dictionary
1507///
1508/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiounitpresetmas_settingdata?language=objc)
1509#[repr(C)]
1510#[derive(Clone, Copy, Debug, PartialEq)]
1511pub struct AudioUnitPresetMAS_SettingData {
1512    pub isStockSetting: u32,
1513    pub settingID: u32,
1514    pub dataLen: u32,
1515    pub data: [u8; 1],
1516}
1517
1518unsafe impl Encode for AudioUnitPresetMAS_SettingData {
1519    const ENCODING: Encoding = Encoding::Struct(
1520        "AudioUnitPresetMAS_SettingData",
1521        &[
1522            <u32>::ENCODING,
1523            <u32>::ENCODING,
1524            <u32>::ENCODING,
1525            <[u8; 1]>::ENCODING,
1526        ],
1527    );
1528}
1529
1530unsafe impl RefEncode for AudioUnitPresetMAS_SettingData {
1531    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
1532}
1533
1534/// See MAS documentation
1535///
1536/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiounitpresetmas_settings?language=objc)
1537#[repr(C)]
1538#[derive(Clone, Copy, Debug, PartialEq)]
1539pub struct AudioUnitPresetMAS_Settings {
1540    pub manufacturerID: u32,
1541    pub effectID: u32,
1542    pub variantID: u32,
1543    pub settingsVersion: u32,
1544    pub numberOfSettings: u32,
1545    pub settings: [AudioUnitPresetMAS_SettingData; 1],
1546}
1547
1548unsafe impl Encode for AudioUnitPresetMAS_Settings {
1549    const ENCODING: Encoding = Encoding::Struct(
1550        "AudioUnitPresetMAS_Settings",
1551        &[
1552            <u32>::ENCODING,
1553            <u32>::ENCODING,
1554            <u32>::ENCODING,
1555            <u32>::ENCODING,
1556            <u32>::ENCODING,
1557            <[AudioUnitPresetMAS_SettingData; 1]>::ENCODING,
1558        ],
1559    );
1560}
1561
1562unsafe impl RefEncode for AudioUnitPresetMAS_Settings {
1563    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
1564}
1565
1566/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_samplerateconvertercomplexity?language=objc)
1567#[cfg(feature = "AUComponent")]
1568pub const kAudioUnitProperty_SampleRateConverterComplexity: AudioUnitPropertyID = 3014;
1569
1570/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitsamplerateconvertercomplexity_linear?language=objc)
1571pub const kAudioUnitSampleRateConverterComplexity_Linear: u32 = 0x6c696e65;
1572/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitsamplerateconvertercomplexity_normal?language=objc)
1573pub const kAudioUnitSampleRateConverterComplexity_Normal: u32 = 0x6e6f726d;
1574/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitsamplerateconvertercomplexity_mastering?language=objc)
1575pub const kAudioUnitSampleRateConverterComplexity_Mastering: u32 = 0x62617473;
1576
1577/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiooutputunitproperty_currentdevice?language=objc)
1578#[cfg(feature = "AUComponent")]
1579pub const kAudioOutputUnitProperty_CurrentDevice: AudioUnitPropertyID = 2000;
1580/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiooutputunitproperty_isrunning?language=objc)
1581#[cfg(feature = "AUComponent")]
1582pub const kAudioOutputUnitProperty_IsRunning: AudioUnitPropertyID = 2001;
1583/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiooutputunitproperty_channelmap?language=objc)
1584#[cfg(feature = "AUComponent")]
1585pub const kAudioOutputUnitProperty_ChannelMap: AudioUnitPropertyID = 2002;
1586/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiooutputunitproperty_enableio?language=objc)
1587#[cfg(feature = "AUComponent")]
1588pub const kAudioOutputUnitProperty_EnableIO: AudioUnitPropertyID = 2003;
1589/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiooutputunitproperty_starttime?language=objc)
1590#[cfg(feature = "AUComponent")]
1591pub const kAudioOutputUnitProperty_StartTime: AudioUnitPropertyID = 2004;
1592/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiooutputunitproperty_setinputcallback?language=objc)
1593#[cfg(feature = "AUComponent")]
1594pub const kAudioOutputUnitProperty_SetInputCallback: AudioUnitPropertyID = 2005;
1595/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiooutputunitproperty_hasio?language=objc)
1596#[cfg(feature = "AUComponent")]
1597pub const kAudioOutputUnitProperty_HasIO: AudioUnitPropertyID = 2006;
1598/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiooutputunitproperty_starttimestampsatzero?language=objc)
1599#[cfg(feature = "AUComponent")]
1600pub const kAudioOutputUnitProperty_StartTimestampsAtZero: AudioUnitPropertyID = 2007;
1601/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiooutputunitproperty_osworkgroup?language=objc)
1602#[cfg(feature = "AUComponent")]
1603pub const kAudioOutputUnitProperty_OSWorkgroup: AudioUnitPropertyID = 2015;
1604/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiooutputunitproperty_intendedspatialexperience?language=objc)
1605#[cfg(feature = "AUComponent")]
1606pub const kAudioOutputUnitProperty_IntendedSpatialExperience: AudioUnitPropertyID = 2016;
1607
1608/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiooutputunitproperty_midicallbacks?language=objc)
1609#[cfg(feature = "AUComponent")]
1610pub const kAudioOutputUnitProperty_MIDICallbacks: AudioUnitPropertyID = 2010;
1611/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiooutputunitproperty_hostreceivesremotecontrolevents?language=objc)
1612#[cfg(feature = "AUComponent")]
1613pub const kAudioOutputUnitProperty_HostReceivesRemoteControlEvents: AudioUnitPropertyID = 2011;
1614/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiooutputunitproperty_remotecontroltohost?language=objc)
1615#[cfg(feature = "AUComponent")]
1616pub const kAudioOutputUnitProperty_RemoteControlToHost: AudioUnitPropertyID = 2012;
1617/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiooutputunitproperty_hosttransportstate?language=objc)
1618#[cfg(feature = "AUComponent")]
1619pub const kAudioOutputUnitProperty_HostTransportState: AudioUnitPropertyID = 2013;
1620/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiooutputunitproperty_nodecomponentdescription?language=objc)
1621#[cfg(feature = "AUComponent")]
1622pub const kAudioOutputUnitProperty_NodeComponentDescription: AudioUnitPropertyID = 2014;
1623
1624/// For inter-app audio, callbacks for receiving MIDI messages.
1625///
1626/// The supplied callback functions are called from the realtime rendering thread, before each
1627/// render cycle, to provide any incoming MIDI messages.
1628///
1629/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiooutputunitmidicallbacks?language=objc)
1630#[repr(C)]
1631#[allow(unpredictable_function_pointer_comparisons)]
1632#[derive(Clone, Copy, Debug, PartialEq)]
1633pub struct AudioOutputUnitMIDICallbacks {
1634    pub userData: *mut c_void,
1635    pub MIDIEventProc: unsafe extern "C-unwind" fn(*mut c_void, u32, u32, u32, u32),
1636    pub MIDISysExProc: unsafe extern "C-unwind" fn(*mut c_void, NonNull<u8>, u32),
1637}
1638
1639unsafe impl Encode for AudioOutputUnitMIDICallbacks {
1640    const ENCODING: Encoding = Encoding::Struct(
1641        "AudioOutputUnitMIDICallbacks",
1642        &[
1643            <*mut c_void>::ENCODING,
1644            <unsafe extern "C-unwind" fn(*mut c_void, u32, u32, u32, u32)>::ENCODING,
1645            <unsafe extern "C-unwind" fn(*mut c_void, NonNull<u8>, u32)>::ENCODING,
1646        ],
1647    );
1648}
1649
1650unsafe impl RefEncode for AudioOutputUnitMIDICallbacks {
1651    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
1652}
1653
1654/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiooutputunitstartattimeparams?language=objc)
1655#[cfg(feature = "objc2-core-audio-types")]
1656#[repr(C)]
1657#[derive(Clone, Copy, Debug, PartialEq)]
1658pub struct AudioOutputUnitStartAtTimeParams {
1659    pub mTimestamp: AudioTimeStamp,
1660    pub mFlags: u32,
1661}
1662
1663#[cfg(feature = "objc2-core-audio-types")]
1664unsafe impl Encode for AudioOutputUnitStartAtTimeParams {
1665    const ENCODING: Encoding = Encoding::Struct(
1666        "AudioOutputUnitStartAtTimeParams",
1667        &[<AudioTimeStamp>::ENCODING, <u32>::ENCODING],
1668    );
1669}
1670
1671#[cfg(feature = "objc2-core-audio-types")]
1672unsafe impl RefEncode for AudioOutputUnitStartAtTimeParams {
1673    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
1674}
1675
1676/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kauvoiceioproperty_bypassvoiceprocessing?language=objc)
1677#[cfg(feature = "AUComponent")]
1678pub const kAUVoiceIOProperty_BypassVoiceProcessing: AudioUnitPropertyID = 2100;
1679/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kauvoiceioproperty_voiceprocessingenableagc?language=objc)
1680#[cfg(feature = "AUComponent")]
1681pub const kAUVoiceIOProperty_VoiceProcessingEnableAGC: AudioUnitPropertyID = 2101;
1682/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kauvoiceioproperty_muteoutput?language=objc)
1683#[cfg(feature = "AUComponent")]
1684pub const kAUVoiceIOProperty_MuteOutput: AudioUnitPropertyID = 2104;
1685
1686/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/auvoiceiospeechactivityevent?language=objc)
1687// NS_ENUM
1688#[repr(transparent)]
1689#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
1690pub struct AUVoiceIOSpeechActivityEvent(pub u32);
1691impl AUVoiceIOSpeechActivityEvent {
1692    #[doc(alias = "kAUVoiceIOSpeechActivityHasStarted")]
1693    pub const HasStarted: Self = Self(0);
1694    #[doc(alias = "kAUVoiceIOSpeechActivityHasEnded")]
1695    pub const HasEnded: Self = Self(1);
1696}
1697
1698unsafe impl Encode for AUVoiceIOSpeechActivityEvent {
1699    const ENCODING: Encoding = u32::ENCODING;
1700}
1701
1702unsafe impl RefEncode for AUVoiceIOSpeechActivityEvent {
1703    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
1704}
1705
1706/// Block called to receive speech activity event while the client is muted.
1707///
1708/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/auvoiceiomutedspeechactivityeventlistener?language=objc)
1709#[cfg(feature = "block2")]
1710pub type AUVoiceIOMutedSpeechActivityEventListener =
1711    *mut block2::DynBlock<dyn Fn(AUVoiceIOSpeechActivityEvent)>;
1712
1713/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kauvoiceioproperty_mutedspeechactivityeventlistener?language=objc)
1714#[cfg(feature = "AUComponent")]
1715pub const kAUVoiceIOProperty_MutedSpeechActivityEventListener: AudioUnitPropertyID = 2106;
1716
1717/// Ducking level applied to other (i.e. non-voice) audio by AUVoiceIO.
1718///
1719/// DuckingLevelDefault = Default ducking level to other audio for typical voice chat.
1720/// DuckingLevelMin = minimum ducking to other audio.
1721/// DuckingLevelMid = medium ducking to other audio.
1722/// DuckingLevelMax = maximum ducking to other audio.
1723///
1724/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/auvoiceiootheraudioduckinglevel?language=objc)
1725// NS_ENUM
1726#[repr(transparent)]
1727#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
1728pub struct AUVoiceIOOtherAudioDuckingLevel(pub u32);
1729impl AUVoiceIOOtherAudioDuckingLevel {
1730    #[doc(alias = "kAUVoiceIOOtherAudioDuckingLevelDefault")]
1731    pub const Default: Self = Self(0);
1732    #[doc(alias = "kAUVoiceIOOtherAudioDuckingLevelMin")]
1733    pub const Min: Self = Self(10);
1734    #[doc(alias = "kAUVoiceIOOtherAudioDuckingLevelMid")]
1735    pub const Mid: Self = Self(20);
1736    #[doc(alias = "kAUVoiceIOOtherAudioDuckingLevelMax")]
1737    pub const Max: Self = Self(30);
1738}
1739
1740unsafe impl Encode for AUVoiceIOOtherAudioDuckingLevel {
1741    const ENCODING: Encoding = u32::ENCODING;
1742}
1743
1744unsafe impl RefEncode for AUVoiceIOOtherAudioDuckingLevel {
1745    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
1746}
1747
1748/// The configuration of ducking other (i.e. non-voice) audio
1749///
1750///
1751/// Enables advanced ducking which ducks other audio based on the presence of voice activity from local and/or remote chat participants.
1752///
1753/// Ducking level of other audio
1754///
1755/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/auvoiceiootheraudioduckingconfiguration?language=objc)
1756#[repr(C)]
1757#[derive(Clone, Copy, Debug, PartialEq)]
1758pub struct AUVoiceIOOtherAudioDuckingConfiguration {
1759    pub mEnableAdvancedDucking: Boolean,
1760    pub mDuckingLevel: AUVoiceIOOtherAudioDuckingLevel,
1761}
1762
1763unsafe impl Encode for AUVoiceIOOtherAudioDuckingConfiguration {
1764    const ENCODING: Encoding = Encoding::Struct(
1765        "AUVoiceIOOtherAudioDuckingConfiguration",
1766        &[
1767            <Boolean>::ENCODING,
1768            <AUVoiceIOOtherAudioDuckingLevel>::ENCODING,
1769        ],
1770    );
1771}
1772
1773unsafe impl RefEncode for AUVoiceIOOtherAudioDuckingConfiguration {
1774    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
1775}
1776
1777/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kauvoiceioproperty_otheraudioduckingconfiguration?language=objc)
1778#[cfg(feature = "AUComponent")]
1779pub const kAUVoiceIOProperty_OtherAudioDuckingConfiguration: AudioUnitPropertyID = 2108;
1780
1781/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kauvoiceioproperty_voiceprocessingquality?language=objc)
1782#[cfg(feature = "AUComponent")]
1783#[deprecated]
1784pub const kAUVoiceIOProperty_VoiceProcessingQuality: AudioUnitPropertyID = 2103;
1785
1786/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaunbandeqproperty_numberofbands?language=objc)
1787#[cfg(feature = "AUComponent")]
1788pub const kAUNBandEQProperty_NumberOfBands: AudioUnitPropertyID = 2200;
1789/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaunbandeqproperty_maxnumberofbands?language=objc)
1790#[cfg(feature = "AUComponent")]
1791pub const kAUNBandEQProperty_MaxNumberOfBands: AudioUnitPropertyID = 2201;
1792/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaunbandeqproperty_biquadcoefficients?language=objc)
1793#[cfg(feature = "AUComponent")]
1794pub const kAUNBandEQProperty_BiquadCoefficients: AudioUnitPropertyID = 2203;
1795
1796/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kauvoiceioerr_unexpectednumberofinputchannels?language=objc)
1797pub const kAUVoiceIOErr_UnexpectedNumberOfInputChannels: OSStatus = -66784;
1798
1799/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_meteringmode?language=objc)
1800#[cfg(feature = "AUComponent")]
1801pub const kAudioUnitProperty_MeteringMode: AudioUnitPropertyID = 3007;
1802/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_matrixlevels?language=objc)
1803#[cfg(feature = "AUComponent")]
1804pub const kAudioUnitProperty_MatrixLevels: AudioUnitPropertyID = 3006;
1805/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_matrixdimensions?language=objc)
1806#[cfg(feature = "AUComponent")]
1807pub const kAudioUnitProperty_MatrixDimensions: AudioUnitPropertyID = 3009;
1808/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_meterclipping?language=objc)
1809#[cfg(feature = "AUComponent")]
1810pub const kAudioUnitProperty_MeterClipping: AudioUnitPropertyID = 3011;
1811/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_inputanchortimestamp?language=objc)
1812#[cfg(feature = "AUComponent")]
1813pub const kAudioUnitProperty_InputAnchorTimeStamp: AudioUnitPropertyID = 3016;
1814
1815/// The maximum value seen on the channel since the last time the property was retrieved.
1816///
1817/// TRUE if there was an infinite value on this channel.
1818///
1819/// TRUE if there was a floating point Not-A-Number value on this channel.
1820///
1821/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiounitmeterclipping?language=objc)
1822#[repr(C)]
1823#[derive(Clone, Copy, Debug, PartialEq)]
1824pub struct AudioUnitMeterClipping {
1825    pub peakValueSinceLastCall: f32,
1826    pub sawInfinity: Boolean,
1827    pub sawNotANumber: Boolean,
1828}
1829
1830unsafe impl Encode for AudioUnitMeterClipping {
1831    const ENCODING: Encoding = Encoding::Struct(
1832        "AudioUnitMeterClipping",
1833        &[<f32>::ENCODING, <Boolean>::ENCODING, <Boolean>::ENCODING],
1834    );
1835}
1836
1837unsafe impl RefEncode for AudioUnitMeterClipping {
1838    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
1839}
1840
1841/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_reverbroomtype?language=objc)
1842#[cfg(feature = "AUComponent")]
1843pub const kAudioUnitProperty_ReverbRoomType: AudioUnitPropertyID = 10;
1844/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_usesinternalreverb?language=objc)
1845#[cfg(feature = "AUComponent")]
1846pub const kAudioUnitProperty_UsesInternalReverb: AudioUnitPropertyID = 1005;
1847/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_spatializationalgorithm?language=objc)
1848#[cfg(feature = "AUComponent")]
1849pub const kAudioUnitProperty_SpatializationAlgorithm: AudioUnitPropertyID = 3000;
1850/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_spatialmixerrenderingflags?language=objc)
1851#[cfg(feature = "AUComponent")]
1852pub const kAudioUnitProperty_SpatialMixerRenderingFlags: AudioUnitPropertyID = 3003;
1853/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_spatialmixersourcemode?language=objc)
1854#[cfg(feature = "AUComponent")]
1855pub const kAudioUnitProperty_SpatialMixerSourceMode: AudioUnitPropertyID = 3005;
1856/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_spatialmixerdistanceparams?language=objc)
1857#[cfg(feature = "AUComponent")]
1858pub const kAudioUnitProperty_SpatialMixerDistanceParams: AudioUnitPropertyID = 3010;
1859/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_spatialmixerattenuationcurve?language=objc)
1860#[cfg(feature = "AUComponent")]
1861pub const kAudioUnitProperty_SpatialMixerAttenuationCurve: AudioUnitPropertyID = 3013;
1862/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_spatialmixeroutputtype?language=objc)
1863#[cfg(feature = "AUComponent")]
1864pub const kAudioUnitProperty_SpatialMixerOutputType: AudioUnitPropertyID = 3100;
1865/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_spatialmixerpointsourceinheadmode?language=objc)
1866#[cfg(feature = "AUComponent")]
1867pub const kAudioUnitProperty_SpatialMixerPointSourceInHeadMode: AudioUnitPropertyID = 3103;
1868/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_spatialmixerenableheadtracking?language=objc)
1869#[cfg(feature = "AUComponent")]
1870pub const kAudioUnitProperty_SpatialMixerEnableHeadTracking: AudioUnitPropertyID = 3111;
1871/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_spatialmixerpersonalizedhrtfmode?language=objc)
1872#[cfg(feature = "AUComponent")]
1873pub const kAudioUnitProperty_SpatialMixerPersonalizedHRTFMode: AudioUnitPropertyID = 3113;
1874/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_spatialmixeranyinputisusingpersonalizedhrtf?language=objc)
1875#[cfg(feature = "AUComponent")]
1876pub const kAudioUnitProperty_SpatialMixerAnyInputIsUsingPersonalizedHRTF: AudioUnitPropertyID =
1877    3116;
1878
1879/// Use kSpatializationAlgorithm_UseOutputType with appropriate kAudioUnitProperty_SpatialMixerOutputType
1880/// for highest-quality spatial rendering across different hardware.
1881///
1882/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/auspatializationalgorithm?language=objc)
1883// NS_ENUM
1884#[repr(transparent)]
1885#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
1886pub struct AUSpatializationAlgorithm(pub u32);
1887impl AUSpatializationAlgorithm {
1888    #[doc(alias = "kSpatializationAlgorithm_EqualPowerPanning")]
1889    pub const SpatializationAlgorithm_EqualPowerPanning: Self = Self(0);
1890    #[doc(alias = "kSpatializationAlgorithm_SphericalHead")]
1891    pub const SpatializationAlgorithm_SphericalHead: Self = Self(1);
1892    #[doc(alias = "kSpatializationAlgorithm_HRTF")]
1893    pub const SpatializationAlgorithm_HRTF: Self = Self(2);
1894    #[doc(alias = "kSpatializationAlgorithm_SoundField")]
1895    pub const SpatializationAlgorithm_SoundField: Self = Self(3);
1896    #[doc(alias = "kSpatializationAlgorithm_VectorBasedPanning")]
1897    pub const SpatializationAlgorithm_VectorBasedPanning: Self = Self(4);
1898    #[doc(alias = "kSpatializationAlgorithm_StereoPassThrough")]
1899    pub const SpatializationAlgorithm_StereoPassThrough: Self = Self(5);
1900    #[doc(alias = "kSpatializationAlgorithm_HRTFHQ")]
1901    pub const SpatializationAlgorithm_HRTFHQ: Self = Self(6);
1902    #[doc(alias = "kSpatializationAlgorithm_UseOutputType")]
1903    pub const SpatializationAlgorithm_UseOutputType: Self = Self(7);
1904}
1905
1906unsafe impl Encode for AUSpatializationAlgorithm {
1907    const ENCODING: Encoding = u32::ENCODING;
1908}
1909
1910unsafe impl RefEncode for AUSpatializationAlgorithm {
1911    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
1912}
1913
1914/// Mono input is spatialized using kAudioUnitProperty_SpatializationAlgorithm.
1915/// Any input with more than one channel is passed through without spatialization. This is
1916/// the default mode and corresponds to legacy behavior. The rendering is equivalent to
1917/// kSpatialMixerSourceMode_PointSource for mono input and
1918/// kSpatialMixerSourceMode_Bypass for input with more than one channel.
1919///
1920///
1921///
1922/// No spatial rendering. If input and output AudioChannelLayouts are equivalent, all
1923/// input channels are copied to corresponding output channels. If the input and
1924/// output AudioChannelLayouts differ, mixing is done according to the
1925/// kAudioFormatProperty_MatrixMixMap property of the layouts. No occlusion, obstruction,
1926/// or reverb is applied in this mode.
1927///
1928///
1929///
1930/// All channels of the input signal are rendered as a single source except if rendering
1931/// in-head with kSpatialMixerPointSourceInHeadMode_Bypass.
1932///
1933///
1934///
1935/// The input channels are spatialized around the listener as far-field sources.
1936/// The relative directions of the individual channels are specified by the
1937/// AudioChannelLayout of the bus. The rotation of the whole bed in the global space is
1938/// controlled by azimuth and elevation parameters.
1939///
1940/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/auspatialmixersourcemode?language=objc)
1941// NS_ENUM
1942#[repr(transparent)]
1943#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
1944pub struct AUSpatialMixerSourceMode(pub u32);
1945impl AUSpatialMixerSourceMode {
1946    #[doc(alias = "kSpatialMixerSourceMode_SpatializeIfMono")]
1947    pub const SpatialMixerSourceMode_SpatializeIfMono: Self = Self(0);
1948    #[doc(alias = "kSpatialMixerSourceMode_Bypass")]
1949    pub const SpatialMixerSourceMode_Bypass: Self = Self(1);
1950    #[doc(alias = "kSpatialMixerSourceMode_PointSource")]
1951    pub const SpatialMixerSourceMode_PointSource: Self = Self(2);
1952    #[doc(alias = "kSpatialMixerSourceMode_AmbienceBed")]
1953    pub const SpatialMixerSourceMode_AmbienceBed: Self = Self(3);
1954}
1955
1956unsafe impl Encode for AUSpatialMixerSourceMode {
1957    const ENCODING: Encoding = u32::ENCODING;
1958}
1959
1960unsafe impl RefEncode for AUSpatialMixerSourceMode {
1961    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
1962}
1963
1964/// Used to specify room type (as identified by a factory preset number) on Apple audio
1965/// units that use internal reverb.
1966///
1967/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/aureverbroomtype?language=objc)
1968// NS_ENUM
1969#[repr(transparent)]
1970#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
1971pub struct AUReverbRoomType(pub u32);
1972impl AUReverbRoomType {
1973    #[doc(alias = "kReverbRoomType_SmallRoom")]
1974    pub const ReverbRoomType_SmallRoom: Self = Self(0);
1975    #[doc(alias = "kReverbRoomType_MediumRoom")]
1976    pub const ReverbRoomType_MediumRoom: Self = Self(1);
1977    #[doc(alias = "kReverbRoomType_LargeRoom")]
1978    pub const ReverbRoomType_LargeRoom: Self = Self(2);
1979    #[doc(alias = "kReverbRoomType_MediumHall")]
1980    pub const ReverbRoomType_MediumHall: Self = Self(3);
1981    #[doc(alias = "kReverbRoomType_LargeHall")]
1982    pub const ReverbRoomType_LargeHall: Self = Self(4);
1983    #[doc(alias = "kReverbRoomType_Plate")]
1984    pub const ReverbRoomType_Plate: Self = Self(5);
1985    #[doc(alias = "kReverbRoomType_MediumChamber")]
1986    pub const ReverbRoomType_MediumChamber: Self = Self(6);
1987    #[doc(alias = "kReverbRoomType_LargeChamber")]
1988    pub const ReverbRoomType_LargeChamber: Self = Self(7);
1989    #[doc(alias = "kReverbRoomType_Cathedral")]
1990    pub const ReverbRoomType_Cathedral: Self = Self(8);
1991    #[doc(alias = "kReverbRoomType_LargeRoom2")]
1992    pub const ReverbRoomType_LargeRoom2: Self = Self(9);
1993    #[doc(alias = "kReverbRoomType_MediumHall2")]
1994    pub const ReverbRoomType_MediumHall2: Self = Self(10);
1995    #[doc(alias = "kReverbRoomType_MediumHall3")]
1996    pub const ReverbRoomType_MediumHall3: Self = Self(11);
1997    #[doc(alias = "kReverbRoomType_LargeHall2")]
1998    pub const ReverbRoomType_LargeHall2: Self = Self(12);
1999}
2000
2001unsafe impl Encode for AUReverbRoomType {
2002    const ENCODING: Encoding = u32::ENCODING;
2003}
2004
2005unsafe impl RefEncode for AUReverbRoomType {
2006    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
2007}
2008
2009/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/auspatialmixerattenuationcurve?language=objc)
2010// NS_ENUM
2011#[repr(transparent)]
2012#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
2013pub struct AUSpatialMixerAttenuationCurve(pub u32);
2014impl AUSpatialMixerAttenuationCurve {
2015    #[doc(alias = "kSpatialMixerAttenuationCurve_Power")]
2016    pub const SpatialMixerAttenuationCurve_Power: Self = Self(0);
2017    #[doc(alias = "kSpatialMixerAttenuationCurve_Exponential")]
2018    pub const SpatialMixerAttenuationCurve_Exponential: Self = Self(1);
2019    #[doc(alias = "kSpatialMixerAttenuationCurve_Inverse")]
2020    pub const SpatialMixerAttenuationCurve_Inverse: Self = Self(2);
2021    #[doc(alias = "kSpatialMixerAttenuationCurve_Linear")]
2022    pub const SpatialMixerAttenuationCurve_Linear: Self = Self(3);
2023}
2024
2025unsafe impl Encode for AUSpatialMixerAttenuationCurve {
2026    const ENCODING: Encoding = u32::ENCODING;
2027}
2028
2029unsafe impl RefEncode for AUSpatialMixerAttenuationCurve {
2030    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
2031}
2032
2033/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/mixerdistanceparams?language=objc)
2034#[repr(C)]
2035#[derive(Clone, Copy, Debug, PartialEq)]
2036pub struct MixerDistanceParams {
2037    pub mReferenceDistance: f32,
2038    pub mMaxDistance: f32,
2039    pub mMaxAttenuation: f32,
2040}
2041
2042unsafe impl Encode for MixerDistanceParams {
2043    const ENCODING: Encoding = Encoding::Struct(
2044        "MixerDistanceParams",
2045        &[<f32>::ENCODING, <f32>::ENCODING, <f32>::ENCODING],
2046    );
2047}
2048
2049unsafe impl RefEncode for MixerDistanceParams {
2050    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
2051}
2052
2053/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/auspatialmixerrenderingflags?language=objc)
2054// NS_OPTIONS
2055#[repr(transparent)]
2056#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
2057pub struct AUSpatialMixerRenderingFlags(pub u32);
2058bitflags::bitflags! {
2059    impl AUSpatialMixerRenderingFlags: u32 {
2060        #[doc(alias = "kSpatialMixerRenderingFlags_InterAuralDelay")]
2061        const SpatialMixerRenderingFlags_InterAuralDelay = 1<<0;
2062        #[doc(alias = "kSpatialMixerRenderingFlags_DistanceAttenuation")]
2063        const SpatialMixerRenderingFlags_DistanceAttenuation = 1<<2;
2064    }
2065}
2066
2067unsafe impl Encode for AUSpatialMixerRenderingFlags {
2068    const ENCODING: Encoding = u32::ENCODING;
2069}
2070
2071unsafe impl RefEncode for AUSpatialMixerRenderingFlags {
2072    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
2073}
2074
2075/// Use generic head-related transfer function (HRTF).
2076///
2077///
2078///
2079/// Use personalized head-related transfer function (HRTF), if available.
2080///
2081///
2082///
2083/// Follow system preferences to choose between personalized vs generic
2084/// head-related transfer function (HRTF).
2085///
2086/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/auspatialmixerpersonalizedhrtfmode?language=objc)
2087// NS_ENUM
2088#[repr(transparent)]
2089#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
2090pub struct AUSpatialMixerPersonalizedHRTFMode(pub u32);
2091impl AUSpatialMixerPersonalizedHRTFMode {
2092    #[doc(alias = "kSpatialMixerPersonalizedHRTFMode_Off")]
2093    pub const SpatialMixerPersonalizedHRTFMode_Off: Self = Self(0);
2094    #[doc(alias = "kSpatialMixerPersonalizedHRTFMode_On")]
2095    pub const SpatialMixerPersonalizedHRTFMode_On: Self = Self(1);
2096    #[doc(alias = "kSpatialMixerPersonalizedHRTFMode_Auto")]
2097    pub const SpatialMixerPersonalizedHRTFMode_Auto: Self = Self(2);
2098}
2099
2100unsafe impl Encode for AUSpatialMixerPersonalizedHRTFMode {
2101    const ENCODING: Encoding = u32::ENCODING;
2102}
2103
2104unsafe impl RefEncode for AUSpatialMixerPersonalizedHRTFMode {
2105    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
2106}
2107
2108/// Render for headphones.
2109///
2110///
2111///
2112/// Render for built-in speakers. The spatialization is optimized for current hardware and
2113/// will not be suitable for playback on other hardware. On iOS devices, the rendering may
2114/// be specific to device orientation. Non-realtime rendering may not provide intended results
2115/// if the orientation changes between rendering the audio and playing it back.
2116///
2117///
2118///
2119/// Render for external speakers based on the mixer's output channel layout.
2120///
2121/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/auspatialmixeroutputtype?language=objc)
2122// NS_ENUM
2123#[repr(transparent)]
2124#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
2125pub struct AUSpatialMixerOutputType(pub u32);
2126impl AUSpatialMixerOutputType {
2127    #[doc(alias = "kSpatialMixerOutputType_Headphones")]
2128    pub const SpatialMixerOutputType_Headphones: Self = Self(1);
2129    #[doc(alias = "kSpatialMixerOutputType_BuiltInSpeakers")]
2130    pub const SpatialMixerOutputType_BuiltInSpeakers: Self = Self(2);
2131    #[doc(alias = "kSpatialMixerOutputType_ExternalSpeakers")]
2132    pub const SpatialMixerOutputType_ExternalSpeakers: Self = Self(3);
2133}
2134
2135unsafe impl Encode for AUSpatialMixerOutputType {
2136    const ENCODING: Encoding = u32::ENCODING;
2137}
2138
2139unsafe impl RefEncode for AUSpatialMixerOutputType {
2140    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
2141}
2142
2143/// This setting only affects spatialization when using kSpatializationAlgorithm_UseOutputType
2144/// with kSpatialMixerSourceMode_PointSource.
2145///
2146///
2147///
2148/// A point source remains a single mono source inside the listener's head regardless
2149/// of the channels it consists of.
2150///
2151///
2152///
2153/// A point source splits into bypass inside the listener's head. This enables transitions
2154/// between traditional, non-spatialized rendering and spatialized sources outside the
2155/// listener's head.
2156///
2157/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/auspatialmixerpointsourceinheadmode?language=objc)
2158// NS_ENUM
2159#[repr(transparent)]
2160#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
2161pub struct AUSpatialMixerPointSourceInHeadMode(pub u32);
2162impl AUSpatialMixerPointSourceInHeadMode {
2163    #[doc(alias = "kSpatialMixerPointSourceInHeadMode_Mono")]
2164    pub const SpatialMixerPointSourceInHeadMode_Mono: Self = Self(0);
2165    #[doc(alias = "kSpatialMixerPointSourceInHeadMode_Bypass")]
2166    pub const SpatialMixerPointSourceInHeadMode_Bypass: Self = Self(1);
2167}
2168
2169unsafe impl Encode for AUSpatialMixerPointSourceInHeadMode {
2170    const ENCODING: Encoding = u32::ENCODING;
2171}
2172
2173unsafe impl RefEncode for AUSpatialMixerPointSourceInHeadMode {
2174    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
2175}
2176
2177/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kauaudiomixproperty_spatialaudiomixmetadata?language=objc)
2178#[cfg(feature = "AUComponent")]
2179pub const kAUAudioMixProperty_SpatialAudioMixMetadata: AudioUnitPropertyID = 5000;
2180/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kauaudiomixproperty_enablespatialization?language=objc)
2181#[cfg(feature = "AUComponent")]
2182pub const kAUAudioMixProperty_EnableSpatialization: AudioUnitPropertyID = 5001;
2183
2184/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_3dmixerdistanceparams?language=objc)
2185#[cfg(feature = "AUComponent")]
2186#[deprecated]
2187pub const kAudioUnitProperty_3DMixerDistanceParams: AudioUnitPropertyID = 3010;
2188/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_3dmixerattenuationcurve?language=objc)
2189#[cfg(feature = "AUComponent")]
2190#[deprecated]
2191pub const kAudioUnitProperty_3DMixerAttenuationCurve: AudioUnitPropertyID = 3013;
2192/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_dopplershift?language=objc)
2193#[cfg(feature = "AUComponent")]
2194#[deprecated]
2195pub const kAudioUnitProperty_DopplerShift: AudioUnitPropertyID = 3002;
2196/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_3dmixerrenderingflags?language=objc)
2197#[cfg(feature = "AUComponent")]
2198#[deprecated]
2199pub const kAudioUnitProperty_3DMixerRenderingFlags: AudioUnitPropertyID = 3003;
2200/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_3dmixerdistanceatten?language=objc)
2201#[cfg(feature = "AUComponent")]
2202#[deprecated]
2203pub const kAudioUnitProperty_3DMixerDistanceAtten: AudioUnitPropertyID = 3004;
2204/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_reverbpreset?language=objc)
2205#[cfg(feature = "AUComponent")]
2206#[deprecated]
2207pub const kAudioUnitProperty_ReverbPreset: AudioUnitPropertyID = 3012;
2208
2209/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/au3dmixerrenderingflags?language=objc)
2210// NS_OPTIONS
2211#[repr(transparent)]
2212#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
2213pub struct AU3DMixerRenderingFlags(pub u32);
2214bitflags::bitflags! {
2215    impl AU3DMixerRenderingFlags: u32 {
2216        const k3DMixerRenderingFlags_InterAuralDelay = 1<<0;
2217        const k3DMixerRenderingFlags_DopplerShift = 1<<1;
2218        const k3DMixerRenderingFlags_DistanceAttenuation = 1<<2;
2219        const k3DMixerRenderingFlags_DistanceFilter = 1<<3;
2220        const k3DMixerRenderingFlags_DistanceDiffusion = 1<<4;
2221        const k3DMixerRenderingFlags_LinearDistanceAttenuation = 1<<5;
2222        const k3DMixerRenderingFlags_ConstantReverbBlend = 1<<6;
2223    }
2224}
2225
2226unsafe impl Encode for AU3DMixerRenderingFlags {
2227    const ENCODING: Encoding = u32::ENCODING;
2228}
2229
2230unsafe impl RefEncode for AU3DMixerRenderingFlags {
2231    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
2232}
2233
2234/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/au3dmixerattenuationcurve?language=objc)
2235// NS_ENUM
2236#[repr(transparent)]
2237#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
2238pub struct AU3DMixerAttenuationCurve(pub u32);
2239impl AU3DMixerAttenuationCurve {
2240    pub const k3DMixerAttenuationCurve_Power: Self = Self(0);
2241    pub const k3DMixerAttenuationCurve_Exponential: Self = Self(1);
2242    pub const k3DMixerAttenuationCurve_Inverse: Self = Self(2);
2243    pub const k3DMixerAttenuationCurve_Linear: Self = Self(3);
2244}
2245
2246unsafe impl Encode for AU3DMixerAttenuationCurve {
2247    const ENCODING: Encoding = u32::ENCODING;
2248}
2249
2250unsafe impl RefEncode for AU3DMixerAttenuationCurve {
2251    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
2252}
2253
2254/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_scheduleaudioslice?language=objc)
2255#[cfg(feature = "AUComponent")]
2256pub const kAudioUnitProperty_ScheduleAudioSlice: AudioUnitPropertyID = 3300;
2257/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_schedulestarttimestamp?language=objc)
2258#[cfg(feature = "AUComponent")]
2259pub const kAudioUnitProperty_ScheduleStartTimeStamp: AudioUnitPropertyID = 3301;
2260/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_currentplaytime?language=objc)
2261#[cfg(feature = "AUComponent")]
2262pub const kAudioUnitProperty_CurrentPlayTime: AudioUnitPropertyID = 3302;
2263
2264/// bits in ScheduledAudioSlice.mFlags
2265///
2266///
2267/// Set if the unit is done with this slice
2268///
2269/// Set if any portion of the buffer has been played
2270///
2271/// Set if any portion of the buffer was not played because it was scheduled late
2272///
2273/// specifies that the buffer should loop indefinitely
2274///
2275/// specifies that the buffer should interrupt any previously scheduled buffer
2276/// (by default, buffers following a playing buffer are not played until the
2277/// playing buffer has completed).
2278///
2279/// specifies that the buffer should interrupt any previously scheduled buffer,
2280/// but only at a loop point in that buffer.
2281///
2282/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/auscheduledaudiosliceflags?language=objc)
2283// NS_OPTIONS
2284#[repr(transparent)]
2285#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
2286pub struct AUScheduledAudioSliceFlags(pub u32);
2287bitflags::bitflags! {
2288    impl AUScheduledAudioSliceFlags: u32 {
2289        #[doc(alias = "kScheduledAudioSliceFlag_Complete")]
2290        const ScheduledAudioSliceFlag_Complete = 0x01;
2291        #[doc(alias = "kScheduledAudioSliceFlag_BeganToRender")]
2292        const ScheduledAudioSliceFlag_BeganToRender = 0x02;
2293        #[doc(alias = "kScheduledAudioSliceFlag_BeganToRenderLate")]
2294        const ScheduledAudioSliceFlag_BeganToRenderLate = 0x04;
2295        #[doc(alias = "kScheduledAudioSliceFlag_Loop")]
2296        const ScheduledAudioSliceFlag_Loop = 0x08;
2297        #[doc(alias = "kScheduledAudioSliceFlag_Interrupt")]
2298        const ScheduledAudioSliceFlag_Interrupt = 0x10;
2299        #[doc(alias = "kScheduledAudioSliceFlag_InterruptAtLoop")]
2300        const ScheduledAudioSliceFlag_InterruptAtLoop = 0x20;
2301    }
2302}
2303
2304unsafe impl Encode for AUScheduledAudioSliceFlags {
2305    const ENCODING: Encoding = u32::ENCODING;
2306}
2307
2308unsafe impl RefEncode for AUScheduledAudioSliceFlags {
2309    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
2310}
2311
2312/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_scheduledfileids?language=objc)
2313#[cfg(feature = "AUComponent")]
2314pub const kAudioUnitProperty_ScheduledFileIDs: AudioUnitPropertyID = 3310;
2315/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_scheduledfileregion?language=objc)
2316#[cfg(feature = "AUComponent")]
2317pub const kAudioUnitProperty_ScheduledFileRegion: AudioUnitPropertyID = 3311;
2318/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_scheduledfileprime?language=objc)
2319#[cfg(feature = "AUComponent")]
2320pub const kAudioUnitProperty_ScheduledFilePrime: AudioUnitPropertyID = 3312;
2321/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_scheduledfilebuffersizeframes?language=objc)
2322#[cfg(feature = "AUComponent")]
2323pub const kAudioUnitProperty_ScheduledFileBufferSizeFrames: AudioUnitPropertyID = 3313;
2324/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_scheduledfilenumberbuffers?language=objc)
2325#[cfg(feature = "AUComponent")]
2326pub const kAudioUnitProperty_ScheduledFileNumberBuffers: AudioUnitPropertyID = 3314;
2327
2328/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kmusicdeviceproperty_usesinternalreverb?language=objc)
2329#[cfg(feature = "AUComponent")]
2330pub const kMusicDeviceProperty_UsesInternalReverb: AudioUnitPropertyID =
2331    kAudioUnitProperty_UsesInternalReverb;
2332/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kmusicdeviceproperty_soundbankdata?language=objc)
2333#[cfg(feature = "AUComponent")]
2334pub const kMusicDeviceProperty_SoundBankData: AudioUnitPropertyID = 1008;
2335/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kmusicdeviceproperty_streamfromdisk?language=objc)
2336#[cfg(feature = "AUComponent")]
2337pub const kMusicDeviceProperty_StreamFromDisk: AudioUnitPropertyID = 1011;
2338/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kmusicdeviceproperty_soundbankfsref?language=objc)
2339#[cfg(feature = "AUComponent")]
2340pub const kMusicDeviceProperty_SoundBankFSRef: AudioUnitPropertyID = 1012;
2341
2342/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kmusicdeviceproperty_instrumentname?language=objc)
2343#[cfg(feature = "AUComponent")]
2344pub const kMusicDeviceProperty_InstrumentName: AudioUnitPropertyID = 1001;
2345/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kmusicdeviceproperty_instrumentnumber?language=objc)
2346#[cfg(feature = "AUComponent")]
2347pub const kMusicDeviceProperty_InstrumentNumber: AudioUnitPropertyID = 1004;
2348
2349/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kmusicdeviceproperty_instrumentcount?language=objc)
2350#[cfg(feature = "AUComponent")]
2351pub const kMusicDeviceProperty_InstrumentCount: AudioUnitPropertyID = 1000;
2352/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kmusicdeviceproperty_bankname?language=objc)
2353#[cfg(feature = "AUComponent")]
2354pub const kMusicDeviceProperty_BankName: AudioUnitPropertyID = 1007;
2355/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kmusicdeviceproperty_soundbankurl?language=objc)
2356#[cfg(feature = "AUComponent")]
2357pub const kMusicDeviceProperty_SoundBankURL: AudioUnitPropertyID = 1100;
2358
2359/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaumidisynthproperty_enablepreload?language=objc)
2360#[cfg(feature = "AUComponent")]
2361pub const kAUMIDISynthProperty_EnablePreload: AudioUnitPropertyID = 4119;
2362
2363/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kausamplerproperty_loadinstrument?language=objc)
2364#[cfg(feature = "AUComponent")]
2365pub const kAUSamplerProperty_LoadInstrument: AudioUnitPropertyID = 4102;
2366/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kausamplerproperty_loadaudiofiles?language=objc)
2367#[cfg(feature = "AUComponent")]
2368pub const kAUSamplerProperty_LoadAudioFiles: AudioUnitPropertyID = 4101;
2369
2370/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/ausamplerinstrumentdata?language=objc)
2371#[cfg(feature = "objc2-core-foundation")]
2372#[repr(C)]
2373#[derive(Clone, Copy, Debug, PartialEq)]
2374pub struct AUSamplerInstrumentData {
2375    pub fileURL: NonNull<CFURL>,
2376    pub instrumentType: u8,
2377    pub bankMSB: u8,
2378    pub bankLSB: u8,
2379    pub presetID: u8,
2380}
2381
2382#[cfg(feature = "objc2-core-foundation")]
2383unsafe impl Encode for AUSamplerInstrumentData {
2384    const ENCODING: Encoding = Encoding::Struct(
2385        "AUSamplerInstrumentData",
2386        &[
2387            <NonNull<CFURL>>::ENCODING,
2388            <u8>::ENCODING,
2389            <u8>::ENCODING,
2390            <u8>::ENCODING,
2391            <u8>::ENCODING,
2392        ],
2393    );
2394}
2395
2396#[cfg(feature = "objc2-core-foundation")]
2397unsafe impl RefEncode for AUSamplerInstrumentData {
2398    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
2399}
2400
2401/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kinstrumenttype_dlspreset?language=objc)
2402pub const kInstrumentType_DLSPreset: c_uint = 1;
2403/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kinstrumenttype_sf2preset?language=objc)
2404pub const kInstrumentType_SF2Preset: c_uint = kInstrumentType_DLSPreset;
2405/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kinstrumenttype_aupreset?language=objc)
2406pub const kInstrumentType_AUPreset: c_uint = 2;
2407/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kinstrumenttype_audiofile?language=objc)
2408pub const kInstrumentType_Audiofile: c_uint = 3;
2409/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kinstrumenttype_exs24?language=objc)
2410pub const kInstrumentType_EXS24: c_uint = 4;
2411
2412/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kausampler_defaultpercussionbankmsb?language=objc)
2413pub const kAUSampler_DefaultPercussionBankMSB: c_uint = 0x78;
2414/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kausampler_defaultmelodicbankmsb?language=objc)
2415pub const kAUSampler_DefaultMelodicBankMSB: c_uint = 0x79;
2416/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kausampler_defaultbanklsb?language=objc)
2417pub const kAUSampler_DefaultBankLSB: c_uint = 0x00;
2418
2419/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_deferredrendererpullsize?language=objc)
2420#[cfg(feature = "AUComponent")]
2421pub const kAudioUnitProperty_DeferredRendererPullSize: AudioUnitPropertyID = 3320;
2422/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_deferredrendererextralatency?language=objc)
2423#[cfg(feature = "AUComponent")]
2424pub const kAudioUnitProperty_DeferredRendererExtraLatency: AudioUnitPropertyID = 3321;
2425/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_deferredrendererwaitframes?language=objc)
2426#[cfg(feature = "AUComponent")]
2427pub const kAudioUnitProperty_DeferredRendererWaitFrames: AudioUnitPropertyID = 3322;
2428
2429/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaunetreceiveproperty_hostname?language=objc)
2430#[cfg(feature = "AUComponent")]
2431pub const kAUNetReceiveProperty_Hostname: AudioUnitPropertyID = 3511;
2432/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaunetreceiveproperty_password?language=objc)
2433#[cfg(feature = "AUComponent")]
2434pub const kAUNetReceiveProperty_Password: AudioUnitPropertyID = 3512;
2435
2436/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaunetsendproperty_portnum?language=objc)
2437#[cfg(feature = "AUComponent")]
2438pub const kAUNetSendProperty_PortNum: AudioUnitPropertyID = 3513;
2439/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaunetsendproperty_transmissionformat?language=objc)
2440#[cfg(feature = "AUComponent")]
2441pub const kAUNetSendProperty_TransmissionFormat: AudioUnitPropertyID = 3514;
2442/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaunetsendproperty_transmissionformatindex?language=objc)
2443#[cfg(feature = "AUComponent")]
2444pub const kAUNetSendProperty_TransmissionFormatIndex: AudioUnitPropertyID = 3515;
2445/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaunetsendproperty_servicename?language=objc)
2446#[cfg(feature = "AUComponent")]
2447pub const kAUNetSendProperty_ServiceName: AudioUnitPropertyID = 3516;
2448/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaunetsendproperty_disconnect?language=objc)
2449#[cfg(feature = "AUComponent")]
2450pub const kAUNetSendProperty_Disconnect: AudioUnitPropertyID = 3517;
2451/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaunetsendproperty_password?language=objc)
2452#[cfg(feature = "AUComponent")]
2453pub const kAUNetSendProperty_Password: AudioUnitPropertyID = 3518;
2454
2455/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaunetsendpresetformat_pcmfloat32?language=objc)
2456#[cfg(feature = "AUComponent")]
2457pub const kAUNetSendPresetFormat_PCMFloat32: AudioUnitPropertyID = 0;
2458/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaunetsendpresetformat_pcmint24?language=objc)
2459#[cfg(feature = "AUComponent")]
2460pub const kAUNetSendPresetFormat_PCMInt24: AudioUnitPropertyID = 1;
2461/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaunetsendpresetformat_pcmint16?language=objc)
2462#[cfg(feature = "AUComponent")]
2463pub const kAUNetSendPresetFormat_PCMInt16: AudioUnitPropertyID = 2;
2464/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaunetsendpresetformat_lossless24?language=objc)
2465#[cfg(feature = "AUComponent")]
2466pub const kAUNetSendPresetFormat_Lossless24: AudioUnitPropertyID = 3;
2467/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaunetsendpresetformat_lossless16?language=objc)
2468#[cfg(feature = "AUComponent")]
2469pub const kAUNetSendPresetFormat_Lossless16: AudioUnitPropertyID = 4;
2470/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaunetsendpresetformat_ulaw?language=objc)
2471#[cfg(feature = "AUComponent")]
2472pub const kAUNetSendPresetFormat_ULaw: AudioUnitPropertyID = 5;
2473/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaunetsendpresetformat_ima4?language=objc)
2474#[cfg(feature = "AUComponent")]
2475pub const kAUNetSendPresetFormat_IMA4: AudioUnitPropertyID = 6;
2476/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaunetsendpresetformat_aac_128kbpspc?language=objc)
2477#[cfg(feature = "AUComponent")]
2478pub const kAUNetSendPresetFormat_AAC_128kbpspc: AudioUnitPropertyID = 7;
2479/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaunetsendpresetformat_aac_96kbpspc?language=objc)
2480#[cfg(feature = "AUComponent")]
2481pub const kAUNetSendPresetFormat_AAC_96kbpspc: AudioUnitPropertyID = 8;
2482/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaunetsendpresetformat_aac_80kbpspc?language=objc)
2483#[cfg(feature = "AUComponent")]
2484pub const kAUNetSendPresetFormat_AAC_80kbpspc: AudioUnitPropertyID = 9;
2485/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaunetsendpresetformat_aac_64kbpspc?language=objc)
2486#[cfg(feature = "AUComponent")]
2487pub const kAUNetSendPresetFormat_AAC_64kbpspc: AudioUnitPropertyID = 10;
2488/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaunetsendpresetformat_aac_48kbpspc?language=objc)
2489#[cfg(feature = "AUComponent")]
2490pub const kAUNetSendPresetFormat_AAC_48kbpspc: AudioUnitPropertyID = 11;
2491/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaunetsendpresetformat_aac_40kbpspc?language=objc)
2492#[cfg(feature = "AUComponent")]
2493pub const kAUNetSendPresetFormat_AAC_40kbpspc: AudioUnitPropertyID = 12;
2494/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaunetsendpresetformat_aac_32kbpspc?language=objc)
2495#[cfg(feature = "AUComponent")]
2496pub const kAUNetSendPresetFormat_AAC_32kbpspc: AudioUnitPropertyID = 13;
2497/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaunetsendpresetformat_aac_ld_64kbpspc?language=objc)
2498#[cfg(feature = "AUComponent")]
2499pub const kAUNetSendPresetFormat_AAC_LD_64kbpspc: AudioUnitPropertyID = 14;
2500/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaunetsendpresetformat_aac_ld_48kbpspc?language=objc)
2501#[cfg(feature = "AUComponent")]
2502pub const kAUNetSendPresetFormat_AAC_LD_48kbpspc: AudioUnitPropertyID = 15;
2503/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaunetsendpresetformat_aac_ld_40kbpspc?language=objc)
2504#[cfg(feature = "AUComponent")]
2505pub const kAUNetSendPresetFormat_AAC_LD_40kbpspc: AudioUnitPropertyID = 16;
2506/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaunetsendpresetformat_aac_ld_32kbpspc?language=objc)
2507#[cfg(feature = "AUComponent")]
2508pub const kAUNetSendPresetFormat_AAC_LD_32kbpspc: AudioUnitPropertyID = 17;
2509/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaunetsendnumpresetformats?language=objc)
2510#[cfg(feature = "AUComponent")]
2511pub const kAUNetSendNumPresetFormats: AudioUnitPropertyID = 18;
2512
2513/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/aunumversion?language=objc)
2514#[repr(C)]
2515#[derive(Clone, Copy, Debug, PartialEq)]
2516pub struct AUNumVersion {
2517    pub nonRelRev: u8,
2518    pub stage: u8,
2519    pub minorAndBugRev: u8,
2520    pub majorRev: u8,
2521}
2522
2523unsafe impl Encode for AUNumVersion {
2524    const ENCODING: Encoding = Encoding::Struct(
2525        "AUNumVersion",
2526        &[
2527            <u8>::ENCODING,
2528            <u8>::ENCODING,
2529            <u8>::ENCODING,
2530            <u8>::ENCODING,
2531        ],
2532    );
2533}
2534
2535unsafe impl RefEncode for AUNumVersion {
2536    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
2537}
2538
2539/// Used to describe the name and version of the audio unit's host
2540///
2541/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/auhostidentifier?language=objc)
2542#[cfg(feature = "objc2-core-foundation")]
2543#[repr(C)]
2544#[derive(Clone, Copy, Debug, PartialEq)]
2545pub struct AUHostIdentifier {
2546    pub hostName: NonNull<CFString>,
2547    pub hostVersion: AUNumVersion,
2548}
2549
2550#[cfg(feature = "objc2-core-foundation")]
2551unsafe impl Encode for AUHostIdentifier {
2552    const ENCODING: Encoding = Encoding::Struct(
2553        "AUHostIdentifier",
2554        &[<NonNull<CFString>>::ENCODING, <AUNumVersion>::ENCODING],
2555    );
2556}
2557
2558#[cfg(feature = "objc2-core-foundation")]
2559unsafe impl RefEncode for AUHostIdentifier {
2560    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
2561}
2562
2563/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitparameterflag_global?language=objc)
2564pub const kAudioUnitParameterFlag_Global: c_uint = 1 << 0;
2565/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitparameterflag_input?language=objc)
2566pub const kAudioUnitParameterFlag_Input: c_uint = 1 << 1;
2567/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitparameterflag_output?language=objc)
2568pub const kAudioUnitParameterFlag_Output: c_uint = 1 << 2;
2569/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitparameterflag_group?language=objc)
2570pub const kAudioUnitParameterFlag_Group: c_uint = 1 << 3;
2571
2572/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitparameterflag_hasname?language=objc)
2573pub const kAudioUnitParameterFlag_HasName: u32 =
2574    AudioUnitParameterOptions::Flag_ValuesHaveStrings.0;
2575
2576/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_srcalgorithm?language=objc)
2577#[cfg(feature = "AUComponent")]
2578pub const kAudioUnitProperty_SRCAlgorithm: AudioUnitPropertyID = 9;
2579/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_midicontrolmapping?language=objc)
2580#[cfg(feature = "AUComponent")]
2581pub const kAudioUnitProperty_MIDIControlMapping: AudioUnitPropertyID = 17;
2582/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_currentpreset?language=objc)
2583#[cfg(feature = "AUComponent")]
2584pub const kAudioUnitProperty_CurrentPreset: AudioUnitPropertyID = 28;
2585/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_parametervaluename?language=objc)
2586#[cfg(feature = "AUComponent")]
2587pub const kAudioUnitProperty_ParameterValueName: AudioUnitPropertyID =
2588    kAudioUnitProperty_ParameterStringFromValue;
2589/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_buscount?language=objc)
2590#[cfg(feature = "AUComponent")]
2591pub const kAudioUnitProperty_BusCount: AudioUnitPropertyID = kAudioUnitProperty_ElementCount;
2592/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioofflineunitproperty_inputsize?language=objc)
2593#[cfg(feature = "AUComponent")]
2594pub const kAudioOfflineUnitProperty_InputSize: AudioUnitPropertyID =
2595    kAudioUnitOfflineProperty_InputSize;
2596/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioofflineunitproperty_outputsize?language=objc)
2597#[cfg(feature = "AUComponent")]
2598pub const kAudioOfflineUnitProperty_OutputSize: AudioUnitPropertyID =
2599    kAudioUnitOfflineProperty_OutputSize;
2600
2601/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitsrcalgorithm_polyphase?language=objc)
2602pub const kAudioUnitSRCAlgorithm_Polyphase: u32 = 0x706f6c79;
2603/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitsrcalgorithm_mediumquality?language=objc)
2604pub const kAudioUnitSRCAlgorithm_MediumQuality: u32 = 0x63737263;
2605
2606/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiounitmidicontrolmapping?language=objc)
2607#[cfg(feature = "AUComponent")]
2608#[repr(C)]
2609#[derive(Clone, Copy, Debug, PartialEq)]
2610pub struct AudioUnitMIDIControlMapping {
2611    pub midiNRPN: u16,
2612    pub midiControl: u8,
2613    pub scope: u8,
2614    pub element: AudioUnitElement,
2615    pub parameter: AudioUnitParameterID,
2616}
2617
2618#[cfg(feature = "AUComponent")]
2619unsafe impl Encode for AudioUnitMIDIControlMapping {
2620    const ENCODING: Encoding = Encoding::Struct(
2621        "AudioUnitMIDIControlMapping",
2622        &[
2623            <u16>::ENCODING,
2624            <u8>::ENCODING,
2625            <u8>::ENCODING,
2626            <AudioUnitElement>::ENCODING,
2627            <AudioUnitParameterID>::ENCODING,
2628        ],
2629    );
2630}
2631
2632#[cfg(feature = "AUComponent")]
2633unsafe impl RefEncode for AudioUnitMIDIControlMapping {
2634    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
2635}
2636
2637/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiounitparametervaluename?language=objc)
2638#[cfg(all(feature = "AUComponent", feature = "objc2-core-foundation"))]
2639#[repr(C)]
2640#[derive(Clone, Copy, Debug, PartialEq)]
2641pub struct AudioUnitParameterValueName {
2642    pub inParamID: AudioUnitParameterID,
2643    pub inValue: NonNull<f32>,
2644    pub outName: NonNull<CFString>,
2645}
2646
2647#[cfg(all(feature = "AUComponent", feature = "objc2-core-foundation"))]
2648unsafe impl Encode for AudioUnitParameterValueName {
2649    const ENCODING: Encoding = Encoding::Struct(
2650        "AudioUnitParameterValueName",
2651        &[
2652            <AudioUnitParameterID>::ENCODING,
2653            <NonNull<f32>>::ENCODING,
2654            <NonNull<CFString>>::ENCODING,
2655        ],
2656    );
2657}
2658
2659#[cfg(all(feature = "AUComponent", feature = "objc2-core-foundation"))]
2660unsafe impl RefEncode for AudioUnitParameterValueName {
2661    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
2662}
2663
2664/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kmusicdeviceproperty_groupoutputbus?language=objc)
2665#[cfg(feature = "AUComponent")]
2666pub const kMusicDeviceProperty_GroupOutputBus: AudioUnitPropertyID = 1002;
2667/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kmusicdeviceproperty_soundbankfsspec?language=objc)
2668#[cfg(feature = "AUComponent")]
2669pub const kMusicDeviceProperty_SoundBankFSSpec: AudioUnitPropertyID = 1003;
2670/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_pannermode?language=objc)
2671#[cfg(feature = "AUComponent")]
2672pub const kAudioUnitProperty_PannerMode: AudioUnitPropertyID = 3008;
2673
2674/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitproperty_speakerconfiguration?language=objc)
2675#[cfg(feature = "AUComponent")]
2676pub const kAudioUnitProperty_SpeakerConfiguration: AudioUnitPropertyID = 3001;
2677
2678/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kspeakerconfiguration_headphones?language=objc)
2679pub const kSpeakerConfiguration_HeadPhones: c_uint = 0;
2680/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kspeakerconfiguration_stereo?language=objc)
2681pub const kSpeakerConfiguration_Stereo: c_uint = 1;
2682/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kspeakerconfiguration_quad?language=objc)
2683pub const kSpeakerConfiguration_Quad: c_uint = 2;
2684/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kspeakerconfiguration_5_0?language=objc)
2685pub const kSpeakerConfiguration_5_0: c_uint = 3;
2686/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kspeakerconfiguration_5_1?language=objc)
2687pub const kSpeakerConfiguration_5_1: c_uint = kSpeakerConfiguration_5_0;
2688
2689/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/ausamplerbankpresetdata?language=objc)
2690#[cfg(feature = "objc2-core-foundation")]
2691#[repr(C)]
2692#[derive(Clone, Copy, Debug, PartialEq)]
2693pub struct AUSamplerBankPresetData {
2694    pub bankURL: NonNull<CFURL>,
2695    pub bankMSB: u8,
2696    pub bankLSB: u8,
2697    pub presetID: u8,
2698    pub reserved: u8,
2699}
2700
2701#[cfg(feature = "objc2-core-foundation")]
2702unsafe impl Encode for AUSamplerBankPresetData {
2703    const ENCODING: Encoding = Encoding::Struct(
2704        "AUSamplerBankPresetData",
2705        &[
2706            <NonNull<CFURL>>::ENCODING,
2707            <u8>::ENCODING,
2708            <u8>::ENCODING,
2709            <u8>::ENCODING,
2710            <u8>::ENCODING,
2711        ],
2712    );
2713}
2714
2715#[cfg(feature = "objc2-core-foundation")]
2716unsafe impl RefEncode for AUSamplerBankPresetData {
2717    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
2718}
2719
2720/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kausamplerproperty_loadpresetfrombank?language=objc)
2721#[cfg(feature = "AUComponent")]
2722pub const kAUSamplerProperty_LoadPresetFromBank: AudioUnitPropertyID = 4100;
2723/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kausamplerproperty_bankandpreset?language=objc)
2724#[cfg(feature = "AUComponent")]
2725pub const kAUSamplerProperty_BankAndPreset: AudioUnitPropertyID =
2726    kAUSamplerProperty_LoadPresetFromBank;