Skip to main content

fdk_aac_sys/
bindings.rs

1/* automatically generated by rust-bindgen */
2
3pub const SHORT_BITS: u32 = 16;
4pub const CHAR_BITS: u32 = 8;
5pub const __DARWIN_ONLY_64_BIT_INO_T: u32 = 0;
6pub const __DARWIN_ONLY_VERS_1050: u32 = 0;
7pub const __DARWIN_ONLY_UNIX_CONFORMANCE: u32 = 1;
8pub const __DARWIN_UNIX03: u32 = 1;
9pub const __DARWIN_64_BIT_INO_T: u32 = 1;
10pub const __DARWIN_VERS_1050: u32 = 1;
11pub const __DARWIN_NON_CANCELABLE: u32 = 0;
12pub const __DARWIN_SUF_64_BIT_INO_T: &'static [u8; 9usize] = b"$INODE64\0";
13pub const __DARWIN_SUF_1050: &'static [u8; 6usize] = b"$1050\0";
14pub const __DARWIN_SUF_EXTSN: &'static [u8; 14usize] = b"$DARWIN_EXTSN\0";
15pub const __DARWIN_C_ANSI: u32 = 4096;
16pub const __DARWIN_C_FULL: u32 = 900000;
17pub const __DARWIN_C_LEVEL: u32 = 900000;
18pub const __STDC_WANT_LIB_EXT1__: u32 = 1;
19pub const __DARWIN_NO_LONG_LONG: u32 = 0;
20pub const _DARWIN_FEATURE_64_BIT_INODE: u32 = 1;
21pub const _DARWIN_FEATURE_ONLY_UNIX_CONFORMANCE: u32 = 1;
22pub const _DARWIN_FEATURE_UNIX_CONFORMANCE: u32 = 3;
23pub const WAV_BITS: u32 = 16;
24pub const SAMPLE_BITS: u32 = 16;
25pub const ALIGNMENT_DEFAULT: u32 = 8;
26pub const ALIGNMENT_EXTRES: u32 = 8;
27pub const M_PI: f64 = 3.141592653589793;
28pub const FDK_EXITCODE_OK: u32 = 0;
29pub const FDK_EXITCODE_USAGE: u32 = 64;
30pub const FDK_EXITCODE_DATAERROR: u32 = 65;
31pub const FDK_EXITCODE_NOINPUT: u32 = 66;
32pub const FDK_EXITCODE_UNAVAILABLE: u32 = 69;
33pub const FDK_EXITCODE_SOFTWARE: u32 = 70;
34pub const FDK_EXITCODE_CANTCREATE: u32 = 73;
35pub const FDK_EXITCODE_IOERROR: u32 = 74;
36pub const FDK_MAX_OVERLAYS: u32 = 8;
37pub const AC_ER_VCB11: u32 = 1;
38pub const AC_ER_RVLC: u32 = 2;
39pub const AC_ER_HCR: u32 = 4;
40pub const AC_SCALABLE: u32 = 8;
41pub const AC_ELD: u32 = 16;
42pub const AC_LD: u32 = 32;
43pub const AC_ER: u32 = 64;
44pub const AC_BSAC: u32 = 128;
45pub const AC_USAC: u32 = 256;
46pub const AC_RSV603DA: u32 = 512;
47pub const AC_HDAAC: u32 = 1024;
48pub const AC_RSVD50: u32 = 16384;
49pub const AC_SBR_PRESENT: u32 = 32768;
50pub const AC_SBRCRC: u32 = 65536;
51pub const AC_PS_PRESENT: u32 = 131072;
52pub const AC_MPS_PRESENT: u32 = 262144;
53pub const AC_DRM: u32 = 524288;
54pub const AC_INDEP: u32 = 1048576;
55pub const AC_MPEGD_RES: u32 = 2097152;
56pub const AC_SAOC_PRESENT: u32 = 4194304;
57pub const AC_DAB: u32 = 8388608;
58pub const AC_ELD_DOWNSCALE: u32 = 16777216;
59pub const AC_LD_MPS: u32 = 33554432;
60pub const AC_DRC_PRESENT: u32 = 67108864;
61pub const AC_USAC_SCFGI3: u32 = 134217728;
62pub const AC_CM_DET_CFG_CHANGE: u32 = 1;
63pub const AC_CM_ALLOC_MEM: u32 = 2;
64pub const AC_EL_USAC_TW: u32 = 1;
65pub const AC_EL_USAC_NOISE: u32 = 2;
66pub const AC_EL_USAC_ITES: u32 = 4;
67pub const AC_EL_USAC_PVC: u32 = 8;
68pub const AC_EL_USAC_MPS212: u32 = 16;
69pub const AC_EL_USAC_LFE: u32 = 32;
70pub const AC_EL_USAC_CP_POSSIBLE: u32 = 64;
71pub const AC_EL_ENHANCED_NOISE: u32 = 128;
72pub const AC_EL_IGF_AFTER_TNS: u32 = 256;
73pub const AC_EL_IGF_INDEP_TILING: u32 = 512;
74pub const AC_EL_IGF_USE_ENF: u32 = 1024;
75pub const AC_EL_FULLBANDLPD: u32 = 2048;
76pub const AC_EL_LPDSTEREOIDX: u32 = 4096;
77pub const AC_EL_LFE: u32 = 8192;
78pub const CC_MPEG_ID: u32 = 1048576;
79pub const CC_IS_BASELAYER: u32 = 2097152;
80pub const CC_PROTECTION: u32 = 4194304;
81pub const CC_SBR: u32 = 8388608;
82pub const CC_SBRCRC: u32 = 65536;
83pub const CC_SAC: u32 = 131072;
84pub const CC_RVLC: u32 = 16777216;
85pub const CC_VCB11: u32 = 33554432;
86pub const CC_HCR: u32 = 67108864;
87pub const CC_PSEUDO_SURROUND: u32 = 134217728;
88pub const CC_USAC_NOISE: u32 = 268435456;
89pub const CC_USAC_TW: u32 = 536870912;
90pub const CC_USAC_HBE: u32 = 1073741824;
91pub const USAC_ID_BIT: u32 = 16;
92pub const EXT_ID_BITS: u32 = 4;
93pub const CAPF_AAC_LC: u32 = 1;
94pub const CAPF_ER_AAC_LD: u32 = 2;
95pub const CAPF_ER_AAC_SCAL: u32 = 4;
96pub const CAPF_ER_AAC_LC: u32 = 8;
97pub const CAPF_AAC_480: u32 = 16;
98pub const CAPF_AAC_512: u32 = 32;
99pub const CAPF_AAC_960: u32 = 64;
100pub const CAPF_AAC_1024: u32 = 128;
101pub const CAPF_AAC_HCR: u32 = 256;
102pub const CAPF_AAC_VCB11: u32 = 512;
103pub const CAPF_AAC_RVLC: u32 = 1024;
104pub const CAPF_AAC_MPEG4: u32 = 2048;
105pub const CAPF_AAC_DRC: u32 = 4096;
106pub const CAPF_AAC_CONCEALMENT: u32 = 8192;
107pub const CAPF_AAC_DRM_BSFORMAT: u32 = 16384;
108pub const CAPF_ER_AAC_ELD: u32 = 32768;
109pub const CAPF_ER_AAC_BSAC: u32 = 65536;
110pub const CAPF_AAC_ELD_DOWNSCALE: u32 = 262144;
111pub const CAPF_AAC_USAC_LP: u32 = 1048576;
112pub const CAPF_AAC_USAC: u32 = 2097152;
113pub const CAPF_ER_AAC_ELDV2: u32 = 8388608;
114pub const CAPF_AAC_UNIDRC: u32 = 16777216;
115pub const CAPF_ADTS: u32 = 1;
116pub const CAPF_ADIF: u32 = 2;
117pub const CAPF_LATM: u32 = 4;
118pub const CAPF_LOAS: u32 = 8;
119pub const CAPF_RAWPACKETS: u32 = 16;
120pub const CAPF_DRM: u32 = 32;
121pub const CAPF_RSVD50: u32 = 64;
122pub const CAPF_SBR_LP: u32 = 1;
123pub const CAPF_SBR_HQ: u32 = 2;
124pub const CAPF_SBR_DRM_BS: u32 = 4;
125pub const CAPF_SBR_CONCEALMENT: u32 = 8;
126pub const CAPF_SBR_DRC: u32 = 16;
127pub const CAPF_SBR_PS_MPEG: u32 = 32;
128pub const CAPF_SBR_PS_DRM: u32 = 64;
129pub const CAPF_SBR_ELD_DOWNSCALE: u32 = 128;
130pub const CAPF_SBR_HBEHQ: u32 = 256;
131pub const CAPF_DMX_BLIND: u32 = 1;
132pub const CAPF_DMX_PCE: u32 = 2;
133pub const CAPF_DMX_ARIB: u32 = 4;
134pub const CAPF_DMX_DVB: u32 = 8;
135pub const CAPF_DMX_CH_EXP: u32 = 16;
136pub const CAPF_DMX_6_CH: u32 = 32;
137pub const CAPF_DMX_8_CH: u32 = 64;
138pub const CAPF_DMX_24_CH: u32 = 128;
139pub const CAPF_LIMITER: u32 = 8192;
140pub const CAPF_MPS_STD: u32 = 1;
141pub const CAPF_MPS_LD: u32 = 2;
142pub const CAPF_MPS_USAC: u32 = 4;
143pub const CAPF_MPS_HQ: u32 = 16;
144pub const CAPF_MPS_LP: u32 = 32;
145pub const CAPF_MPS_BLIND: u32 = 64;
146pub const CAPF_MPS_BINAURAL: u32 = 128;
147pub const CAPF_MPS_2CH_OUT: u32 = 256;
148pub const CAPF_MPS_6CH_OUT: u32 = 512;
149pub const CAPF_MPS_8CH_OUT: u32 = 1024;
150pub const CAPF_MPS_1CH_IN: u32 = 4096;
151pub const CAPF_MPS_2CH_IN: u32 = 8192;
152pub const CAPF_MPS_6CH_IN: u32 = 16384;
153pub const AACDEC_CONCEAL: u32 = 1;
154pub const AACDEC_FLUSH: u32 = 2;
155pub const AACDEC_INTR: u32 = 4;
156pub const AACDEC_CLRHIST: u32 = 8;
157pub type size_t = ::std::os::raw::c_ulong;
158pub type wchar_t = ::std::os::raw::c_int;
159pub type max_align_t = u128;
160#[doc = " \\var  SCHAR"]
161#[doc = "        Data type representing at least 1 byte signed integer on all supported"]
162#[doc = " platforms."]
163#[doc = "        Data type representing at least 1 byte unsigned integer on all"]
164#[doc = " supported platforms."]
165#[doc = "        Data type representing at least 4 byte signed integer on all supported"]
166#[doc = " platforms."]
167#[doc = "        Data type representing at least 4 byte unsigned integer on all"]
168#[doc = " supported platforms."]
169#[doc = "        Data type representing 4 byte signed integer on all supported"]
170#[doc = " platforms."]
171#[doc = "        Data type representing 4 byte unsigned integer on all supported"]
172#[doc = " platforms."]
173#[doc = "        Data type representing 2 byte signed integer on all supported"]
174#[doc = " platforms."]
175#[doc = "        Data type representing 2 byte unsigned integer on all supported"]
176#[doc = " platforms."]
177#[doc = "        Data type representing 8 byte signed integer on all supported"]
178#[doc = " platforms."]
179#[doc = "        Data type representing 8 byte unsigned integer on all supported"]
180#[doc = " platforms."]
181#[doc = "        Number of bits the data type short represents. sizeof() is not suited"]
182#[doc = " to get this info, because a byte is not always defined as 8 bits."]
183#[doc = "        Number of bits the data type char represents. sizeof() is not suited"]
184#[doc = " to get this info, because a byte is not always defined as 8 bits."]
185#[doc = "        Data type representing the width of input and output PCM samples."]
186pub type INT = ::std::os::raw::c_int;
187pub type UINT = ::std::os::raw::c_uint;
188pub type SHORT = ::std::os::raw::c_short;
189pub type USHORT = ::std::os::raw::c_ushort;
190pub type SCHAR = ::std::os::raw::c_schar;
191pub type UCHAR = ::std::os::raw::c_uchar;
192pub type INT64 = ::std::os::raw::c_longlong;
193pub type UINT64 = ::std::os::raw::c_ulonglong;
194extern "C" {
195    pub fn __assert_rtn(
196        arg1: *const ::std::os::raw::c_char,
197        arg2: *const ::std::os::raw::c_char,
198        arg3: ::std::os::raw::c_int,
199        arg4: *const ::std::os::raw::c_char,
200    );
201}
202pub type INT_PCM = SHORT;
203pub const MEMORY_SECTION_SECT_DATA_L1: MEMORY_SECTION = 8192;
204pub const MEMORY_SECTION_SECT_DATA_L2: MEMORY_SECTION = 8193;
205pub const MEMORY_SECTION_SECT_DATA_L1_A: MEMORY_SECTION = 8194;
206pub const MEMORY_SECTION_SECT_DATA_L1_B: MEMORY_SECTION = 8195;
207pub const MEMORY_SECTION_SECT_CONSTDATA_L1: MEMORY_SECTION = 8196;
208pub const MEMORY_SECTION_SECT_DATA_EXTERN: MEMORY_SECTION = 16384;
209pub const MEMORY_SECTION_SECT_CONSTDATA_EXTERN: MEMORY_SECTION = 16385;
210#[doc = " Identifiers for various memory locations. They are used along with memory"]
211#[doc = " allocation functions like FDKcalloc_L() to specify the requested memory's"]
212#[doc = " location."]
213pub type MEMORY_SECTION = u32;
214extern "C" {
215    pub fn FDKprintf(szFmt: *const ::std::os::raw::c_char, ...);
216}
217extern "C" {
218    pub fn FDKprintfErr(szFmt: *const ::std::os::raw::c_char, ...);
219}
220extern "C" {
221    #[doc = " Wrapper for <stdio.h>'s getchar()."]
222    pub fn FDKgetchar() -> ::std::os::raw::c_int;
223}
224extern "C" {
225    pub fn FDKfprintf(
226        stream: *mut ::std::os::raw::c_void,
227        format: *const ::std::os::raw::c_char,
228        ...
229    ) -> INT;
230}
231extern "C" {
232    pub fn FDKsprintf(
233        str: *mut ::std::os::raw::c_char,
234        format: *const ::std::os::raw::c_char,
235        ...
236    ) -> INT;
237}
238extern "C" {
239    pub fn FDKstrchr(s: *mut ::std::os::raw::c_char, c: INT) -> *mut ::std::os::raw::c_char;
240}
241extern "C" {
242    pub fn FDKstrstr(
243        haystack: *const ::std::os::raw::c_char,
244        needle: *const ::std::os::raw::c_char,
245    ) -> *const ::std::os::raw::c_char;
246}
247extern "C" {
248    pub fn FDKstrcpy(
249        dest: *mut ::std::os::raw::c_char,
250        src: *const ::std::os::raw::c_char,
251    ) -> *mut ::std::os::raw::c_char;
252}
253extern "C" {
254    pub fn FDKstrncpy(
255        dest: *mut ::std::os::raw::c_char,
256        src: *const ::std::os::raw::c_char,
257        n: UINT,
258    ) -> *mut ::std::os::raw::c_char;
259}
260extern "C" {
261    pub fn FDKcalloc(n: UINT, size: UINT) -> *mut ::std::os::raw::c_void;
262}
263extern "C" {
264    pub fn FDKmalloc(size: UINT) -> *mut ::std::os::raw::c_void;
265}
266extern "C" {
267    pub fn FDKfree(ptr: *mut ::std::os::raw::c_void);
268}
269extern "C" {
270    #[doc = "  Allocate and clear an aligned memory area. Use FDKafree() instead of"]
271    #[doc = " FDKfree() for these memory areas."]
272    #[doc = ""]
273    #[doc = " \\param size       Size of requested memory in bytes."]
274    #[doc = " \\param alignment  Alignment of requested memory in bytes."]
275    #[doc = " \\return           Pointer to allocated memory."]
276    pub fn FDKaalloc(size: UINT, alignment: UINT) -> *mut ::std::os::raw::c_void;
277}
278extern "C" {
279    #[doc = "  Free an aligned memory area."]
280    #[doc = ""]
281    #[doc = " \\param ptr  Pointer to be freed."]
282    pub fn FDKafree(ptr: *mut ::std::os::raw::c_void);
283}
284extern "C" {
285    #[doc = "  Allocate memory in a specific memory section."]
286    #[doc = "  Requests can be made for internal or external memory. If internal memory is"]
287    #[doc = "  requested, FDKcalloc_L() first tries to use L1 memory, which sizes are"]
288    #[doc = " defined by ::DATA_L1_A_SIZE and ::DATA_L1_B_SIZE. If no L1 memory is"]
289    #[doc = " available, then FDKcalloc_L() tries to use L2 memory. If that fails as well,"]
290    #[doc = " the requested memory is allocated at an extern location using the fallback"]
291    #[doc = " FDKcalloc()."]
292    #[doc = ""]
293    #[doc = " \\param n     See MSDN documentation on calloc()."]
294    #[doc = " \\param size  See MSDN documentation on calloc()."]
295    #[doc = " \\param s     Memory section."]
296    #[doc = " \\return      See MSDN documentation on calloc()."]
297    pub fn FDKcalloc_L(n: UINT, size: UINT, s: MEMORY_SECTION) -> *mut ::std::os::raw::c_void;
298}
299extern "C" {
300    #[doc = "  Allocate aligned memory in a specific memory section."]
301    #[doc = "  See FDKcalloc_L() description for details - same applies here."]
302    pub fn FDKaalloc_L(
303        size: UINT,
304        alignment: UINT,
305        s: MEMORY_SECTION,
306    ) -> *mut ::std::os::raw::c_void;
307}
308extern "C" {
309    #[doc = "  Free memory that was allocated in a specific memory section."]
310    pub fn FDKfree_L(ptr: *mut ::std::os::raw::c_void);
311}
312extern "C" {
313    #[doc = "  Free aligned memory that was allocated in a specific memory section."]
314    pub fn FDKafree_L(ptr: *mut ::std::os::raw::c_void);
315}
316extern "C" {
317    #[doc = " Copy memory. Source and destination memory must not overlap."]
318    #[doc = " Either use implementation from a Standard Library, or, if no Standard Library"]
319    #[doc = " is available, a generic implementation."]
320    #[doc = " The define ::USE_BUILTIN_MEM_FUNCTIONS in genericStds.cpp controls what to"]
321    #[doc = " use. The function arguments correspond to the standard memcpy(). Please see"]
322    #[doc = " MSDN documentation for details on how to use it."]
323    pub fn FDKmemcpy(
324        dst: *mut ::std::os::raw::c_void,
325        src: *const ::std::os::raw::c_void,
326        size: UINT,
327    );
328}
329extern "C" {
330    #[doc = " Copy memory. Source and destination memory are allowed to overlap."]
331    #[doc = " Either use implementation from a Standard Library, or, if no Standard Library"]
332    #[doc = " is available, a generic implementation."]
333    #[doc = " The define ::USE_BUILTIN_MEM_FUNCTIONS in genericStds.cpp controls what to"]
334    #[doc = " use. The function arguments correspond to the standard memmove(). Please see"]
335    #[doc = " MSDN documentation for details on how to use it."]
336    pub fn FDKmemmove(
337        dst: *mut ::std::os::raw::c_void,
338        src: *const ::std::os::raw::c_void,
339        size: UINT,
340    );
341}
342extern "C" {
343    #[doc = " Clear memory."]
344    #[doc = " Either use implementation from a Standard Library, or, if no Standard Library"]
345    #[doc = " is available, a generic implementation."]
346    #[doc = " The define ::USE_BUILTIN_MEM_FUNCTIONS in genericStds.cpp controls what to"]
347    #[doc = " use. The function arguments correspond to the standard memclear(). Please see"]
348    #[doc = " MSDN documentation for details on how to use it."]
349    pub fn FDKmemclear(memPtr: *mut ::std::os::raw::c_void, size: UINT);
350}
351extern "C" {
352    #[doc = " Fill memory with values."]
353    #[doc = " The function arguments correspond to the standard memset(). Please see MSDN"]
354    #[doc = " documentation for details on how to use it."]
355    pub fn FDKmemset(memPtr: *mut ::std::os::raw::c_void, value: INT, size: UINT);
356}
357extern "C" {
358    pub fn FDKmemcmp(
359        s1: *const ::std::os::raw::c_void,
360        s2: *const ::std::os::raw::c_void,
361        size: UINT,
362    ) -> INT;
363}
364extern "C" {
365    pub fn FDKstrcmp(s1: *const ::std::os::raw::c_char, s2: *const ::std::os::raw::c_char) -> INT;
366}
367extern "C" {
368    pub fn FDKstrncmp(
369        s1: *const ::std::os::raw::c_char,
370        s2: *const ::std::os::raw::c_char,
371        size: UINT,
372    ) -> INT;
373}
374extern "C" {
375    pub fn FDKstrlen(s: *const ::std::os::raw::c_char) -> UINT;
376}
377extern "C" {
378    #[doc = "  Check platform for endianess."]
379    #[doc = ""]
380    #[doc = " \\return  1 if platform is little endian, non-1 if platform is big endian."]
381    pub fn IS_LITTLE_ENDIAN() -> ::std::os::raw::c_int;
382}
383extern "C" {
384    #[doc = "  Convert input value to little endian format."]
385    #[doc = ""]
386    #[doc = " \\param val  Value to be converted. It may be in both big or little endian."]
387    #[doc = " \\return     Value in little endian format."]
388    pub fn TO_LITTLE_ENDIAN(val: UINT) -> UINT;
389}
390#[doc = " \\fn     FDKFILE *FDKfopen(const char *filename, const char *mode);"]
391#[doc = "         Standard fopen() wrapper."]
392#[doc = " \\fn     INT FDKfclose(FDKFILE *FP);"]
393#[doc = "         Standard fclose() wrapper."]
394#[doc = " \\fn     INT FDKfseek(FDKFILE *FP, LONG OFFSET, int WHENCE);"]
395#[doc = "         Standard fseek() wrapper."]
396#[doc = " \\fn     INT FDKftell(FDKFILE *FP);"]
397#[doc = "         Standard ftell() wrapper."]
398#[doc = " \\fn     INT FDKfflush(FDKFILE *fp);"]
399#[doc = "         Standard fflush() wrapper."]
400#[doc = " \\fn     UINT FDKfwrite(const void *ptrf, INT size, UINT nmemb, FDKFILE *fp);"]
401#[doc = "         Standard fwrite() wrapper."]
402#[doc = " \\fn     UINT FDKfread(void *dst, INT size, UINT nmemb, FDKFILE *fp);"]
403#[doc = "         Standard fread() wrapper."]
404pub type FDKFILE = ::std::os::raw::c_void;
405extern "C" {
406    pub static FDKSEEK_SET: INT;
407}
408extern "C" {
409    pub static FDKSEEK_CUR: INT;
410}
411extern "C" {
412    pub static FDKSEEK_END: INT;
413}
414extern "C" {
415    pub fn FDKfopen(
416        filename: *const ::std::os::raw::c_char,
417        mode: *const ::std::os::raw::c_char,
418    ) -> *mut FDKFILE;
419}
420extern "C" {
421    pub fn FDKfclose(FP: *mut FDKFILE) -> INT;
422}
423extern "C" {
424    pub fn FDKfseek(FP: *mut FDKFILE, OFFSET: INT, WHENCE: ::std::os::raw::c_int) -> INT;
425}
426extern "C" {
427    pub fn FDKftell(FP: *mut FDKFILE) -> INT;
428}
429extern "C" {
430    pub fn FDKfflush(fp: *mut FDKFILE) -> INT;
431}
432extern "C" {
433    pub fn FDKfwrite(
434        ptrf: *const ::std::os::raw::c_void,
435        size: INT,
436        nmemb: UINT,
437        fp: *mut FDKFILE,
438    ) -> UINT;
439}
440extern "C" {
441    pub fn FDKfread(
442        dst: *mut ::std::os::raw::c_void,
443        size: INT,
444        nmemb: UINT,
445        fp: *mut FDKFILE,
446    ) -> UINT;
447}
448extern "C" {
449    pub fn FDKfgets(
450        dst: *mut ::std::os::raw::c_void,
451        size: INT,
452        fp: *mut FDKFILE,
453    ) -> *mut ::std::os::raw::c_char;
454}
455extern "C" {
456    pub fn FDKrewind(fp: *mut FDKFILE);
457}
458extern "C" {
459    pub fn FDKfeof(fp: *mut FDKFILE) -> INT;
460}
461extern "C" {
462    #[doc = " \\brief        Write each member in little endian order. Convert automatically"]
463    #[doc = " to host endianess."]
464    #[doc = " \\param ptrf   Pointer to memory where to read data from."]
465    #[doc = " \\param size   Size of each item to be written."]
466    #[doc = " \\param nmemb  Number of items to be written."]
467    #[doc = " \\param fp     File pointer of type FDKFILE."]
468    #[doc = " \\return       Number of items read on success and fread() error on failure."]
469    pub fn FDKfwrite_EL(
470        ptrf: *const ::std::os::raw::c_void,
471        size: INT,
472        nmemb: UINT,
473        fp: *mut FDKFILE,
474    ) -> UINT;
475}
476extern "C" {
477    #[doc = " \\brief        Read variable of size \"size\" as little endian. Convert"]
478    #[doc = " automatically to host endianess. 4-byte alignment is enforced for 24 bit"]
479    #[doc = " data, at 32 bit full scale."]
480    #[doc = " \\param dst    Pointer to memory where to store data into."]
481    #[doc = " \\param size   Size of each item to be read."]
482    #[doc = " \\param nmemb  Number of items to be read."]
483    #[doc = " \\param fp     File pointer of type FDKFILE."]
484    #[doc = " \\return       Number of items read on success and fread() error on failure."]
485    pub fn FDKfread_EL(
486        dst: *mut ::std::os::raw::c_void,
487        size: INT,
488        nmemb: UINT,
489        fp: *mut FDKFILE,
490    ) -> UINT;
491}
492extern "C" {
493    #[doc = " \\brief  Print FDK software disclaimer."]
494    pub fn FDKprintDisclaimer();
495}
496#[doc = " \\brief  Contains information needed for a single channel map."]
497#[repr(C)]
498#[derive(Debug, Copy, Clone)]
499pub struct CHANNEL_MAP_INFO {
500    #[doc = "< Actual channel mapping for one single configuration."]
501    pub pChannelMap: *const UCHAR,
502    #[doc = "< The number of channels for the channel map which is"]
503    #[doc = "the maximum used channel index+1."]
504    pub numChannels: UCHAR,
505}
506#[test]
507fn bindgen_test_layout_CHANNEL_MAP_INFO() {
508    assert_eq!(
509        ::std::mem::size_of::<CHANNEL_MAP_INFO>(),
510        16usize,
511        concat!("Size of: ", stringify!(CHANNEL_MAP_INFO))
512    );
513    assert_eq!(
514        ::std::mem::align_of::<CHANNEL_MAP_INFO>(),
515        8usize,
516        concat!("Alignment of ", stringify!(CHANNEL_MAP_INFO))
517    );
518    assert_eq!(
519        unsafe { &(*(::std::ptr::null::<CHANNEL_MAP_INFO>())).pChannelMap as *const _ as usize },
520        0usize,
521        concat!(
522            "Offset of field: ",
523            stringify!(CHANNEL_MAP_INFO),
524            "::",
525            stringify!(pChannelMap)
526        )
527    );
528    assert_eq!(
529        unsafe { &(*(::std::ptr::null::<CHANNEL_MAP_INFO>())).numChannels as *const _ as usize },
530        8usize,
531        concat!(
532            "Offset of field: ",
533            stringify!(CHANNEL_MAP_INFO),
534            "::",
535            stringify!(numChannels)
536        )
537    );
538}
539#[doc = " \\brief   This is the main data struct. It contains the mapping for all"]
540#[doc = " channel configurations such as administration information."]
541#[doc = ""]
542#[doc = " CAUTION: Do not access this structure directly from a algorithm specific"]
543#[doc = " library. Always use one of the API access functions below!"]
544#[repr(C)]
545#[derive(Debug, Copy, Clone)]
546pub struct FDK_channelMapDescr {
547    #[doc = "< Table of channel maps."]
548    pub pMapInfoTab: *const CHANNEL_MAP_INFO,
549    #[doc = "< Length of the channel map table array."]
550    pub mapInfoTabLen: UINT,
551    #[doc = "< Flag that defines whether the specified mapping shall"]
552    #[doc = "be applied  (value: 0) or the input just gets passed"]
553    #[doc = "through (MPEG mapping)."]
554    pub fPassThrough: UINT,
555}
556#[test]
557fn bindgen_test_layout_FDK_channelMapDescr() {
558    assert_eq!(
559        ::std::mem::size_of::<FDK_channelMapDescr>(),
560        16usize,
561        concat!("Size of: ", stringify!(FDK_channelMapDescr))
562    );
563    assert_eq!(
564        ::std::mem::align_of::<FDK_channelMapDescr>(),
565        8usize,
566        concat!("Alignment of ", stringify!(FDK_channelMapDescr))
567    );
568    assert_eq!(
569        unsafe { &(*(::std::ptr::null::<FDK_channelMapDescr>())).pMapInfoTab as *const _ as usize },
570        0usize,
571        concat!(
572            "Offset of field: ",
573            stringify!(FDK_channelMapDescr),
574            "::",
575            stringify!(pMapInfoTab)
576        )
577    );
578    assert_eq!(
579        unsafe {
580            &(*(::std::ptr::null::<FDK_channelMapDescr>())).mapInfoTabLen as *const _ as usize
581        },
582        8usize,
583        concat!(
584            "Offset of field: ",
585            stringify!(FDK_channelMapDescr),
586            "::",
587            stringify!(mapInfoTabLen)
588        )
589    );
590    assert_eq!(
591        unsafe {
592            &(*(::std::ptr::null::<FDK_channelMapDescr>())).fPassThrough as *const _ as usize
593        },
594        12usize,
595        concat!(
596            "Offset of field: ",
597            stringify!(FDK_channelMapDescr),
598            "::",
599            stringify!(fPassThrough)
600        )
601    );
602}
603extern "C" {
604    #[doc = " \\brief  Initialize a given channel map descriptor."]
605    #[doc = ""]
606    #[doc = " \\param  pMapDescr      Pointer to a channel map descriptor to be initialized."]
607    #[doc = " \\param  pMapInfoTab    Table of channel maps to initizalize the descriptor"]
608    #[doc = "with."]
609    #[doc = "                        If a NULL pointer is given a default table for"]
610    #[doc = "WAV-like mapping will be used."]
611    #[doc = " \\param  mapInfoTabLen  Length of the channel map table array (pMapInfoTab)."]
612    #[doc = "If a zero length is given a default table for WAV-like mapping will be used."]
613    #[doc = " \\param  fPassThrough   If the flag is set the reordering (given by"]
614    #[doc = "pMapInfoTab) will be bypassed."]
615    pub fn FDK_chMapDescr_init(
616        pMapDescr: *mut FDK_channelMapDescr,
617        pMapInfoTab: *const CHANNEL_MAP_INFO,
618        mapInfoTabLen: UINT,
619        fPassThrough: UINT,
620    );
621}
622extern "C" {
623    #[doc = " \\brief  Change the channel reordering state of a given channel map"]
624    #[doc = " descriptor."]
625    #[doc = ""]
626    #[doc = " \\param  pMapDescr     Pointer to a (initialized) channel map descriptor."]
627    #[doc = " \\param  fPassThrough  If the flag is set the reordering (given by"]
628    #[doc = " pMapInfoTab) will be bypassed."]
629    #[doc = " \\return               Value unequal to zero if set operation was not"]
630    #[doc = " successful. And zero on success."]
631    pub fn FDK_chMapDescr_setPassThrough(
632        pMapDescr: *mut FDK_channelMapDescr,
633        fPassThrough: UINT,
634    ) -> ::std::os::raw::c_int;
635}
636extern "C" {
637    #[doc = " \\brief  Get the mapping value for a specific channel and map index."]
638    #[doc = ""]
639    #[doc = " \\param  pMapDescr  Pointer to channel map descriptor."]
640    #[doc = " \\param  chIdx      Channel index."]
641    #[doc = " \\param  mapIdx     Mapping index (corresponding to the channel configuration"]
642    #[doc = " index)."]
643    #[doc = " \\return            Mapping value."]
644    pub fn FDK_chMapDescr_getMapValue(
645        pMapDescr: *const FDK_channelMapDescr,
646        chIdx: UCHAR,
647        mapIdx: UINT,
648    ) -> UCHAR;
649}
650extern "C" {
651    #[doc = " \\brief  Evaluate whether channel map descriptor is reasonable or not."]
652    #[doc = ""]
653    #[doc = " \\param  pMapDescr Pointer to channel map descriptor."]
654    #[doc = " \\return           Value unequal to zero if descriptor is valid, otherwise"]
655    #[doc = " zero."]
656    pub fn FDK_chMapDescr_isValid(pMapDescr: *const FDK_channelMapDescr) -> ::std::os::raw::c_int;
657}
658#[doc = "< Unknown format."]
659pub const FILE_FORMAT_FF_UNKNOWN: FILE_FORMAT = -1;
660#[doc = "< No container, bit stream data conveyed \"as is\"."]
661pub const FILE_FORMAT_FF_RAW: FILE_FORMAT = 0;
662#[doc = "< 3GPP file format."]
663pub const FILE_FORMAT_FF_MP4_3GPP: FILE_FORMAT = 3;
664#[doc = "< MPEG-4 File format."]
665pub const FILE_FORMAT_FF_MP4_MP4F: FILE_FORMAT = 4;
666#[doc = "< Proprietary raw packet file."]
667pub const FILE_FORMAT_FF_RAWPACKETS: FILE_FORMAT = 5;
668#[doc = " File format identifiers."]
669pub type FILE_FORMAT = i32;
670#[doc = "< Unknown format."]
671pub const TRANSPORT_TYPE_TT_UNKNOWN: TRANSPORT_TYPE = -1;
672#[doc = "< \"as is\" access units (packet based since there is"]
673#[doc = "obviously no sync layer)"]
674pub const TRANSPORT_TYPE_TT_MP4_RAW: TRANSPORT_TYPE = 0;
675#[doc = "< ADIF bitstream format."]
676pub const TRANSPORT_TYPE_TT_MP4_ADIF: TRANSPORT_TYPE = 1;
677#[doc = "< ADTS bitstream format."]
678pub const TRANSPORT_TYPE_TT_MP4_ADTS: TRANSPORT_TYPE = 2;
679#[doc = "< Audio Mux Elements with muxConfigPresent = 1"]
680pub const TRANSPORT_TYPE_TT_MP4_LATM_MCP1: TRANSPORT_TYPE = 6;
681#[doc = "< Audio Mux Elements with muxConfigPresent = 0, out"]
682#[doc = "of band StreamMuxConfig"]
683pub const TRANSPORT_TYPE_TT_MP4_LATM_MCP0: TRANSPORT_TYPE = 7;
684#[doc = "< Audio Sync Stream."]
685pub const TRANSPORT_TYPE_TT_MP4_LOAS: TRANSPORT_TYPE = 10;
686#[doc = "< Digital Radio Mondial (DRM30/DRM+) bitstream format."]
687pub const TRANSPORT_TYPE_TT_DRM: TRANSPORT_TYPE = 12;
688#[doc = " Transport type identifiers."]
689pub type TRANSPORT_TYPE = i32;
690pub const AUDIO_OBJECT_TYPE_AOT_NONE: AUDIO_OBJECT_TYPE = -1;
691pub const AUDIO_OBJECT_TYPE_AOT_NULL_OBJECT: AUDIO_OBJECT_TYPE = 0;
692#[doc = "< Main profile"]
693pub const AUDIO_OBJECT_TYPE_AOT_AAC_MAIN: AUDIO_OBJECT_TYPE = 1;
694#[doc = "< Low Complexity object"]
695pub const AUDIO_OBJECT_TYPE_AOT_AAC_LC: AUDIO_OBJECT_TYPE = 2;
696pub const AUDIO_OBJECT_TYPE_AOT_AAC_SSR: AUDIO_OBJECT_TYPE = 3;
697pub const AUDIO_OBJECT_TYPE_AOT_AAC_LTP: AUDIO_OBJECT_TYPE = 4;
698pub const AUDIO_OBJECT_TYPE_AOT_SBR: AUDIO_OBJECT_TYPE = 5;
699pub const AUDIO_OBJECT_TYPE_AOT_AAC_SCAL: AUDIO_OBJECT_TYPE = 6;
700pub const AUDIO_OBJECT_TYPE_AOT_TWIN_VQ: AUDIO_OBJECT_TYPE = 7;
701pub const AUDIO_OBJECT_TYPE_AOT_CELP: AUDIO_OBJECT_TYPE = 8;
702pub const AUDIO_OBJECT_TYPE_AOT_HVXC: AUDIO_OBJECT_TYPE = 9;
703#[doc = "< (reserved)"]
704pub const AUDIO_OBJECT_TYPE_AOT_RSVD_10: AUDIO_OBJECT_TYPE = 10;
705#[doc = "< (reserved)"]
706pub const AUDIO_OBJECT_TYPE_AOT_RSVD_11: AUDIO_OBJECT_TYPE = 11;
707#[doc = "< TTSI Object"]
708pub const AUDIO_OBJECT_TYPE_AOT_TTSI: AUDIO_OBJECT_TYPE = 12;
709#[doc = "< Main Synthetic object"]
710pub const AUDIO_OBJECT_TYPE_AOT_MAIN_SYNTH: AUDIO_OBJECT_TYPE = 13;
711#[doc = "< Wavetable Synthesis object"]
712pub const AUDIO_OBJECT_TYPE_AOT_WAV_TAB_SYNTH: AUDIO_OBJECT_TYPE = 14;
713#[doc = "< General MIDI object"]
714pub const AUDIO_OBJECT_TYPE_AOT_GEN_MIDI: AUDIO_OBJECT_TYPE = 15;
715#[doc = "< Algorithmic Synthesis and Audio FX object"]
716pub const AUDIO_OBJECT_TYPE_AOT_ALG_SYNTH_AUD_FX: AUDIO_OBJECT_TYPE = 16;
717#[doc = "< Error Resilient(ER) AAC Low Complexity"]
718pub const AUDIO_OBJECT_TYPE_AOT_ER_AAC_LC: AUDIO_OBJECT_TYPE = 17;
719#[doc = "< (reserved)"]
720pub const AUDIO_OBJECT_TYPE_AOT_RSVD_18: AUDIO_OBJECT_TYPE = 18;
721#[doc = "< Error Resilient(ER) AAC LTP object"]
722pub const AUDIO_OBJECT_TYPE_AOT_ER_AAC_LTP: AUDIO_OBJECT_TYPE = 19;
723#[doc = "< Error Resilient(ER) AAC Scalable object"]
724pub const AUDIO_OBJECT_TYPE_AOT_ER_AAC_SCAL: AUDIO_OBJECT_TYPE = 20;
725#[doc = "< Error Resilient(ER) TwinVQ object"]
726pub const AUDIO_OBJECT_TYPE_AOT_ER_TWIN_VQ: AUDIO_OBJECT_TYPE = 21;
727#[doc = "< Error Resilient(ER) BSAC object"]
728pub const AUDIO_OBJECT_TYPE_AOT_ER_BSAC: AUDIO_OBJECT_TYPE = 22;
729#[doc = "< Error Resilient(ER) AAC LowDelay object"]
730pub const AUDIO_OBJECT_TYPE_AOT_ER_AAC_LD: AUDIO_OBJECT_TYPE = 23;
731#[doc = "< Error Resilient(ER) CELP object"]
732pub const AUDIO_OBJECT_TYPE_AOT_ER_CELP: AUDIO_OBJECT_TYPE = 24;
733#[doc = "< Error Resilient(ER) HVXC object"]
734pub const AUDIO_OBJECT_TYPE_AOT_ER_HVXC: AUDIO_OBJECT_TYPE = 25;
735#[doc = "< Error Resilient(ER) HILN object"]
736pub const AUDIO_OBJECT_TYPE_AOT_ER_HILN: AUDIO_OBJECT_TYPE = 26;
737#[doc = "< Error Resilient(ER) Parametric object"]
738pub const AUDIO_OBJECT_TYPE_AOT_ER_PARA: AUDIO_OBJECT_TYPE = 27;
739#[doc = "< might become SSC"]
740pub const AUDIO_OBJECT_TYPE_AOT_RSVD_28: AUDIO_OBJECT_TYPE = 28;
741#[doc = "< PS, Parametric Stereo (includes SBR)"]
742pub const AUDIO_OBJECT_TYPE_AOT_PS: AUDIO_OBJECT_TYPE = 29;
743#[doc = "< MPEG Surround"]
744pub const AUDIO_OBJECT_TYPE_AOT_MPEGS: AUDIO_OBJECT_TYPE = 30;
745#[doc = "< Signal AOT uses more than 5 bits"]
746pub const AUDIO_OBJECT_TYPE_AOT_ESCAPE: AUDIO_OBJECT_TYPE = 31;
747#[doc = "< MPEG-Layer1 in mp4"]
748pub const AUDIO_OBJECT_TYPE_AOT_MP3ONMP4_L1: AUDIO_OBJECT_TYPE = 32;
749#[doc = "< MPEG-Layer2 in mp4"]
750pub const AUDIO_OBJECT_TYPE_AOT_MP3ONMP4_L2: AUDIO_OBJECT_TYPE = 33;
751#[doc = "< MPEG-Layer3 in mp4"]
752pub const AUDIO_OBJECT_TYPE_AOT_MP3ONMP4_L3: AUDIO_OBJECT_TYPE = 34;
753#[doc = "< might become DST"]
754pub const AUDIO_OBJECT_TYPE_AOT_RSVD_35: AUDIO_OBJECT_TYPE = 35;
755#[doc = "< might become ALS"]
756pub const AUDIO_OBJECT_TYPE_AOT_RSVD_36: AUDIO_OBJECT_TYPE = 36;
757#[doc = "< AAC + SLS"]
758pub const AUDIO_OBJECT_TYPE_AOT_AAC_SLS: AUDIO_OBJECT_TYPE = 37;
759#[doc = "< SLS"]
760pub const AUDIO_OBJECT_TYPE_AOT_SLS: AUDIO_OBJECT_TYPE = 38;
761#[doc = "< AAC Enhanced Low Delay"]
762pub const AUDIO_OBJECT_TYPE_AOT_ER_AAC_ELD: AUDIO_OBJECT_TYPE = 39;
763#[doc = "< USAC"]
764pub const AUDIO_OBJECT_TYPE_AOT_USAC: AUDIO_OBJECT_TYPE = 42;
765#[doc = "< SAOC"]
766pub const AUDIO_OBJECT_TYPE_AOT_SAOC: AUDIO_OBJECT_TYPE = 43;
767#[doc = "< Low Delay MPEG Surround"]
768pub const AUDIO_OBJECT_TYPE_AOT_LD_MPEGS: AUDIO_OBJECT_TYPE = 44;
769#[doc = "< Virtual AOT MP2 Low Complexity profile"]
770pub const AUDIO_OBJECT_TYPE_AOT_MP2_AAC_LC: AUDIO_OBJECT_TYPE = 129;
771#[doc = "< Virtual AOT MP2 Low Complexity Profile with SBR"]
772pub const AUDIO_OBJECT_TYPE_AOT_MP2_SBR: AUDIO_OBJECT_TYPE = 132;
773#[doc = "< Virtual AOT for DRM (ER-AAC-SCAL without SBR)"]
774pub const AUDIO_OBJECT_TYPE_AOT_DRM_AAC: AUDIO_OBJECT_TYPE = 143;
775#[doc = "< Virtual AOT for DRM (ER-AAC-SCAL with SBR)"]
776pub const AUDIO_OBJECT_TYPE_AOT_DRM_SBR: AUDIO_OBJECT_TYPE = 144;
777pub const AUDIO_OBJECT_TYPE_AOT_DRM_MPEG_PS: AUDIO_OBJECT_TYPE = 145;
778pub const AUDIO_OBJECT_TYPE_AOT_DRM_SURROUND: AUDIO_OBJECT_TYPE = 146;
779#[doc = "< Virtual AOT for DRM with USAC"]
780pub const AUDIO_OBJECT_TYPE_AOT_DRM_USAC: AUDIO_OBJECT_TYPE = 147;
781#[doc = " Audio Object Type definitions."]
782pub type AUDIO_OBJECT_TYPE = i32;
783pub const CHANNEL_MODE_MODE_INVALID: CHANNEL_MODE = -1;
784pub const CHANNEL_MODE_MODE_UNKNOWN: CHANNEL_MODE = 0;
785#[doc = "< C"]
786pub const CHANNEL_MODE_MODE_1: CHANNEL_MODE = 1;
787#[doc = "< L+R"]
788pub const CHANNEL_MODE_MODE_2: CHANNEL_MODE = 2;
789#[doc = "< C, L+R"]
790pub const CHANNEL_MODE_MODE_1_2: CHANNEL_MODE = 3;
791#[doc = "< C, L+R, Rear"]
792pub const CHANNEL_MODE_MODE_1_2_1: CHANNEL_MODE = 4;
793#[doc = "< C, L+R, LS+RS"]
794pub const CHANNEL_MODE_MODE_1_2_2: CHANNEL_MODE = 5;
795#[doc = "< C, L+R, LS+RS, LFE"]
796pub const CHANNEL_MODE_MODE_1_2_2_1: CHANNEL_MODE = 6;
797#[doc = "< C, LC+RC, L+R, LS+RS, LFE"]
798pub const CHANNEL_MODE_MODE_1_2_2_2_1: CHANNEL_MODE = 7;
799#[doc = "< C, L+R, LS+RS, Crear, LFE"]
800pub const CHANNEL_MODE_MODE_6_1: CHANNEL_MODE = 11;
801#[doc = "< C, L+R, LS+RS, Lrear+Rrear, LFE"]
802pub const CHANNEL_MODE_MODE_7_1_BACK: CHANNEL_MODE = 12;
803#[doc = "< C, L+R, LS+RS, LFE, Ltop+Rtop"]
804pub const CHANNEL_MODE_MODE_7_1_TOP_FRONT: CHANNEL_MODE = 14;
805#[doc = "< C, L+R, LS+RS, Lrear+Rrear, LFE"]
806pub const CHANNEL_MODE_MODE_7_1_REAR_SURROUND: CHANNEL_MODE = 33;
807#[doc = "< C, LC+RC, L+R, LS+RS, LFE"]
808pub const CHANNEL_MODE_MODE_7_1_FRONT_CENTER: CHANNEL_MODE = 34;
809#[doc = "< 212 configuration, used in ELDv2"]
810pub const CHANNEL_MODE_MODE_212: CHANNEL_MODE = 128;
811#[doc = " Channel Mode ( 1-7 equals MPEG channel configurations, others are"]
812#[doc = " arbitrary)."]
813pub type CHANNEL_MODE = i32;
814pub const AUDIO_CHANNEL_TYPE_ACT_NONE: AUDIO_CHANNEL_TYPE = 0;
815#[doc = "< Front speaker position (at normal height)"]
816pub const AUDIO_CHANNEL_TYPE_ACT_FRONT: AUDIO_CHANNEL_TYPE = 1;
817#[doc = "< Side speaker position (at normal height)"]
818pub const AUDIO_CHANNEL_TYPE_ACT_SIDE: AUDIO_CHANNEL_TYPE = 2;
819#[doc = "< Back speaker position (at normal height)"]
820pub const AUDIO_CHANNEL_TYPE_ACT_BACK: AUDIO_CHANNEL_TYPE = 3;
821#[doc = "< Low frequency effect speaker postion (front)"]
822pub const AUDIO_CHANNEL_TYPE_ACT_LFE: AUDIO_CHANNEL_TYPE = 4;
823pub const AUDIO_CHANNEL_TYPE_ACT_TOP: AUDIO_CHANNEL_TYPE = 16;
824#[doc = "< Top front speaker = (ACT_FRONT|ACT_TOP)"]
825pub const AUDIO_CHANNEL_TYPE_ACT_FRONT_TOP: AUDIO_CHANNEL_TYPE = 17;
826#[doc = "< Top side speaker  = (ACT_SIDE |ACT_TOP)"]
827pub const AUDIO_CHANNEL_TYPE_ACT_SIDE_TOP: AUDIO_CHANNEL_TYPE = 18;
828#[doc = "< Top back speaker  = (ACT_BACK |ACT_TOP)"]
829pub const AUDIO_CHANNEL_TYPE_ACT_BACK_TOP: AUDIO_CHANNEL_TYPE = 19;
830pub const AUDIO_CHANNEL_TYPE_ACT_BOTTOM: AUDIO_CHANNEL_TYPE = 32;
831#[doc = "< Bottom front speaker = (ACT_FRONT|ACT_BOTTOM)"]
832pub const AUDIO_CHANNEL_TYPE_ACT_FRONT_BOTTOM: AUDIO_CHANNEL_TYPE = 33;
833#[doc = "< Bottom side speaker  = (ACT_SIDE |ACT_BOTTOM)"]
834pub const AUDIO_CHANNEL_TYPE_ACT_SIDE_BOTTOM: AUDIO_CHANNEL_TYPE = 34;
835#[doc = "< Bottom back speaker  = (ACT_BACK |ACT_BOTTOM)"]
836pub const AUDIO_CHANNEL_TYPE_ACT_BACK_BOTTOM: AUDIO_CHANNEL_TYPE = 35;
837#[doc = " Speaker description tags."]
838#[doc = " Do not change the enumeration values unless it keeps the following"]
839#[doc = " segmentation:"]
840#[doc = " - Bit 0-3: Horizontal postion (0: none, 1: front, 2: side, 3: back, 4: lfe)"]
841#[doc = " - Bit 4-7: Vertical position (0: normal, 1: top, 2: bottom)"]
842pub type AUDIO_CHANNEL_TYPE = u32;
843pub const SBR_PS_SIGNALING_SIG_UNKNOWN: SBR_PS_SIGNALING = -1;
844pub const SBR_PS_SIGNALING_SIG_IMPLICIT: SBR_PS_SIGNALING = 0;
845pub const SBR_PS_SIGNALING_SIG_EXPLICIT_BW_COMPATIBLE: SBR_PS_SIGNALING = 1;
846pub const SBR_PS_SIGNALING_SIG_EXPLICIT_HIERARCHICAL: SBR_PS_SIGNALING = 2;
847pub type SBR_PS_SIGNALING = i32;
848#[doc = " Generic audio coder configuration structure."]
849#[repr(C)]
850#[derive(Copy, Clone)]
851pub struct CODER_CONFIG {
852    #[doc = "< Audio Object Type (AOT)."]
853    pub aot: AUDIO_OBJECT_TYPE,
854    #[doc = "< Extension Audio Object Type (SBR)."]
855    pub extAOT: AUDIO_OBJECT_TYPE,
856    #[doc = "< Channel mode."]
857    pub channelMode: CHANNEL_MODE,
858    #[doc = "< Use channel config zero + pce although a"]
859    #[doc = "standard channel config could be signaled."]
860    pub channelConfigZero: UCHAR,
861    #[doc = "< Sampling rate."]
862    pub samplingRate: INT,
863    #[doc = "< Extended samplerate (SBR)."]
864    pub extSamplingRate: INT,
865    #[doc = "< Downscale sampling rate (ELD downscaled mode)"]
866    pub downscaleSamplingRate: INT,
867    #[doc = "< Average bitrate."]
868    pub bitRate: INT,
869    #[doc = "< Number of PCM samples per codec frame and audio"]
870    #[doc = "channel."]
871    pub samplesPerFrame: ::std::os::raw::c_int,
872    #[doc = "< Number of audio channels."]
873    pub noChannels: ::std::os::raw::c_int,
874    pub bitsFrame: ::std::os::raw::c_int,
875    #[doc = "< Amount of encoder subframes. 1 means no subframing."]
876    pub nSubFrames: ::std::os::raw::c_int,
877    #[doc = "< The number of the sub-frames which are grouped and"]
878    #[doc = "transmitted in a super-frame (BSAC)."]
879    pub BSACnumOfSubFrame: ::std::os::raw::c_int,
880    #[doc = "< The average length of the large-step layers in bytes"]
881    #[doc = "(BSAC)."]
882    pub BSAClayerLength: ::std::os::raw::c_int,
883    #[doc = "< flags"]
884    pub flags: UINT,
885    #[doc = "< Matrix mixdown index to put into PCE. Default value"]
886    #[doc = "0 means no mixdown coefficient, valid values are 1-4"]
887    #[doc = "which correspond to matrix_mixdown_idx 0-3."]
888    pub matrixMixdownA: UCHAR,
889    #[doc = "< Frame period for sending in band configuration"]
890    #[doc = "buffers in the transport layer."]
891    pub headerPeriod: UCHAR,
892    #[doc = "< USAC MPS stereo mode"]
893    pub stereoConfigIndex: UCHAR,
894    #[doc = "< USAC SBR mode"]
895    pub sbrMode: UCHAR,
896    #[doc = "< 0: implicit signaling, 1: backwards"]
897    #[doc = "compatible explicit signaling, 2:"]
898    #[doc = "hierarcical explicit signaling"]
899    pub sbrSignaling: SBR_PS_SIGNALING,
900    #[doc = "< raw codec specific config as bit stream"]
901    pub rawConfig: [UCHAR; 64usize],
902    #[doc = "< Size of rawConfig in bits"]
903    pub rawConfigBits: ::std::os::raw::c_int,
904    pub sbrPresent: UCHAR,
905    pub psPresent: UCHAR,
906}
907#[test]
908fn bindgen_test_layout_CODER_CONFIG() {
909    assert_eq!(
910        ::std::mem::size_of::<CODER_CONFIG>(),
911        140usize,
912        concat!("Size of: ", stringify!(CODER_CONFIG))
913    );
914    assert_eq!(
915        ::std::mem::align_of::<CODER_CONFIG>(),
916        4usize,
917        concat!("Alignment of ", stringify!(CODER_CONFIG))
918    );
919    assert_eq!(
920        unsafe { &(*(::std::ptr::null::<CODER_CONFIG>())).aot as *const _ as usize },
921        0usize,
922        concat!(
923            "Offset of field: ",
924            stringify!(CODER_CONFIG),
925            "::",
926            stringify!(aot)
927        )
928    );
929    assert_eq!(
930        unsafe { &(*(::std::ptr::null::<CODER_CONFIG>())).extAOT as *const _ as usize },
931        4usize,
932        concat!(
933            "Offset of field: ",
934            stringify!(CODER_CONFIG),
935            "::",
936            stringify!(extAOT)
937        )
938    );
939    assert_eq!(
940        unsafe { &(*(::std::ptr::null::<CODER_CONFIG>())).channelMode as *const _ as usize },
941        8usize,
942        concat!(
943            "Offset of field: ",
944            stringify!(CODER_CONFIG),
945            "::",
946            stringify!(channelMode)
947        )
948    );
949    assert_eq!(
950        unsafe { &(*(::std::ptr::null::<CODER_CONFIG>())).channelConfigZero as *const _ as usize },
951        12usize,
952        concat!(
953            "Offset of field: ",
954            stringify!(CODER_CONFIG),
955            "::",
956            stringify!(channelConfigZero)
957        )
958    );
959    assert_eq!(
960        unsafe { &(*(::std::ptr::null::<CODER_CONFIG>())).samplingRate as *const _ as usize },
961        16usize,
962        concat!(
963            "Offset of field: ",
964            stringify!(CODER_CONFIG),
965            "::",
966            stringify!(samplingRate)
967        )
968    );
969    assert_eq!(
970        unsafe { &(*(::std::ptr::null::<CODER_CONFIG>())).extSamplingRate as *const _ as usize },
971        20usize,
972        concat!(
973            "Offset of field: ",
974            stringify!(CODER_CONFIG),
975            "::",
976            stringify!(extSamplingRate)
977        )
978    );
979    assert_eq!(
980        unsafe {
981            &(*(::std::ptr::null::<CODER_CONFIG>())).downscaleSamplingRate as *const _ as usize
982        },
983        24usize,
984        concat!(
985            "Offset of field: ",
986            stringify!(CODER_CONFIG),
987            "::",
988            stringify!(downscaleSamplingRate)
989        )
990    );
991    assert_eq!(
992        unsafe { &(*(::std::ptr::null::<CODER_CONFIG>())).bitRate as *const _ as usize },
993        28usize,
994        concat!(
995            "Offset of field: ",
996            stringify!(CODER_CONFIG),
997            "::",
998            stringify!(bitRate)
999        )
1000    );
1001    assert_eq!(
1002        unsafe { &(*(::std::ptr::null::<CODER_CONFIG>())).samplesPerFrame as *const _ as usize },
1003        32usize,
1004        concat!(
1005            "Offset of field: ",
1006            stringify!(CODER_CONFIG),
1007            "::",
1008            stringify!(samplesPerFrame)
1009        )
1010    );
1011    assert_eq!(
1012        unsafe { &(*(::std::ptr::null::<CODER_CONFIG>())).noChannels as *const _ as usize },
1013        36usize,
1014        concat!(
1015            "Offset of field: ",
1016            stringify!(CODER_CONFIG),
1017            "::",
1018            stringify!(noChannels)
1019        )
1020    );
1021    assert_eq!(
1022        unsafe { &(*(::std::ptr::null::<CODER_CONFIG>())).bitsFrame as *const _ as usize },
1023        40usize,
1024        concat!(
1025            "Offset of field: ",
1026            stringify!(CODER_CONFIG),
1027            "::",
1028            stringify!(bitsFrame)
1029        )
1030    );
1031    assert_eq!(
1032        unsafe { &(*(::std::ptr::null::<CODER_CONFIG>())).nSubFrames as *const _ as usize },
1033        44usize,
1034        concat!(
1035            "Offset of field: ",
1036            stringify!(CODER_CONFIG),
1037            "::",
1038            stringify!(nSubFrames)
1039        )
1040    );
1041    assert_eq!(
1042        unsafe { &(*(::std::ptr::null::<CODER_CONFIG>())).BSACnumOfSubFrame as *const _ as usize },
1043        48usize,
1044        concat!(
1045            "Offset of field: ",
1046            stringify!(CODER_CONFIG),
1047            "::",
1048            stringify!(BSACnumOfSubFrame)
1049        )
1050    );
1051    assert_eq!(
1052        unsafe { &(*(::std::ptr::null::<CODER_CONFIG>())).BSAClayerLength as *const _ as usize },
1053        52usize,
1054        concat!(
1055            "Offset of field: ",
1056            stringify!(CODER_CONFIG),
1057            "::",
1058            stringify!(BSAClayerLength)
1059        )
1060    );
1061    assert_eq!(
1062        unsafe { &(*(::std::ptr::null::<CODER_CONFIG>())).flags as *const _ as usize },
1063        56usize,
1064        concat!(
1065            "Offset of field: ",
1066            stringify!(CODER_CONFIG),
1067            "::",
1068            stringify!(flags)
1069        )
1070    );
1071    assert_eq!(
1072        unsafe { &(*(::std::ptr::null::<CODER_CONFIG>())).matrixMixdownA as *const _ as usize },
1073        60usize,
1074        concat!(
1075            "Offset of field: ",
1076            stringify!(CODER_CONFIG),
1077            "::",
1078            stringify!(matrixMixdownA)
1079        )
1080    );
1081    assert_eq!(
1082        unsafe { &(*(::std::ptr::null::<CODER_CONFIG>())).headerPeriod as *const _ as usize },
1083        61usize,
1084        concat!(
1085            "Offset of field: ",
1086            stringify!(CODER_CONFIG),
1087            "::",
1088            stringify!(headerPeriod)
1089        )
1090    );
1091    assert_eq!(
1092        unsafe { &(*(::std::ptr::null::<CODER_CONFIG>())).stereoConfigIndex as *const _ as usize },
1093        62usize,
1094        concat!(
1095            "Offset of field: ",
1096            stringify!(CODER_CONFIG),
1097            "::",
1098            stringify!(stereoConfigIndex)
1099        )
1100    );
1101    assert_eq!(
1102        unsafe { &(*(::std::ptr::null::<CODER_CONFIG>())).sbrMode as *const _ as usize },
1103        63usize,
1104        concat!(
1105            "Offset of field: ",
1106            stringify!(CODER_CONFIG),
1107            "::",
1108            stringify!(sbrMode)
1109        )
1110    );
1111    assert_eq!(
1112        unsafe { &(*(::std::ptr::null::<CODER_CONFIG>())).sbrSignaling as *const _ as usize },
1113        64usize,
1114        concat!(
1115            "Offset of field: ",
1116            stringify!(CODER_CONFIG),
1117            "::",
1118            stringify!(sbrSignaling)
1119        )
1120    );
1121    assert_eq!(
1122        unsafe { &(*(::std::ptr::null::<CODER_CONFIG>())).rawConfig as *const _ as usize },
1123        68usize,
1124        concat!(
1125            "Offset of field: ",
1126            stringify!(CODER_CONFIG),
1127            "::",
1128            stringify!(rawConfig)
1129        )
1130    );
1131    assert_eq!(
1132        unsafe { &(*(::std::ptr::null::<CODER_CONFIG>())).rawConfigBits as *const _ as usize },
1133        132usize,
1134        concat!(
1135            "Offset of field: ",
1136            stringify!(CODER_CONFIG),
1137            "::",
1138            stringify!(rawConfigBits)
1139        )
1140    );
1141    assert_eq!(
1142        unsafe { &(*(::std::ptr::null::<CODER_CONFIG>())).sbrPresent as *const _ as usize },
1143        136usize,
1144        concat!(
1145            "Offset of field: ",
1146            stringify!(CODER_CONFIG),
1147            "::",
1148            stringify!(sbrPresent)
1149        )
1150    );
1151    assert_eq!(
1152        unsafe { &(*(::std::ptr::null::<CODER_CONFIG>())).psPresent as *const _ as usize },
1153        137usize,
1154        concat!(
1155            "Offset of field: ",
1156            stringify!(CODER_CONFIG),
1157            "::",
1158            stringify!(psPresent)
1159        )
1160    );
1161}
1162#[doc = "< Invalid Element helper ID."]
1163pub const MP4_ELEMENT_ID_ID_NONE: MP4_ELEMENT_ID = -1;
1164#[doc = "< Single Channel Element."]
1165pub const MP4_ELEMENT_ID_ID_SCE: MP4_ELEMENT_ID = 0;
1166#[doc = "< Channel Pair Element."]
1167pub const MP4_ELEMENT_ID_ID_CPE: MP4_ELEMENT_ID = 1;
1168#[doc = "< Coupling Channel Element."]
1169pub const MP4_ELEMENT_ID_ID_CCE: MP4_ELEMENT_ID = 2;
1170#[doc = "< LFE Channel Element."]
1171pub const MP4_ELEMENT_ID_ID_LFE: MP4_ELEMENT_ID = 3;
1172#[doc = "< Currently one Data Stream Element for ancillary data is"]
1173#[doc = "supported."]
1174pub const MP4_ELEMENT_ID_ID_DSE: MP4_ELEMENT_ID = 4;
1175#[doc = "< Program Config Element."]
1176pub const MP4_ELEMENT_ID_ID_PCE: MP4_ELEMENT_ID = 5;
1177#[doc = "< Fill Element."]
1178pub const MP4_ELEMENT_ID_ID_FIL: MP4_ELEMENT_ID = 6;
1179#[doc = "< Arnie (End Element = Terminator)."]
1180pub const MP4_ELEMENT_ID_ID_END: MP4_ELEMENT_ID = 7;
1181#[doc = "< Extension Payload (ER only)."]
1182pub const MP4_ELEMENT_ID_ID_EXT: MP4_ELEMENT_ID = 8;
1183#[doc = "< AAC scalable element (ER only)."]
1184pub const MP4_ELEMENT_ID_ID_SCAL: MP4_ELEMENT_ID = 9;
1185#[doc = "< Single Channel Element."]
1186pub const MP4_ELEMENT_ID_ID_USAC_SCE: MP4_ELEMENT_ID = 16;
1187#[doc = "< Channel Pair Element."]
1188pub const MP4_ELEMENT_ID_ID_USAC_CPE: MP4_ELEMENT_ID = 17;
1189#[doc = "< LFE Channel Element."]
1190pub const MP4_ELEMENT_ID_ID_USAC_LFE: MP4_ELEMENT_ID = 18;
1191#[doc = "< Extension Element."]
1192pub const MP4_ELEMENT_ID_ID_USAC_EXT: MP4_ELEMENT_ID = 19;
1193#[doc = "< Arnie (End Element = Terminator)."]
1194pub const MP4_ELEMENT_ID_ID_USAC_END: MP4_ELEMENT_ID = 20;
1195pub const MP4_ELEMENT_ID_ID_LAST: MP4_ELEMENT_ID = 21;
1196#[doc = " MP4 Element IDs."]
1197pub type MP4_ELEMENT_ID = i32;
1198pub const CONFIG_EXT_ID_ID_CONFIG_EXT_FILL: CONFIG_EXT_ID = 0;
1199pub const CONFIG_EXT_ID_ID_CONFIG_EXT_DOWNMIX: CONFIG_EXT_ID = 1;
1200pub const CONFIG_EXT_ID_ID_CONFIG_EXT_LOUDNESS_INFO: CONFIG_EXT_ID = 2;
1201pub const CONFIG_EXT_ID_ID_CONFIG_EXT_AUDIOSCENE_INFO: CONFIG_EXT_ID = 3;
1202pub const CONFIG_EXT_ID_ID_CONFIG_EXT_HOA_MATRIX: CONFIG_EXT_ID = 4;
1203pub const CONFIG_EXT_ID_ID_CONFIG_EXT_SIG_GROUP_INFO: CONFIG_EXT_ID = 6;
1204pub type CONFIG_EXT_ID = u32;
1205pub const EXT_PAYLOAD_TYPE_EXT_FIL: EXT_PAYLOAD_TYPE = 0;
1206pub const EXT_PAYLOAD_TYPE_EXT_FILL_DATA: EXT_PAYLOAD_TYPE = 1;
1207pub const EXT_PAYLOAD_TYPE_EXT_DATA_ELEMENT: EXT_PAYLOAD_TYPE = 2;
1208pub const EXT_PAYLOAD_TYPE_EXT_DATA_LENGTH: EXT_PAYLOAD_TYPE = 3;
1209pub const EXT_PAYLOAD_TYPE_EXT_UNI_DRC: EXT_PAYLOAD_TYPE = 4;
1210pub const EXT_PAYLOAD_TYPE_EXT_LDSAC_DATA: EXT_PAYLOAD_TYPE = 9;
1211pub const EXT_PAYLOAD_TYPE_EXT_SAOC_DATA: EXT_PAYLOAD_TYPE = 10;
1212pub const EXT_PAYLOAD_TYPE_EXT_DYNAMIC_RANGE: EXT_PAYLOAD_TYPE = 11;
1213pub const EXT_PAYLOAD_TYPE_EXT_SAC_DATA: EXT_PAYLOAD_TYPE = 12;
1214pub const EXT_PAYLOAD_TYPE_EXT_SBR_DATA: EXT_PAYLOAD_TYPE = 13;
1215pub const EXT_PAYLOAD_TYPE_EXT_SBR_DATA_CRC: EXT_PAYLOAD_TYPE = 14;
1216#[doc = " Extension payload types."]
1217pub type EXT_PAYLOAD_TYPE = u32;
1218pub const USAC_EXT_ELEMENT_TYPE_ID_EXT_ELE_FILL: USAC_EXT_ELEMENT_TYPE = 0;
1219pub const USAC_EXT_ELEMENT_TYPE_ID_EXT_ELE_MPEGS: USAC_EXT_ELEMENT_TYPE = 1;
1220pub const USAC_EXT_ELEMENT_TYPE_ID_EXT_ELE_SAOC: USAC_EXT_ELEMENT_TYPE = 2;
1221pub const USAC_EXT_ELEMENT_TYPE_ID_EXT_ELE_AUDIOPREROLL: USAC_EXT_ELEMENT_TYPE = 3;
1222pub const USAC_EXT_ELEMENT_TYPE_ID_EXT_ELE_UNI_DRC: USAC_EXT_ELEMENT_TYPE = 4;
1223pub const USAC_EXT_ELEMENT_TYPE_ID_EXT_ELE_OBJ_METADATA: USAC_EXT_ELEMENT_TYPE = 5;
1224pub const USAC_EXT_ELEMENT_TYPE_ID_EXT_ELE_SAOC_3D: USAC_EXT_ELEMENT_TYPE = 6;
1225pub const USAC_EXT_ELEMENT_TYPE_ID_EXT_ELE_HOA: USAC_EXT_ELEMENT_TYPE = 7;
1226pub const USAC_EXT_ELEMENT_TYPE_ID_EXT_ELE_FMT_CNVRTR: USAC_EXT_ELEMENT_TYPE = 8;
1227pub const USAC_EXT_ELEMENT_TYPE_ID_EXT_ELE_MCT: USAC_EXT_ELEMENT_TYPE = 9;
1228pub const USAC_EXT_ELEMENT_TYPE_ID_EXT_ELE_ENHANCED_OBJ_METADATA: USAC_EXT_ELEMENT_TYPE = 13;
1229pub const USAC_EXT_ELEMENT_TYPE_ID_EXT_ELE_VR_METADATA: USAC_EXT_ELEMENT_TYPE = 129;
1230pub const USAC_EXT_ELEMENT_TYPE_ID_EXT_ELE_UNKNOWN: USAC_EXT_ELEMENT_TYPE = 255;
1231#[doc = " MPEG-D USAC & RSVD60 3D audio Extension Element Types."]
1232pub type USAC_EXT_ELEMENT_TYPE = u32;
1233pub const TP_CONFIG_TYPE_TC_NOTHING: TP_CONFIG_TYPE = 0;
1234pub const TP_CONFIG_TYPE_TC_RAW_ADTS: TP_CONFIG_TYPE = 2;
1235pub const TP_CONFIG_TYPE_TC_RAW_LATM_MCP1: TP_CONFIG_TYPE = 6;
1236pub const TP_CONFIG_TYPE_TC_RAW_SDC: TP_CONFIG_TYPE = 21;
1237#[doc = " Proprietary raw packet file configuration data type identifier."]
1238pub type TP_CONFIG_TYPE = u32;
1239pub const FDK_MODULE_ID_FDK_NONE: FDK_MODULE_ID = 0;
1240pub const FDK_MODULE_ID_FDK_TOOLS: FDK_MODULE_ID = 1;
1241pub const FDK_MODULE_ID_FDK_SYSLIB: FDK_MODULE_ID = 2;
1242pub const FDK_MODULE_ID_FDK_AACDEC: FDK_MODULE_ID = 3;
1243pub const FDK_MODULE_ID_FDK_AACENC: FDK_MODULE_ID = 4;
1244pub const FDK_MODULE_ID_FDK_SBRDEC: FDK_MODULE_ID = 5;
1245pub const FDK_MODULE_ID_FDK_SBRENC: FDK_MODULE_ID = 6;
1246pub const FDK_MODULE_ID_FDK_TPDEC: FDK_MODULE_ID = 7;
1247pub const FDK_MODULE_ID_FDK_TPENC: FDK_MODULE_ID = 8;
1248pub const FDK_MODULE_ID_FDK_MPSDEC: FDK_MODULE_ID = 9;
1249pub const FDK_MODULE_ID_FDK_MPEGFILEREAD: FDK_MODULE_ID = 10;
1250pub const FDK_MODULE_ID_FDK_MPEGFILEWRITE: FDK_MODULE_ID = 11;
1251pub const FDK_MODULE_ID_FDK_PCMDMX: FDK_MODULE_ID = 31;
1252pub const FDK_MODULE_ID_FDK_MPSENC: FDK_MODULE_ID = 34;
1253pub const FDK_MODULE_ID_FDK_TDLIMIT: FDK_MODULE_ID = 35;
1254pub const FDK_MODULE_ID_FDK_UNIDRCDEC: FDK_MODULE_ID = 38;
1255pub const FDK_MODULE_ID_FDK_MODULE_LAST: FDK_MODULE_ID = 39;
1256pub type FDK_MODULE_ID = u32;
1257#[doc = "  Library information."]
1258#[repr(C)]
1259#[derive(Debug, Copy, Clone)]
1260pub struct LIB_INFO {
1261    pub title: *const ::std::os::raw::c_char,
1262    pub build_date: *const ::std::os::raw::c_char,
1263    pub build_time: *const ::std::os::raw::c_char,
1264    pub module_id: FDK_MODULE_ID,
1265    pub version: INT,
1266    pub flags: UINT,
1267    pub versionStr: [::std::os::raw::c_char; 32usize],
1268}
1269#[test]
1270fn bindgen_test_layout_LIB_INFO() {
1271    assert_eq!(
1272        ::std::mem::size_of::<LIB_INFO>(),
1273        72usize,
1274        concat!("Size of: ", stringify!(LIB_INFO))
1275    );
1276    assert_eq!(
1277        ::std::mem::align_of::<LIB_INFO>(),
1278        8usize,
1279        concat!("Alignment of ", stringify!(LIB_INFO))
1280    );
1281    assert_eq!(
1282        unsafe { &(*(::std::ptr::null::<LIB_INFO>())).title as *const _ as usize },
1283        0usize,
1284        concat!(
1285            "Offset of field: ",
1286            stringify!(LIB_INFO),
1287            "::",
1288            stringify!(title)
1289        )
1290    );
1291    assert_eq!(
1292        unsafe { &(*(::std::ptr::null::<LIB_INFO>())).build_date as *const _ as usize },
1293        8usize,
1294        concat!(
1295            "Offset of field: ",
1296            stringify!(LIB_INFO),
1297            "::",
1298            stringify!(build_date)
1299        )
1300    );
1301    assert_eq!(
1302        unsafe { &(*(::std::ptr::null::<LIB_INFO>())).build_time as *const _ as usize },
1303        16usize,
1304        concat!(
1305            "Offset of field: ",
1306            stringify!(LIB_INFO),
1307            "::",
1308            stringify!(build_time)
1309        )
1310    );
1311    assert_eq!(
1312        unsafe { &(*(::std::ptr::null::<LIB_INFO>())).module_id as *const _ as usize },
1313        24usize,
1314        concat!(
1315            "Offset of field: ",
1316            stringify!(LIB_INFO),
1317            "::",
1318            stringify!(module_id)
1319        )
1320    );
1321    assert_eq!(
1322        unsafe { &(*(::std::ptr::null::<LIB_INFO>())).version as *const _ as usize },
1323        28usize,
1324        concat!(
1325            "Offset of field: ",
1326            stringify!(LIB_INFO),
1327            "::",
1328            stringify!(version)
1329        )
1330    );
1331    assert_eq!(
1332        unsafe { &(*(::std::ptr::null::<LIB_INFO>())).flags as *const _ as usize },
1333        32usize,
1334        concat!(
1335            "Offset of field: ",
1336            stringify!(LIB_INFO),
1337            "::",
1338            stringify!(flags)
1339        )
1340    );
1341    assert_eq!(
1342        unsafe { &(*(::std::ptr::null::<LIB_INFO>())).versionStr as *const _ as usize },
1343        36usize,
1344        concat!(
1345            "Offset of field: ",
1346            stringify!(LIB_INFO),
1347            "::",
1348            stringify!(versionStr)
1349        )
1350    );
1351}
1352#[doc = "  I/O buffer descriptor."]
1353#[repr(C)]
1354#[derive(Debug, Copy, Clone)]
1355pub struct FDK_bufDescr {
1356    #[doc = "< Pointer to an array containing buffer base addresses."]
1357    #[doc = "Set to NULL for buffer requirement info."]
1358    pub ppBase: *mut *mut ::std::os::raw::c_void,
1359    #[doc = "< Pointer to an array containing the number of elements"]
1360    #[doc = "that can be placed in the specific buffer."]
1361    pub pBufSize: *mut UINT,
1362    #[doc = "< Pointer to an array containing the element size for each"]
1363    #[doc = "buffer in bytes. That is mostly the number returned by the"]
1364    #[doc = "sizeof() operator for the data type used for the specific"]
1365    #[doc = "buffer."]
1366    pub pEleSize: *mut UINT,
1367    #[doc = "< Pointer to an array of bit fields containing a description"]
1368    #[doc = "for each buffer. See XXX below for more details."]
1369    pub pBufType: *mut UINT,
1370    #[doc = "< Total number of buffers."]
1371    pub numBufs: UINT,
1372}
1373#[test]
1374fn bindgen_test_layout_FDK_bufDescr() {
1375    assert_eq!(
1376        ::std::mem::size_of::<FDK_bufDescr>(),
1377        40usize,
1378        concat!("Size of: ", stringify!(FDK_bufDescr))
1379    );
1380    assert_eq!(
1381        ::std::mem::align_of::<FDK_bufDescr>(),
1382        8usize,
1383        concat!("Alignment of ", stringify!(FDK_bufDescr))
1384    );
1385    assert_eq!(
1386        unsafe { &(*(::std::ptr::null::<FDK_bufDescr>())).ppBase as *const _ as usize },
1387        0usize,
1388        concat!(
1389            "Offset of field: ",
1390            stringify!(FDK_bufDescr),
1391            "::",
1392            stringify!(ppBase)
1393        )
1394    );
1395    assert_eq!(
1396        unsafe { &(*(::std::ptr::null::<FDK_bufDescr>())).pBufSize as *const _ as usize },
1397        8usize,
1398        concat!(
1399            "Offset of field: ",
1400            stringify!(FDK_bufDescr),
1401            "::",
1402            stringify!(pBufSize)
1403        )
1404    );
1405    assert_eq!(
1406        unsafe { &(*(::std::ptr::null::<FDK_bufDescr>())).pEleSize as *const _ as usize },
1407        16usize,
1408        concat!(
1409            "Offset of field: ",
1410            stringify!(FDK_bufDescr),
1411            "::",
1412            stringify!(pEleSize)
1413        )
1414    );
1415    assert_eq!(
1416        unsafe { &(*(::std::ptr::null::<FDK_bufDescr>())).pBufType as *const _ as usize },
1417        24usize,
1418        concat!(
1419            "Offset of field: ",
1420            stringify!(FDK_bufDescr),
1421            "::",
1422            stringify!(pBufType)
1423        )
1424    );
1425    assert_eq!(
1426        unsafe { &(*(::std::ptr::null::<FDK_bufDescr>())).numBufs as *const _ as usize },
1427        32usize,
1428        concat!(
1429            "Offset of field: ",
1430            stringify!(FDK_bufDescr),
1431            "::",
1432            stringify!(numBufs)
1433        )
1434    );
1435}
1436#[doc = "< No error happened. All fine."]
1437pub const AACENC_ERROR_AACENC_OK: AACENC_ERROR = 0;
1438pub const AACENC_ERROR_AACENC_INVALID_HANDLE: AACENC_ERROR = 32;
1439#[doc = "< Memory allocation failed."]
1440pub const AACENC_ERROR_AACENC_MEMORY_ERROR: AACENC_ERROR = 33;
1441#[doc = "< Parameter not available."]
1442pub const AACENC_ERROR_AACENC_UNSUPPORTED_PARAMETER: AACENC_ERROR = 34;
1443#[doc = "< Configuration not provided."]
1444pub const AACENC_ERROR_AACENC_INVALID_CONFIG: AACENC_ERROR = 35;
1445#[doc = "< General initialization error."]
1446pub const AACENC_ERROR_AACENC_INIT_ERROR: AACENC_ERROR = 64;
1447#[doc = "< AAC library initialization error."]
1448pub const AACENC_ERROR_AACENC_INIT_AAC_ERROR: AACENC_ERROR = 65;
1449#[doc = "< SBR library initialization error."]
1450pub const AACENC_ERROR_AACENC_INIT_SBR_ERROR: AACENC_ERROR = 66;
1451#[doc = "< Transport library initialization error."]
1452pub const AACENC_ERROR_AACENC_INIT_TP_ERROR: AACENC_ERROR = 67;
1453pub const AACENC_ERROR_AACENC_INIT_META_ERROR: AACENC_ERROR = 68;
1454#[doc = "< MPS library initialization error."]
1455pub const AACENC_ERROR_AACENC_INIT_MPS_ERROR: AACENC_ERROR = 69;
1456#[doc = "< The encoding process was interrupted by an"]
1457#[doc = "unexpected error."]
1458pub const AACENC_ERROR_AACENC_ENCODE_ERROR: AACENC_ERROR = 96;
1459#[doc = "< End of file reached."]
1460pub const AACENC_ERROR_AACENC_ENCODE_EOF: AACENC_ERROR = 128;
1461#[doc = "  AAC encoder error codes."]
1462pub type AACENC_ERROR = u32;
1463#[doc = "< Audio input buffer, interleaved INT_PCM samples."]
1464pub const AACENC_BufferIdentifier_IN_AUDIO_DATA: AACENC_BufferIdentifier = 0;
1465#[doc = "< Ancillary data to be embedded into bitstream."]
1466pub const AACENC_BufferIdentifier_IN_ANCILLRY_DATA: AACENC_BufferIdentifier = 1;
1467#[doc = "< Setup structure for embedding meta data."]
1468pub const AACENC_BufferIdentifier_IN_METADATA_SETUP: AACENC_BufferIdentifier = 2;
1469#[doc = "< Buffer holds bitstream output data."]
1470pub const AACENC_BufferIdentifier_OUT_BITSTREAM_DATA: AACENC_BufferIdentifier = 3;
1471pub const AACENC_BufferIdentifier_OUT_AU_SIZES: AACENC_BufferIdentifier = 4;
1472#[doc = "  AAC encoder buffer descriptors identifier."]
1473#[doc = "  This identifier are used within buffer descriptors"]
1474#[doc = " AACENC_BufDesc::bufferIdentifiers."]
1475pub type AACENC_BufferIdentifier = u32;
1476#[repr(C)]
1477#[derive(Debug, Copy, Clone)]
1478pub struct AACENCODER {
1479    _unused: [u8; 0],
1480}
1481#[doc = "  AAC encoder handle."]
1482pub type HANDLE_AACENCODER = *mut AACENCODER;
1483#[doc = "  Provides some info about the encoder configuration."]
1484#[repr(C)]
1485#[derive(Copy, Clone)]
1486pub struct AACENC_InfoStruct {
1487    #[doc = "< Maximum number of encoder bitstream bytes within one"]
1488    #[doc = "frame. Size depends on maximum number of supported"]
1489    #[doc = "channels in encoder instance. For superframing (as"]
1490    #[doc = "used for example in DAB+), size has to be a multiple"]
1491    #[doc = "accordingly."]
1492    pub maxOutBufBytes: UINT,
1493    #[doc = "< Maximum number of ancillary data bytes which can be"]
1494    #[doc = "inserted into bitstream within one frame."]
1495    pub maxAncBytes: UINT,
1496    #[doc = "< Internal input buffer fill level in samples per"]
1497    #[doc = "channel. This parameter will automatically be cleared"]
1498    #[doc = "if samplingrate or channel(Mode/Order) changes."]
1499    pub inBufFillLevel: UINT,
1500    #[doc = "< Number of input channels expected in encoding"]
1501    #[doc = "process."]
1502    pub inputChannels: UINT,
1503    #[doc = "< Amount of input audio samples consumed each frame per"]
1504    #[doc = "channel, depending on audio object type configuration."]
1505    pub frameLength: UINT,
1506    #[doc = "< Codec delay in PCM samples/channel. Depends on framelength"]
1507    #[doc = "and AOT. Does not include framing delay for filling up encoder"]
1508    #[doc = "PCM input buffer."]
1509    pub nDelay: UINT,
1510    #[doc = "< Codec delay in PCM samples/channel, w/o delay caused by"]
1511    #[doc = "the decoder SBR module. This delay is needed to correctly"]
1512    #[doc = "write edit lists for gapless playback. The decoder may not"]
1513    #[doc = "know how much delay is introdcued by SBR, since it may not"]
1514    #[doc = "know if SBR is active at all (implicit signaling),"]
1515    #[doc = "therefore the deocder must take into account any delay"]
1516    #[doc = "caused by the SBR module."]
1517    pub nDelayCore: UINT,
1518    #[doc = "< Configuration buffer in binary format as an"]
1519    #[doc = "AudioSpecificConfig or StreamMuxConfig according to the"]
1520    #[doc = "selected transport type."]
1521    pub confBuf: [UCHAR; 64usize],
1522    #[doc = "< Number of valid bytes in confBuf."]
1523    pub confSize: UINT,
1524}
1525#[test]
1526fn bindgen_test_layout_AACENC_InfoStruct() {
1527    assert_eq!(
1528        ::std::mem::size_of::<AACENC_InfoStruct>(),
1529        96usize,
1530        concat!("Size of: ", stringify!(AACENC_InfoStruct))
1531    );
1532    assert_eq!(
1533        ::std::mem::align_of::<AACENC_InfoStruct>(),
1534        4usize,
1535        concat!("Alignment of ", stringify!(AACENC_InfoStruct))
1536    );
1537    assert_eq!(
1538        unsafe {
1539            &(*(::std::ptr::null::<AACENC_InfoStruct>())).maxOutBufBytes as *const _ as usize
1540        },
1541        0usize,
1542        concat!(
1543            "Offset of field: ",
1544            stringify!(AACENC_InfoStruct),
1545            "::",
1546            stringify!(maxOutBufBytes)
1547        )
1548    );
1549    assert_eq!(
1550        unsafe { &(*(::std::ptr::null::<AACENC_InfoStruct>())).maxAncBytes as *const _ as usize },
1551        4usize,
1552        concat!(
1553            "Offset of field: ",
1554            stringify!(AACENC_InfoStruct),
1555            "::",
1556            stringify!(maxAncBytes)
1557        )
1558    );
1559    assert_eq!(
1560        unsafe {
1561            &(*(::std::ptr::null::<AACENC_InfoStruct>())).inBufFillLevel as *const _ as usize
1562        },
1563        8usize,
1564        concat!(
1565            "Offset of field: ",
1566            stringify!(AACENC_InfoStruct),
1567            "::",
1568            stringify!(inBufFillLevel)
1569        )
1570    );
1571    assert_eq!(
1572        unsafe { &(*(::std::ptr::null::<AACENC_InfoStruct>())).inputChannels as *const _ as usize },
1573        12usize,
1574        concat!(
1575            "Offset of field: ",
1576            stringify!(AACENC_InfoStruct),
1577            "::",
1578            stringify!(inputChannels)
1579        )
1580    );
1581    assert_eq!(
1582        unsafe { &(*(::std::ptr::null::<AACENC_InfoStruct>())).frameLength as *const _ as usize },
1583        16usize,
1584        concat!(
1585            "Offset of field: ",
1586            stringify!(AACENC_InfoStruct),
1587            "::",
1588            stringify!(frameLength)
1589        )
1590    );
1591    assert_eq!(
1592        unsafe { &(*(::std::ptr::null::<AACENC_InfoStruct>())).nDelay as *const _ as usize },
1593        20usize,
1594        concat!(
1595            "Offset of field: ",
1596            stringify!(AACENC_InfoStruct),
1597            "::",
1598            stringify!(nDelay)
1599        )
1600    );
1601    assert_eq!(
1602        unsafe { &(*(::std::ptr::null::<AACENC_InfoStruct>())).nDelayCore as *const _ as usize },
1603        24usize,
1604        concat!(
1605            "Offset of field: ",
1606            stringify!(AACENC_InfoStruct),
1607            "::",
1608            stringify!(nDelayCore)
1609        )
1610    );
1611    assert_eq!(
1612        unsafe { &(*(::std::ptr::null::<AACENC_InfoStruct>())).confBuf as *const _ as usize },
1613        28usize,
1614        concat!(
1615            "Offset of field: ",
1616            stringify!(AACENC_InfoStruct),
1617            "::",
1618            stringify!(confBuf)
1619        )
1620    );
1621    assert_eq!(
1622        unsafe { &(*(::std::ptr::null::<AACENC_InfoStruct>())).confSize as *const _ as usize },
1623        92usize,
1624        concat!(
1625            "Offset of field: ",
1626            stringify!(AACENC_InfoStruct),
1627            "::",
1628            stringify!(confSize)
1629        )
1630    );
1631}
1632#[doc = "  Describes the input and output buffers for an aacEncEncode() call."]
1633#[repr(C)]
1634#[derive(Debug, Copy, Clone)]
1635pub struct AACENC_BufDesc {
1636    #[doc = "< Number of buffers."]
1637    pub numBufs: INT,
1638    #[doc = "< Pointer to vector containing buffer addresses."]
1639    pub bufs: *mut *mut ::std::os::raw::c_void,
1640    #[doc = "< Identifier of each buffer element. See"]
1641    #[doc = "::AACENC_BufferIdentifier."]
1642    pub bufferIdentifiers: *mut INT,
1643    #[doc = "< Size of each buffer in 8-bit bytes."]
1644    pub bufSizes: *mut INT,
1645    #[doc = "< Size of each buffer element in bytes."]
1646    pub bufElSizes: *mut INT,
1647}
1648#[test]
1649fn bindgen_test_layout_AACENC_BufDesc() {
1650    assert_eq!(
1651        ::std::mem::size_of::<AACENC_BufDesc>(),
1652        40usize,
1653        concat!("Size of: ", stringify!(AACENC_BufDesc))
1654    );
1655    assert_eq!(
1656        ::std::mem::align_of::<AACENC_BufDesc>(),
1657        8usize,
1658        concat!("Alignment of ", stringify!(AACENC_BufDesc))
1659    );
1660    assert_eq!(
1661        unsafe { &(*(::std::ptr::null::<AACENC_BufDesc>())).numBufs as *const _ as usize },
1662        0usize,
1663        concat!(
1664            "Offset of field: ",
1665            stringify!(AACENC_BufDesc),
1666            "::",
1667            stringify!(numBufs)
1668        )
1669    );
1670    assert_eq!(
1671        unsafe { &(*(::std::ptr::null::<AACENC_BufDesc>())).bufs as *const _ as usize },
1672        8usize,
1673        concat!(
1674            "Offset of field: ",
1675            stringify!(AACENC_BufDesc),
1676            "::",
1677            stringify!(bufs)
1678        )
1679    );
1680    assert_eq!(
1681        unsafe {
1682            &(*(::std::ptr::null::<AACENC_BufDesc>())).bufferIdentifiers as *const _ as usize
1683        },
1684        16usize,
1685        concat!(
1686            "Offset of field: ",
1687            stringify!(AACENC_BufDesc),
1688            "::",
1689            stringify!(bufferIdentifiers)
1690        )
1691    );
1692    assert_eq!(
1693        unsafe { &(*(::std::ptr::null::<AACENC_BufDesc>())).bufSizes as *const _ as usize },
1694        24usize,
1695        concat!(
1696            "Offset of field: ",
1697            stringify!(AACENC_BufDesc),
1698            "::",
1699            stringify!(bufSizes)
1700        )
1701    );
1702    assert_eq!(
1703        unsafe { &(*(::std::ptr::null::<AACENC_BufDesc>())).bufElSizes as *const _ as usize },
1704        32usize,
1705        concat!(
1706            "Offset of field: ",
1707            stringify!(AACENC_BufDesc),
1708            "::",
1709            stringify!(bufElSizes)
1710        )
1711    );
1712}
1713#[doc = "  Defines the input arguments for an aacEncEncode() call."]
1714#[repr(C)]
1715#[derive(Debug, Copy, Clone)]
1716pub struct AACENC_InArgs {
1717    #[doc = "< Number of valid input audio samples (multiple of input"]
1718    #[doc = "channels)."]
1719    pub numInSamples: INT,
1720    #[doc = "< Number of ancillary data bytes to be encoded."]
1721    pub numAncBytes: INT,
1722}
1723#[test]
1724fn bindgen_test_layout_AACENC_InArgs() {
1725    assert_eq!(
1726        ::std::mem::size_of::<AACENC_InArgs>(),
1727        8usize,
1728        concat!("Size of: ", stringify!(AACENC_InArgs))
1729    );
1730    assert_eq!(
1731        ::std::mem::align_of::<AACENC_InArgs>(),
1732        4usize,
1733        concat!("Alignment of ", stringify!(AACENC_InArgs))
1734    );
1735    assert_eq!(
1736        unsafe { &(*(::std::ptr::null::<AACENC_InArgs>())).numInSamples as *const _ as usize },
1737        0usize,
1738        concat!(
1739            "Offset of field: ",
1740            stringify!(AACENC_InArgs),
1741            "::",
1742            stringify!(numInSamples)
1743        )
1744    );
1745    assert_eq!(
1746        unsafe { &(*(::std::ptr::null::<AACENC_InArgs>())).numAncBytes as *const _ as usize },
1747        4usize,
1748        concat!(
1749            "Offset of field: ",
1750            stringify!(AACENC_InArgs),
1751            "::",
1752            stringify!(numAncBytes)
1753        )
1754    );
1755}
1756#[doc = "  Defines the output arguments for an aacEncEncode() call."]
1757#[repr(C)]
1758#[derive(Debug, Copy, Clone)]
1759pub struct AACENC_OutArgs {
1760    #[doc = "< Number of valid bitstream bytes generated during"]
1761    #[doc = "aacEncEncode()."]
1762    pub numOutBytes: INT,
1763    #[doc = "< Number of input audio samples consumed by the encoder."]
1764    pub numInSamples: INT,
1765    #[doc = "< Number of ancillary data bytes consumed by the encoder."]
1766    pub numAncBytes: INT,
1767    #[doc = "< State of the bit reservoir in bits."]
1768    pub bitResState: INT,
1769}
1770#[test]
1771fn bindgen_test_layout_AACENC_OutArgs() {
1772    assert_eq!(
1773        ::std::mem::size_of::<AACENC_OutArgs>(),
1774        16usize,
1775        concat!("Size of: ", stringify!(AACENC_OutArgs))
1776    );
1777    assert_eq!(
1778        ::std::mem::align_of::<AACENC_OutArgs>(),
1779        4usize,
1780        concat!("Alignment of ", stringify!(AACENC_OutArgs))
1781    );
1782    assert_eq!(
1783        unsafe { &(*(::std::ptr::null::<AACENC_OutArgs>())).numOutBytes as *const _ as usize },
1784        0usize,
1785        concat!(
1786            "Offset of field: ",
1787            stringify!(AACENC_OutArgs),
1788            "::",
1789            stringify!(numOutBytes)
1790        )
1791    );
1792    assert_eq!(
1793        unsafe { &(*(::std::ptr::null::<AACENC_OutArgs>())).numInSamples as *const _ as usize },
1794        4usize,
1795        concat!(
1796            "Offset of field: ",
1797            stringify!(AACENC_OutArgs),
1798            "::",
1799            stringify!(numInSamples)
1800        )
1801    );
1802    assert_eq!(
1803        unsafe { &(*(::std::ptr::null::<AACENC_OutArgs>())).numAncBytes as *const _ as usize },
1804        8usize,
1805        concat!(
1806            "Offset of field: ",
1807            stringify!(AACENC_OutArgs),
1808            "::",
1809            stringify!(numAncBytes)
1810        )
1811    );
1812    assert_eq!(
1813        unsafe { &(*(::std::ptr::null::<AACENC_OutArgs>())).bitResState as *const _ as usize },
1814        12usize,
1815        concat!(
1816            "Offset of field: ",
1817            stringify!(AACENC_OutArgs),
1818            "::",
1819            stringify!(bitResState)
1820        )
1821    );
1822}
1823#[doc = "< None."]
1824pub const AACENC_METADATA_DRC_PROFILE_AACENC_METADATA_DRC_NONE: AACENC_METADATA_DRC_PROFILE = 0;
1825#[doc = "< Film standard."]
1826pub const AACENC_METADATA_DRC_PROFILE_AACENC_METADATA_DRC_FILMSTANDARD:
1827    AACENC_METADATA_DRC_PROFILE = 1;
1828#[doc = "< Film light."]
1829pub const AACENC_METADATA_DRC_PROFILE_AACENC_METADATA_DRC_FILMLIGHT: AACENC_METADATA_DRC_PROFILE =
1830    2;
1831#[doc = "< Music standard."]
1832pub const AACENC_METADATA_DRC_PROFILE_AACENC_METADATA_DRC_MUSICSTANDARD:
1833    AACENC_METADATA_DRC_PROFILE = 3;
1834#[doc = "< Music light."]
1835pub const AACENC_METADATA_DRC_PROFILE_AACENC_METADATA_DRC_MUSICLIGHT: AACENC_METADATA_DRC_PROFILE =
1836    4;
1837#[doc = "< Speech."]
1838pub const AACENC_METADATA_DRC_PROFILE_AACENC_METADATA_DRC_SPEECH: AACENC_METADATA_DRC_PROFILE = 5;
1839pub const AACENC_METADATA_DRC_PROFILE_AACENC_METADATA_DRC_NOT_PRESENT: AACENC_METADATA_DRC_PROFILE =
1840    256;
1841#[doc = "  Meta Data Compression Profiles."]
1842pub type AACENC_METADATA_DRC_PROFILE = u32;
1843#[doc = "  Meta Data setup structure."]
1844#[repr(C)]
1845#[derive(Debug, Copy, Clone)]
1846pub struct AACENC_MetaData {
1847    #[doc = "< MPEG DRC compression profile. See"]
1848    #[doc = "::AACENC_METADATA_DRC_PROFILE."]
1849    pub drc_profile: AACENC_METADATA_DRC_PROFILE,
1850    #[doc = "< ETSI heavy compression profile. See"]
1851    #[doc = "::AACENC_METADATA_DRC_PROFILE."]
1852    pub comp_profile: AACENC_METADATA_DRC_PROFILE,
1853    #[doc = "< Used to define expected level to:"]
1854    #[doc = "Scaled with 16 bit. x*2^16."]
1855    pub drc_TargetRefLevel: INT,
1856    #[doc = "< Adjust limiter to avoid overload."]
1857    #[doc = "Scaled with 16 bit. x*2^16."]
1858    pub comp_TargetRefLevel: INT,
1859    #[doc = "< Flag, if prog_ref_level is present"]
1860    pub prog_ref_level_present: INT,
1861    #[doc = "< Programme Reference Level = Dialogue Level:"]
1862    #[doc = "-31.75dB .. 0 dB ; stepsize: 0.25dB"]
1863    #[doc = "Scaled with 16 bit. x*2^16."]
1864    pub prog_ref_level: INT,
1865    #[doc = "< Flag, if dmx-idx should be written in"]
1866    #[doc = "programme config element"]
1867    pub PCE_mixdown_idx_present: UCHAR,
1868    #[doc = "< Flag, if dmx-lvl should be written in"]
1869    #[doc = "ETSI-ancData"]
1870    pub ETSI_DmxLvl_present: UCHAR,
1871    #[doc = "< Center downmix level (0...7, according to table)"]
1872    pub centerMixLevel: SCHAR,
1873    #[doc = "< Surround downmix level (0...7, according to"]
1874    #[doc = "table)"]
1875    pub surroundMixLevel: SCHAR,
1876    #[doc = "< Indication for Dolby Surround Encoding Mode."]
1877    #[doc = "- 0: Dolby Surround mode not indicated"]
1878    #[doc = "- 1: 2-ch audio part is not Dolby surround encoded"]
1879    #[doc = "- 2: 2-ch audio part is Dolby surround encoded"]
1880    pub dolbySurroundMode: UCHAR,
1881    #[doc = "< Indicatin for DRC Presentation Mode."]
1882    #[doc = "- 0: Presentation mode not inticated"]
1883    #[doc = "- 1: Presentation mode 1"]
1884    #[doc = "- 2: Presentation mode 2"]
1885    pub drcPresentationMode: UCHAR,
1886    pub ExtMetaData: AACENC_MetaData__bindgen_ty_1,
1887}
1888#[repr(C)]
1889#[derive(Debug, Copy, Clone)]
1890pub struct AACENC_MetaData__bindgen_ty_1 {
1891    pub extAncDataEnable: UCHAR,
1892    pub extDownmixLevelEnable: UCHAR,
1893    pub extDownmixLevel_A: UCHAR,
1894    pub extDownmixLevel_B: UCHAR,
1895    pub dmxGainEnable: UCHAR,
1896    pub dmxGain5: INT,
1897    pub dmxGain2: INT,
1898    pub lfeDmxEnable: UCHAR,
1899    pub lfeDmxLevel: UCHAR,
1900}
1901#[test]
1902fn bindgen_test_layout_AACENC_MetaData__bindgen_ty_1() {
1903    assert_eq!(
1904        ::std::mem::size_of::<AACENC_MetaData__bindgen_ty_1>(),
1905        20usize,
1906        concat!("Size of: ", stringify!(AACENC_MetaData__bindgen_ty_1))
1907    );
1908    assert_eq!(
1909        ::std::mem::align_of::<AACENC_MetaData__bindgen_ty_1>(),
1910        4usize,
1911        concat!("Alignment of ", stringify!(AACENC_MetaData__bindgen_ty_1))
1912    );
1913    assert_eq!(
1914        unsafe {
1915            &(*(::std::ptr::null::<AACENC_MetaData__bindgen_ty_1>())).extAncDataEnable as *const _
1916                as usize
1917        },
1918        0usize,
1919        concat!(
1920            "Offset of field: ",
1921            stringify!(AACENC_MetaData__bindgen_ty_1),
1922            "::",
1923            stringify!(extAncDataEnable)
1924        )
1925    );
1926    assert_eq!(
1927        unsafe {
1928            &(*(::std::ptr::null::<AACENC_MetaData__bindgen_ty_1>())).extDownmixLevelEnable
1929                as *const _ as usize
1930        },
1931        1usize,
1932        concat!(
1933            "Offset of field: ",
1934            stringify!(AACENC_MetaData__bindgen_ty_1),
1935            "::",
1936            stringify!(extDownmixLevelEnable)
1937        )
1938    );
1939    assert_eq!(
1940        unsafe {
1941            &(*(::std::ptr::null::<AACENC_MetaData__bindgen_ty_1>())).extDownmixLevel_A as *const _
1942                as usize
1943        },
1944        2usize,
1945        concat!(
1946            "Offset of field: ",
1947            stringify!(AACENC_MetaData__bindgen_ty_1),
1948            "::",
1949            stringify!(extDownmixLevel_A)
1950        )
1951    );
1952    assert_eq!(
1953        unsafe {
1954            &(*(::std::ptr::null::<AACENC_MetaData__bindgen_ty_1>())).extDownmixLevel_B as *const _
1955                as usize
1956        },
1957        3usize,
1958        concat!(
1959            "Offset of field: ",
1960            stringify!(AACENC_MetaData__bindgen_ty_1),
1961            "::",
1962            stringify!(extDownmixLevel_B)
1963        )
1964    );
1965    assert_eq!(
1966        unsafe {
1967            &(*(::std::ptr::null::<AACENC_MetaData__bindgen_ty_1>())).dmxGainEnable as *const _
1968                as usize
1969        },
1970        4usize,
1971        concat!(
1972            "Offset of field: ",
1973            stringify!(AACENC_MetaData__bindgen_ty_1),
1974            "::",
1975            stringify!(dmxGainEnable)
1976        )
1977    );
1978    assert_eq!(
1979        unsafe {
1980            &(*(::std::ptr::null::<AACENC_MetaData__bindgen_ty_1>())).dmxGain5 as *const _ as usize
1981        },
1982        8usize,
1983        concat!(
1984            "Offset of field: ",
1985            stringify!(AACENC_MetaData__bindgen_ty_1),
1986            "::",
1987            stringify!(dmxGain5)
1988        )
1989    );
1990    assert_eq!(
1991        unsafe {
1992            &(*(::std::ptr::null::<AACENC_MetaData__bindgen_ty_1>())).dmxGain2 as *const _ as usize
1993        },
1994        12usize,
1995        concat!(
1996            "Offset of field: ",
1997            stringify!(AACENC_MetaData__bindgen_ty_1),
1998            "::",
1999            stringify!(dmxGain2)
2000        )
2001    );
2002    assert_eq!(
2003        unsafe {
2004            &(*(::std::ptr::null::<AACENC_MetaData__bindgen_ty_1>())).lfeDmxEnable as *const _
2005                as usize
2006        },
2007        16usize,
2008        concat!(
2009            "Offset of field: ",
2010            stringify!(AACENC_MetaData__bindgen_ty_1),
2011            "::",
2012            stringify!(lfeDmxEnable)
2013        )
2014    );
2015    assert_eq!(
2016        unsafe {
2017            &(*(::std::ptr::null::<AACENC_MetaData__bindgen_ty_1>())).lfeDmxLevel as *const _
2018                as usize
2019        },
2020        17usize,
2021        concat!(
2022            "Offset of field: ",
2023            stringify!(AACENC_MetaData__bindgen_ty_1),
2024            "::",
2025            stringify!(lfeDmxLevel)
2026        )
2027    );
2028}
2029#[test]
2030fn bindgen_test_layout_AACENC_MetaData() {
2031    assert_eq!(
2032        ::std::mem::size_of::<AACENC_MetaData>(),
2033        52usize,
2034        concat!("Size of: ", stringify!(AACENC_MetaData))
2035    );
2036    assert_eq!(
2037        ::std::mem::align_of::<AACENC_MetaData>(),
2038        4usize,
2039        concat!("Alignment of ", stringify!(AACENC_MetaData))
2040    );
2041    assert_eq!(
2042        unsafe { &(*(::std::ptr::null::<AACENC_MetaData>())).drc_profile as *const _ as usize },
2043        0usize,
2044        concat!(
2045            "Offset of field: ",
2046            stringify!(AACENC_MetaData),
2047            "::",
2048            stringify!(drc_profile)
2049        )
2050    );
2051    assert_eq!(
2052        unsafe { &(*(::std::ptr::null::<AACENC_MetaData>())).comp_profile as *const _ as usize },
2053        4usize,
2054        concat!(
2055            "Offset of field: ",
2056            stringify!(AACENC_MetaData),
2057            "::",
2058            stringify!(comp_profile)
2059        )
2060    );
2061    assert_eq!(
2062        unsafe {
2063            &(*(::std::ptr::null::<AACENC_MetaData>())).drc_TargetRefLevel as *const _ as usize
2064        },
2065        8usize,
2066        concat!(
2067            "Offset of field: ",
2068            stringify!(AACENC_MetaData),
2069            "::",
2070            stringify!(drc_TargetRefLevel)
2071        )
2072    );
2073    assert_eq!(
2074        unsafe {
2075            &(*(::std::ptr::null::<AACENC_MetaData>())).comp_TargetRefLevel as *const _ as usize
2076        },
2077        12usize,
2078        concat!(
2079            "Offset of field: ",
2080            stringify!(AACENC_MetaData),
2081            "::",
2082            stringify!(comp_TargetRefLevel)
2083        )
2084    );
2085    assert_eq!(
2086        unsafe {
2087            &(*(::std::ptr::null::<AACENC_MetaData>())).prog_ref_level_present as *const _ as usize
2088        },
2089        16usize,
2090        concat!(
2091            "Offset of field: ",
2092            stringify!(AACENC_MetaData),
2093            "::",
2094            stringify!(prog_ref_level_present)
2095        )
2096    );
2097    assert_eq!(
2098        unsafe { &(*(::std::ptr::null::<AACENC_MetaData>())).prog_ref_level as *const _ as usize },
2099        20usize,
2100        concat!(
2101            "Offset of field: ",
2102            stringify!(AACENC_MetaData),
2103            "::",
2104            stringify!(prog_ref_level)
2105        )
2106    );
2107    assert_eq!(
2108        unsafe {
2109            &(*(::std::ptr::null::<AACENC_MetaData>())).PCE_mixdown_idx_present as *const _ as usize
2110        },
2111        24usize,
2112        concat!(
2113            "Offset of field: ",
2114            stringify!(AACENC_MetaData),
2115            "::",
2116            stringify!(PCE_mixdown_idx_present)
2117        )
2118    );
2119    assert_eq!(
2120        unsafe {
2121            &(*(::std::ptr::null::<AACENC_MetaData>())).ETSI_DmxLvl_present as *const _ as usize
2122        },
2123        25usize,
2124        concat!(
2125            "Offset of field: ",
2126            stringify!(AACENC_MetaData),
2127            "::",
2128            stringify!(ETSI_DmxLvl_present)
2129        )
2130    );
2131    assert_eq!(
2132        unsafe { &(*(::std::ptr::null::<AACENC_MetaData>())).centerMixLevel as *const _ as usize },
2133        26usize,
2134        concat!(
2135            "Offset of field: ",
2136            stringify!(AACENC_MetaData),
2137            "::",
2138            stringify!(centerMixLevel)
2139        )
2140    );
2141    assert_eq!(
2142        unsafe {
2143            &(*(::std::ptr::null::<AACENC_MetaData>())).surroundMixLevel as *const _ as usize
2144        },
2145        27usize,
2146        concat!(
2147            "Offset of field: ",
2148            stringify!(AACENC_MetaData),
2149            "::",
2150            stringify!(surroundMixLevel)
2151        )
2152    );
2153    assert_eq!(
2154        unsafe {
2155            &(*(::std::ptr::null::<AACENC_MetaData>())).dolbySurroundMode as *const _ as usize
2156        },
2157        28usize,
2158        concat!(
2159            "Offset of field: ",
2160            stringify!(AACENC_MetaData),
2161            "::",
2162            stringify!(dolbySurroundMode)
2163        )
2164    );
2165    assert_eq!(
2166        unsafe {
2167            &(*(::std::ptr::null::<AACENC_MetaData>())).drcPresentationMode as *const _ as usize
2168        },
2169        29usize,
2170        concat!(
2171            "Offset of field: ",
2172            stringify!(AACENC_MetaData),
2173            "::",
2174            stringify!(drcPresentationMode)
2175        )
2176    );
2177    assert_eq!(
2178        unsafe { &(*(::std::ptr::null::<AACENC_MetaData>())).ExtMetaData as *const _ as usize },
2179        32usize,
2180        concat!(
2181            "Offset of field: ",
2182            stringify!(AACENC_MetaData),
2183            "::",
2184            stringify!(ExtMetaData)
2185        )
2186    );
2187}
2188#[doc = "< Do not trigger initialization."]
2189pub const AACENC_CTRLFLAGS_AACENC_INIT_NONE: AACENC_CTRLFLAGS = 0;
2190pub const AACENC_CTRLFLAGS_AACENC_INIT_CONFIG: AACENC_CTRLFLAGS = 1;
2191#[doc = "< Reset all encoder modules history buffer."]
2192pub const AACENC_CTRLFLAGS_AACENC_INIT_STATES: AACENC_CTRLFLAGS = 2;
2193pub const AACENC_CTRLFLAGS_AACENC_INIT_TRANSPORT: AACENC_CTRLFLAGS = 4096;
2194pub const AACENC_CTRLFLAGS_AACENC_RESET_INBUFFER: AACENC_CTRLFLAGS = 8192;
2195#[doc = "< Initialize all."]
2196pub const AACENC_CTRLFLAGS_AACENC_INIT_ALL: AACENC_CTRLFLAGS = 65535;
2197#[doc = " AAC encoder control flags."]
2198#[doc = ""]
2199#[doc = " In interaction with the ::AACENC_CONTROL_STATE parameter it is possible to"]
2200#[doc = " get information about the internal initialization process. It is also"]
2201#[doc = " possible to overwrite the internal state from extern when necessary."]
2202pub type AACENC_CTRLFLAGS = u32;
2203pub const AACENC_PARAM_AACENC_AOT: AACENC_PARAM = 256;
2204#[doc = "< Total encoder bitrate. This parameter is"]
2205#[doc = "mandatory and interacts with ::AACENC_BITRATEMODE."]
2206#[doc = "- CBR: Bitrate in bits/second."]
2207#[doc = "- VBR: Variable bitrate. Bitrate argument will"]
2208#[doc = "be ignored. See \\ref suppBitrates for details."]
2209pub const AACENC_PARAM_AACENC_BITRATE: AACENC_PARAM = 257;
2210#[doc = "< Bitrate mode. Configuration can be different"]
2211#[doc = "kind of bitrate configurations:"]
2212#[doc = "- 0: Constant bitrate, use bitrate according"]
2213#[doc = "to ::AACENC_BITRATE. (default) Within none"]
2214#[doc = "LD/ELD ::AUDIO_OBJECT_TYPE, the CBR mode makes"]
2215#[doc = "use of full allowed bitreservoir. In contrast,"]
2216#[doc = "at Low-Delay ::AUDIO_OBJECT_TYPE the"]
2217#[doc = "bitreservoir is kept very small."]
2218#[doc = "- 1: Variable bitrate mode, \\ref vbrmode"]
2219#[doc = "\"very low bitrate\"."]
2220#[doc = "- 2: Variable bitrate mode, \\ref vbrmode"]
2221#[doc = "\"low bitrate\"."]
2222#[doc = "- 3: Variable bitrate mode, \\ref vbrmode"]
2223#[doc = "\"medium bitrate\"."]
2224#[doc = "- 4: Variable bitrate mode, \\ref vbrmode"]
2225#[doc = "\"high bitrate\"."]
2226#[doc = "- 5: Variable bitrate mode, \\ref vbrmode"]
2227#[doc = "\"very high bitrate\"."]
2228pub const AACENC_PARAM_AACENC_BITRATEMODE: AACENC_PARAM = 258;
2229#[doc = "< Audio input data sampling rate. Encoder"]
2230#[doc = "supports following sampling rates: 8000, 11025,"]
2231#[doc = "12000, 16000, 22050, 24000, 32000, 44100,"]
2232#[doc = "48000, 64000, 88200, 96000"]
2233pub const AACENC_PARAM_AACENC_SAMPLERATE: AACENC_PARAM = 259;
2234#[doc = "< Configure SBR independently of the chosen Audio"]
2235#[doc = "Object Type ::AUDIO_OBJECT_TYPE. This parameter"]
2236#[doc = "is for ELD audio object type only."]
2237#[doc = "- -1: Use ELD SBR auto configurator (default)."]
2238#[doc = "- 0: Disable Spectral Band Replication."]
2239#[doc = "- 1: Enable Spectral Band Replication."]
2240pub const AACENC_PARAM_AACENC_SBR_MODE: AACENC_PARAM = 260;
2241pub const AACENC_PARAM_AACENC_GRANULE_LENGTH: AACENC_PARAM = 261;
2242#[doc = "< Set explicit channel mode. Channel mode must"]
2243#[doc = "match with number of input channels."]
2244#[doc = "- 1-7, 11,12,14 and 33,34: MPEG channel"]
2245#[doc = "modes supported, see ::CHANNEL_MODE in"]
2246#[doc = "FDK_audio.h."]
2247pub const AACENC_PARAM_AACENC_CHANNELMODE: AACENC_PARAM = 262;
2248pub const AACENC_PARAM_AACENC_CHANNELORDER: AACENC_PARAM = 263;
2249pub const AACENC_PARAM_AACENC_SBR_RATIO: AACENC_PARAM = 264;
2250pub const AACENC_PARAM_AACENC_AFTERBURNER: AACENC_PARAM = 512;
2251#[doc = "< Core encoder audio bandwidth:"]
2252#[doc = "- 0: Determine audio bandwidth internally"]
2253#[doc = "(default, see chapter \\ref BEHAVIOUR_BANDWIDTH)."]
2254#[doc = "- 1 to fs/2: Audio bandwidth in Hertz. Limited"]
2255#[doc = "to 20kHz max. Not usable if SBR is active. This"]
2256#[doc = "setting is for experts only, better do not touch"]
2257#[doc = "this value to avoid degraded audio quality."]
2258pub const AACENC_PARAM_AACENC_BANDWIDTH: AACENC_PARAM = 515;
2259pub const AACENC_PARAM_AACENC_PEAK_BITRATE: AACENC_PARAM = 519;
2260#[doc = "< Transport type to be used. See ::TRANSPORT_TYPE"]
2261#[doc = "in FDK_audio.h. Following types can be configured"]
2262#[doc = "in encoder library:"]
2263#[doc = "- 0: raw access units"]
2264#[doc = "- 1: ADIF bitstream format"]
2265#[doc = "- 2: ADTS bitstream format"]
2266#[doc = "- 6: Audio Mux Elements (LATM) with"]
2267#[doc = "muxConfigPresent = 1"]
2268#[doc = "- 7: Audio Mux Elements (LATM) with"]
2269#[doc = "muxConfigPresent = 0, out of band StreamMuxConfig"]
2270#[doc = "- 10: Audio Sync Stream (LOAS)"]
2271pub const AACENC_PARAM_AACENC_TRANSMUX: AACENC_PARAM = 768;
2272pub const AACENC_PARAM_AACENC_HEADER_PERIOD: AACENC_PARAM = 769;
2273pub const AACENC_PARAM_AACENC_SIGNALING_MODE: AACENC_PARAM = 770;
2274pub const AACENC_PARAM_AACENC_TPSUBFRAMES: AACENC_PARAM = 771;
2275pub const AACENC_PARAM_AACENC_AUDIOMUXVER: AACENC_PARAM = 772;
2276#[doc = "< Configure protection in transport layer:"]
2277#[doc = "- 0: No protection. (default)"]
2278#[doc = "- 1: CRC active for ADTS transport format."]
2279pub const AACENC_PARAM_AACENC_PROTECTION: AACENC_PARAM = 774;
2280pub const AACENC_PARAM_AACENC_ANCILLARY_BITRATE: AACENC_PARAM = 1280;
2281#[doc = "< Configure Meta Data. See ::AACENC_MetaData"]
2282#[doc = "for further details:"]
2283#[doc = "- 0: Do not embed any metadata."]
2284#[doc = "- 1: Embed dynamic_range_info metadata."]
2285#[doc = "- 2: Embed dynamic_range_info and"]
2286#[doc = "ancillary_data metadata."]
2287#[doc = "- 3: Embed ancillary_data metadata."]
2288pub const AACENC_PARAM_AACENC_METADATA_MODE: AACENC_PARAM = 1536;
2289pub const AACENC_PARAM_AACENC_CONTROL_STATE: AACENC_PARAM = 65280;
2290#[doc = "< ------"]
2291pub const AACENC_PARAM_AACENC_NONE: AACENC_PARAM = 65535;
2292#[doc = " \\brief  AAC encoder setting parameters."]
2293#[doc = ""]
2294#[doc = " Use aacEncoder_SetParam() function to configure, or use aacEncoder_GetParam()"]
2295#[doc = " function to read the internal status of the following parameters."]
2296pub type AACENC_PARAM = u32;
2297extern "C" {
2298    #[doc = " \\brief  Open an instance of the encoder."]
2299    #[doc = ""]
2300    #[doc = " Allocate memory for an encoder instance with a functional range denoted by"]
2301    #[doc = " the function parameters. Preinitialize encoder instance with default"]
2302    #[doc = " configuration."]
2303    #[doc = ""]
2304    #[doc = " \\param phAacEncoder  A pointer to an encoder handle. Initialized on return."]
2305    #[doc = " \\param encModules    Specify encoder modules to be supported in this encoder"]
2306    #[doc = " instance:"]
2307    #[doc = "                      - 0x0: Allocate memory for all available encoder"]
2308    #[doc = " modules."]
2309    #[doc = "                      - else: Select memory allocation regarding encoder"]
2310    #[doc = " modules. Following flags are possible and can be combined."]
2311    #[doc = "                              - 0x01: AAC module."]
2312    #[doc = "                              - 0x02: SBR module."]
2313    #[doc = "                              - 0x04: PS module."]
2314    #[doc = "                              - 0x08: MPS module."]
2315    #[doc = "                              - 0x10: Metadata module."]
2316    #[doc = "                              - example: (0x01|0x02|0x04|0x08|0x10) allocates"]
2317    #[doc = " all modules and is equivalent to default configuration denotet by 0x0."]
2318    #[doc = " \\param maxChannels   Number of channels to be allocated. This parameter can"]
2319    #[doc = " be used in different ways:"]
2320    #[doc = "                      - 0: Allocate maximum number of AAC and SBR channels as"]
2321    #[doc = " supported by the library."]
2322    #[doc = "                      - nChannels: Use same maximum number of channels for"]
2323    #[doc = " allocating memory in AAC and SBR module."]
2324    #[doc = "                      - nChannels | (nSbrCh<<8): Number of SBR channels can be"]
2325    #[doc = " different to AAC channels to save data memory."]
2326    #[doc = ""]
2327    #[doc = " \\return"]
2328    #[doc = "          - AACENC_OK, on succes."]
2329    #[doc = "          - AACENC_INVALID_HANDLE, AACENC_MEMORY_ERROR, AACENC_INVALID_CONFIG,"]
2330    #[doc = " on failure."]
2331    pub fn aacEncOpen(
2332        phAacEncoder: *mut HANDLE_AACENCODER,
2333        encModules: UINT,
2334        maxChannels: UINT,
2335    ) -> AACENC_ERROR;
2336}
2337extern "C" {
2338    #[doc = " \\brief  Close the encoder instance."]
2339    #[doc = ""]
2340    #[doc = " Deallocate encoder instance and free whole memory."]
2341    #[doc = ""]
2342    #[doc = " \\param phAacEncoder  Pointer to the encoder handle to be deallocated."]
2343    #[doc = ""]
2344    #[doc = " \\return"]
2345    #[doc = "          - AACENC_OK, on success."]
2346    #[doc = "          - AACENC_INVALID_HANDLE, on failure."]
2347    pub fn aacEncClose(phAacEncoder: *mut HANDLE_AACENCODER) -> AACENC_ERROR;
2348}
2349extern "C" {
2350    #[doc = " \\brief Encode audio data."]
2351    #[doc = ""]
2352    #[doc = " This function is mainly for encoding audio data. In addition the function can"]
2353    #[doc = " be used for an encoder (re)configuration process."]
2354    #[doc = " - PCM input data will be retrieved from external input buffer until the fill"]
2355    #[doc = " level allows encoding a single frame. This functionality allows an external"]
2356    #[doc = " buffer with reduced size in comparison to the AAC or HE-AAC audio frame"]
2357    #[doc = " length."]
2358    #[doc = " - If the value of the input samples argument is zero, just internal"]
2359    #[doc = " reinitialization will be applied if it is requested."]
2360    #[doc = " - At the end of a file the flushing process can be triggerd via setting the"]
2361    #[doc = " value of the input samples argument to -1. The encoder delay lines are fully"]
2362    #[doc = " flushed when the encoder returns no valid bitstream data"]
2363    #[doc = " AACENC_OutArgs::numOutBytes. Furthermore the end of file is signaled by the"]
2364    #[doc = " return value AACENC_ENCODE_EOF."]
2365    #[doc = " - If an error occured in the previous frame or any of the encoder parameters"]
2366    #[doc = " changed, an internal reinitialization process will be applied before encoding"]
2367    #[doc = " the incoming audio samples."]
2368    #[doc = " - The function can also be used for an independent reconfiguration process"]
2369    #[doc = " without encoding. The first parameter has to be a valid encoder handle and"]
2370    #[doc = " all other parameters can be set to NULL."]
2371    #[doc = " - If the size of the external bitbuffer in outBufDesc is not sufficient for"]
2372    #[doc = " writing the whole bitstream, an internal error will be the return value and a"]
2373    #[doc = " reconfiguration will be triggered."]
2374    #[doc = ""]
2375    #[doc = " \\param hAacEncoder           A valid AAC encoder handle."]
2376    #[doc = " \\param inBufDesc             Input buffer descriptor, see AACENC_BufDesc:"]
2377    #[doc = "                              - At least one input buffer with audio data is"]
2378    #[doc = " expected."]
2379    #[doc = "                              - Optionally a second input buffer with"]
2380    #[doc = " ancillary data can be fed."]
2381    #[doc = " \\param outBufDesc            Output buffer descriptor, see AACENC_BufDesc:"]
2382    #[doc = "                              - Provide one output buffer for the encoded"]
2383    #[doc = " bitstream."]
2384    #[doc = " \\param inargs                Input arguments, see AACENC_InArgs."]
2385    #[doc = " \\param outargs               Output arguments, AACENC_OutArgs."]
2386    #[doc = ""]
2387    #[doc = " \\return"]
2388    #[doc = "          - AACENC_OK, on success."]
2389    #[doc = "          - AACENC_INVALID_HANDLE, AACENC_ENCODE_ERROR, on failure in encoding"]
2390    #[doc = " process."]
2391    #[doc = "          - AACENC_INVALID_CONFIG, AACENC_INIT_ERROR, AACENC_INIT_AAC_ERROR,"]
2392    #[doc = " AACENC_INIT_SBR_ERROR, AACENC_INIT_TP_ERROR, AACENC_INIT_META_ERROR,"]
2393    #[doc = " AACENC_INIT_MPS_ERROR, on failure in encoder initialization."]
2394    #[doc = "          - AACENC_UNSUPPORTED_PARAMETER, on incorrect input or output buffer"]
2395    #[doc = " descriptor initialization."]
2396    #[doc = "          - AACENC_ENCODE_EOF, when flushing fully concluded."]
2397    pub fn aacEncEncode(
2398        hAacEncoder: HANDLE_AACENCODER,
2399        inBufDesc: *const AACENC_BufDesc,
2400        outBufDesc: *const AACENC_BufDesc,
2401        inargs: *const AACENC_InArgs,
2402        outargs: *mut AACENC_OutArgs,
2403    ) -> AACENC_ERROR;
2404}
2405extern "C" {
2406    #[doc = " \\brief  Acquire info about present encoder instance."]
2407    #[doc = ""]
2408    #[doc = " This function retrieves information of the encoder configuration. In addition"]
2409    #[doc = " to informative internal states, a configuration data block of the current"]
2410    #[doc = " encoder settings will be returned. The format is either Audio Specific Config"]
2411    #[doc = " in case of Raw Packets transport format or StreamMuxConfig in case of"]
2412    #[doc = " LOAS/LATM transport format. The configuration data block is binary coded as"]
2413    #[doc = " specified in ISO/IEC 14496-3 (MPEG-4 audio), to be used directly for MPEG-4"]
2414    #[doc = " File Format or RFC3016 or RFC3640 applications."]
2415    #[doc = ""]
2416    #[doc = " \\param hAacEncoder           A valid AAC encoder handle."]
2417    #[doc = " \\param pInfo                 Pointer to AACENC_InfoStruct. Filled on return."]
2418    #[doc = ""]
2419    #[doc = " \\return"]
2420    #[doc = "          - AACENC_OK, on succes."]
2421    #[doc = "          - AACENC_INIT_ERROR, on failure."]
2422    pub fn aacEncInfo(
2423        hAacEncoder: HANDLE_AACENCODER,
2424        pInfo: *mut AACENC_InfoStruct,
2425    ) -> AACENC_ERROR;
2426}
2427extern "C" {
2428    #[doc = " \\brief  Set one single AAC encoder parameter."]
2429    #[doc = ""]
2430    #[doc = " This function allows configuration of all encoder parameters specified in"]
2431    #[doc = " ::AACENC_PARAM. Each parameter must be set with a separate function call. An"]
2432    #[doc = " internal validation of the configuration value range will be done and an"]
2433    #[doc = " internal reconfiguration will be signaled. The actual configuration adoption"]
2434    #[doc = " is part of the subsequent aacEncEncode() call."]
2435    #[doc = ""]
2436    #[doc = " \\param hAacEncoder           A valid AAC encoder handle."]
2437    #[doc = " \\param param                 Parameter to be set. See ::AACENC_PARAM."]
2438    #[doc = " \\param value                 Parameter value. See parameter description in"]
2439    #[doc = " ::AACENC_PARAM."]
2440    #[doc = ""]
2441    #[doc = " \\return"]
2442    #[doc = "          - AACENC_OK, on success."]
2443    #[doc = "          - AACENC_INVALID_HANDLE, AACENC_UNSUPPORTED_PARAMETER,"]
2444    #[doc = " AACENC_INVALID_CONFIG, on failure."]
2445    pub fn aacEncoder_SetParam(
2446        hAacEncoder: HANDLE_AACENCODER,
2447        param: AACENC_PARAM,
2448        value: UINT,
2449    ) -> AACENC_ERROR;
2450}
2451extern "C" {
2452    #[doc = " \\brief  Get one single AAC encoder parameter."]
2453    #[doc = ""]
2454    #[doc = " This function is the complement to aacEncoder_SetParam(). After encoder"]
2455    #[doc = " reinitialization with user defined settings, the internal status can be"]
2456    #[doc = " obtained of each parameter, specified with ::AACENC_PARAM."]
2457    #[doc = ""]
2458    #[doc = " \\param hAacEncoder           A valid AAC encoder handle."]
2459    #[doc = " \\param param                 Parameter to be returned. See ::AACENC_PARAM."]
2460    #[doc = ""]
2461    #[doc = " \\return  Internal configuration value of specifed parameter ::AACENC_PARAM."]
2462    pub fn aacEncoder_GetParam(hAacEncoder: HANDLE_AACENCODER, param: AACENC_PARAM) -> UINT;
2463}
2464extern "C" {
2465    #[doc = " \\brief  Get information about encoder library build."]
2466    #[doc = ""]
2467    #[doc = " Fill a given LIB_INFO structure with library version information."]
2468    #[doc = ""]
2469    #[doc = " \\param info  Pointer to an allocated LIB_INFO struct."]
2470    #[doc = ""]
2471    #[doc = " \\return"]
2472    #[doc = "          - AACENC_OK, on success."]
2473    #[doc = "          - AACENC_INVALID_HANDLE, AACENC_INIT_ERROR, on failure."]
2474    pub fn aacEncGetLibInfo(info: *mut LIB_INFO) -> AACENC_ERROR;
2475}
2476pub const AAC_DECODER_ERROR_AAC_DEC_OK: AAC_DECODER_ERROR = 0;
2477pub const AAC_DECODER_ERROR_AAC_DEC_OUT_OF_MEMORY: AAC_DECODER_ERROR = 2;
2478pub const AAC_DECODER_ERROR_AAC_DEC_UNKNOWN: AAC_DECODER_ERROR = 5;
2479pub const AAC_DECODER_ERROR_aac_dec_sync_error_start: AAC_DECODER_ERROR = 4096;
2480#[doc = "< The transport decoder had"]
2481#[doc = "synchronization problems. Do not"]
2482#[doc = "exit decoding. Just feed new"]
2483#[doc = "bitstream data."]
2484pub const AAC_DECODER_ERROR_AAC_DEC_TRANSPORT_SYNC_ERROR: AAC_DECODER_ERROR = 4097;
2485#[doc = "< The input buffer ran out of bits."]
2486pub const AAC_DECODER_ERROR_AAC_DEC_NOT_ENOUGH_BITS: AAC_DECODER_ERROR = 4098;
2487pub const AAC_DECODER_ERROR_aac_dec_sync_error_end: AAC_DECODER_ERROR = 8191;
2488pub const AAC_DECODER_ERROR_aac_dec_init_error_start: AAC_DECODER_ERROR = 8192;
2489pub const AAC_DECODER_ERROR_AAC_DEC_INVALID_HANDLE: AAC_DECODER_ERROR = 8193;
2490pub const AAC_DECODER_ERROR_AAC_DEC_UNSUPPORTED_AOT: AAC_DECODER_ERROR = 8194;
2491pub const AAC_DECODER_ERROR_AAC_DEC_UNSUPPORTED_FORMAT: AAC_DECODER_ERROR = 8195;
2492pub const AAC_DECODER_ERROR_AAC_DEC_UNSUPPORTED_ER_FORMAT: AAC_DECODER_ERROR = 8196;
2493pub const AAC_DECODER_ERROR_AAC_DEC_UNSUPPORTED_EPCONFIG: AAC_DECODER_ERROR = 8197;
2494pub const AAC_DECODER_ERROR_AAC_DEC_UNSUPPORTED_MULTILAYER: AAC_DECODER_ERROR = 8198;
2495pub const AAC_DECODER_ERROR_AAC_DEC_UNSUPPORTED_CHANNELCONFIG: AAC_DECODER_ERROR = 8199;
2496#[doc = "< The sample rate specified in"]
2497#[doc = "the configuration is not"]
2498#[doc = "supported."]
2499pub const AAC_DECODER_ERROR_AAC_DEC_UNSUPPORTED_SAMPLINGRATE: AAC_DECODER_ERROR = 8200;
2500pub const AAC_DECODER_ERROR_AAC_DEC_INVALID_SBR_CONFIG: AAC_DECODER_ERROR = 8201;
2501#[doc = "< The parameter could not be set. Either"]
2502#[doc = "the value was out of range or the"]
2503#[doc = "parameter does  not exist."]
2504pub const AAC_DECODER_ERROR_AAC_DEC_SET_PARAM_FAIL: AAC_DECODER_ERROR = 8202;
2505#[doc = "< The decoder needs to be restarted,"]
2506#[doc = "since the required configuration change"]
2507#[doc = "cannot be performed."]
2508pub const AAC_DECODER_ERROR_AAC_DEC_NEED_TO_RESTART: AAC_DECODER_ERROR = 8203;
2509pub const AAC_DECODER_ERROR_AAC_DEC_OUTPUT_BUFFER_TOO_SMALL: AAC_DECODER_ERROR = 8204;
2510pub const AAC_DECODER_ERROR_aac_dec_init_error_end: AAC_DECODER_ERROR = 12287;
2511pub const AAC_DECODER_ERROR_aac_dec_decode_error_start: AAC_DECODER_ERROR = 16384;
2512pub const AAC_DECODER_ERROR_AAC_DEC_TRANSPORT_ERROR: AAC_DECODER_ERROR = 16385;
2513#[doc = "< Error while parsing the bitstream. Most"]
2514#[doc = "probably it is corrupted, or the system"]
2515#[doc = "crashed."]
2516pub const AAC_DECODER_ERROR_AAC_DEC_PARSE_ERROR: AAC_DECODER_ERROR = 16386;
2517pub const AAC_DECODER_ERROR_AAC_DEC_UNSUPPORTED_EXTENSION_PAYLOAD: AAC_DECODER_ERROR = 16387;
2518#[doc = "< The parsed bitstream value is out of"]
2519#[doc = "range. Most probably the bitstream is"]
2520#[doc = "corrupt, or the system crashed."]
2521pub const AAC_DECODER_ERROR_AAC_DEC_DECODE_FRAME_ERROR: AAC_DECODER_ERROR = 16388;
2522#[doc = "< The embedded CRC did not match."]
2523pub const AAC_DECODER_ERROR_AAC_DEC_CRC_ERROR: AAC_DECODER_ERROR = 16389;
2524#[doc = "< An invalid codebook was signaled."]
2525#[doc = "Most probably the bitstream is corrupt,"]
2526#[doc = "or the system  crashed."]
2527pub const AAC_DECODER_ERROR_AAC_DEC_INVALID_CODE_BOOK: AAC_DECODER_ERROR = 16390;
2528pub const AAC_DECODER_ERROR_AAC_DEC_UNSUPPORTED_PREDICTION: AAC_DECODER_ERROR = 16391;
2529#[doc = "< A CCE element was found which is not"]
2530#[doc = "supported. Most probably the bitstream is"]
2531#[doc = "corrupt, or has a wrong format."]
2532pub const AAC_DECODER_ERROR_AAC_DEC_UNSUPPORTED_CCE: AAC_DECODER_ERROR = 16392;
2533#[doc = "< A LFE element was found which is not"]
2534#[doc = "supported. Most probably the bitstream is"]
2535#[doc = "corrupt, or has a wrong format."]
2536pub const AAC_DECODER_ERROR_AAC_DEC_UNSUPPORTED_LFE: AAC_DECODER_ERROR = 16393;
2537pub const AAC_DECODER_ERROR_AAC_DEC_UNSUPPORTED_GAIN_CONTROL_DATA: AAC_DECODER_ERROR = 16394;
2538pub const AAC_DECODER_ERROR_AAC_DEC_UNSUPPORTED_SBA: AAC_DECODER_ERROR = 16395;
2539#[doc = "< Error while reading TNS data. Most"]
2540#[doc = "probably the bitstream is corrupt or the"]
2541#[doc = "system crashed."]
2542pub const AAC_DECODER_ERROR_AAC_DEC_TNS_READ_ERROR: AAC_DECODER_ERROR = 16396;
2543pub const AAC_DECODER_ERROR_AAC_DEC_RVLC_ERROR: AAC_DECODER_ERROR = 16397;
2544pub const AAC_DECODER_ERROR_aac_dec_decode_error_end: AAC_DECODER_ERROR = 20479;
2545pub const AAC_DECODER_ERROR_aac_dec_anc_data_error_start: AAC_DECODER_ERROR = 32768;
2546pub const AAC_DECODER_ERROR_AAC_DEC_ANC_DATA_ERROR: AAC_DECODER_ERROR = 32769;
2547#[doc = "< The registered ancillary data"]
2548#[doc = "buffer is too small to receive the"]
2549#[doc = "parsed data."]
2550pub const AAC_DECODER_ERROR_AAC_DEC_TOO_SMALL_ANC_BUFFER: AAC_DECODER_ERROR = 32770;
2551#[doc = "< More than the allowed number of"]
2552#[doc = "ancillary data elements should be"]
2553#[doc = "written to buffer."]
2554pub const AAC_DECODER_ERROR_AAC_DEC_TOO_MANY_ANC_ELEMENTS: AAC_DECODER_ERROR = 32771;
2555pub const AAC_DECODER_ERROR_aac_dec_anc_data_error_end: AAC_DECODER_ERROR = 36863;
2556#[doc = " \\brief  AAC decoder error codes."]
2557pub type AAC_DECODER_ERROR = u32;
2558pub const AAC_MD_PROFILE_AAC_MD_PROFILE_MPEG_STANDARD: AAC_MD_PROFILE = 0;
2559pub const AAC_MD_PROFILE_AAC_MD_PROFILE_MPEG_LEGACY: AAC_MD_PROFILE = 1;
2560pub const AAC_MD_PROFILE_AAC_MD_PROFILE_MPEG_LEGACY_PRIO: AAC_MD_PROFILE = 2;
2561pub const AAC_MD_PROFILE_AAC_MD_PROFILE_ARIB_JAPAN: AAC_MD_PROFILE = 3;
2562#[doc = " \\enum  AAC_MD_PROFILE"]
2563#[doc = "  \\brief The available metadata profiles which are mostly related to downmixing. The values define the arguments"]
2564#[doc = "         for the use with parameter ::AAC_METADATA_PROFILE."]
2565pub type AAC_MD_PROFILE = u32;
2566#[doc = "< DRC parameter handling"]
2567#[doc = "disabled, all parameters are"]
2568#[doc = "applied as requested."]
2569pub const AAC_DRC_DEFAULT_PRESENTATION_MODE_OPTIONS_AAC_DRC_PARAMETER_HANDLING_DISABLED:
2570    AAC_DRC_DEFAULT_PRESENTATION_MODE_OPTIONS = -1;
2571pub const AAC_DRC_DEFAULT_PRESENTATION_MODE_OPTIONS_AAC_DRC_PARAMETER_HANDLING_ENABLED:
2572    AAC_DRC_DEFAULT_PRESENTATION_MODE_OPTIONS = 0;
2573pub const AAC_DRC_DEFAULT_PRESENTATION_MODE_OPTIONS_AAC_DRC_PRESENTATION_MODE_1_DEFAULT:
2574    AAC_DRC_DEFAULT_PRESENTATION_MODE_OPTIONS = 1;
2575pub const AAC_DRC_DEFAULT_PRESENTATION_MODE_OPTIONS_AAC_DRC_PRESENTATION_MODE_2_DEFAULT:
2576    AAC_DRC_DEFAULT_PRESENTATION_MODE_OPTIONS = 2;
2577#[doc = " \\enum  AAC_DRC_DEFAULT_PRESENTATION_MODE_OPTIONS"]
2578#[doc = "  \\brief Options for handling of DRC parameters, if presentation mode is not indicated in bitstream"]
2579pub type AAC_DRC_DEFAULT_PRESENTATION_MODE_OPTIONS = i32;
2580pub const AACDEC_PARAM_AAC_PCM_DUAL_CHANNEL_OUTPUT_MODE: AACDEC_PARAM = 2;
2581pub const AACDEC_PARAM_AAC_PCM_OUTPUT_CHANNEL_MAPPING: AACDEC_PARAM = 3;
2582pub const AACDEC_PARAM_AAC_PCM_LIMITER_ENABLE: AACDEC_PARAM = 4;
2583#[doc = "< Signal level limiting attack time"]
2584#[doc = "in ms. Default configuration is 15"]
2585#[doc = "ms. Adjustable range from 1 ms to 15"]
2586#[doc = "ms."]
2587pub const AACDEC_PARAM_AAC_PCM_LIMITER_ATTACK_TIME: AACDEC_PARAM = 5;
2588#[doc = "< Signal level limiting release time"]
2589#[doc = "in ms. Default configuration is 50"]
2590#[doc = "ms. Adjustable time must be larger"]
2591#[doc = "than 0 ms."]
2592pub const AACDEC_PARAM_AAC_PCM_LIMITER_RELEAS_TIME: AACDEC_PARAM = 6;
2593pub const AACDEC_PARAM_AAC_PCM_MIN_OUTPUT_CHANNELS: AACDEC_PARAM = 17;
2594pub const AACDEC_PARAM_AAC_PCM_MAX_OUTPUT_CHANNELS: AACDEC_PARAM = 18;
2595pub const AACDEC_PARAM_AAC_METADATA_PROFILE: AACDEC_PARAM = 32;
2596#[doc = "< Defines the time in ms after which all"]
2597#[doc = "the bitstream associated meta-data (DRC,"]
2598#[doc = "downmix coefficients, ...) will be reset"]
2599#[doc = "to default if no update has been"]
2600#[doc = "received. Negative values disable the"]
2601#[doc = "feature."]
2602pub const AACDEC_PARAM_AAC_METADATA_EXPIRY_TIME: AACDEC_PARAM = 33;
2603#[doc = "< Error concealment: Processing method. \\n"]
2604#[doc = "0: Spectral muting. \\n"]
2605#[doc = "1: Noise substitution (see ::CONCEAL_NOISE)."]
2606#[doc = "\\n 2: Energy interpolation (adds additional"]
2607#[doc = "signal delay of one frame, see"]
2608#[doc = "::CONCEAL_INTER. only some AOTs are"]
2609#[doc = "supported). \\n"]
2610pub const AACDEC_PARAM_AAC_CONCEAL_METHOD: AACDEC_PARAM = 256;
2611pub const AACDEC_PARAM_AAC_DRC_BOOST_FACTOR: AACDEC_PARAM = 512;
2612#[doc = "< MPEG-4 / MPEG-D DRC: Scaling factor"]
2613#[doc = "for attenuating gain values. Same as"]
2614#[doc = "::AAC_DRC_BOOST_FACTOR but for"]
2615#[doc = "attenuating DRC factors."]
2616pub const AACDEC_PARAM_AAC_DRC_ATTENUATION_FACTOR: AACDEC_PARAM = 513;
2617pub const AACDEC_PARAM_AAC_DRC_REFERENCE_LEVEL: AACDEC_PARAM = 514;
2618pub const AACDEC_PARAM_AAC_DRC_HEAVY_COMPRESSION: AACDEC_PARAM = 515;
2619pub const AACDEC_PARAM_AAC_DRC_DEFAULT_PRESENTATION_MODE: AACDEC_PARAM = 516;
2620pub const AACDEC_PARAM_AAC_DRC_ENC_TARGET_LEVEL: AACDEC_PARAM = 517;
2621#[doc = "< MPEG-D DRC: Request a DRC effect type for"]
2622#[doc = "selection of a DRC set.\\n Supported indices"]
2623#[doc = "are:\\n -1: DRC off. Completely disables"]
2624#[doc = "MPEG-D DRC.\\n 0: None (default). Disables"]
2625#[doc = "MPEG-D DRC, but automatically enables DRC"]
2626#[doc = "if necessary to prevent clipping.\\n 1: Late"]
2627#[doc = "night\\n 2: Noisy environment\\n 3: Limited"]
2628#[doc = "playback range\\n 4: Low playback level\\n 5:"]
2629#[doc = "Dialog enhancement\\n 6: General"]
2630#[doc = "compression. Used for generally enabling"]
2631#[doc = "MPEG-D DRC without particular request.\\n"]
2632pub const AACDEC_PARAM_AAC_UNIDRC_SET_EFFECT: AACDEC_PARAM = 518;
2633pub const AACDEC_PARAM_AAC_UNIDRC_ALBUM_MODE: AACDEC_PARAM = 519;
2634#[doc = "< Quadrature Mirror Filter (QMF) Bank processing"]
2635#[doc = "mode. \\n -1: Use internal default. Implies MPEG"]
2636#[doc = "Surround partially complex accordingly. \\n 0:"]
2637#[doc = "Use complex QMF data mode. \\n 1: Use real (low"]
2638#[doc = "power) QMF data mode. \\n"]
2639pub const AACDEC_PARAM_AAC_QMF_LOWPOWER: AACDEC_PARAM = 768;
2640pub const AACDEC_PARAM_AAC_TPDEC_CLEAR_BUFFER: AACDEC_PARAM = 1539;
2641#[doc = " \\brief AAC decoder setting parameters"]
2642pub type AACDEC_PARAM = u32;
2643#[doc = " \\brief This structure gives information about the currently decoded audio"]
2644#[doc = " data. All fields are read-only."]
2645#[repr(C)]
2646#[derive(Debug, Copy, Clone)]
2647pub struct CStreamInfo {
2648    #[doc = "< The sample rate in Hz of the decoded PCM audio signal."]
2649    pub sampleRate: INT,
2650    #[doc = "< The frame size of the decoded PCM audio signal. \\n"]
2651    #[doc = "Typically this is: \\n"]
2652    #[doc = "1024 or 960 for AAC-LC \\n"]
2653    #[doc = "2048 or 1920 for HE-AAC (v2) \\n"]
2654    #[doc = "512 or 480 for AAC-LD and AAC-ELD \\n"]
2655    #[doc = "768, 1024, 2048 or 4096 for USAC"]
2656    pub frameSize: INT,
2657    #[doc = "< The number of output audio channels before the rendering"]
2658    #[doc = "module, i.e. the original channel configuration."]
2659    pub numChannels: INT,
2660    #[doc = "< Audio channel type of each output audio channel."]
2661    pub pChannelType: *mut AUDIO_CHANNEL_TYPE,
2662    #[doc = "< Audio channel index for each output audio"]
2663    #[doc = "channel. See ISO/IEC 13818-7:2005(E), 8.5.3.2"]
2664    #[doc = "Explicit channel mapping using a"]
2665    #[doc = "program_config_element()"]
2666    pub pChannelIndices: *mut UCHAR,
2667    #[doc = "< Sampling rate in Hz without SBR (from configuration"]
2668    #[doc = "info) divided by a (ELD) downscale factor if present."]
2669    pub aacSampleRate: INT,
2670    #[doc = "< MPEG-2 profile (from file header) (-1: not applicable (e. g."]
2671    #[doc = "MPEG-4))."]
2672    pub profile: INT,
2673    #[doc = "< Audio Object Type (from ASC): is set to the appropriate value"]
2674    #[doc = "for MPEG-2 bitstreams (e. g. 2 for AAC-LC)."]
2675    pub aot: AUDIO_OBJECT_TYPE,
2676    #[doc = "< Channel configuration (0: PCE defined, 1: mono, 2:"]
2677    #[doc = "stereo, ..."]
2678    pub channelConfig: INT,
2679    #[doc = "< Instantaneous bit rate."]
2680    pub bitRate: INT,
2681    #[doc = "< Samples per frame for the AAC core (from ASC)"]
2682    #[doc = "divided by a (ELD) downscale factor if present. \\n"]
2683    #[doc = "Typically this is (with a downscale factor of 1):"]
2684    #[doc = "\\n   1024 or 960 for AAC-LC \\n   512 or 480 for"]
2685    #[doc = "AAC-LD   and AAC-ELD"]
2686    pub aacSamplesPerFrame: INT,
2687    #[doc = "< The number of audio channels after AAC core"]
2688    #[doc = "processing (before PS or MPS processing).       CAUTION: This"]
2689    #[doc = "are not the final number of output channels!"]
2690    pub aacNumChannels: INT,
2691    #[doc = "< Extension Audio Object Type (from ASC)"]
2692    pub extAot: AUDIO_OBJECT_TYPE,
2693    #[doc = "< Extension sampling rate in Hz (from ASC) divided by"]
2694    #[doc = "a (ELD) downscale factor if present."]
2695    pub extSamplingRate: INT,
2696    #[doc = "< The number of samples the output is additionally"]
2697    #[doc = "delayed by.the decoder."]
2698    pub outputDelay: UINT,
2699    #[doc = "< Copy of internal flags. Only to be written by the decoder,"]
2700    #[doc = "and only to be read externally."]
2701    pub flags: UINT,
2702    #[doc = "< epConfig level (from ASC): only level 0 supported, -1"]
2703    #[doc = "means no ER (e. g. AOT=2, MPEG-2 AAC, etc.)"]
2704    pub epConfig: SCHAR,
2705    #[doc = "< This integer will reflect the estimated amount of"]
2706    #[doc = "lost access units in case aacDecoder_DecodeFrame()"]
2707    #[doc = "returns AAC_DEC_TRANSPORT_SYNC_ERROR. It will be"]
2708    #[doc = "< 0 if the estimation failed."]
2709    pub numLostAccessUnits: INT,
2710    #[doc = "< This is the number of total bytes that have passed"]
2711    #[doc = "through the decoder."]
2712    pub numTotalBytes: INT64,
2713    #[doc = "< This is the number of total bytes that were considered"]
2714    #[doc = "with errors from numTotalBytes."]
2715    pub numBadBytes: INT64,
2716    #[doc = "< This is the number of total access units that"]
2717    #[doc = "have passed through the decoder."]
2718    pub numTotalAccessUnits: INT64,
2719    #[doc = "< This is the number of total access units that"]
2720    #[doc = "were considered with errors from numTotalBytes."]
2721    pub numBadAccessUnits: INT64,
2722    #[doc = "< DRC program reference level. Defines the reference"]
2723    #[doc = "level below full-scale. It is quantized in steps of"]
2724    #[doc = "0.25dB. The valid values range from 0 (0 dBFS) to 127"]
2725    #[doc = "(-31.75 dBFS). It is used to reflect the average"]
2726    #[doc = "loudness of the audio in LKFS according to ITU-R BS"]
2727    #[doc = "1770. If no level has been found in the bitstream the"]
2728    #[doc = "value is -1."]
2729    pub drcProgRefLev: SCHAR,
2730    #[doc = "< DRC presentation mode. According to ETSI TS 101 154,"]
2731    #[doc = "this field indicates whether   light (MPEG-4 Dynamic Range"]
2732    #[doc = "Control tool) or heavy compression (DVB heavy"]
2733    #[doc = "compression)   dynamic range control shall take priority"]
2734    #[doc = "on the outputs.   For details, see ETSI TS 101 154, table"]
2735    #[doc = "C.33. Possible values are: \\n   -1: No corresponding"]
2736    #[doc = "metadata found in the bitstream \\n   0: DRC presentation"]
2737    #[doc = "mode not indicated \\n   1: DRC presentation mode 1 \\n   2:"]
2738    #[doc = "DRC presentation mode 2 \\n   3: Reserved"]
2739    pub drcPresMode: SCHAR,
2740}
2741#[test]
2742fn bindgen_test_layout_CStreamInfo() {
2743    assert_eq!(
2744        ::std::mem::size_of::<CStreamInfo>(),
2745        128usize,
2746        concat!("Size of: ", stringify!(CStreamInfo))
2747    );
2748    assert_eq!(
2749        ::std::mem::align_of::<CStreamInfo>(),
2750        8usize,
2751        concat!("Alignment of ", stringify!(CStreamInfo))
2752    );
2753    assert_eq!(
2754        unsafe { &(*(::std::ptr::null::<CStreamInfo>())).sampleRate as *const _ as usize },
2755        0usize,
2756        concat!(
2757            "Offset of field: ",
2758            stringify!(CStreamInfo),
2759            "::",
2760            stringify!(sampleRate)
2761        )
2762    );
2763    assert_eq!(
2764        unsafe { &(*(::std::ptr::null::<CStreamInfo>())).frameSize as *const _ as usize },
2765        4usize,
2766        concat!(
2767            "Offset of field: ",
2768            stringify!(CStreamInfo),
2769            "::",
2770            stringify!(frameSize)
2771        )
2772    );
2773    assert_eq!(
2774        unsafe { &(*(::std::ptr::null::<CStreamInfo>())).numChannels as *const _ as usize },
2775        8usize,
2776        concat!(
2777            "Offset of field: ",
2778            stringify!(CStreamInfo),
2779            "::",
2780            stringify!(numChannels)
2781        )
2782    );
2783    assert_eq!(
2784        unsafe { &(*(::std::ptr::null::<CStreamInfo>())).pChannelType as *const _ as usize },
2785        16usize,
2786        concat!(
2787            "Offset of field: ",
2788            stringify!(CStreamInfo),
2789            "::",
2790            stringify!(pChannelType)
2791        )
2792    );
2793    assert_eq!(
2794        unsafe { &(*(::std::ptr::null::<CStreamInfo>())).pChannelIndices as *const _ as usize },
2795        24usize,
2796        concat!(
2797            "Offset of field: ",
2798            stringify!(CStreamInfo),
2799            "::",
2800            stringify!(pChannelIndices)
2801        )
2802    );
2803    assert_eq!(
2804        unsafe { &(*(::std::ptr::null::<CStreamInfo>())).aacSampleRate as *const _ as usize },
2805        32usize,
2806        concat!(
2807            "Offset of field: ",
2808            stringify!(CStreamInfo),
2809            "::",
2810            stringify!(aacSampleRate)
2811        )
2812    );
2813    assert_eq!(
2814        unsafe { &(*(::std::ptr::null::<CStreamInfo>())).profile as *const _ as usize },
2815        36usize,
2816        concat!(
2817            "Offset of field: ",
2818            stringify!(CStreamInfo),
2819            "::",
2820            stringify!(profile)
2821        )
2822    );
2823    assert_eq!(
2824        unsafe { &(*(::std::ptr::null::<CStreamInfo>())).aot as *const _ as usize },
2825        40usize,
2826        concat!(
2827            "Offset of field: ",
2828            stringify!(CStreamInfo),
2829            "::",
2830            stringify!(aot)
2831        )
2832    );
2833    assert_eq!(
2834        unsafe { &(*(::std::ptr::null::<CStreamInfo>())).channelConfig as *const _ as usize },
2835        44usize,
2836        concat!(
2837            "Offset of field: ",
2838            stringify!(CStreamInfo),
2839            "::",
2840            stringify!(channelConfig)
2841        )
2842    );
2843    assert_eq!(
2844        unsafe { &(*(::std::ptr::null::<CStreamInfo>())).bitRate as *const _ as usize },
2845        48usize,
2846        concat!(
2847            "Offset of field: ",
2848            stringify!(CStreamInfo),
2849            "::",
2850            stringify!(bitRate)
2851        )
2852    );
2853    assert_eq!(
2854        unsafe { &(*(::std::ptr::null::<CStreamInfo>())).aacSamplesPerFrame as *const _ as usize },
2855        52usize,
2856        concat!(
2857            "Offset of field: ",
2858            stringify!(CStreamInfo),
2859            "::",
2860            stringify!(aacSamplesPerFrame)
2861        )
2862    );
2863    assert_eq!(
2864        unsafe { &(*(::std::ptr::null::<CStreamInfo>())).aacNumChannels as *const _ as usize },
2865        56usize,
2866        concat!(
2867            "Offset of field: ",
2868            stringify!(CStreamInfo),
2869            "::",
2870            stringify!(aacNumChannels)
2871        )
2872    );
2873    assert_eq!(
2874        unsafe { &(*(::std::ptr::null::<CStreamInfo>())).extAot as *const _ as usize },
2875        60usize,
2876        concat!(
2877            "Offset of field: ",
2878            stringify!(CStreamInfo),
2879            "::",
2880            stringify!(extAot)
2881        )
2882    );
2883    assert_eq!(
2884        unsafe { &(*(::std::ptr::null::<CStreamInfo>())).extSamplingRate as *const _ as usize },
2885        64usize,
2886        concat!(
2887            "Offset of field: ",
2888            stringify!(CStreamInfo),
2889            "::",
2890            stringify!(extSamplingRate)
2891        )
2892    );
2893    assert_eq!(
2894        unsafe { &(*(::std::ptr::null::<CStreamInfo>())).outputDelay as *const _ as usize },
2895        68usize,
2896        concat!(
2897            "Offset of field: ",
2898            stringify!(CStreamInfo),
2899            "::",
2900            stringify!(outputDelay)
2901        )
2902    );
2903    assert_eq!(
2904        unsafe { &(*(::std::ptr::null::<CStreamInfo>())).flags as *const _ as usize },
2905        72usize,
2906        concat!(
2907            "Offset of field: ",
2908            stringify!(CStreamInfo),
2909            "::",
2910            stringify!(flags)
2911        )
2912    );
2913    assert_eq!(
2914        unsafe { &(*(::std::ptr::null::<CStreamInfo>())).epConfig as *const _ as usize },
2915        76usize,
2916        concat!(
2917            "Offset of field: ",
2918            stringify!(CStreamInfo),
2919            "::",
2920            stringify!(epConfig)
2921        )
2922    );
2923    assert_eq!(
2924        unsafe { &(*(::std::ptr::null::<CStreamInfo>())).numLostAccessUnits as *const _ as usize },
2925        80usize,
2926        concat!(
2927            "Offset of field: ",
2928            stringify!(CStreamInfo),
2929            "::",
2930            stringify!(numLostAccessUnits)
2931        )
2932    );
2933    assert_eq!(
2934        unsafe { &(*(::std::ptr::null::<CStreamInfo>())).numTotalBytes as *const _ as usize },
2935        88usize,
2936        concat!(
2937            "Offset of field: ",
2938            stringify!(CStreamInfo),
2939            "::",
2940            stringify!(numTotalBytes)
2941        )
2942    );
2943    assert_eq!(
2944        unsafe { &(*(::std::ptr::null::<CStreamInfo>())).numBadBytes as *const _ as usize },
2945        96usize,
2946        concat!(
2947            "Offset of field: ",
2948            stringify!(CStreamInfo),
2949            "::",
2950            stringify!(numBadBytes)
2951        )
2952    );
2953    assert_eq!(
2954        unsafe { &(*(::std::ptr::null::<CStreamInfo>())).numTotalAccessUnits as *const _ as usize },
2955        104usize,
2956        concat!(
2957            "Offset of field: ",
2958            stringify!(CStreamInfo),
2959            "::",
2960            stringify!(numTotalAccessUnits)
2961        )
2962    );
2963    assert_eq!(
2964        unsafe { &(*(::std::ptr::null::<CStreamInfo>())).numBadAccessUnits as *const _ as usize },
2965        112usize,
2966        concat!(
2967            "Offset of field: ",
2968            stringify!(CStreamInfo),
2969            "::",
2970            stringify!(numBadAccessUnits)
2971        )
2972    );
2973    assert_eq!(
2974        unsafe { &(*(::std::ptr::null::<CStreamInfo>())).drcProgRefLev as *const _ as usize },
2975        120usize,
2976        concat!(
2977            "Offset of field: ",
2978            stringify!(CStreamInfo),
2979            "::",
2980            stringify!(drcProgRefLev)
2981        )
2982    );
2983    assert_eq!(
2984        unsafe { &(*(::std::ptr::null::<CStreamInfo>())).drcPresMode as *const _ as usize },
2985        121usize,
2986        concat!(
2987            "Offset of field: ",
2988            stringify!(CStreamInfo),
2989            "::",
2990            stringify!(drcPresMode)
2991        )
2992    );
2993}
2994#[repr(C)]
2995#[derive(Debug, Copy, Clone)]
2996pub struct AAC_DECODER_INSTANCE {
2997    _unused: [u8; 0],
2998}
2999pub type HANDLE_AACDECODER = *mut AAC_DECODER_INSTANCE;
3000extern "C" {
3001    #[doc = " \\brief Initialize ancillary data buffer."]
3002    #[doc = ""]
3003    #[doc = " \\param self    AAC decoder handle."]
3004    #[doc = " \\param buffer  Pointer to (external) ancillary data buffer."]
3005    #[doc = " \\param size    Size of the buffer pointed to by buffer."]
3006    #[doc = " \\return        Error code."]
3007    pub fn aacDecoder_AncDataInit(
3008        self_: HANDLE_AACDECODER,
3009        buffer: *mut UCHAR,
3010        size: ::std::os::raw::c_int,
3011    ) -> AAC_DECODER_ERROR;
3012}
3013extern "C" {
3014    #[doc = " \\brief Get one ancillary data element."]
3015    #[doc = ""]
3016    #[doc = " \\param self   AAC decoder handle."]
3017    #[doc = " \\param index  Index of the ancillary data element to get."]
3018    #[doc = " \\param ptr    Pointer to a buffer receiving a pointer to the requested"]
3019    #[doc = " ancillary data element."]
3020    #[doc = " \\param size   Pointer to a buffer receiving the length of the requested"]
3021    #[doc = " ancillary data element."]
3022    #[doc = " \\return       Error code."]
3023    pub fn aacDecoder_AncDataGet(
3024        self_: HANDLE_AACDECODER,
3025        index: ::std::os::raw::c_int,
3026        ptr: *mut *mut UCHAR,
3027        size: *mut ::std::os::raw::c_int,
3028    ) -> AAC_DECODER_ERROR;
3029}
3030extern "C" {
3031    #[doc = " \\brief Set one single decoder parameter."]
3032    #[doc = ""]
3033    #[doc = " \\param self   AAC decoder handle."]
3034    #[doc = " \\param param  Parameter to be set."]
3035    #[doc = " \\param value  Parameter value."]
3036    #[doc = " \\return       Error code."]
3037    pub fn aacDecoder_SetParam(
3038        self_: HANDLE_AACDECODER,
3039        param: AACDEC_PARAM,
3040        value: INT,
3041    ) -> AAC_DECODER_ERROR;
3042}
3043extern "C" {
3044    #[doc = " \\brief              Get free bytes inside decoder internal buffer."]
3045    #[doc = " \\param self         Handle of AAC decoder instance."]
3046    #[doc = " \\param pFreeBytes   Pointer to variable receiving amount of free bytes inside"]
3047    #[doc = " decoder internal buffer."]
3048    #[doc = " \\return             Error code."]
3049    pub fn aacDecoder_GetFreeBytes(
3050        self_: HANDLE_AACDECODER,
3051        pFreeBytes: *mut UINT,
3052    ) -> AAC_DECODER_ERROR;
3053}
3054extern "C" {
3055    #[doc = " \\brief               Open an AAC decoder instance."]
3056    #[doc = " \\param transportFmt  The transport type to be used."]
3057    #[doc = " \\param nrOfLayers    Number of transport layers."]
3058    #[doc = " \\return              AAC decoder handle."]
3059    pub fn aacDecoder_Open(transportFmt: TRANSPORT_TYPE, nrOfLayers: UINT) -> HANDLE_AACDECODER;
3060}
3061extern "C" {
3062    #[doc = " \\brief Explicitly configure the decoder by passing a raw AudioSpecificConfig"]
3063    #[doc = " (ASC) or a StreamMuxConfig (SMC), contained in a binary buffer. This is"]
3064    #[doc = " required for MPEG-4 and Raw Packets file format bitstreams as well as for"]
3065    #[doc = " LATM bitstreams with no in-band SMC. If the transport format is LATM with or"]
3066    #[doc = " without LOAS, configuration is assumed to be an SMC, for all other file"]
3067    #[doc = " formats an ASC."]
3068    #[doc = ""]
3069    #[doc = " \\param self    AAC decoder handle."]
3070    #[doc = " \\param conf    Pointer to an unsigned char buffer containing the binary"]
3071    #[doc = " configuration buffer (either ASC or SMC)."]
3072    #[doc = " \\param length  Length of the configuration buffer in bytes."]
3073    #[doc = " \\return        Error code."]
3074    pub fn aacDecoder_ConfigRaw(
3075        self_: HANDLE_AACDECODER,
3076        conf: *mut *mut UCHAR,
3077        length: *const UINT,
3078    ) -> AAC_DECODER_ERROR;
3079}
3080extern "C" {
3081    #[doc = " \\brief Submit raw ISO base media file format boxes to decoder for parsing"]
3082    #[doc = " (only some box types are recognized)."]
3083    #[doc = ""]
3084    #[doc = " \\param self    AAC decoder handle."]
3085    #[doc = " \\param buffer  Pointer to an unsigned char buffer containing the binary box"]
3086    #[doc = " data (including size and type, can be a sequence of multiple boxes)."]
3087    #[doc = " \\param length  Length of the data in bytes."]
3088    #[doc = " \\return        Error code."]
3089    pub fn aacDecoder_RawISOBMFFData(
3090        self_: HANDLE_AACDECODER,
3091        buffer: *mut UCHAR,
3092        length: UINT,
3093    ) -> AAC_DECODER_ERROR;
3094}
3095extern "C" {
3096    #[doc = " \\brief Fill AAC decoder's internal input buffer with bitstream data from the"]
3097    #[doc = " external input buffer. The function only copies such data as long as the"]
3098    #[doc = " decoder-internal input buffer is not full. So it grabs whatever it can from"]
3099    #[doc = " pBuffer and returns information (bytesValid) so that at a subsequent call of"]
3100    #[doc = " %aacDecoder_Fill(), the right position in pBuffer can be determined to grab"]
3101    #[doc = " the next data."]
3102    #[doc = ""]
3103    #[doc = " \\param self        AAC decoder handle."]
3104    #[doc = " \\param pBuffer     Pointer to external input buffer."]
3105    #[doc = " \\param bufferSize  Size of external input buffer. This argument is required"]
3106    #[doc = " because decoder-internally we need the information to calculate the offset to"]
3107    #[doc = " pBuffer, where the next available data is, which is then"]
3108    #[doc = " fed into the decoder-internal buffer (as much as"]
3109    #[doc = " possible). Our example framework implementation fills the"]
3110    #[doc = " buffer at pBuffer again, once it contains no available valid bytes anymore"]
3111    #[doc = " (meaning bytesValid equal 0)."]
3112    #[doc = " \\param bytesValid  Number of bitstream bytes in the external bitstream buffer"]
3113    #[doc = " that have not yet been copied into the decoder's internal bitstream buffer by"]
3114    #[doc = " calling this function. The value is updated according to"]
3115    #[doc = " the amount of newly copied bytes."]
3116    #[doc = " \\return            Error code."]
3117    pub fn aacDecoder_Fill(
3118        self_: HANDLE_AACDECODER,
3119        pBuffer: *mut *mut UCHAR,
3120        bufferSize: *const UINT,
3121        bytesValid: *mut UINT,
3122    ) -> AAC_DECODER_ERROR;
3123}
3124extern "C" {
3125    #[doc = " \\brief               Decode one audio frame"]
3126    #[doc = ""]
3127    #[doc = " \\param self          AAC decoder handle."]
3128    #[doc = " \\param pTimeData     Pointer to external output buffer where the decoded PCM"]
3129    #[doc = " samples will be stored into."]
3130    #[doc = " \\param timeDataSize  Size of external output buffer."]
3131    #[doc = " \\param flags         Bit field with flags for the decoder: \\n"]
3132    #[doc = "                      (flags & AACDEC_CONCEAL) == 1: Do concealment. \\n"]
3133    #[doc = "                      (flags & AACDEC_FLUSH) == 2: Discard input data. Flush"]
3134    #[doc = " filter banks (output delayed audio). \\n (flags & AACDEC_INTR) == 4: Input"]
3135    #[doc = " data is discontinuous. Resynchronize any internals as"]
3136    #[doc = " necessary. \\n (flags & AACDEC_CLRHIST) == 8: Clear all signal delay lines and"]
3137    #[doc = " history buffers."]
3138    #[doc = " \\return              Error code."]
3139    pub fn aacDecoder_DecodeFrame(
3140        self_: HANDLE_AACDECODER,
3141        pTimeData: *mut INT_PCM,
3142        timeDataSize: INT,
3143        flags: UINT,
3144    ) -> AAC_DECODER_ERROR;
3145}
3146extern "C" {
3147    #[doc = " \\brief       De-allocate all resources of an AAC decoder instance."]
3148    #[doc = ""]
3149    #[doc = " \\param self  AAC decoder handle."]
3150    #[doc = " \\return      void."]
3151    pub fn aacDecoder_Close(self_: HANDLE_AACDECODER);
3152}
3153extern "C" {
3154    #[doc = " \\brief       Get CStreamInfo handle from decoder."]
3155    #[doc = ""]
3156    #[doc = " \\param self  AAC decoder handle."]
3157    #[doc = " \\return      Reference to requested CStreamInfo."]
3158    pub fn aacDecoder_GetStreamInfo(self_: HANDLE_AACDECODER) -> *mut CStreamInfo;
3159}
3160extern "C" {
3161    #[doc = " \\brief       Get decoder library info."]
3162    #[doc = ""]
3163    #[doc = " \\param info  Pointer to an allocated LIB_INFO structure."]
3164    #[doc = " \\return      0 on success."]
3165    pub fn aacDecoder_GetLibInfo(info: *mut LIB_INFO) -> INT;
3166}