1#![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}