Skip to main content

opusic_sys/
lib.rs

1/* automatically generated by rust-bindgen 0.72.1 */
2
3#![no_std]
4#![allow(non_upper_case_globals)]
5#![allow(non_camel_case_types)]
6#![allow(non_snake_case)]
7
8pub const OPUS_OK: core::ffi::c_int = 0;
9pub const OPUS_BAD_ARG: core::ffi::c_int = -1;
10pub const OPUS_BUFFER_TOO_SMALL: core::ffi::c_int = -2;
11pub const OPUS_INTERNAL_ERROR: core::ffi::c_int = -3;
12pub const OPUS_INVALID_PACKET: core::ffi::c_int = -4;
13pub const OPUS_UNIMPLEMENTED: core::ffi::c_int = -5;
14pub const OPUS_INVALID_STATE: core::ffi::c_int = -6;
15pub const OPUS_ALLOC_FAIL: core::ffi::c_int = -7;
16pub const OPUS_SET_APPLICATION_REQUEST: core::ffi::c_int = 4000;
17pub const OPUS_GET_APPLICATION_REQUEST: core::ffi::c_int = 4001;
18pub const OPUS_SET_BITRATE_REQUEST: core::ffi::c_int = 4002;
19pub const OPUS_GET_BITRATE_REQUEST: core::ffi::c_int = 4003;
20pub const OPUS_SET_MAX_BANDWIDTH_REQUEST: core::ffi::c_int = 4004;
21pub const OPUS_GET_MAX_BANDWIDTH_REQUEST: core::ffi::c_int = 4005;
22pub const OPUS_SET_VBR_REQUEST: core::ffi::c_int = 4006;
23pub const OPUS_GET_VBR_REQUEST: core::ffi::c_int = 4007;
24pub const OPUS_SET_BANDWIDTH_REQUEST: core::ffi::c_int = 4008;
25pub const OPUS_GET_BANDWIDTH_REQUEST: core::ffi::c_int = 4009;
26pub const OPUS_SET_COMPLEXITY_REQUEST: core::ffi::c_int = 4010;
27pub const OPUS_GET_COMPLEXITY_REQUEST: core::ffi::c_int = 4011;
28pub const OPUS_SET_INBAND_FEC_REQUEST: core::ffi::c_int = 4012;
29pub const OPUS_GET_INBAND_FEC_REQUEST: core::ffi::c_int = 4013;
30pub const OPUS_SET_PACKET_LOSS_PERC_REQUEST: core::ffi::c_int = 4014;
31pub const OPUS_GET_PACKET_LOSS_PERC_REQUEST: core::ffi::c_int = 4015;
32pub const OPUS_SET_DTX_REQUEST: core::ffi::c_int = 4016;
33pub const OPUS_GET_DTX_REQUEST: core::ffi::c_int = 4017;
34pub const OPUS_SET_VBR_CONSTRAINT_REQUEST: core::ffi::c_int = 4020;
35pub const OPUS_GET_VBR_CONSTRAINT_REQUEST: core::ffi::c_int = 4021;
36pub const OPUS_SET_FORCE_CHANNELS_REQUEST: core::ffi::c_int = 4022;
37pub const OPUS_GET_FORCE_CHANNELS_REQUEST: core::ffi::c_int = 4023;
38pub const OPUS_SET_SIGNAL_REQUEST: core::ffi::c_int = 4024;
39pub const OPUS_GET_SIGNAL_REQUEST: core::ffi::c_int = 4025;
40pub const OPUS_GET_LOOKAHEAD_REQUEST: core::ffi::c_int = 4027;
41pub const OPUS_GET_SAMPLE_RATE_REQUEST: core::ffi::c_int = 4029;
42pub const OPUS_GET_FINAL_RANGE_REQUEST: core::ffi::c_int = 4031;
43pub const OPUS_GET_PITCH_REQUEST: core::ffi::c_int = 4033;
44pub const OPUS_SET_GAIN_REQUEST: core::ffi::c_int = 4034;
45pub const OPUS_GET_GAIN_REQUEST: core::ffi::c_int = 4045;
46pub const OPUS_SET_LSB_DEPTH_REQUEST: core::ffi::c_int = 4036;
47pub const OPUS_GET_LSB_DEPTH_REQUEST: core::ffi::c_int = 4037;
48pub const OPUS_GET_LAST_PACKET_DURATION_REQUEST: core::ffi::c_int = 4039;
49pub const OPUS_SET_EXPERT_FRAME_DURATION_REQUEST: core::ffi::c_int = 4040;
50pub const OPUS_GET_EXPERT_FRAME_DURATION_REQUEST: core::ffi::c_int = 4041;
51pub const OPUS_SET_PREDICTION_DISABLED_REQUEST: core::ffi::c_int = 4042;
52pub const OPUS_GET_PREDICTION_DISABLED_REQUEST: core::ffi::c_int = 4043;
53pub const OPUS_SET_PHASE_INVERSION_DISABLED_REQUEST: core::ffi::c_int = 4046;
54pub const OPUS_GET_PHASE_INVERSION_DISABLED_REQUEST: core::ffi::c_int = 4047;
55pub const OPUS_GET_IN_DTX_REQUEST: core::ffi::c_int = 4049;
56pub const OPUS_SET_DRED_DURATION_REQUEST: core::ffi::c_int = 4050;
57pub const OPUS_GET_DRED_DURATION_REQUEST: core::ffi::c_int = 4051;
58pub const OPUS_SET_DNN_BLOB_REQUEST: core::ffi::c_int = 4052;
59pub const OPUS_SET_OSCE_BWE_REQUEST: core::ffi::c_int = 4054;
60pub const OPUS_GET_OSCE_BWE_REQUEST: core::ffi::c_int = 4055;
61pub const OPUS_SET_QEXT_REQUEST: core::ffi::c_int = 4056;
62pub const OPUS_GET_QEXT_REQUEST: core::ffi::c_int = 4057;
63pub const OPUS_SET_IGNORE_EXTENSIONS_REQUEST: core::ffi::c_int = 4058;
64pub const OPUS_GET_IGNORE_EXTENSIONS_REQUEST: core::ffi::c_int = 4059;
65pub const OPUS_AUTO: core::ffi::c_int = -1000;
66pub const OPUS_BITRATE_MAX: core::ffi::c_int = -1;
67pub const OPUS_APPLICATION_VOIP: core::ffi::c_int = 2048;
68pub const OPUS_APPLICATION_AUDIO: core::ffi::c_int = 2049;
69pub const OPUS_APPLICATION_RESTRICTED_LOWDELAY: core::ffi::c_int = 2051;
70pub const OPUS_APPLICATION_RESTRICTED_SILK: core::ffi::c_int = 2052;
71pub const OPUS_APPLICATION_RESTRICTED_CELT: core::ffi::c_int = 2053;
72pub const OPUS_SIGNAL_VOICE: core::ffi::c_int = 3001;
73pub const OPUS_SIGNAL_MUSIC: core::ffi::c_int = 3002;
74pub const OPUS_BANDWIDTH_NARROWBAND: core::ffi::c_int = 1101;
75pub const OPUS_BANDWIDTH_MEDIUMBAND: core::ffi::c_int = 1102;
76pub const OPUS_BANDWIDTH_WIDEBAND: core::ffi::c_int = 1103;
77pub const OPUS_BANDWIDTH_SUPERWIDEBAND: core::ffi::c_int = 1104;
78pub const OPUS_BANDWIDTH_FULLBAND: core::ffi::c_int = 1105;
79pub const OPUS_FRAMESIZE_ARG: core::ffi::c_int = 5000;
80pub const OPUS_FRAMESIZE_2_5_MS: core::ffi::c_int = 5001;
81pub const OPUS_FRAMESIZE_5_MS: core::ffi::c_int = 5002;
82pub const OPUS_FRAMESIZE_10_MS: core::ffi::c_int = 5003;
83pub const OPUS_FRAMESIZE_20_MS: core::ffi::c_int = 5004;
84pub const OPUS_FRAMESIZE_40_MS: core::ffi::c_int = 5005;
85pub const OPUS_FRAMESIZE_60_MS: core::ffi::c_int = 5006;
86pub const OPUS_FRAMESIZE_80_MS: core::ffi::c_int = 5007;
87pub const OPUS_FRAMESIZE_100_MS: core::ffi::c_int = 5008;
88pub const OPUS_FRAMESIZE_120_MS: core::ffi::c_int = 5009;
89pub const OPUS_RESET_STATE: core::ffi::c_int = 4028;
90pub const OPUS_MULTISTREAM_GET_ENCODER_STATE_REQUEST: core::ffi::c_int = 5120;
91pub const OPUS_MULTISTREAM_GET_DECODER_STATE_REQUEST: core::ffi::c_int = 5122;
92pub type opus_int8 = i8;
93pub type opus_uint8 = u8;
94pub type opus_int16 = i16;
95pub type opus_uint16 = u16;
96pub type opus_int32 = i32;
97pub type opus_uint32 = u32;
98pub type opus_int64 = i64;
99pub type opus_uint64 = u64;
100unsafe extern "C" {
101    pub fn opus_strerror(error: core::ffi::c_int) -> *const core::ffi::c_char;
102}
103unsafe extern "C" {
104    pub fn opus_get_version_string() -> *const core::ffi::c_char;
105}
106#[repr(C)]
107#[derive(Debug, Copy, Clone)]
108pub struct OpusEncoder {
109    _unused: [u8; 0],
110}
111unsafe extern "C" {
112    pub fn opus_encoder_get_size(channels: core::ffi::c_int) -> core::ffi::c_int;
113}
114unsafe extern "C" {
115    pub fn opus_encoder_create(
116        Fs: opus_int32,
117        channels: core::ffi::c_int,
118        application: core::ffi::c_int,
119        error: *mut core::ffi::c_int,
120    ) -> *mut OpusEncoder;
121}
122unsafe extern "C" {
123    pub fn opus_encoder_init(
124        st: *mut OpusEncoder,
125        Fs: opus_int32,
126        channels: core::ffi::c_int,
127        application: core::ffi::c_int,
128    ) -> core::ffi::c_int;
129}
130unsafe extern "C" {
131    pub fn opus_encode(
132        st: *mut OpusEncoder,
133        pcm: *const opus_int16,
134        frame_size: core::ffi::c_int,
135        data: *mut core::ffi::c_uchar,
136        max_data_bytes: opus_int32,
137    ) -> opus_int32;
138}
139unsafe extern "C" {
140    pub fn opus_encode24(
141        st: *mut OpusEncoder,
142        pcm: *const opus_int32,
143        frame_size: core::ffi::c_int,
144        data: *mut core::ffi::c_uchar,
145        max_data_bytes: opus_int32,
146    ) -> opus_int32;
147}
148unsafe extern "C" {
149    pub fn opus_encode_float(
150        st: *mut OpusEncoder,
151        pcm: *const f32,
152        frame_size: core::ffi::c_int,
153        data: *mut core::ffi::c_uchar,
154        max_data_bytes: opus_int32,
155    ) -> opus_int32;
156}
157unsafe extern "C" {
158    pub fn opus_encoder_destroy(st: *mut OpusEncoder);
159}
160unsafe extern "C" {
161    pub fn opus_encoder_ctl(
162        st: *mut OpusEncoder,
163        request: core::ffi::c_int,
164        ...
165    ) -> core::ffi::c_int;
166}
167#[repr(C)]
168#[derive(Debug, Copy, Clone)]
169pub struct OpusDecoder {
170    _unused: [u8; 0],
171}
172#[repr(C)]
173#[derive(Debug, Copy, Clone)]
174pub struct OpusDREDDecoder {
175    _unused: [u8; 0],
176}
177#[repr(C)]
178#[derive(Debug, Copy, Clone)]
179pub struct OpusDRED {
180    _unused: [u8; 0],
181}
182unsafe extern "C" {
183    pub fn opus_decoder_get_size(channels: core::ffi::c_int) -> core::ffi::c_int;
184}
185unsafe extern "C" {
186    pub fn opus_decoder_create(
187        Fs: opus_int32,
188        channels: core::ffi::c_int,
189        error: *mut core::ffi::c_int,
190    ) -> *mut OpusDecoder;
191}
192unsafe extern "C" {
193    pub fn opus_decoder_init(
194        st: *mut OpusDecoder,
195        Fs: opus_int32,
196        channels: core::ffi::c_int,
197    ) -> core::ffi::c_int;
198}
199unsafe extern "C" {
200    pub fn opus_decode(
201        st: *mut OpusDecoder,
202        data: *const core::ffi::c_uchar,
203        len: opus_int32,
204        pcm: *mut opus_int16,
205        frame_size: core::ffi::c_int,
206        decode_fec: core::ffi::c_int,
207    ) -> core::ffi::c_int;
208}
209unsafe extern "C" {
210    pub fn opus_decode24(
211        st: *mut OpusDecoder,
212        data: *const core::ffi::c_uchar,
213        len: opus_int32,
214        pcm: *mut opus_int32,
215        frame_size: core::ffi::c_int,
216        decode_fec: core::ffi::c_int,
217    ) -> core::ffi::c_int;
218}
219unsafe extern "C" {
220    pub fn opus_decode_float(
221        st: *mut OpusDecoder,
222        data: *const core::ffi::c_uchar,
223        len: opus_int32,
224        pcm: *mut f32,
225        frame_size: core::ffi::c_int,
226        decode_fec: core::ffi::c_int,
227    ) -> core::ffi::c_int;
228}
229unsafe extern "C" {
230    pub fn opus_decoder_ctl(
231        st: *mut OpusDecoder,
232        request: core::ffi::c_int,
233        ...
234    ) -> core::ffi::c_int;
235}
236unsafe extern "C" {
237    pub fn opus_decoder_destroy(st: *mut OpusDecoder);
238}
239unsafe extern "C" {
240    pub fn opus_dred_decoder_get_size() -> core::ffi::c_int;
241}
242unsafe extern "C" {
243    pub fn opus_dred_decoder_create(error: *mut core::ffi::c_int) -> *mut OpusDREDDecoder;
244}
245unsafe extern "C" {
246    pub fn opus_dred_decoder_init(dec: *mut OpusDREDDecoder) -> core::ffi::c_int;
247}
248unsafe extern "C" {
249    pub fn opus_dred_decoder_destroy(dec: *mut OpusDREDDecoder);
250}
251unsafe extern "C" {
252    pub fn opus_dred_decoder_ctl(
253        dred_dec: *mut OpusDREDDecoder,
254        request: core::ffi::c_int,
255        ...
256    ) -> core::ffi::c_int;
257}
258unsafe extern "C" {
259    pub fn opus_dred_get_size() -> core::ffi::c_int;
260}
261unsafe extern "C" {
262    pub fn opus_dred_alloc(error: *mut core::ffi::c_int) -> *mut OpusDRED;
263}
264unsafe extern "C" {
265    pub fn opus_dred_free(dec: *mut OpusDRED);
266}
267unsafe extern "C" {
268    pub fn opus_dred_parse(
269        dred_dec: *mut OpusDREDDecoder,
270        dred: *mut OpusDRED,
271        data: *const core::ffi::c_uchar,
272        len: opus_int32,
273        max_dred_samples: opus_int32,
274        sampling_rate: opus_int32,
275        dred_end: *mut core::ffi::c_int,
276        defer_processing: core::ffi::c_int,
277    ) -> core::ffi::c_int;
278}
279unsafe extern "C" {
280    pub fn opus_dred_process(
281        dred_dec: *mut OpusDREDDecoder,
282        src: *const OpusDRED,
283        dst: *mut OpusDRED,
284    ) -> core::ffi::c_int;
285}
286unsafe extern "C" {
287    pub fn opus_decoder_dred_decode(
288        st: *mut OpusDecoder,
289        dred: *const OpusDRED,
290        dred_offset: opus_int32,
291        pcm: *mut opus_int16,
292        frame_size: opus_int32,
293    ) -> core::ffi::c_int;
294}
295unsafe extern "C" {
296    pub fn opus_decoder_dred_decode24(
297        st: *mut OpusDecoder,
298        dred: *const OpusDRED,
299        dred_offset: opus_int32,
300        pcm: *mut opus_int32,
301        frame_size: opus_int32,
302    ) -> core::ffi::c_int;
303}
304unsafe extern "C" {
305    pub fn opus_decoder_dred_decode_float(
306        st: *mut OpusDecoder,
307        dred: *const OpusDRED,
308        dred_offset: opus_int32,
309        pcm: *mut f32,
310        frame_size: opus_int32,
311    ) -> core::ffi::c_int;
312}
313unsafe extern "C" {
314    pub fn opus_packet_parse(
315        data: *const core::ffi::c_uchar,
316        len: opus_int32,
317        out_toc: *mut core::ffi::c_uchar,
318        frames: *mut *const core::ffi::c_uchar,
319        size: *mut opus_int16,
320        payload_offset: *mut core::ffi::c_int,
321    ) -> core::ffi::c_int;
322}
323unsafe extern "C" {
324    pub fn opus_packet_get_bandwidth(data: *const core::ffi::c_uchar) -> core::ffi::c_int;
325}
326unsafe extern "C" {
327    pub fn opus_packet_get_samples_per_frame(
328        data: *const core::ffi::c_uchar,
329        Fs: opus_int32,
330    ) -> core::ffi::c_int;
331}
332unsafe extern "C" {
333    pub fn opus_packet_get_nb_channels(data: *const core::ffi::c_uchar) -> core::ffi::c_int;
334}
335unsafe extern "C" {
336    pub fn opus_packet_get_nb_frames(
337        packet: *const core::ffi::c_uchar,
338        len: opus_int32,
339    ) -> core::ffi::c_int;
340}
341unsafe extern "C" {
342    pub fn opus_packet_get_nb_samples(
343        packet: *const core::ffi::c_uchar,
344        len: opus_int32,
345        Fs: opus_int32,
346    ) -> core::ffi::c_int;
347}
348unsafe extern "C" {
349    pub fn opus_packet_has_lbrr(
350        packet: *const core::ffi::c_uchar,
351        len: opus_int32,
352    ) -> core::ffi::c_int;
353}
354unsafe extern "C" {
355    pub fn opus_decoder_get_nb_samples(
356        dec: *const OpusDecoder,
357        packet: *const core::ffi::c_uchar,
358        len: opus_int32,
359    ) -> core::ffi::c_int;
360}
361unsafe extern "C" {
362    pub fn opus_pcm_soft_clip(
363        pcm: *mut f32,
364        frame_size: core::ffi::c_int,
365        channels: core::ffi::c_int,
366        softclip_mem: *mut f32,
367    );
368}
369#[repr(C)]
370#[derive(Debug, Copy, Clone)]
371pub struct OpusRepacketizer {
372    _unused: [u8; 0],
373}
374unsafe extern "C" {
375    pub fn opus_repacketizer_get_size() -> core::ffi::c_int;
376}
377unsafe extern "C" {
378    pub fn opus_repacketizer_init(rp: *mut OpusRepacketizer) -> *mut OpusRepacketizer;
379}
380unsafe extern "C" {
381    pub fn opus_repacketizer_create() -> *mut OpusRepacketizer;
382}
383unsafe extern "C" {
384    pub fn opus_repacketizer_destroy(rp: *mut OpusRepacketizer);
385}
386unsafe extern "C" {
387    pub fn opus_repacketizer_cat(
388        rp: *mut OpusRepacketizer,
389        data: *const core::ffi::c_uchar,
390        len: opus_int32,
391    ) -> core::ffi::c_int;
392}
393unsafe extern "C" {
394    pub fn opus_repacketizer_out_range(
395        rp: *mut OpusRepacketizer,
396        begin: core::ffi::c_int,
397        end: core::ffi::c_int,
398        data: *mut core::ffi::c_uchar,
399        maxlen: opus_int32,
400    ) -> opus_int32;
401}
402unsafe extern "C" {
403    pub fn opus_repacketizer_get_nb_frames(rp: *mut OpusRepacketizer) -> core::ffi::c_int;
404}
405unsafe extern "C" {
406    pub fn opus_repacketizer_out(
407        rp: *mut OpusRepacketizer,
408        data: *mut core::ffi::c_uchar,
409        maxlen: opus_int32,
410    ) -> opus_int32;
411}
412unsafe extern "C" {
413    pub fn opus_packet_pad(
414        data: *mut core::ffi::c_uchar,
415        len: opus_int32,
416        new_len: opus_int32,
417    ) -> core::ffi::c_int;
418}
419unsafe extern "C" {
420    pub fn opus_packet_unpad(data: *mut core::ffi::c_uchar, len: opus_int32) -> opus_int32;
421}
422unsafe extern "C" {
423    pub fn opus_multistream_packet_pad(
424        data: *mut core::ffi::c_uchar,
425        len: opus_int32,
426        new_len: opus_int32,
427        nb_streams: core::ffi::c_int,
428    ) -> core::ffi::c_int;
429}
430unsafe extern "C" {
431    pub fn opus_multistream_packet_unpad(
432        data: *mut core::ffi::c_uchar,
433        len: opus_int32,
434        nb_streams: core::ffi::c_int,
435    ) -> opus_int32;
436}
437#[repr(C)]
438#[derive(Debug, Copy, Clone)]
439pub struct OpusMSEncoder {
440    _unused: [u8; 0],
441}
442#[repr(C)]
443#[derive(Debug, Copy, Clone)]
444pub struct OpusMSDecoder {
445    _unused: [u8; 0],
446}
447unsafe extern "C" {
448    pub fn opus_multistream_encoder_get_size(
449        streams: core::ffi::c_int,
450        coupled_streams: core::ffi::c_int,
451    ) -> opus_int32;
452}
453unsafe extern "C" {
454    pub fn opus_multistream_surround_encoder_get_size(
455        channels: core::ffi::c_int,
456        mapping_family: core::ffi::c_int,
457    ) -> opus_int32;
458}
459unsafe extern "C" {
460    pub fn opus_multistream_encoder_create(
461        Fs: opus_int32,
462        channels: core::ffi::c_int,
463        streams: core::ffi::c_int,
464        coupled_streams: core::ffi::c_int,
465        mapping: *const core::ffi::c_uchar,
466        application: core::ffi::c_int,
467        error: *mut core::ffi::c_int,
468    ) -> *mut OpusMSEncoder;
469}
470unsafe extern "C" {
471    pub fn opus_multistream_surround_encoder_create(
472        Fs: opus_int32,
473        channels: core::ffi::c_int,
474        mapping_family: core::ffi::c_int,
475        streams: *mut core::ffi::c_int,
476        coupled_streams: *mut core::ffi::c_int,
477        mapping: *mut core::ffi::c_uchar,
478        application: core::ffi::c_int,
479        error: *mut core::ffi::c_int,
480    ) -> *mut OpusMSEncoder;
481}
482unsafe extern "C" {
483    pub fn opus_multistream_encoder_init(
484        st: *mut OpusMSEncoder,
485        Fs: opus_int32,
486        channels: core::ffi::c_int,
487        streams: core::ffi::c_int,
488        coupled_streams: core::ffi::c_int,
489        mapping: *const core::ffi::c_uchar,
490        application: core::ffi::c_int,
491    ) -> core::ffi::c_int;
492}
493unsafe extern "C" {
494    pub fn opus_multistream_surround_encoder_init(
495        st: *mut OpusMSEncoder,
496        Fs: opus_int32,
497        channels: core::ffi::c_int,
498        mapping_family: core::ffi::c_int,
499        streams: *mut core::ffi::c_int,
500        coupled_streams: *mut core::ffi::c_int,
501        mapping: *mut core::ffi::c_uchar,
502        application: core::ffi::c_int,
503    ) -> core::ffi::c_int;
504}
505unsafe extern "C" {
506    pub fn opus_multistream_encode(
507        st: *mut OpusMSEncoder,
508        pcm: *const opus_int16,
509        frame_size: core::ffi::c_int,
510        data: *mut core::ffi::c_uchar,
511        max_data_bytes: opus_int32,
512    ) -> core::ffi::c_int;
513}
514unsafe extern "C" {
515    pub fn opus_multistream_encode24(
516        st: *mut OpusMSEncoder,
517        pcm: *const opus_int32,
518        frame_size: core::ffi::c_int,
519        data: *mut core::ffi::c_uchar,
520        max_data_bytes: opus_int32,
521    ) -> core::ffi::c_int;
522}
523unsafe extern "C" {
524    pub fn opus_multistream_encode_float(
525        st: *mut OpusMSEncoder,
526        pcm: *const f32,
527        frame_size: core::ffi::c_int,
528        data: *mut core::ffi::c_uchar,
529        max_data_bytes: opus_int32,
530    ) -> core::ffi::c_int;
531}
532unsafe extern "C" {
533    pub fn opus_multistream_encoder_destroy(st: *mut OpusMSEncoder);
534}
535unsafe extern "C" {
536    pub fn opus_multistream_encoder_ctl(
537        st: *mut OpusMSEncoder,
538        request: core::ffi::c_int,
539        ...
540    ) -> core::ffi::c_int;
541}
542unsafe extern "C" {
543    pub fn opus_multistream_decoder_get_size(
544        streams: core::ffi::c_int,
545        coupled_streams: core::ffi::c_int,
546    ) -> opus_int32;
547}
548unsafe extern "C" {
549    pub fn opus_multistream_decoder_create(
550        Fs: opus_int32,
551        channels: core::ffi::c_int,
552        streams: core::ffi::c_int,
553        coupled_streams: core::ffi::c_int,
554        mapping: *const core::ffi::c_uchar,
555        error: *mut core::ffi::c_int,
556    ) -> *mut OpusMSDecoder;
557}
558unsafe extern "C" {
559    pub fn opus_multistream_decoder_init(
560        st: *mut OpusMSDecoder,
561        Fs: opus_int32,
562        channels: core::ffi::c_int,
563        streams: core::ffi::c_int,
564        coupled_streams: core::ffi::c_int,
565        mapping: *const core::ffi::c_uchar,
566    ) -> core::ffi::c_int;
567}
568unsafe extern "C" {
569    pub fn opus_multistream_decode(
570        st: *mut OpusMSDecoder,
571        data: *const core::ffi::c_uchar,
572        len: opus_int32,
573        pcm: *mut opus_int16,
574        frame_size: core::ffi::c_int,
575        decode_fec: core::ffi::c_int,
576    ) -> core::ffi::c_int;
577}
578unsafe extern "C" {
579    pub fn opus_multistream_decode24(
580        st: *mut OpusMSDecoder,
581        data: *const core::ffi::c_uchar,
582        len: opus_int32,
583        pcm: *mut opus_int32,
584        frame_size: core::ffi::c_int,
585        decode_fec: core::ffi::c_int,
586    ) -> core::ffi::c_int;
587}
588unsafe extern "C" {
589    pub fn opus_multistream_decode_float(
590        st: *mut OpusMSDecoder,
591        data: *const core::ffi::c_uchar,
592        len: opus_int32,
593        pcm: *mut f32,
594        frame_size: core::ffi::c_int,
595        decode_fec: core::ffi::c_int,
596    ) -> core::ffi::c_int;
597}
598unsafe extern "C" {
599    pub fn opus_multistream_decoder_ctl(
600        st: *mut OpusMSDecoder,
601        request: core::ffi::c_int,
602        ...
603    ) -> core::ffi::c_int;
604}
605unsafe extern "C" {
606    pub fn opus_multistream_decoder_destroy(st: *mut OpusMSDecoder);
607}