objc2_audio_toolbox/generated/AudioFormat.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/// A type for four char codes for property IDs
12///
13/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audioformatpropertyid?language=objc)
14pub type AudioFormatPropertyID = u32;
15
16/// Different panning algorithms.
17///
18/// Sound field panning algorithm
19///
20/// Vector based panning algorithm
21///
22/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiopanningmode?language=objc)
23// NS_ENUM
24#[repr(transparent)]
25#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
26pub struct AudioPanningMode(pub u32);
27impl AudioPanningMode {
28 #[doc(alias = "kPanningMode_SoundField")]
29 pub const PanningMode_SoundField: Self = Self(3);
30 #[doc(alias = "kPanningMode_VectorBasedPanning")]
31 pub const PanningMode_VectorBasedPanning: Self = Self(4);
32}
33
34unsafe impl Encode for AudioPanningMode {
35 const ENCODING: Encoding = u32::ENCODING;
36}
37
38unsafe impl RefEncode for AudioPanningMode {
39 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
40}
41
42/// This struct is for use with kAudioFormatProperty_PanningMatrix.
43///
44///
45///
46///
47/// mGainScale is used to multiply the panning values.
48/// In typical usage you are applying an existing volume.
49/// value in 0 -> 1 (where 1 is unity gain) to the panned values.
50/// 1 would give you panning at unity.
51/// 0 would give you back a matrix of zeroes.
52///
53/// This is the channel map that is going to be used to determine channel volumes for this pan.
54///
55/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiopanninginfo?language=objc)
56#[cfg(feature = "objc2-core-audio-types")]
57#[repr(C)]
58#[derive(Clone, Copy, Debug, PartialEq)]
59pub struct AudioPanningInfo {
60 pub mPanningMode: AudioPanningMode,
61 pub mCoordinateFlags: u32,
62 pub mCoordinates: [f32; 3],
63 pub mGainScale: f32,
64 pub mOutputChannelMap: NonNull<AudioChannelLayout>,
65}
66
67#[cfg(feature = "objc2-core-audio-types")]
68unsafe impl Encode for AudioPanningInfo {
69 const ENCODING: Encoding = Encoding::Struct(
70 "AudioPanningInfo",
71 &[
72 <AudioPanningMode>::ENCODING,
73 <u32>::ENCODING,
74 <[f32; 3]>::ENCODING,
75 <f32>::ENCODING,
76 <NonNull<AudioChannelLayout>>::ENCODING,
77 ],
78 );
79}
80
81#[cfg(feature = "objc2-core-audio-types")]
82unsafe impl RefEncode for AudioPanningInfo {
83 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
84}
85
86/// used for mType field of AudioBalanceFade struct
87///
88/// the gain value never exceeds 1.0, the opposite channel fades out.
89/// This can reduce overall loudness when the balance or fade is not in the center.
90///
91/// The overall loudness remains constant, but gain can exceed 1.0.
92/// the gain value is 1.0 when the balance and fade are in the center.
93/// From there they can increase to +3dB (1.414) and decrease to -inf dB (0.0).
94///
95/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiobalancefadetype?language=objc)
96// NS_ENUM
97#[repr(transparent)]
98#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
99pub struct AudioBalanceFadeType(pub u32);
100impl AudioBalanceFadeType {
101 #[doc(alias = "kAudioBalanceFadeType_MaxUnityGain")]
102 pub const MaxUnityGain: Self = Self(0);
103 #[doc(alias = "kAudioBalanceFadeType_EqualPower")]
104 pub const EqualPower: Self = Self(1);
105}
106
107unsafe impl Encode for AudioBalanceFadeType {
108 const ENCODING: Encoding = u32::ENCODING;
109}
110
111unsafe impl RefEncode for AudioBalanceFadeType {
112 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
113}
114
115/// this struct is used with kAudioFormatProperty_BalanceFade
116///
117/// -1 is full left, 0 is center, +1 is full right
118///
119/// -1 is full rear, 0 is center, +1 is full front
120///
121/// an AudioBalanceFadeType constant
122///
123/// a pointer to an AudioChannelLayout
124///
125/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiobalancefade?language=objc)
126#[cfg(feature = "objc2-core-audio-types")]
127#[repr(C)]
128#[derive(Clone, Copy, Debug, PartialEq)]
129pub struct AudioBalanceFade {
130 pub mLeftRightBalance: f32,
131 pub mBackFrontFade: f32,
132 pub mType: AudioBalanceFadeType,
133 pub mChannelLayout: NonNull<AudioChannelLayout>,
134}
135
136#[cfg(feature = "objc2-core-audio-types")]
137unsafe impl Encode for AudioBalanceFade {
138 const ENCODING: Encoding = Encoding::Struct(
139 "AudioBalanceFade",
140 &[
141 <f32>::ENCODING,
142 <f32>::ENCODING,
143 <AudioBalanceFadeType>::ENCODING,
144 <NonNull<AudioChannelLayout>>::ENCODING,
145 ],
146 );
147}
148
149#[cfg(feature = "objc2-core-audio-types")]
150unsafe impl RefEncode for AudioBalanceFade {
151 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
152}
153
154/// this struct is used as a specifier for the kAudioFormatProperty_FormatList property
155///
156/// an AudioStreamBasicDescription
157///
158/// a pointer to the decompression info for the data described in mASBD
159///
160/// the size in bytes of mMagicCookie
161///
162/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audioformatinfo?language=objc)
163#[cfg(feature = "objc2-core-audio-types")]
164#[repr(C)]
165#[derive(Clone, Copy, Debug, PartialEq)]
166pub struct AudioFormatInfo {
167 pub mASBD: AudioStreamBasicDescription,
168 pub mMagicCookie: NonNull<c_void>,
169 pub mMagicCookieSize: u32,
170}
171
172#[cfg(feature = "objc2-core-audio-types")]
173unsafe impl Encode for AudioFormatInfo {
174 const ENCODING: Encoding = Encoding::Struct(
175 "AudioFormatInfo",
176 &[
177 <AudioStreamBasicDescription>::ENCODING,
178 <NonNull<c_void>>::ENCODING,
179 <u32>::ENCODING,
180 ],
181 );
182}
183
184#[cfg(feature = "objc2-core-audio-types")]
185unsafe impl RefEncode for AudioFormatInfo {
186 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
187}
188
189/// this struct is used as a specifier for the kAudioFormatProperty_FormatList property
190///
191/// an AudioStreamBasicDescription
192///
193/// a pointer to the decompression info for the data described in mASBD
194///
195/// the size in bytes of mMagicCookie
196///
197/// an AudioClassDescription specifying the codec to be used in answering the question.
198///
199/// See also [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/extendedaudioformatinfo?language=objc)
200#[cfg(feature = "objc2-core-audio-types")]
201#[repr(C)]
202#[derive(Clone, Copy, Debug, PartialEq)]
203pub struct ExtendedAudioFormatInfo {
204 pub mASBD: AudioStreamBasicDescription,
205 pub mMagicCookie: *const c_void,
206 pub mMagicCookieSize: u32,
207 pub mClassDescription: AudioClassDescription,
208}
209
210#[cfg(feature = "objc2-core-audio-types")]
211unsafe impl Encode for ExtendedAudioFormatInfo {
212 const ENCODING: Encoding = Encoding::Struct(
213 "ExtendedAudioFormatInfo",
214 &[
215 <AudioStreamBasicDescription>::ENCODING,
216 <*const c_void>::ENCODING,
217 <u32>::ENCODING,
218 <AudioClassDescription>::ENCODING,
219 ],
220 );
221}
222
223#[cfg(feature = "objc2-core-audio-types")]
224unsafe impl RefEncode for ExtendedAudioFormatInfo {
225 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
226}
227
228/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_formatinfo?language=objc)
229pub const kAudioFormatProperty_FormatInfo: AudioFormatPropertyID = 0x666d7469;
230/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_formatname?language=objc)
231pub const kAudioFormatProperty_FormatName: AudioFormatPropertyID = 0x666e616d;
232/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_encodeformatids?language=objc)
233pub const kAudioFormatProperty_EncodeFormatIDs: AudioFormatPropertyID = 0x61636f66;
234/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_decodeformatids?language=objc)
235pub const kAudioFormatProperty_DecodeFormatIDs: AudioFormatPropertyID = 0x61636966;
236/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_formatlist?language=objc)
237pub const kAudioFormatProperty_FormatList: AudioFormatPropertyID = 0x666c7374;
238/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_asbdfromesds?language=objc)
239pub const kAudioFormatProperty_ASBDFromESDS: AudioFormatPropertyID = 0x65737364;
240/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_channellayoutfromesds?language=objc)
241pub const kAudioFormatProperty_ChannelLayoutFromESDS: AudioFormatPropertyID = 0x6573636c;
242/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_outputformatlist?language=objc)
243pub const kAudioFormatProperty_OutputFormatList: AudioFormatPropertyID = 0x6f666c73;
244/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_firstplayableformatfromlist?language=objc)
245pub const kAudioFormatProperty_FirstPlayableFormatFromList: AudioFormatPropertyID = 0x6670666c;
246/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_formatisvbr?language=objc)
247pub const kAudioFormatProperty_FormatIsVBR: AudioFormatPropertyID = 0x66766272;
248/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_formatisexternallyframed?language=objc)
249pub const kAudioFormatProperty_FormatIsExternallyFramed: AudioFormatPropertyID = 0x66657866;
250/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_formatemploysdependentpackets?language=objc)
251pub const kAudioFormatProperty_FormatEmploysDependentPackets: AudioFormatPropertyID = 0x66646570;
252/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_formatisencrypted?language=objc)
253pub const kAudioFormatProperty_FormatIsEncrypted: AudioFormatPropertyID = 0x63727970;
254/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_encoders?language=objc)
255pub const kAudioFormatProperty_Encoders: AudioFormatPropertyID = 0x6176656e;
256/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_decoders?language=objc)
257pub const kAudioFormatProperty_Decoders: AudioFormatPropertyID = 0x61766465;
258/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_availableencodebitrates?language=objc)
259pub const kAudioFormatProperty_AvailableEncodeBitRates: AudioFormatPropertyID = 0x61656272;
260/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_availableencodesamplerates?language=objc)
261pub const kAudioFormatProperty_AvailableEncodeSampleRates: AudioFormatPropertyID = 0x61657372;
262/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_availableencodechannellayouttags?language=objc)
263pub const kAudioFormatProperty_AvailableEncodeChannelLayoutTags: AudioFormatPropertyID = 0x6165636c;
264/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_availableencodenumberchannels?language=objc)
265pub const kAudioFormatProperty_AvailableEncodeNumberChannels: AudioFormatPropertyID = 0x61766e63;
266/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_availabledecodenumberchannels?language=objc)
267pub const kAudioFormatProperty_AvailableDecodeNumberChannels: AudioFormatPropertyID = 0x61646e63;
268/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_asbdfrommpegpacket?language=objc)
269pub const kAudioFormatProperty_ASBDFromMPEGPacket: AudioFormatPropertyID = 0x61646d70;
270/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_bitmapforlayouttag?language=objc)
271pub const kAudioFormatProperty_BitmapForLayoutTag: AudioFormatPropertyID = 0x626d7467;
272/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_matrixmixmap?language=objc)
273pub const kAudioFormatProperty_MatrixMixMap: AudioFormatPropertyID = 0x6d6d6170;
274/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_channelmap?language=objc)
275pub const kAudioFormatProperty_ChannelMap: AudioFormatPropertyID = 0x63686d70;
276/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_numberofchannelsforlayout?language=objc)
277pub const kAudioFormatProperty_NumberOfChannelsForLayout: AudioFormatPropertyID = 0x6e63686d;
278/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_arechannellayoutsequivalent?language=objc)
279pub const kAudioFormatProperty_AreChannelLayoutsEquivalent: AudioFormatPropertyID = 0x63686571;
280/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_channellayouthash?language=objc)
281pub const kAudioFormatProperty_ChannelLayoutHash: AudioFormatPropertyID = 0x63686861;
282/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_validatechannellayout?language=objc)
283pub const kAudioFormatProperty_ValidateChannelLayout: AudioFormatPropertyID = 0x7661636c;
284/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_channellayoutfortag?language=objc)
285pub const kAudioFormatProperty_ChannelLayoutForTag: AudioFormatPropertyID = 0x636d706c;
286/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_tagforchannellayout?language=objc)
287pub const kAudioFormatProperty_TagForChannelLayout: AudioFormatPropertyID = 0x636d7074;
288/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_channellayoutname?language=objc)
289pub const kAudioFormatProperty_ChannelLayoutName: AudioFormatPropertyID = 0x6c6f6e6d;
290/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_channellayoutsimplename?language=objc)
291pub const kAudioFormatProperty_ChannelLayoutSimpleName: AudioFormatPropertyID = 0x6c736e6d;
292/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_channellayoutforbitmap?language=objc)
293pub const kAudioFormatProperty_ChannelLayoutForBitmap: AudioFormatPropertyID = 0x636d7062;
294/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_channelname?language=objc)
295pub const kAudioFormatProperty_ChannelName: AudioFormatPropertyID = 0x636e616d;
296/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_channelshortname?language=objc)
297pub const kAudioFormatProperty_ChannelShortName: AudioFormatPropertyID = 0x63736e6d;
298/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_tagsfornumberofchannels?language=objc)
299pub const kAudioFormatProperty_TagsForNumberOfChannels: AudioFormatPropertyID = 0x74616763;
300/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_panningmatrix?language=objc)
301pub const kAudioFormatProperty_PanningMatrix: AudioFormatPropertyID = 0x70616e6d;
302/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_balancefade?language=objc)
303pub const kAudioFormatProperty_BalanceFade: AudioFormatPropertyID = 0x62616c66;
304/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_id3tagsize?language=objc)
305pub const kAudioFormatProperty_ID3TagSize: AudioFormatPropertyID = 0x69643373;
306/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatproperty_id3tagtodictionary?language=objc)
307pub const kAudioFormatProperty_ID3TagToDictionary: AudioFormatPropertyID = 0x69643364;
308
309extern "C-unwind" {
310 /// Retrieve information about the given property
311 ///
312 /// Parameter `inPropertyID`: an AudioFormatPropertyID constant.
313 ///
314 /// Parameter `inSpecifierSize`: The size of the specifier data.
315 ///
316 /// Parameter `inSpecifier`: A specifier is a buffer of data used as an input argument to some of the properties.
317 ///
318 /// Parameter `outPropertyDataSize`: The size in bytes of the current value of the property. In order to get the property value,
319 /// you will need a buffer of this size.
320 ///
321 /// Returns: returns noErr if successful.
322 pub fn AudioFormatGetPropertyInfo(
323 in_property_id: AudioFormatPropertyID,
324 in_specifier_size: u32,
325 in_specifier: *const c_void,
326 out_property_data_size: NonNull<u32>,
327 ) -> OSStatus;
328}
329
330extern "C-unwind" {
331 /// Retrieve the indicated property data
332 ///
333 /// Parameter `inPropertyID`: an AudioFormatPropertyID constant.
334 ///
335 /// Parameter `inSpecifierSize`: The size of the specifier data.
336 ///
337 /// Parameter `inSpecifier`: A specifier is a buffer of data used as an input argument to some of the properties.
338 ///
339 /// Parameter `ioPropertyDataSize`: on input the size of the outPropertyData buffer. On output the number of bytes written to the buffer.
340 ///
341 /// Parameter `outPropertyData`: the buffer in which to write the property data. If outPropertyData is NULL and ioPropertyDataSize is
342 /// not, the amount that would have been written will be reported.
343 ///
344 /// Returns: returns noErr if successful.
345 pub fn AudioFormatGetProperty(
346 in_property_id: AudioFormatPropertyID,
347 in_specifier_size: u32,
348 in_specifier: *const c_void,
349 io_property_data_size: *mut u32,
350 out_property_data: *mut c_void,
351 ) -> OSStatus;
352}
353
354/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatunspecifiederror?language=objc)
355pub const kAudioFormatUnspecifiedError: OSStatus = 0x77686174;
356/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatunsupportedpropertyerror?language=objc)
357pub const kAudioFormatUnsupportedPropertyError: OSStatus = 0x70726f70;
358/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatbadpropertysizeerror?language=objc)
359pub const kAudioFormatBadPropertySizeError: OSStatus = 0x2173697a;
360/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatbadspecifiersizeerror?language=objc)
361pub const kAudioFormatBadSpecifierSizeError: OSStatus = 0x21737063;
362/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatunsupporteddataformaterror?language=objc)
363pub const kAudioFormatUnsupportedDataFormatError: OSStatus = 0x666d743f;
364/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudioformatunknownformaterror?language=objc)
365pub const kAudioFormatUnknownFormatError: OSStatus = 0x21666d74;