objc2_audio_toolbox/generated/
AudioCodec.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
9use crate::*;
10
11/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiosettings_toplevelkey?language=objc)
12pub const kAudioSettings_TopLevelKey: &CStr =
13    unsafe { CStr::from_bytes_with_nul_unchecked(b"name\0") };
14/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiosettings_version?language=objc)
15pub const kAudioSettings_Version: &CStr =
16    unsafe { CStr::from_bytes_with_nul_unchecked(b"version\0") };
17/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiosettings_parameters?language=objc)
18pub const kAudioSettings_Parameters: &CStr =
19    unsafe { CStr::from_bytes_with_nul_unchecked(b"parameters\0") };
20/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiosettings_settingkey?language=objc)
21pub const kAudioSettings_SettingKey: &CStr =
22    unsafe { CStr::from_bytes_with_nul_unchecked(b"key\0") };
23/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiosettings_settingname?language=objc)
24pub const kAudioSettings_SettingName: &CStr =
25    unsafe { CStr::from_bytes_with_nul_unchecked(b"name\0") };
26/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiosettings_valuetype?language=objc)
27pub const kAudioSettings_ValueType: &CStr =
28    unsafe { CStr::from_bytes_with_nul_unchecked(b"value type\0") };
29/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiosettings_availablevalues?language=objc)
30pub const kAudioSettings_AvailableValues: &CStr =
31    unsafe { CStr::from_bytes_with_nul_unchecked(b"available values\0") };
32/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiosettings_limitedvalues?language=objc)
33pub const kAudioSettings_LimitedValues: &CStr =
34    unsafe { CStr::from_bytes_with_nul_unchecked(b"limited values\0") };
35/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiosettings_currentvalue?language=objc)
36pub const kAudioSettings_CurrentValue: &CStr =
37    unsafe { CStr::from_bytes_with_nul_unchecked(b"current value\0") };
38/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiosettings_summary?language=objc)
39pub const kAudioSettings_Summary: &CStr =
40    unsafe { CStr::from_bytes_with_nul_unchecked(b"summary\0") };
41/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiosettings_hint?language=objc)
42pub const kAudioSettings_Hint: &CStr = unsafe { CStr::from_bytes_with_nul_unchecked(b"hint\0") };
43/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiosettings_unit?language=objc)
44pub const kAudioSettings_Unit: &CStr = unsafe { CStr::from_bytes_with_nul_unchecked(b"unit\0") };
45/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiocodec?language=objc)
46#[cfg(feature = "AudioComponent")]
47pub type AudioCodec = AudioComponentInstance;
48
49/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiocodecpropertyid?language=objc)
50pub type AudioCodecPropertyID = u32;
51
52/// Structure holding the
53/// <em>
54/// magic cookie
55/// </em>
56/// information.
57///
58///
59/// Passed as input to AudioCodecGetProperty for kAudioCodecPropertyFormatList.
60/// The first four + sizeof(void *) bytes of the buffer pointed at by outPropertyData
61/// will contain this struct.
62///
63///
64/// The size of the magic cookie
65///
66/// Generic const pointer to magic cookie
67///
68/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiocodecmagiccookieinfo?language=objc)
69#[repr(C)]
70#[derive(Clone, Copy, Debug, PartialEq)]
71pub struct AudioCodecMagicCookieInfo {
72    pub mMagicCookieSize: u32,
73    pub mMagicCookie: *const c_void,
74}
75
76unsafe impl Encode for AudioCodecMagicCookieInfo {
77    const ENCODING: Encoding = Encoding::Struct(
78        "AudioCodecMagicCookieInfo",
79        &[<u32>::ENCODING, <*const c_void>::ENCODING],
80    );
81}
82
83unsafe impl RefEncode for AudioCodecMagicCookieInfo {
84    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
85}
86
87/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiodecodercomponenttype?language=objc)
88pub const kAudioDecoderComponentType: u32 = 0x61646563;
89/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioencodercomponenttype?language=objc)
90pub const kAudioEncoderComponentType: u32 = 0x61656e63;
91/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiounitycodeccomponenttype?language=objc)
92pub const kAudioUnityCodecComponentType: u32 = 0x61636463;
93
94/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertysupportedinputformats?language=objc)
95pub const kAudioCodecPropertySupportedInputFormats: AudioCodecPropertyID = 0x69666d23;
96/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertysupportedoutputformats?language=objc)
97pub const kAudioCodecPropertySupportedOutputFormats: AudioCodecPropertyID = 0x6f666d23;
98/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyavailableinputsamplerates?language=objc)
99pub const kAudioCodecPropertyAvailableInputSampleRates: AudioCodecPropertyID = 0x61697372;
100/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyavailableoutputsamplerates?language=objc)
101pub const kAudioCodecPropertyAvailableOutputSampleRates: AudioCodecPropertyID = 0x616f7372;
102/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyavailablebitraterange?language=objc)
103pub const kAudioCodecPropertyAvailableBitRateRange: AudioCodecPropertyID = 0x61627274;
104/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyminimumnumberinputpackets?language=objc)
105pub const kAudioCodecPropertyMinimumNumberInputPackets: AudioCodecPropertyID = 0x6d6e6970;
106/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyminimumnumberoutputpackets?language=objc)
107pub const kAudioCodecPropertyMinimumNumberOutputPackets: AudioCodecPropertyID = 0x6d6e6f70;
108/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyavailablenumberchannels?language=objc)
109pub const kAudioCodecPropertyAvailableNumberChannels: AudioCodecPropertyID = 0x636d6e63;
110/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertydoessamplerateconversion?language=objc)
111pub const kAudioCodecPropertyDoesSampleRateConversion: AudioCodecPropertyID = 0x6c6d7263;
112/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyavailableinputchannellayouttags?language=objc)
113pub const kAudioCodecPropertyAvailableInputChannelLayoutTags: AudioCodecPropertyID = 0x6169636c;
114/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyavailableoutputchannellayouttags?language=objc)
115pub const kAudioCodecPropertyAvailableOutputChannelLayoutTags: AudioCodecPropertyID = 0x616f636c;
116/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyinputformatsforoutputformat?language=objc)
117pub const kAudioCodecPropertyInputFormatsForOutputFormat: AudioCodecPropertyID = 0x6966346f;
118/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyoutputformatsforinputformat?language=objc)
119pub const kAudioCodecPropertyOutputFormatsForInputFormat: AudioCodecPropertyID = 0x6f663469;
120/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyformatinfo?language=objc)
121pub const kAudioCodecPropertyFormatInfo: AudioCodecPropertyID = 0x61636669;
122
123/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyinputbuffersize?language=objc)
124pub const kAudioCodecPropertyInputBufferSize: AudioCodecPropertyID = 0x74627566;
125/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertypacketframesize?language=objc)
126pub const kAudioCodecPropertyPacketFrameSize: AudioCodecPropertyID = 0x70616b66;
127/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyhasvariablepacketbytesizes?language=objc)
128pub const kAudioCodecPropertyHasVariablePacketByteSizes: AudioCodecPropertyID = 0x76706b3f;
129/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyemploysdependentpackets?language=objc)
130pub const kAudioCodecPropertyEmploysDependentPackets: AudioCodecPropertyID = 0x64706b3f;
131/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertymaximumpacketbytesize?language=objc)
132pub const kAudioCodecPropertyMaximumPacketByteSize: AudioCodecPropertyID = 0x70616b62;
133/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertypacketsizelimitforvbr?language=objc)
134pub const kAudioCodecPropertyPacketSizeLimitForVBR: AudioCodecPropertyID = 0x70616b6c;
135/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertycurrentinputformat?language=objc)
136pub const kAudioCodecPropertyCurrentInputFormat: AudioCodecPropertyID = 0x69666d74;
137/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertycurrentoutputformat?language=objc)
138pub const kAudioCodecPropertyCurrentOutputFormat: AudioCodecPropertyID = 0x6f666d74;
139/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertymagiccookie?language=objc)
140pub const kAudioCodecPropertyMagicCookie: AudioCodecPropertyID = 0x6b756b69;
141/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyusedinputbuffersize?language=objc)
142pub const kAudioCodecPropertyUsedInputBufferSize: AudioCodecPropertyID = 0x75627566;
143/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyisinitialized?language=objc)
144pub const kAudioCodecPropertyIsInitialized: AudioCodecPropertyID = 0x696e6974;
145/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertycurrenttargetbitrate?language=objc)
146pub const kAudioCodecPropertyCurrentTargetBitRate: AudioCodecPropertyID = 0x62726174;
147/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertycurrentinputsamplerate?language=objc)
148pub const kAudioCodecPropertyCurrentInputSampleRate: AudioCodecPropertyID = 0x63697372;
149/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertycurrentoutputsamplerate?language=objc)
150pub const kAudioCodecPropertyCurrentOutputSampleRate: AudioCodecPropertyID = 0x636f7372;
151/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyqualitysetting?language=objc)
152pub const kAudioCodecPropertyQualitySetting: AudioCodecPropertyID = 0x73726371;
153/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyapplicablebitraterange?language=objc)
154pub const kAudioCodecPropertyApplicableBitRateRange: AudioCodecPropertyID = 0x62727461;
155/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyrecommendedbitraterange?language=objc)
156pub const kAudioCodecPropertyRecommendedBitRateRange: AudioCodecPropertyID = 0x62727472;
157/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyapplicableinputsamplerates?language=objc)
158pub const kAudioCodecPropertyApplicableInputSampleRates: AudioCodecPropertyID = 0x69737261;
159/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyapplicableoutputsamplerates?language=objc)
160pub const kAudioCodecPropertyApplicableOutputSampleRates: AudioCodecPropertyID = 0x6f737261;
161/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertypaddedzeros?language=objc)
162pub const kAudioCodecPropertyPaddedZeros: AudioCodecPropertyID = 0x70616430;
163/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyprimemethod?language=objc)
164pub const kAudioCodecPropertyPrimeMethod: AudioCodecPropertyID = 0x70726d6d;
165/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyprimeinfo?language=objc)
166pub const kAudioCodecPropertyPrimeInfo: AudioCodecPropertyID = 0x7072696d;
167/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertycurrentinputchannellayout?language=objc)
168pub const kAudioCodecPropertyCurrentInputChannelLayout: AudioCodecPropertyID = 0x69636c20;
169/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertycurrentoutputchannellayout?language=objc)
170pub const kAudioCodecPropertyCurrentOutputChannelLayout: AudioCodecPropertyID = 0x6f636c20;
171/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertysettings?language=objc)
172pub const kAudioCodecPropertySettings: AudioCodecPropertyID = 0x61637320;
173/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyformatlist?language=objc)
174pub const kAudioCodecPropertyFormatList: AudioCodecPropertyID = 0x6163666c;
175/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertybitratecontrolmode?language=objc)
176pub const kAudioCodecPropertyBitRateControlMode: AudioCodecPropertyID = 0x61636266;
177/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertysoundqualityforvbr?language=objc)
178pub const kAudioCodecPropertySoundQualityForVBR: AudioCodecPropertyID = 0x76627271;
179/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertybitrateforvbr?language=objc)
180pub const kAudioCodecPropertyBitRateForVBR: AudioCodecPropertyID = 0x76627262;
181/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertydelaymode?language=objc)
182pub const kAudioCodecPropertyDelayMode: AudioCodecPropertyID = 0x646d6f64;
183/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyadjustlocalquality?language=objc)
184pub const kAudioCodecPropertyAdjustLocalQuality: AudioCodecPropertyID = 0x5e71616c;
185/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertydynamicrangecontrolmode?language=objc)
186pub const kAudioCodecPropertyDynamicRangeControlMode: AudioCodecPropertyID = 0x6d647263;
187/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyadjustcompressionprofile?language=objc)
188pub const kAudioCodecPropertyAdjustCompressionProfile: AudioCodecPropertyID = 0x5e70726f;
189/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyprogramtargetlevelconstant?language=objc)
190pub const kAudioCodecPropertyProgramTargetLevelConstant: AudioCodecPropertyID = 0x70746c63;
191/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyadjusttargetlevelconstant?language=objc)
192pub const kAudioCodecPropertyAdjustTargetLevelConstant: AudioCodecPropertyID = 0x5e746c63;
193/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyprogramtargetlevel?language=objc)
194pub const kAudioCodecPropertyProgramTargetLevel: AudioCodecPropertyID = 0x7070746c;
195/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyadjusttargetlevel?language=objc)
196pub const kAudioCodecPropertyAdjustTargetLevel: AudioCodecPropertyID = 0x5e70746c;
197/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertydynamicrangecontrolconfiguration?language=objc)
198pub const kAudioCodecPropertyDynamicRangeControlConfiguration: AudioCodecPropertyID = 0x63647263;
199/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertycontentsource?language=objc)
200pub const kAudioCodecPropertyContentSource: AudioCodecPropertyID = 0x63737263;
201/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyaspfrequency?language=objc)
202pub const kAudioCodecPropertyASPFrequency: AudioCodecPropertyID = 0x61737066;
203
204/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecquality_max?language=objc)
205pub const kAudioCodecQuality_Max: u32 = 0x7F;
206/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecquality_high?language=objc)
207pub const kAudioCodecQuality_High: u32 = 0x60;
208/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecquality_medium?language=objc)
209pub const kAudioCodecQuality_Medium: u32 = 0x40;
210/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecquality_low?language=objc)
211pub const kAudioCodecQuality_Low: u32 = 0x20;
212/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecquality_min?language=objc)
213pub const kAudioCodecQuality_Min: u32 = 0;
214
215/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecprimemethod_pre?language=objc)
216pub const kAudioCodecPrimeMethod_Pre: u32 = 0;
217/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecprimemethod_normal?language=objc)
218pub const kAudioCodecPrimeMethod_Normal: u32 = 1;
219/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecprimemethod_none?language=objc)
220pub const kAudioCodecPrimeMethod_None: u32 = 2;
221
222/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecbitratecontrolmode_constant?language=objc)
223pub const kAudioCodecBitRateControlMode_Constant: u32 = 0;
224/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecbitratecontrolmode_longtermaverage?language=objc)
225pub const kAudioCodecBitRateControlMode_LongTermAverage: u32 = 1;
226/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecbitratecontrolmode_variableconstrained?language=objc)
227pub const kAudioCodecBitRateControlMode_VariableConstrained: u32 = 2;
228/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecbitratecontrolmode_variable?language=objc)
229pub const kAudioCodecBitRateControlMode_Variable: u32 = 3;
230
231/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecdelaymode_compatibility?language=objc)
232pub const kAudioCodecDelayMode_Compatibility: u32 = 0;
233/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecdelaymode_minimum?language=objc)
234pub const kAudioCodecDelayMode_Minimum: u32 = 1;
235/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecdelaymode_optimal?language=objc)
236pub const kAudioCodecDelayMode_Optimal: u32 = 2;
237
238/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kprogramtargetlevel_none?language=objc)
239pub const kProgramTargetLevel_None: u32 = 0;
240/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kprogramtargetlevel_minus31db?language=objc)
241pub const kProgramTargetLevel_Minus31dB: u32 = 1;
242/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kprogramtargetlevel_minus23db?language=objc)
243pub const kProgramTargetLevel_Minus23dB: u32 = 2;
244/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kprogramtargetlevel_minus20db?language=objc)
245pub const kProgramTargetLevel_Minus20dB: u32 = 3;
246
247/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kdynamicrangecontrolmode_none?language=objc)
248pub const kDynamicRangeControlMode_None: u32 = 0;
249/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kdynamicrangecontrolmode_light?language=objc)
250pub const kDynamicRangeControlMode_Light: u32 = 1;
251/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kdynamicrangecontrolmode_heavy?language=objc)
252pub const kDynamicRangeControlMode_Heavy: u32 = 2;
253
254/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kdynamicrangecompressionprofile_none?language=objc)
255pub const kDynamicRangeCompressionProfile_None: u32 = 0;
256/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kdynamicrangecompressionprofile_latenight?language=objc)
257pub const kDynamicRangeCompressionProfile_LateNight: u32 = 1;
258/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kdynamicrangecompressionprofile_noisyenvironment?language=objc)
259pub const kDynamicRangeCompressionProfile_NoisyEnvironment: u32 = 2;
260/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kdynamicrangecompressionprofile_limitedplaybackrange?language=objc)
261pub const kDynamicRangeCompressionProfile_LimitedPlaybackRange: u32 = 3;
262/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kdynamicrangecompressionprofile_generalcompression?language=objc)
263pub const kDynamicRangeCompressionProfile_GeneralCompression: u32 = 6;
264
265/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecdynamicrangecontrolconfiguration_none?language=objc)
266pub const kAudioCodecDynamicRangeControlConfiguration_None: u32 = 0;
267/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecdynamicrangecontrolconfiguration_music?language=objc)
268pub const kAudioCodecDynamicRangeControlConfiguration_Music: u32 = 1;
269/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecdynamicrangecontrolconfiguration_speech?language=objc)
270pub const kAudioCodecDynamicRangeControlConfiguration_Speech: u32 = 2;
271/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecdynamicrangecontrolconfiguration_movie?language=objc)
272pub const kAudioCodecDynamicRangeControlConfiguration_Movie: u32 = 3;
273/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecdynamicrangecontrolconfiguration_capture?language=objc)
274pub const kAudioCodecDynamicRangeControlConfiguration_Capture: u32 = 4;
275
276/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodeccontentsource_unspecified?language=objc)
277pub const kAudioCodecContentSource_Unspecified: i32 = -1;
278/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodeccontentsource_reserved?language=objc)
279pub const kAudioCodecContentSource_Reserved: i32 = 0;
280/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodeccontentsource_applecapture_traditional?language=objc)
281pub const kAudioCodecContentSource_AppleCapture_Traditional: i32 = 1;
282/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodeccontentsource_applecapture_spatial?language=objc)
283pub const kAudioCodecContentSource_AppleCapture_Spatial: i32 = 2;
284/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodeccontentsource_applecapture_spatial_enhanced?language=objc)
285pub const kAudioCodecContentSource_AppleCapture_Spatial_Enhanced: i32 = 3;
286/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodeccontentsource_applemusic_traditional?language=objc)
287pub const kAudioCodecContentSource_AppleMusic_Traditional: i32 = 4;
288/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodeccontentsource_applemusic_spatial?language=objc)
289pub const kAudioCodecContentSource_AppleMusic_Spatial: i32 = 5;
290/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodeccontentsource_appleav_traditional_offline?language=objc)
291pub const kAudioCodecContentSource_AppleAV_Traditional_Offline: i32 = 6;
292/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodeccontentsource_appleav_spatial_offline?language=objc)
293pub const kAudioCodecContentSource_AppleAV_Spatial_Offline: i32 = 7;
294/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodeccontentsource_appleav_traditional_live?language=objc)
295pub const kAudioCodecContentSource_AppleAV_Traditional_Live: i32 = 8;
296/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodeccontentsource_appleav_spatial_live?language=objc)
297pub const kAudioCodecContentSource_AppleAV_Spatial_Live: i32 = 9;
298/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodeccontentsource_applepassthrough?language=objc)
299pub const kAudioCodecContentSource_ApplePassthrough: i32 = 10;
300/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodeccontentsource_capture_traditional?language=objc)
301pub const kAudioCodecContentSource_Capture_Traditional: i32 = 33;
302/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodeccontentsource_capture_spatial?language=objc)
303pub const kAudioCodecContentSource_Capture_Spatial: i32 = 34;
304/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodeccontentsource_capture_spatial_enhanced?language=objc)
305pub const kAudioCodecContentSource_Capture_Spatial_Enhanced: i32 = 35;
306/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodeccontentsource_music_traditional?language=objc)
307pub const kAudioCodecContentSource_Music_Traditional: i32 = 36;
308/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodeccontentsource_music_spatial?language=objc)
309pub const kAudioCodecContentSource_Music_Spatial: i32 = 37;
310/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodeccontentsource_av_traditional_offline?language=objc)
311pub const kAudioCodecContentSource_AV_Traditional_Offline: i32 = 38;
312/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodeccontentsource_av_spatial_offline?language=objc)
313pub const kAudioCodecContentSource_AV_Spatial_Offline: i32 = 39;
314/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodeccontentsource_av_traditional_live?language=objc)
315pub const kAudioCodecContentSource_AV_Traditional_Live: i32 = 40;
316/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodeccontentsource_av_spatial_live?language=objc)
317pub const kAudioCodecContentSource_AV_Spatial_Live: i32 = 41;
318/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodeccontentsource_passthrough?language=objc)
319pub const kAudioCodecContentSource_Passthrough: i32 = 42;
320
321/// Specifies the number of leading and trailing empty frames
322/// which have to be inserted.
323///
324///
325/// An unsigned integer specifying the number of leading empty frames
326///
327/// An unsigned integer specifying the number of trailing empty frames
328///
329/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiocodecprimeinfo?language=objc)
330#[repr(C)]
331#[derive(Clone, Copy, Debug, PartialEq)]
332pub struct AudioCodecPrimeInfo {
333    pub leadingFrames: u32,
334    pub trailingFrames: u32,
335}
336
337unsafe impl Encode for AudioCodecPrimeInfo {
338    const ENCODING: Encoding =
339        Encoding::Struct("AudioCodecPrimeInfo", &[<u32>::ENCODING, <u32>::ENCODING]);
340}
341
342unsafe impl RefEncode for AudioCodecPrimeInfo {
343    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
344}
345
346/// Constants to be used with kAudioSettings_Hint
347/// in the kAudioCodecPropertySettings property dictionary.
348/// Indicates any special characteristics of each parameter within the dictionary,
349///
350///
351/// If set, then the parameter is an expert parameter.
352///
353/// If set, then the parameter should not be displayed.
354///
355/// If set, then changing this parameter may affect the values of other parameters.
356/// If not set, then this parameter can be set without affecting the values of other parameters.
357///
358/// If set, then this is only a user interface element and not reflected in the codec's bit stream.
359///
360/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiosettingsflags?language=objc)
361// NS_OPTIONS
362#[repr(transparent)]
363#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
364pub struct AudioSettingsFlags(pub u32);
365bitflags::bitflags! {
366    impl AudioSettingsFlags: u32 {
367        #[doc(alias = "kAudioSettingsFlags_ExpertParameter")]
368        const ExpertParameter = 1<<0;
369        #[doc(alias = "kAudioSettingsFlags_InvisibleParameter")]
370        const InvisibleParameter = 1<<1;
371        #[doc(alias = "kAudioSettingsFlags_MetaParameter")]
372        const MetaParameter = 1<<2;
373        #[doc(alias = "kAudioSettingsFlags_UserInterfaceParameter")]
374        const UserInterfaceParameter = 1<<3;
375    }
376}
377
378unsafe impl Encode for AudioSettingsFlags {
379    const ENCODING: Encoding = u32::ENCODING;
380}
381
382unsafe impl RefEncode for AudioSettingsFlags {
383    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
384}
385
386/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecproduceoutputpacketfailure?language=objc)
387pub const kAudioCodecProduceOutputPacketFailure: u32 = 1;
388/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecproduceoutputpacketsuccess?language=objc)
389pub const kAudioCodecProduceOutputPacketSuccess: u32 = 2;
390/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecproduceoutputpacketsuccesshasmore?language=objc)
391pub const kAudioCodecProduceOutputPacketSuccessHasMore: u32 = 3;
392/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecproduceoutputpacketneedsmoreinputdata?language=objc)
393pub const kAudioCodecProduceOutputPacketNeedsMoreInputData: u32 = 4;
394/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecproduceoutputpacketateof?language=objc)
395pub const kAudioCodecProduceOutputPacketAtEOF: u32 = 5;
396/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecproduceoutputpacketsuccessconcealed?language=objc)
397pub const kAudioCodecProduceOutputPacketSuccessConcealed: u32 = 6;
398
399/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecgetpropertyinfoselect?language=objc)
400pub const kAudioCodecGetPropertyInfoSelect: u32 = 0x0001;
401/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecgetpropertyselect?language=objc)
402pub const kAudioCodecGetPropertySelect: u32 = 0x0002;
403/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecsetpropertyselect?language=objc)
404pub const kAudioCodecSetPropertySelect: u32 = 0x0003;
405/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecinitializeselect?language=objc)
406pub const kAudioCodecInitializeSelect: u32 = 0x0004;
407/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecuninitializeselect?language=objc)
408pub const kAudioCodecUninitializeSelect: u32 = 0x0005;
409/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecappendinputdataselect?language=objc)
410pub const kAudioCodecAppendInputDataSelect: u32 = 0x0006;
411/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecproduceoutputdataselect?language=objc)
412pub const kAudioCodecProduceOutputDataSelect: u32 = 0x0007;
413/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecresetselect?language=objc)
414pub const kAudioCodecResetSelect: u32 = 0x0008;
415/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecappendinputbufferlistselect?language=objc)
416pub const kAudioCodecAppendInputBufferListSelect: u32 = 0x0009;
417/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecproduceoutputbufferlistselect?language=objc)
418pub const kAudioCodecProduceOutputBufferListSelect: u32 = 0x000A;
419
420/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecnoerror?language=objc)
421pub const kAudioCodecNoError: OSStatus = 0;
422/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecunspecifiederror?language=objc)
423pub const kAudioCodecUnspecifiedError: OSStatus = 0x77686174;
424/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecunknownpropertyerror?language=objc)
425pub const kAudioCodecUnknownPropertyError: OSStatus = 0x77686f3f;
426/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecbadpropertysizeerror?language=objc)
427pub const kAudioCodecBadPropertySizeError: OSStatus = 0x2173697a;
428/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecillegaloperationerror?language=objc)
429pub const kAudioCodecIllegalOperationError: OSStatus = 0x6e6f7065;
430/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecunsupportedformaterror?language=objc)
431pub const kAudioCodecUnsupportedFormatError: OSStatus = 0x21646174;
432/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecstateerror?language=objc)
433pub const kAudioCodecStateError: OSStatus = 0x21737474;
434/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecnotenoughbufferspaceerror?language=objc)
435pub const kAudioCodecNotEnoughBufferSpaceError: OSStatus = 0x21627566;
436/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecbaddataerror?language=objc)
437pub const kAudioCodecBadDataError: OSStatus = 0x62616461;
438
439extern "C-unwind" {
440    /// Retrieve information about the given property. The outSize argument
441    /// will return the size in bytes of the current value of the property.
442    /// The outWritable argument will return whether or not the property
443    /// in question can be changed.
444    ///
445    ///
446    /// Parameter `inCodec`: An AudioCodec instance
447    ///
448    /// Parameter `inPropertyID`: Property ID whose value should be read
449    ///
450    /// Parameter `outSize`: Size in bytes of the property
451    ///
452    /// Parameter `outWritable`: Flag indicating wether the underlying property can be modified or not
453    ///
454    ///
455    /// Returns: The OSStatus value
456    ///
457    /// # Safety
458    ///
459    /// - `in_codec` must be a valid pointer.
460    /// - `out_size` must be a valid pointer or null.
461    /// - `out_writable` must be a valid pointer or null.
462    #[cfg(feature = "AudioComponent")]
463    pub fn AudioCodecGetPropertyInfo(
464        in_codec: AudioCodec,
465        in_property_id: AudioCodecPropertyID,
466        out_size: *mut u32,
467        out_writable: *mut Boolean,
468    ) -> OSStatus;
469}
470
471extern "C-unwind" {
472    /// Retrieve the indicated property data. On input, ioDataSize has the size
473    /// of the data pointed to by outPropertyData. On output, ioDataSize will contain
474    /// the amount written.
475    ///
476    ///
477    /// Parameter `inCodec`: An AudioCodec instance
478    ///
479    /// Parameter `inPropertyID`: Property ID whose value should be read
480    ///
481    /// Parameter `ioPropertyDataSize`: Size in bytes of the property data
482    ///
483    /// Parameter `outPropertyData`: Pointer to the property data buffer
484    ///
485    ///
486    /// Returns: The OSStatus value
487    ///
488    /// # Safety
489    ///
490    /// - `in_codec` must be a valid pointer.
491    /// - `io_property_data_size` must be a valid pointer.
492    /// - `out_property_data` must be a valid pointer.
493    #[cfg(feature = "AudioComponent")]
494    pub fn AudioCodecGetProperty(
495        in_codec: AudioCodec,
496        in_property_id: AudioCodecPropertyID,
497        io_property_data_size: NonNull<u32>,
498        out_property_data: NonNull<c_void>,
499    ) -> OSStatus;
500}
501
502extern "C-unwind" {
503    /// Set the indicated property data.
504    ///
505    ///
506    /// Parameter `inCodec`: An AudioCodec instance
507    ///
508    /// Parameter `inPropertyID`: Property ID whose value should be changed
509    ///
510    /// Parameter `inPropertyDataSize`: Size in bytes of the property data
511    ///
512    /// Parameter `inPropertyData`: Pointer to the property data buffer
513    ///
514    ///
515    /// Returns: The OSStatus value
516    ///
517    /// # Safety
518    ///
519    /// - `in_codec` must be a valid pointer.
520    /// - `in_property_data` must be a valid pointer.
521    #[cfg(feature = "AudioComponent")]
522    pub fn AudioCodecSetProperty(
523        in_codec: AudioCodec,
524        in_property_id: AudioCodecPropertyID,
525        in_property_data_size: u32,
526        in_property_data: NonNull<c_void>,
527    ) -> OSStatus;
528}
529
530extern "C-unwind" {
531    /// This call will allocate any buffers needed and otherwise set the codec
532    /// up to perform the indicated translation. If an argument is NULL, any
533    /// previously set properties will be used for preparing the codec for work.
534    /// Note that this routine will also validate the format information as useable.
535    ///
536    ///
537    /// Parameter `inCodec`: An AudioCodec instance
538    ///
539    /// Parameter `inInputFormat`: Pointer to an input format structure
540    ///
541    /// Parameter `inOutputFormat`: Pointer to an output format structure
542    ///
543    /// Parameter `inMagicCookie`: Pointer to the magic cookie
544    ///
545    /// Parameter `inMagicCookieByteSize`: Size in bytes of the magic cookie
546    ///
547    ///
548    /// Returns: The OSStatus value
549    ///
550    /// # Safety
551    ///
552    /// - `in_codec` must be a valid pointer.
553    /// - `in_input_format` must be a valid pointer or null.
554    /// - `in_output_format` must be a valid pointer or null.
555    /// - `in_magic_cookie` must be a valid pointer or null.
556    #[cfg(all(feature = "AudioComponent", feature = "objc2-core-audio-types"))]
557    pub fn AudioCodecInitialize(
558        in_codec: AudioCodec,
559        in_input_format: *const AudioStreamBasicDescription,
560        in_output_format: *const AudioStreamBasicDescription,
561        in_magic_cookie: *const c_void,
562        in_magic_cookie_byte_size: u32,
563    ) -> OSStatus;
564}
565
566extern "C-unwind" {
567    /// This call will move the codec from the initialized state back to the
568    /// uninitialized state. The codec will release any resources it allocated
569    /// or claimed in AudioCodecInitialize.
570    ///
571    ///
572    /// Parameter `inCodec`: An AudioCodec instance
573    ///
574    ///
575    /// Returns: The OSStatus value
576    ///
577    /// # Safety
578    ///
579    /// `in_codec` must be a valid pointer.
580    #[cfg(feature = "AudioComponent")]
581    pub fn AudioCodecUninitialize(in_codec: AudioCodec) -> OSStatus;
582}
583
584extern "C-unwind" {
585    /// Append as much of the given data in inInputData to the codec's input buffer as possible
586    /// and return in ioInputDataByteSize the amount of data used.
587    ///
588    /// The inPacketDescription argument is an array of AudioStreamPacketDescription
589    /// structs that describes the packet layout. The number of elements in this array
590    /// is indicated on input by ioNumberPackets. On return, this number indicates the number
591    /// of packets consumed.
592    ///
593    /// Note also in this case that it is an error to supply less than a full packet
594    /// of data at a time.
595    ///
596    ///
597    /// Parameter `inCodec`: An AudioCodec instance
598    ///
599    /// Parameter `inInputData`: A const pointer to the input data
600    ///
601    /// Parameter `ioInputDataByteSize`: The size in bytes of the input data in inInputData on input,
602    /// the number of bytes consumed on output
603    ///
604    /// Parameter `ioNumberPackets`: The number of packets
605    ///
606    /// Parameter `inPacketDescription`: The packet description pointer
607    ///
608    ///
609    /// Returns: The OSStatus value
610    ///
611    /// # Safety
612    ///
613    /// - `in_codec` must be a valid pointer.
614    /// - `in_input_data` must be a valid pointer.
615    /// - `io_input_data_byte_size` must be a valid pointer.
616    /// - `io_number_packets` must be a valid pointer.
617    /// - `in_packet_description` must be a valid pointer or null.
618    #[cfg(all(feature = "AudioComponent", feature = "objc2-core-audio-types"))]
619    pub fn AudioCodecAppendInputData(
620        in_codec: AudioCodec,
621        in_input_data: NonNull<c_void>,
622        io_input_data_byte_size: NonNull<u32>,
623        io_number_packets: NonNull<u32>,
624        in_packet_description: *const AudioStreamPacketDescription,
625    ) -> OSStatus;
626}
627
628extern "C-unwind" {
629    /// Produce as many output packets as requested and the amount of input data
630    /// allows for. The outStatus argument returns information about the codec's
631    /// status to allow for proper data management. See the constants above for
632    /// the possible values that can be returned.
633    ///
634    /// The outPacketDescription argument is an array of AudioStreamPacketDescription
635    /// structs that describes the packet layout returned in outOutputData. This
636    /// argument is optional. Pass NULL if this information is not to be returned.
637    /// Note that this information is only provided when the output format isn't
638    /// linear PCM.
639    ///
640    /// Note that decoders will always only produce linear PCM data in multiples of
641    /// the number frames in a packet of the encoded format (as returned by
642    /// kAudioCodecPropertyPacketFrameSize). Encoders will consume this many frames
643    /// of linear PCM data to produce a packet of their format.
644    ///
645    ///
646    /// Parameter `inCodec`: The AudioCodec instance
647    ///
648    /// Parameter `outOutputData`: Pointer to the output data buffer
649    ///
650    /// Parameter `ioOutputDataByteSize`: A pointer to the size
651    ///
652    /// Parameter `ioNumberPackets`: number of input/output packets
653    ///
654    /// Returns: The OSStatus value
655    ///
656    /// # Safety
657    ///
658    /// - `in_codec` must be a valid pointer.
659    /// - `out_output_data` must be a valid pointer.
660    /// - `io_output_data_byte_size` must be a valid pointer.
661    /// - `io_number_packets` must be a valid pointer.
662    /// - `out_packet_description` must be a valid pointer or null.
663    /// - `out_status` must be a valid pointer.
664    #[cfg(all(feature = "AudioComponent", feature = "objc2-core-audio-types"))]
665    pub fn AudioCodecProduceOutputPackets(
666        in_codec: AudioCodec,
667        out_output_data: NonNull<c_void>,
668        io_output_data_byte_size: NonNull<u32>,
669        io_number_packets: NonNull<u32>,
670        out_packet_description: *mut AudioStreamPacketDescription,
671        out_status: NonNull<u32>,
672    ) -> OSStatus;
673}
674
675extern "C-unwind" {
676    /// # Safety
677    ///
678    /// - `in_codec` must be a valid pointer.
679    /// - `in_buffer_list` must be a valid pointer.
680    /// - `io_number_packets` must be a valid pointer.
681    /// - `in_packet_description` must be a valid pointer or null.
682    /// - `out_bytes_consumed` must be a valid pointer.
683    #[cfg(all(feature = "AudioComponent", feature = "objc2-core-audio-types"))]
684    pub fn AudioCodecAppendInputBufferList(
685        in_codec: AudioCodec,
686        in_buffer_list: NonNull<AudioBufferList>,
687        io_number_packets: NonNull<u32>,
688        in_packet_description: *const AudioStreamPacketDescription,
689        out_bytes_consumed: NonNull<u32>,
690    ) -> OSStatus;
691}
692
693extern "C-unwind" {
694    /// # Safety
695    ///
696    /// - `in_codec` must be a valid pointer.
697    /// - `io_buffer_list` must be a valid pointer.
698    /// - `io_number_packets` must be a valid pointer.
699    /// - `out_packet_description` must be a valid pointer or null.
700    /// - `out_status` must be a valid pointer.
701    #[cfg(all(feature = "AudioComponent", feature = "objc2-core-audio-types"))]
702    pub fn AudioCodecProduceOutputBufferList(
703        in_codec: AudioCodec,
704        io_buffer_list: NonNull<AudioBufferList>,
705        io_number_packets: NonNull<u32>,
706        out_packet_description: *mut AudioStreamPacketDescription,
707        out_status: NonNull<u32>,
708    ) -> OSStatus;
709}
710
711extern "C-unwind" {
712    /// Flushes all the data in the codec and clears the input buffer. Note that
713    /// the formats, and magic cookie will be retained so they won't need to be
714    /// set up again to decode the same data.
715    ///
716    ///
717    /// Parameter `inCodec`: The audio codec descriptor
718    ///
719    ///
720    /// Returns: the OSStatus value
721    ///
722    /// # Safety
723    ///
724    /// `in_codec` must be a valid pointer.
725    #[cfg(feature = "AudioComponent")]
726    pub fn AudioCodecReset(in_codec: AudioCodec) -> OSStatus;
727}
728
729/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiocodecgetpropertyinfoproc?language=objc)
730pub type AudioCodecGetPropertyInfoProc = Option<
731    unsafe extern "C-unwind" fn(
732        NonNull<c_void>,
733        AudioCodecPropertyID,
734        *mut u32,
735        *mut Boolean,
736    ) -> OSStatus,
737>;
738
739/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiocodecgetpropertyproc?language=objc)
740pub type AudioCodecGetPropertyProc = Option<
741    unsafe extern "C-unwind" fn(
742        NonNull<c_void>,
743        AudioCodecPropertyID,
744        NonNull<u32>,
745        NonNull<c_void>,
746    ) -> OSStatus,
747>;
748
749/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiocodecsetpropertyproc?language=objc)
750pub type AudioCodecSetPropertyProc = Option<
751    unsafe extern "C-unwind" fn(
752        NonNull<c_void>,
753        AudioCodecPropertyID,
754        u32,
755        NonNull<c_void>,
756    ) -> OSStatus,
757>;
758
759/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiocodecinitializeproc?language=objc)
760#[cfg(feature = "objc2-core-audio-types")]
761pub type AudioCodecInitializeProc = Option<
762    unsafe extern "C-unwind" fn(
763        NonNull<c_void>,
764        *const AudioStreamBasicDescription,
765        *const AudioStreamBasicDescription,
766        *const c_void,
767        u32,
768    ) -> OSStatus,
769>;
770
771/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiocodecuninitializeproc?language=objc)
772pub type AudioCodecUninitializeProc =
773    Option<unsafe extern "C-unwind" fn(NonNull<c_void>) -> OSStatus>;
774
775/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiocodecappendinputdataproc?language=objc)
776#[cfg(feature = "objc2-core-audio-types")]
777pub type AudioCodecAppendInputDataProc = Option<
778    unsafe extern "C-unwind" fn(
779        NonNull<c_void>,
780        NonNull<c_void>,
781        NonNull<u32>,
782        NonNull<u32>,
783        *const AudioStreamPacketDescription,
784    ) -> OSStatus,
785>;
786
787/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiocodecproduceoutputpacketsproc?language=objc)
788#[cfg(feature = "objc2-core-audio-types")]
789pub type AudioCodecProduceOutputPacketsProc = Option<
790    unsafe extern "C-unwind" fn(
791        NonNull<c_void>,
792        NonNull<c_void>,
793        NonNull<u32>,
794        NonNull<u32>,
795        *mut AudioStreamPacketDescription,
796        NonNull<u32>,
797    ) -> OSStatus,
798>;
799
800/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiocodecresetproc?language=objc)
801pub type AudioCodecResetProc = Option<unsafe extern "C-unwind" fn(NonNull<c_void>) -> OSStatus>;
802
803/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiocodecappendinputbufferlistproc?language=objc)
804#[cfg(feature = "objc2-core-audio-types")]
805pub type AudioCodecAppendInputBufferListProc = Option<
806    unsafe extern "C-unwind" fn(
807        NonNull<c_void>,
808        NonNull<AudioBufferList>,
809        NonNull<u32>,
810        *const AudioStreamPacketDescription,
811        NonNull<u32>,
812    ) -> OSStatus,
813>;
814
815/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiocodecproduceoutputbufferlistproc?language=objc)
816#[cfg(feature = "objc2-core-audio-types")]
817pub type AudioCodecProduceOutputBufferListProc = Option<
818    unsafe extern "C-unwind" fn(
819        NonNull<c_void>,
820        NonNull<AudioBufferList>,
821        NonNull<u32>,
822        *mut AudioStreamPacketDescription,
823        NonNull<u32>,
824    ) -> OSStatus,
825>;
826
827/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyminimumdelaymode?language=objc)
828pub const kAudioCodecPropertyMinimumDelayMode: AudioCodecPropertyID = 0x6d64656c;
829
830/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertynamecfstring?language=objc)
831pub const kAudioCodecPropertyNameCFString: AudioCodecPropertyID = 0x6c6e616d;
832/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertymanufacturercfstring?language=objc)
833pub const kAudioCodecPropertyManufacturerCFString: AudioCodecPropertyID = 0x6c6d616b;
834/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyformatcfstring?language=objc)
835pub const kAudioCodecPropertyFormatCFString: AudioCodecPropertyID = 0x6c666f72;
836
837/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyrequirespacketdescription?language=objc)
838pub const kAudioCodecPropertyRequiresPacketDescription: AudioCodecPropertyID = 0x70616b64;
839/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyavailablebitrates?language=objc)
840pub const kAudioCodecPropertyAvailableBitRates: AudioCodecPropertyID = 0x62727423;
841/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecextendfrequencies?language=objc)
842pub const kAudioCodecExtendFrequencies: AudioCodecPropertyID = 0x61636566;
843/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecuserecommendedsamplerate?language=objc)
844pub const kAudioCodecUseRecommendedSampleRate: AudioCodecPropertyID = 0x75727372;
845/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecoutputprecedence?language=objc)
846pub const kAudioCodecOutputPrecedence: AudioCodecPropertyID = 0x6f707072;
847/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecbitrateformat?language=objc)
848pub const kAudioCodecBitRateFormat: AudioCodecPropertyID = kAudioCodecPropertyBitRateControlMode;
849/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecdoessamplerateconversion?language=objc)
850pub const kAudioCodecDoesSampleRateConversion: AudioCodecPropertyID =
851    kAudioCodecPropertyDoesSampleRateConversion;
852/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecinputformatsforoutputformat?language=objc)
853pub const kAudioCodecInputFormatsForOutputFormat: AudioCodecPropertyID =
854    kAudioCodecPropertyInputFormatsForOutputFormat;
855/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecoutputformatsforinputformat?language=objc)
856pub const kAudioCodecOutputFormatsForInputFormat: AudioCodecPropertyID =
857    kAudioCodecPropertyOutputFormatsForInputFormat;
858/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyinputchannellayout?language=objc)
859pub const kAudioCodecPropertyInputChannelLayout: AudioCodecPropertyID =
860    kAudioCodecPropertyCurrentInputChannelLayout;
861/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyoutputchannellayout?language=objc)
862pub const kAudioCodecPropertyOutputChannelLayout: AudioCodecPropertyID =
863    kAudioCodecPropertyCurrentOutputChannelLayout;
864/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyavailableinputchannellayouts?language=objc)
865pub const kAudioCodecPropertyAvailableInputChannelLayouts: AudioCodecPropertyID =
866    kAudioCodecPropertyAvailableInputChannelLayoutTags;
867/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyavailableoutputchannellayouts?language=objc)
868pub const kAudioCodecPropertyAvailableOutputChannelLayouts: AudioCodecPropertyID =
869    kAudioCodecPropertyAvailableOutputChannelLayoutTags;
870/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecpropertyzeroframespadded?language=objc)
871pub const kAudioCodecPropertyZeroFramesPadded: AudioCodecPropertyID =
872    kAudioCodecPropertyPaddedZeros;
873
874/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecbitrateformat_cbr?language=objc)
875pub const kAudioCodecBitRateFormat_CBR: u32 = kAudioCodecBitRateControlMode_Constant;
876/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecbitrateformat_abr?language=objc)
877pub const kAudioCodecBitRateFormat_ABR: u32 = kAudioCodecBitRateControlMode_LongTermAverage;
878/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecbitrateformat_vbr?language=objc)
879pub const kAudioCodecBitRateFormat_VBR: u32 = kAudioCodecBitRateControlMode_VariableConstrained;
880
881/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecoutputprecedencenone?language=objc)
882pub const kAudioCodecOutputPrecedenceNone: u32 = 0;
883/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecoutputprecedencebitrate?language=objc)
884pub const kAudioCodecOutputPrecedenceBitRate: u32 = 1;
885/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiocodecoutputprecedencesamplerate?language=objc)
886pub const kAudioCodecOutputPrecedenceSampleRate: u32 = 2;
887
888/// renamed to AudioCodecMagicCookieInfo
889///
890/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/magiccookieinfo?language=objc)
891#[deprecated]
892pub type MagicCookieInfo = AudioCodecMagicCookieInfo;
893
894/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/khintbasic?language=objc)
895pub const kHintBasic: u32 = 0;
896/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/khintadvanced?language=objc)
897pub const kHintAdvanced: u32 = 1;
898/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/khinthidden?language=objc)
899pub const kHintHidden: u32 = 2;