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;