gstreamer_audio_sys/
lib.rs

1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from gir-files (https://github.com/gtk-rs/gir-files)
3// from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git)
4// DO NOT EDIT
5
6#![allow(non_camel_case_types, non_upper_case_globals, non_snake_case)]
7#![allow(
8    clippy::approx_constant,
9    clippy::type_complexity,
10    clippy::unreadable_literal,
11    clippy::upper_case_acronyms
12)]
13#![cfg_attr(docsrs, feature(doc_cfg))]
14
15use glib_sys as glib;
16use gobject_sys as gobject;
17use gstreamer_base_sys as gst_base;
18use gstreamer_sys as gst;
19
20#[cfg(unix)]
21#[allow(unused_imports)]
22use libc::{dev_t, gid_t, pid_t, socklen_t, uid_t};
23#[allow(unused_imports)]
24use libc::{intptr_t, off_t, size_t, ssize_t, time_t, uintptr_t, FILE};
25#[allow(unused_imports)]
26use std::ffi::{
27    c_char, c_double, c_float, c_int, c_long, c_short, c_uchar, c_uint, c_ulong, c_ushort, c_void,
28};
29
30#[allow(unused_imports)]
31use glib::{gboolean, gconstpointer, gpointer, GType};
32
33// Enums
34pub type GstAudioBaseSinkDiscontReason = c_int;
35pub const GST_AUDIO_BASE_SINK_DISCONT_REASON_NO_DISCONT: GstAudioBaseSinkDiscontReason = 0;
36pub const GST_AUDIO_BASE_SINK_DISCONT_REASON_NEW_CAPS: GstAudioBaseSinkDiscontReason = 1;
37pub const GST_AUDIO_BASE_SINK_DISCONT_REASON_FLUSH: GstAudioBaseSinkDiscontReason = 2;
38pub const GST_AUDIO_BASE_SINK_DISCONT_REASON_SYNC_LATENCY: GstAudioBaseSinkDiscontReason = 3;
39pub const GST_AUDIO_BASE_SINK_DISCONT_REASON_ALIGNMENT: GstAudioBaseSinkDiscontReason = 4;
40pub const GST_AUDIO_BASE_SINK_DISCONT_REASON_DEVICE_FAILURE: GstAudioBaseSinkDiscontReason = 5;
41
42pub type GstAudioBaseSinkSlaveMethod = c_int;
43pub const GST_AUDIO_BASE_SINK_SLAVE_RESAMPLE: GstAudioBaseSinkSlaveMethod = 0;
44pub const GST_AUDIO_BASE_SINK_SLAVE_SKEW: GstAudioBaseSinkSlaveMethod = 1;
45pub const GST_AUDIO_BASE_SINK_SLAVE_NONE: GstAudioBaseSinkSlaveMethod = 2;
46pub const GST_AUDIO_BASE_SINK_SLAVE_CUSTOM: GstAudioBaseSinkSlaveMethod = 3;
47
48pub type GstAudioBaseSrcSlaveMethod = c_int;
49pub const GST_AUDIO_BASE_SRC_SLAVE_RESAMPLE: GstAudioBaseSrcSlaveMethod = 0;
50pub const GST_AUDIO_BASE_SRC_SLAVE_RE_TIMESTAMP: GstAudioBaseSrcSlaveMethod = 1;
51pub const GST_AUDIO_BASE_SRC_SLAVE_SKEW: GstAudioBaseSrcSlaveMethod = 2;
52pub const GST_AUDIO_BASE_SRC_SLAVE_NONE: GstAudioBaseSrcSlaveMethod = 3;
53
54pub type GstAudioCdSrcMode = c_int;
55pub const GST_AUDIO_CD_SRC_MODE_NORMAL: GstAudioCdSrcMode = 0;
56pub const GST_AUDIO_CD_SRC_MODE_CONTINUOUS: GstAudioCdSrcMode = 1;
57
58pub type GstAudioChannelPosition = c_int;
59pub const GST_AUDIO_CHANNEL_POSITION_NONE: GstAudioChannelPosition = -3;
60pub const GST_AUDIO_CHANNEL_POSITION_MONO: GstAudioChannelPosition = -2;
61pub const GST_AUDIO_CHANNEL_POSITION_INVALID: GstAudioChannelPosition = -1;
62pub const GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT: GstAudioChannelPosition = 0;
63pub const GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT: GstAudioChannelPosition = 1;
64pub const GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER: GstAudioChannelPosition = 2;
65pub const GST_AUDIO_CHANNEL_POSITION_LFE1: GstAudioChannelPosition = 3;
66pub const GST_AUDIO_CHANNEL_POSITION_REAR_LEFT: GstAudioChannelPosition = 4;
67pub const GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT: GstAudioChannelPosition = 5;
68pub const GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER: GstAudioChannelPosition = 6;
69pub const GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER: GstAudioChannelPosition = 7;
70pub const GST_AUDIO_CHANNEL_POSITION_REAR_CENTER: GstAudioChannelPosition = 8;
71pub const GST_AUDIO_CHANNEL_POSITION_LFE2: GstAudioChannelPosition = 9;
72pub const GST_AUDIO_CHANNEL_POSITION_SIDE_LEFT: GstAudioChannelPosition = 10;
73pub const GST_AUDIO_CHANNEL_POSITION_SIDE_RIGHT: GstAudioChannelPosition = 11;
74pub const GST_AUDIO_CHANNEL_POSITION_TOP_FRONT_LEFT: GstAudioChannelPosition = 12;
75pub const GST_AUDIO_CHANNEL_POSITION_TOP_FRONT_RIGHT: GstAudioChannelPosition = 13;
76pub const GST_AUDIO_CHANNEL_POSITION_TOP_FRONT_CENTER: GstAudioChannelPosition = 14;
77pub const GST_AUDIO_CHANNEL_POSITION_TOP_CENTER: GstAudioChannelPosition = 15;
78pub const GST_AUDIO_CHANNEL_POSITION_TOP_REAR_LEFT: GstAudioChannelPosition = 16;
79pub const GST_AUDIO_CHANNEL_POSITION_TOP_REAR_RIGHT: GstAudioChannelPosition = 17;
80pub const GST_AUDIO_CHANNEL_POSITION_TOP_SIDE_LEFT: GstAudioChannelPosition = 18;
81pub const GST_AUDIO_CHANNEL_POSITION_TOP_SIDE_RIGHT: GstAudioChannelPosition = 19;
82pub const GST_AUDIO_CHANNEL_POSITION_TOP_REAR_CENTER: GstAudioChannelPosition = 20;
83pub const GST_AUDIO_CHANNEL_POSITION_BOTTOM_FRONT_CENTER: GstAudioChannelPosition = 21;
84pub const GST_AUDIO_CHANNEL_POSITION_BOTTOM_FRONT_LEFT: GstAudioChannelPosition = 22;
85pub const GST_AUDIO_CHANNEL_POSITION_BOTTOM_FRONT_RIGHT: GstAudioChannelPosition = 23;
86pub const GST_AUDIO_CHANNEL_POSITION_WIDE_LEFT: GstAudioChannelPosition = 24;
87pub const GST_AUDIO_CHANNEL_POSITION_WIDE_RIGHT: GstAudioChannelPosition = 25;
88pub const GST_AUDIO_CHANNEL_POSITION_SURROUND_LEFT: GstAudioChannelPosition = 26;
89pub const GST_AUDIO_CHANNEL_POSITION_SURROUND_RIGHT: GstAudioChannelPosition = 27;
90#[cfg(feature = "v1_26")]
91#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
92pub const GST_AUDIO_CHANNEL_POSITION_TOP_SURROUND_LEFT: GstAudioChannelPosition = 28;
93#[cfg(feature = "v1_26")]
94#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
95pub const GST_AUDIO_CHANNEL_POSITION_TOP_SURROUND_RIGHT: GstAudioChannelPosition = 29;
96
97pub type GstAudioDitherMethod = c_int;
98pub const GST_AUDIO_DITHER_NONE: GstAudioDitherMethod = 0;
99pub const GST_AUDIO_DITHER_RPDF: GstAudioDitherMethod = 1;
100pub const GST_AUDIO_DITHER_TPDF: GstAudioDitherMethod = 2;
101pub const GST_AUDIO_DITHER_TPDF_HF: GstAudioDitherMethod = 3;
102
103pub type GstAudioFormat = c_int;
104pub const GST_AUDIO_FORMAT_UNKNOWN: GstAudioFormat = 0;
105pub const GST_AUDIO_FORMAT_ENCODED: GstAudioFormat = 1;
106pub const GST_AUDIO_FORMAT_S8: GstAudioFormat = 2;
107pub const GST_AUDIO_FORMAT_U8: GstAudioFormat = 3;
108pub const GST_AUDIO_FORMAT_S16LE: GstAudioFormat = 4;
109pub const GST_AUDIO_FORMAT_S16BE: GstAudioFormat = 5;
110pub const GST_AUDIO_FORMAT_U16LE: GstAudioFormat = 6;
111pub const GST_AUDIO_FORMAT_U16BE: GstAudioFormat = 7;
112pub const GST_AUDIO_FORMAT_S24_32LE: GstAudioFormat = 8;
113pub const GST_AUDIO_FORMAT_S24_32BE: GstAudioFormat = 9;
114pub const GST_AUDIO_FORMAT_U24_32LE: GstAudioFormat = 10;
115pub const GST_AUDIO_FORMAT_U24_32BE: GstAudioFormat = 11;
116pub const GST_AUDIO_FORMAT_S32LE: GstAudioFormat = 12;
117pub const GST_AUDIO_FORMAT_S32BE: GstAudioFormat = 13;
118pub const GST_AUDIO_FORMAT_U32LE: GstAudioFormat = 14;
119pub const GST_AUDIO_FORMAT_U32BE: GstAudioFormat = 15;
120pub const GST_AUDIO_FORMAT_S24LE: GstAudioFormat = 16;
121pub const GST_AUDIO_FORMAT_S24BE: GstAudioFormat = 17;
122pub const GST_AUDIO_FORMAT_U24LE: GstAudioFormat = 18;
123pub const GST_AUDIO_FORMAT_U24BE: GstAudioFormat = 19;
124pub const GST_AUDIO_FORMAT_S20LE: GstAudioFormat = 20;
125pub const GST_AUDIO_FORMAT_S20BE: GstAudioFormat = 21;
126pub const GST_AUDIO_FORMAT_U20LE: GstAudioFormat = 22;
127pub const GST_AUDIO_FORMAT_U20BE: GstAudioFormat = 23;
128pub const GST_AUDIO_FORMAT_S18LE: GstAudioFormat = 24;
129pub const GST_AUDIO_FORMAT_S18BE: GstAudioFormat = 25;
130pub const GST_AUDIO_FORMAT_U18LE: GstAudioFormat = 26;
131pub const GST_AUDIO_FORMAT_U18BE: GstAudioFormat = 27;
132pub const GST_AUDIO_FORMAT_F32LE: GstAudioFormat = 28;
133pub const GST_AUDIO_FORMAT_F32BE: GstAudioFormat = 29;
134pub const GST_AUDIO_FORMAT_F64LE: GstAudioFormat = 30;
135pub const GST_AUDIO_FORMAT_F64BE: GstAudioFormat = 31;
136#[cfg(feature = "v1_28")]
137#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
138pub const GST_AUDIO_FORMAT_S20_32LE: GstAudioFormat = 32;
139#[cfg(feature = "v1_28")]
140#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
141pub const GST_AUDIO_FORMAT_S20_32BE: GstAudioFormat = 33;
142#[cfg(feature = "v1_28")]
143#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
144pub const GST_AUDIO_FORMAT_U20_32LE: GstAudioFormat = 34;
145#[cfg(feature = "v1_28")]
146#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
147pub const GST_AUDIO_FORMAT_U20_32BE: GstAudioFormat = 35;
148#[cfg(feature = "v1_28")]
149#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
150pub const GST_AUDIO_FORMAT_S20_32: GstAudioFormat = 32;
151#[cfg(feature = "v1_28")]
152#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
153pub const GST_AUDIO_FORMAT_U20_32: GstAudioFormat = 34;
154
155pub type GstAudioLayout = c_int;
156pub const GST_AUDIO_LAYOUT_INTERLEAVED: GstAudioLayout = 0;
157pub const GST_AUDIO_LAYOUT_NON_INTERLEAVED: GstAudioLayout = 1;
158
159pub type GstAudioNoiseShapingMethod = c_int;
160pub const GST_AUDIO_NOISE_SHAPING_NONE: GstAudioNoiseShapingMethod = 0;
161pub const GST_AUDIO_NOISE_SHAPING_ERROR_FEEDBACK: GstAudioNoiseShapingMethod = 1;
162pub const GST_AUDIO_NOISE_SHAPING_SIMPLE: GstAudioNoiseShapingMethod = 2;
163pub const GST_AUDIO_NOISE_SHAPING_MEDIUM: GstAudioNoiseShapingMethod = 3;
164pub const GST_AUDIO_NOISE_SHAPING_HIGH: GstAudioNoiseShapingMethod = 4;
165
166pub type GstAudioResamplerFilterInterpolation = c_int;
167pub const GST_AUDIO_RESAMPLER_FILTER_INTERPOLATION_NONE: GstAudioResamplerFilterInterpolation = 0;
168pub const GST_AUDIO_RESAMPLER_FILTER_INTERPOLATION_LINEAR: GstAudioResamplerFilterInterpolation = 1;
169pub const GST_AUDIO_RESAMPLER_FILTER_INTERPOLATION_CUBIC: GstAudioResamplerFilterInterpolation = 2;
170
171pub type GstAudioResamplerFilterMode = c_int;
172pub const GST_AUDIO_RESAMPLER_FILTER_MODE_INTERPOLATED: GstAudioResamplerFilterMode = 0;
173pub const GST_AUDIO_RESAMPLER_FILTER_MODE_FULL: GstAudioResamplerFilterMode = 1;
174pub const GST_AUDIO_RESAMPLER_FILTER_MODE_AUTO: GstAudioResamplerFilterMode = 2;
175
176pub type GstAudioResamplerMethod = c_int;
177pub const GST_AUDIO_RESAMPLER_METHOD_NEAREST: GstAudioResamplerMethod = 0;
178pub const GST_AUDIO_RESAMPLER_METHOD_LINEAR: GstAudioResamplerMethod = 1;
179pub const GST_AUDIO_RESAMPLER_METHOD_CUBIC: GstAudioResamplerMethod = 2;
180pub const GST_AUDIO_RESAMPLER_METHOD_BLACKMAN_NUTTALL: GstAudioResamplerMethod = 3;
181pub const GST_AUDIO_RESAMPLER_METHOD_KAISER: GstAudioResamplerMethod = 4;
182
183pub type GstAudioRingBufferFormatType = c_int;
184pub const GST_AUDIO_RING_BUFFER_FORMAT_TYPE_RAW: GstAudioRingBufferFormatType = 0;
185pub const GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MU_LAW: GstAudioRingBufferFormatType = 1;
186pub const GST_AUDIO_RING_BUFFER_FORMAT_TYPE_A_LAW: GstAudioRingBufferFormatType = 2;
187pub const GST_AUDIO_RING_BUFFER_FORMAT_TYPE_IMA_ADPCM: GstAudioRingBufferFormatType = 3;
188pub const GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG: GstAudioRingBufferFormatType = 4;
189pub const GST_AUDIO_RING_BUFFER_FORMAT_TYPE_GSM: GstAudioRingBufferFormatType = 5;
190pub const GST_AUDIO_RING_BUFFER_FORMAT_TYPE_IEC958: GstAudioRingBufferFormatType = 6;
191pub const GST_AUDIO_RING_BUFFER_FORMAT_TYPE_AC3: GstAudioRingBufferFormatType = 7;
192pub const GST_AUDIO_RING_BUFFER_FORMAT_TYPE_EAC3: GstAudioRingBufferFormatType = 8;
193pub const GST_AUDIO_RING_BUFFER_FORMAT_TYPE_DTS: GstAudioRingBufferFormatType = 9;
194pub const GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG2_AAC: GstAudioRingBufferFormatType = 10;
195pub const GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG4_AAC: GstAudioRingBufferFormatType = 11;
196pub const GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG2_AAC_RAW: GstAudioRingBufferFormatType = 12;
197pub const GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG4_AAC_RAW: GstAudioRingBufferFormatType = 13;
198pub const GST_AUDIO_RING_BUFFER_FORMAT_TYPE_FLAC: GstAudioRingBufferFormatType = 14;
199pub const GST_AUDIO_RING_BUFFER_FORMAT_TYPE_DSD: GstAudioRingBufferFormatType = 15;
200
201pub type GstAudioRingBufferState = c_int;
202pub const GST_AUDIO_RING_BUFFER_STATE_STOPPED: GstAudioRingBufferState = 0;
203pub const GST_AUDIO_RING_BUFFER_STATE_PAUSED: GstAudioRingBufferState = 1;
204pub const GST_AUDIO_RING_BUFFER_STATE_STARTED: GstAudioRingBufferState = 2;
205pub const GST_AUDIO_RING_BUFFER_STATE_ERROR: GstAudioRingBufferState = 3;
206
207pub type GstDsdFormat = c_int;
208pub const GST_DSD_FORMAT_UNKNOWN: GstDsdFormat = 0;
209pub const GST_DSD_FORMAT_U8: GstDsdFormat = 1;
210pub const GST_DSD_FORMAT_U16LE: GstDsdFormat = 2;
211pub const GST_DSD_FORMAT_U16BE: GstDsdFormat = 3;
212pub const GST_DSD_FORMAT_U32LE: GstDsdFormat = 4;
213pub const GST_DSD_FORMAT_U32BE: GstDsdFormat = 5;
214pub const GST_NUM_DSD_FORMATS: GstDsdFormat = 6;
215pub const GST_DSD_FORMAT_U16: GstDsdFormat = 2;
216pub const GST_DSD_FORMAT_U32: GstDsdFormat = 4;
217
218pub type GstStreamVolumeFormat = c_int;
219pub const GST_STREAM_VOLUME_FORMAT_LINEAR: GstStreamVolumeFormat = 0;
220pub const GST_STREAM_VOLUME_FORMAT_CUBIC: GstStreamVolumeFormat = 1;
221pub const GST_STREAM_VOLUME_FORMAT_DB: GstStreamVolumeFormat = 2;
222
223// Constants
224pub const GST_AUDIO_CHANNELS_RANGE: &[u8] = b"(int) [ 1, max ]\0";
225pub const GST_AUDIO_CONVERTER_OPT_DITHER_METHOD: &[u8] = b"GstAudioConverter.dither-method\0";
226pub const GST_AUDIO_CONVERTER_OPT_DITHER_THRESHOLD: &[u8] = b"GstAudioConverter.dither-threshold\0";
227pub const GST_AUDIO_CONVERTER_OPT_MIX_MATRIX: &[u8] = b"GstAudioConverter.mix-matrix\0";
228pub const GST_AUDIO_CONVERTER_OPT_NOISE_SHAPING_METHOD: &[u8] =
229    b"GstAudioConverter.noise-shaping-method\0";
230pub const GST_AUDIO_CONVERTER_OPT_QUANTIZATION: &[u8] = b"GstAudioConverter.quantization\0";
231pub const GST_AUDIO_CONVERTER_OPT_RESAMPLER_METHOD: &[u8] = b"GstAudioConverter.resampler-method\0";
232pub const GST_AUDIO_DECODER_MAX_ERRORS: c_int = -1;
233pub const GST_AUDIO_DECODER_SINK_NAME: &[u8] = b"sink\0";
234pub const GST_AUDIO_DECODER_SRC_NAME: &[u8] = b"src\0";
235pub const GST_AUDIO_DEF_CHANNELS: c_int = 2;
236pub const GST_AUDIO_DEF_FORMAT: &[u8] = b"S16LE\0";
237pub const GST_AUDIO_DEF_RATE: c_int = 44100;
238pub const GST_AUDIO_ENCODER_SINK_NAME: &[u8] = b"sink\0";
239pub const GST_AUDIO_ENCODER_SRC_NAME: &[u8] = b"src\0";
240pub const GST_AUDIO_FORMAT_LAST: c_int = 36;
241pub const GST_AUDIO_RATE_RANGE: &[u8] = b"(int) [ 1, max ]\0";
242pub const GST_AUDIO_RESAMPLER_OPT_CUBIC_B: &[u8] = b"GstAudioResampler.cubic-b\0";
243pub const GST_AUDIO_RESAMPLER_OPT_CUBIC_C: &[u8] = b"GstAudioResampler.cubic-c\0";
244pub const GST_AUDIO_RESAMPLER_OPT_CUTOFF: &[u8] = b"GstAudioResampler.cutoff\0";
245pub const GST_AUDIO_RESAMPLER_OPT_FILTER_INTERPOLATION: &[u8] =
246    b"GstAudioResampler.filter-interpolation\0";
247pub const GST_AUDIO_RESAMPLER_OPT_FILTER_MODE: &[u8] = b"GstAudioResampler.filter-mode\0";
248pub const GST_AUDIO_RESAMPLER_OPT_FILTER_MODE_THRESHOLD: &[u8] =
249    b"GstAudioResampler.filter-mode-threshold\0";
250pub const GST_AUDIO_RESAMPLER_OPT_FILTER_OVERSAMPLE: &[u8] =
251    b"GstAudioResampler.filter-oversample\0";
252pub const GST_AUDIO_RESAMPLER_OPT_MAX_PHASE_ERROR: &[u8] = b"GstAudioResampler.max-phase-error\0";
253pub const GST_AUDIO_RESAMPLER_OPT_N_TAPS: &[u8] = b"GstAudioResampler.n-taps\0";
254pub const GST_AUDIO_RESAMPLER_OPT_STOP_ATTENUATION: &[u8] =
255    b"GstAudioResampler.stop-attenutation\0";
256pub const GST_AUDIO_RESAMPLER_OPT_TRANSITION_BANDWIDTH: &[u8] =
257    b"GstAudioResampler.transition-bandwidth\0";
258pub const GST_AUDIO_RESAMPLER_QUALITY_DEFAULT: c_int = 4;
259pub const GST_AUDIO_RESAMPLER_QUALITY_MAX: c_int = 10;
260pub const GST_AUDIO_RESAMPLER_QUALITY_MIN: c_int = 0;
261pub const GST_DSD_FORMATS_ALL: &[u8] = b"{ DSDU32BE, DSDU16BE, DSDU8, DSDU32LE, DSDU16LE }\0";
262pub const GST_DSD_MEDIA_TYPE: &[u8] = b"audio/x-dsd\0";
263pub const GST_DSD_SILENCE_PATTERN_BYTE: c_int = 105;
264pub const GST_META_TAG_AUDIO_CHANNELS_STR: &[u8] = b"channels\0";
265pub const GST_META_TAG_AUDIO_RATE_STR: &[u8] = b"rate\0";
266pub const GST_META_TAG_AUDIO_STR: &[u8] = b"audio\0";
267pub const GST_META_TAG_DSD_PLANE_OFFSETS_STR: &[u8] = b"dsdplaneoffsets\0";
268
269// Flags
270pub type GstAudioChannelMixerFlags = c_uint;
271pub const GST_AUDIO_CHANNEL_MIXER_FLAGS_NONE: GstAudioChannelMixerFlags = 0;
272pub const GST_AUDIO_CHANNEL_MIXER_FLAGS_NON_INTERLEAVED_IN: GstAudioChannelMixerFlags = 1;
273pub const GST_AUDIO_CHANNEL_MIXER_FLAGS_NON_INTERLEAVED_OUT: GstAudioChannelMixerFlags = 2;
274pub const GST_AUDIO_CHANNEL_MIXER_FLAGS_UNPOSITIONED_IN: GstAudioChannelMixerFlags = 4;
275pub const GST_AUDIO_CHANNEL_MIXER_FLAGS_UNPOSITIONED_OUT: GstAudioChannelMixerFlags = 8;
276
277pub type GstAudioConverterFlags = c_uint;
278pub const GST_AUDIO_CONVERTER_FLAG_NONE: GstAudioConverterFlags = 0;
279pub const GST_AUDIO_CONVERTER_FLAG_IN_WRITABLE: GstAudioConverterFlags = 1;
280pub const GST_AUDIO_CONVERTER_FLAG_VARIABLE_RATE: GstAudioConverterFlags = 2;
281
282pub type GstAudioFlags = c_uint;
283pub const GST_AUDIO_FLAG_NONE: GstAudioFlags = 0;
284pub const GST_AUDIO_FLAG_UNPOSITIONED: GstAudioFlags = 1;
285
286pub type GstAudioFormatFlags = c_uint;
287pub const GST_AUDIO_FORMAT_FLAG_INTEGER: GstAudioFormatFlags = 1;
288pub const GST_AUDIO_FORMAT_FLAG_FLOAT: GstAudioFormatFlags = 2;
289pub const GST_AUDIO_FORMAT_FLAG_SIGNED: GstAudioFormatFlags = 4;
290pub const GST_AUDIO_FORMAT_FLAG_COMPLEX: GstAudioFormatFlags = 16;
291pub const GST_AUDIO_FORMAT_FLAG_UNPACK: GstAudioFormatFlags = 32;
292
293pub type GstAudioPackFlags = c_uint;
294pub const GST_AUDIO_PACK_FLAG_NONE: GstAudioPackFlags = 0;
295pub const GST_AUDIO_PACK_FLAG_TRUNCATE_RANGE: GstAudioPackFlags = 1;
296
297pub type GstAudioQuantizeFlags = c_uint;
298pub const GST_AUDIO_QUANTIZE_FLAG_NONE: GstAudioQuantizeFlags = 0;
299pub const GST_AUDIO_QUANTIZE_FLAG_NON_INTERLEAVED: GstAudioQuantizeFlags = 1;
300
301pub type GstAudioResamplerFlags = c_uint;
302pub const GST_AUDIO_RESAMPLER_FLAG_NONE: GstAudioResamplerFlags = 0;
303pub const GST_AUDIO_RESAMPLER_FLAG_NON_INTERLEAVED_IN: GstAudioResamplerFlags = 1;
304pub const GST_AUDIO_RESAMPLER_FLAG_NON_INTERLEAVED_OUT: GstAudioResamplerFlags = 2;
305pub const GST_AUDIO_RESAMPLER_FLAG_VARIABLE_RATE: GstAudioResamplerFlags = 4;
306
307// Unions
308#[derive(Copy, Clone)]
309#[repr(C)]
310pub union GstAudioRingBufferSpec_ABI {
311    pub abi: GstAudioRingBufferSpec_ABI_abi,
312    pub _gst_reserved: [gpointer; 4],
313}
314
315impl ::std::fmt::Debug for GstAudioRingBufferSpec_ABI {
316    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
317        f.debug_struct(&format!("GstAudioRingBufferSpec_ABI @ {self:p}"))
318            .field("abi", unsafe { &self.abi })
319            .finish()
320    }
321}
322
323// Callbacks
324pub type GstAudioBaseSinkCustomSlavingCallback = Option<
325    unsafe extern "C" fn(
326        *mut GstAudioBaseSink,
327        gst::GstClockTime,
328        gst::GstClockTime,
329        *mut gst::GstClockTimeDiff,
330        GstAudioBaseSinkDiscontReason,
331        gpointer,
332    ),
333>;
334pub type GstAudioClockGetTimeFunc =
335    Option<unsafe extern "C" fn(*mut gst::GstClock, gpointer) -> gst::GstClockTime>;
336pub type GstAudioFormatPack = Option<
337    unsafe extern "C" fn(
338        *const GstAudioFormatInfo,
339        GstAudioPackFlags,
340        gconstpointer,
341        gpointer,
342        c_int,
343    ),
344>;
345pub type GstAudioFormatUnpack = Option<
346    unsafe extern "C" fn(
347        *const GstAudioFormatInfo,
348        GstAudioPackFlags,
349        gpointer,
350        gconstpointer,
351        c_int,
352    ),
353>;
354pub type GstAudioRingBufferCallback =
355    Option<unsafe extern "C" fn(*mut GstAudioRingBuffer, *mut u8, c_uint, gpointer)>;
356
357// Records
358#[derive(Copy, Clone)]
359#[repr(C)]
360pub struct GstAudioAggregatorClass {
361    pub parent_class: gst_base::GstAggregatorClass,
362    pub create_output_buffer:
363        Option<unsafe extern "C" fn(*mut GstAudioAggregator, c_uint) -> *mut gst::GstBuffer>,
364    pub aggregate_one_buffer: Option<
365        unsafe extern "C" fn(
366            *mut GstAudioAggregator,
367            *mut GstAudioAggregatorPad,
368            *mut gst::GstBuffer,
369            c_uint,
370            *mut gst::GstBuffer,
371            c_uint,
372            c_uint,
373        ) -> gboolean,
374    >,
375    pub _gst_reserved: [gpointer; 20],
376}
377
378impl ::std::fmt::Debug for GstAudioAggregatorClass {
379    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
380        f.debug_struct(&format!("GstAudioAggregatorClass @ {self:p}"))
381            .field("parent_class", &self.parent_class)
382            .field("create_output_buffer", &self.create_output_buffer)
383            .field("aggregate_one_buffer", &self.aggregate_one_buffer)
384            .finish()
385    }
386}
387
388#[derive(Copy, Clone)]
389#[repr(C)]
390pub struct GstAudioAggregatorConvertPadClass {
391    pub parent_class: GstAudioAggregatorPadClass,
392    pub _gst_reserved: [gpointer; 4],
393}
394
395impl ::std::fmt::Debug for GstAudioAggregatorConvertPadClass {
396    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
397        f.debug_struct(&format!("GstAudioAggregatorConvertPadClass @ {self:p}"))
398            .field("parent_class", &self.parent_class)
399            .finish()
400    }
401}
402
403#[repr(C)]
404#[allow(dead_code)]
405pub struct _GstAudioAggregatorConvertPadPrivate {
406    _data: [u8; 0],
407    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
408}
409
410pub type GstAudioAggregatorConvertPadPrivate = _GstAudioAggregatorConvertPadPrivate;
411
412#[derive(Copy, Clone)]
413#[repr(C)]
414pub struct GstAudioAggregatorPadClass {
415    pub parent_class: gst_base::GstAggregatorPadClass,
416    pub convert_buffer: Option<
417        unsafe extern "C" fn(
418            *mut GstAudioAggregatorPad,
419            *mut GstAudioInfo,
420            *mut GstAudioInfo,
421            *mut gst::GstBuffer,
422        ) -> *mut gst::GstBuffer,
423    >,
424    pub update_conversion_info: Option<unsafe extern "C" fn(*mut GstAudioAggregatorPad)>,
425    pub _gst_reserved: [gpointer; 20],
426}
427
428impl ::std::fmt::Debug for GstAudioAggregatorPadClass {
429    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
430        f.debug_struct(&format!("GstAudioAggregatorPadClass @ {self:p}"))
431            .field("parent_class", &self.parent_class)
432            .field("convert_buffer", &self.convert_buffer)
433            .field("update_conversion_info", &self.update_conversion_info)
434            .finish()
435    }
436}
437
438#[repr(C)]
439#[allow(dead_code)]
440pub struct _GstAudioAggregatorPadPrivate {
441    _data: [u8; 0],
442    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
443}
444
445pub type GstAudioAggregatorPadPrivate = _GstAudioAggregatorPadPrivate;
446
447#[repr(C)]
448#[allow(dead_code)]
449pub struct _GstAudioAggregatorPrivate {
450    _data: [u8; 0],
451    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
452}
453
454pub type GstAudioAggregatorPrivate = _GstAudioAggregatorPrivate;
455
456#[derive(Copy, Clone)]
457#[repr(C)]
458pub struct GstAudioBaseSinkClass {
459    pub parent_class: gst_base::GstBaseSinkClass,
460    pub create_ringbuffer:
461        Option<unsafe extern "C" fn(*mut GstAudioBaseSink) -> *mut GstAudioRingBuffer>,
462    pub payload: Option<
463        unsafe extern "C" fn(*mut GstAudioBaseSink, *mut gst::GstBuffer) -> *mut gst::GstBuffer,
464    >,
465    pub _gst_reserved: [gpointer; 4],
466}
467
468impl ::std::fmt::Debug for GstAudioBaseSinkClass {
469    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
470        f.debug_struct(&format!("GstAudioBaseSinkClass @ {self:p}"))
471            .field("parent_class", &self.parent_class)
472            .field("create_ringbuffer", &self.create_ringbuffer)
473            .field("payload", &self.payload)
474            .finish()
475    }
476}
477
478#[repr(C)]
479#[allow(dead_code)]
480pub struct _GstAudioBaseSinkPrivate {
481    _data: [u8; 0],
482    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
483}
484
485pub type GstAudioBaseSinkPrivate = _GstAudioBaseSinkPrivate;
486
487#[derive(Copy, Clone)]
488#[repr(C)]
489pub struct GstAudioBaseSrcClass {
490    pub parent_class: gst_base::GstPushSrcClass,
491    pub create_ringbuffer:
492        Option<unsafe extern "C" fn(*mut GstAudioBaseSrc) -> *mut GstAudioRingBuffer>,
493    pub _gst_reserved: [gpointer; 4],
494}
495
496impl ::std::fmt::Debug for GstAudioBaseSrcClass {
497    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
498        f.debug_struct(&format!("GstAudioBaseSrcClass @ {self:p}"))
499            .field("parent_class", &self.parent_class)
500            .field("create_ringbuffer", &self.create_ringbuffer)
501            .finish()
502    }
503}
504
505#[repr(C)]
506#[allow(dead_code)]
507pub struct _GstAudioBaseSrcPrivate {
508    _data: [u8; 0],
509    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
510}
511
512pub type GstAudioBaseSrcPrivate = _GstAudioBaseSrcPrivate;
513
514#[derive(Copy, Clone)]
515#[repr(C)]
516pub struct GstAudioBuffer {
517    pub info: GstAudioInfo,
518    pub n_samples: size_t,
519    pub n_planes: c_int,
520    pub planes: *mut gpointer,
521    pub buffer: *mut gst::GstBuffer,
522    pub map_infos: *mut gst::GstMapInfo,
523    pub priv_planes_arr: [gpointer; 8],
524    pub priv_map_infos_arr: [gst::GstMapInfo; 8],
525    pub _gst_reserved: [gpointer; 4],
526}
527
528impl ::std::fmt::Debug for GstAudioBuffer {
529    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
530        f.debug_struct(&format!("GstAudioBuffer @ {self:p}"))
531            .field("info", &self.info)
532            .field("n_samples", &self.n_samples)
533            .field("n_planes", &self.n_planes)
534            .field("planes", &self.planes)
535            .field("buffer", &self.buffer)
536            .finish()
537    }
538}
539
540#[derive(Copy, Clone)]
541#[repr(C)]
542pub struct GstAudioCdSrcClass {
543    pub pushsrc_class: gst_base::GstPushSrcClass,
544    pub open: Option<unsafe extern "C" fn(*mut GstAudioCdSrc, *const c_char) -> gboolean>,
545    pub close: Option<unsafe extern "C" fn(*mut GstAudioCdSrc)>,
546    pub read_sector: Option<unsafe extern "C" fn(*mut GstAudioCdSrc, c_int) -> *mut gst::GstBuffer>,
547    pub _gst_reserved: [gpointer; 20],
548}
549
550impl ::std::fmt::Debug for GstAudioCdSrcClass {
551    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
552        f.debug_struct(&format!("GstAudioCdSrcClass @ {self:p}"))
553            .field("pushsrc_class", &self.pushsrc_class)
554            .field("open", &self.open)
555            .field("close", &self.close)
556            .field("read_sector", &self.read_sector)
557            .finish()
558    }
559}
560
561#[repr(C)]
562#[allow(dead_code)]
563pub struct _GstAudioCdSrcPrivate {
564    _data: [u8; 0],
565    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
566}
567
568pub type GstAudioCdSrcPrivate = _GstAudioCdSrcPrivate;
569
570#[derive(Copy, Clone)]
571#[repr(C)]
572pub struct GstAudioCdSrcTrack {
573    pub is_audio: gboolean,
574    pub num: c_uint,
575    pub start: c_uint,
576    pub end: c_uint,
577    pub tags: *mut gst::GstTagList,
578    pub _gst_reserved1: [c_uint; 2],
579    pub _gst_reserved2: [gpointer; 2],
580}
581
582impl ::std::fmt::Debug for GstAudioCdSrcTrack {
583    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
584        f.debug_struct(&format!("GstAudioCdSrcTrack @ {self:p}"))
585            .field("is_audio", &self.is_audio)
586            .field("num", &self.num)
587            .field("start", &self.start)
588            .field("end", &self.end)
589            .field("tags", &self.tags)
590            .finish()
591    }
592}
593
594#[repr(C)]
595#[allow(dead_code)]
596pub struct _GstAudioChannelMixer {
597    _data: [u8; 0],
598    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
599}
600
601pub type GstAudioChannelMixer = _GstAudioChannelMixer;
602
603#[derive(Copy, Clone)]
604#[repr(C)]
605pub struct GstAudioClippingMeta {
606    pub meta: gst::GstMeta,
607    pub format: gst::GstFormat,
608    pub start: u64,
609    pub end: u64,
610}
611
612impl ::std::fmt::Debug for GstAudioClippingMeta {
613    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
614        f.debug_struct(&format!("GstAudioClippingMeta @ {self:p}"))
615            .field("meta", &self.meta)
616            .field("format", &self.format)
617            .field("start", &self.start)
618            .field("end", &self.end)
619            .finish()
620    }
621}
622
623#[derive(Copy, Clone)]
624#[repr(C)]
625pub struct GstAudioClockClass {
626    pub parent_class: gst::GstSystemClockClass,
627    pub _gst_reserved: [gpointer; 4],
628}
629
630impl ::std::fmt::Debug for GstAudioClockClass {
631    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
632        f.debug_struct(&format!("GstAudioClockClass @ {self:p}"))
633            .field("parent_class", &self.parent_class)
634            .finish()
635    }
636}
637
638#[repr(C)]
639#[allow(dead_code)]
640pub struct GstAudioConverter {
641    _data: [u8; 0],
642    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
643}
644
645impl ::std::fmt::Debug for GstAudioConverter {
646    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
647        f.debug_struct(&format!("GstAudioConverter @ {self:p}"))
648            .finish()
649    }
650}
651
652#[derive(Copy, Clone)]
653#[repr(C)]
654pub struct GstAudioDecoderClass {
655    pub element_class: gst::GstElementClass,
656    pub start: Option<unsafe extern "C" fn(*mut GstAudioDecoder) -> gboolean>,
657    pub stop: Option<unsafe extern "C" fn(*mut GstAudioDecoder) -> gboolean>,
658    pub set_format:
659        Option<unsafe extern "C" fn(*mut GstAudioDecoder, *mut gst::GstCaps) -> gboolean>,
660    pub parse: Option<
661        unsafe extern "C" fn(
662            *mut GstAudioDecoder,
663            *mut gst_base::GstAdapter,
664            *mut c_int,
665            *mut c_int,
666        ) -> gst::GstFlowReturn,
667    >,
668    pub handle_frame: Option<
669        unsafe extern "C" fn(*mut GstAudioDecoder, *mut *mut gst::GstBuffer) -> gst::GstFlowReturn,
670    >,
671    pub flush: Option<unsafe extern "C" fn(*mut GstAudioDecoder, gboolean)>,
672    pub pre_push: Option<
673        unsafe extern "C" fn(*mut GstAudioDecoder, *mut *mut gst::GstBuffer) -> gst::GstFlowReturn,
674    >,
675    pub sink_event:
676        Option<unsafe extern "C" fn(*mut GstAudioDecoder, *mut gst::GstEvent) -> gboolean>,
677    pub src_event:
678        Option<unsafe extern "C" fn(*mut GstAudioDecoder, *mut gst::GstEvent) -> gboolean>,
679    pub open: Option<unsafe extern "C" fn(*mut GstAudioDecoder) -> gboolean>,
680    pub close: Option<unsafe extern "C" fn(*mut GstAudioDecoder) -> gboolean>,
681    pub negotiate: Option<unsafe extern "C" fn(*mut GstAudioDecoder) -> gboolean>,
682    pub decide_allocation:
683        Option<unsafe extern "C" fn(*mut GstAudioDecoder, *mut gst::GstQuery) -> gboolean>,
684    pub propose_allocation:
685        Option<unsafe extern "C" fn(*mut GstAudioDecoder, *mut gst::GstQuery) -> gboolean>,
686    pub sink_query:
687        Option<unsafe extern "C" fn(*mut GstAudioDecoder, *mut gst::GstQuery) -> gboolean>,
688    pub src_query:
689        Option<unsafe extern "C" fn(*mut GstAudioDecoder, *mut gst::GstQuery) -> gboolean>,
690    pub getcaps:
691        Option<unsafe extern "C" fn(*mut GstAudioDecoder, *mut gst::GstCaps) -> *mut gst::GstCaps>,
692    pub transform_meta: Option<
693        unsafe extern "C" fn(
694            *mut GstAudioDecoder,
695            *mut gst::GstBuffer,
696            *mut gst::GstMeta,
697            *mut gst::GstBuffer,
698        ) -> gboolean,
699    >,
700    pub _gst_reserved: [gpointer; 16],
701}
702
703impl ::std::fmt::Debug for GstAudioDecoderClass {
704    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
705        f.debug_struct(&format!("GstAudioDecoderClass @ {self:p}"))
706            .field("element_class", &self.element_class)
707            .field("start", &self.start)
708            .field("stop", &self.stop)
709            .field("set_format", &self.set_format)
710            .field("parse", &self.parse)
711            .field("handle_frame", &self.handle_frame)
712            .field("flush", &self.flush)
713            .field("pre_push", &self.pre_push)
714            .field("sink_event", &self.sink_event)
715            .field("src_event", &self.src_event)
716            .field("open", &self.open)
717            .field("close", &self.close)
718            .field("negotiate", &self.negotiate)
719            .field("decide_allocation", &self.decide_allocation)
720            .field("propose_allocation", &self.propose_allocation)
721            .field("sink_query", &self.sink_query)
722            .field("src_query", &self.src_query)
723            .field("getcaps", &self.getcaps)
724            .field("transform_meta", &self.transform_meta)
725            .finish()
726    }
727}
728
729#[repr(C)]
730#[allow(dead_code)]
731pub struct _GstAudioDecoderPrivate {
732    _data: [u8; 0],
733    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
734}
735
736pub type GstAudioDecoderPrivate = _GstAudioDecoderPrivate;
737
738#[derive(Copy, Clone)]
739#[repr(C)]
740pub struct GstAudioDownmixMeta {
741    pub meta: gst::GstMeta,
742    pub from_position: *mut GstAudioChannelPosition,
743    pub to_position: *mut GstAudioChannelPosition,
744    pub from_channels: c_int,
745    pub to_channels: c_int,
746    pub matrix: *mut *mut c_float,
747}
748
749impl ::std::fmt::Debug for GstAudioDownmixMeta {
750    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
751        f.debug_struct(&format!("GstAudioDownmixMeta @ {self:p}"))
752            .field("meta", &self.meta)
753            .field("from_position", &self.from_position)
754            .field("to_position", &self.to_position)
755            .field("from_channels", &self.from_channels)
756            .field("to_channels", &self.to_channels)
757            .field("matrix", &self.matrix)
758            .finish()
759    }
760}
761
762#[derive(Copy, Clone)]
763#[repr(C)]
764pub struct GstAudioEncoderClass {
765    pub element_class: gst::GstElementClass,
766    pub start: Option<unsafe extern "C" fn(*mut GstAudioEncoder) -> gboolean>,
767    pub stop: Option<unsafe extern "C" fn(*mut GstAudioEncoder) -> gboolean>,
768    pub set_format:
769        Option<unsafe extern "C" fn(*mut GstAudioEncoder, *mut GstAudioInfo) -> gboolean>,
770    pub handle_frame: Option<
771        unsafe extern "C" fn(*mut GstAudioEncoder, *mut *mut gst::GstBuffer) -> gst::GstFlowReturn,
772    >,
773    pub flush: Option<unsafe extern "C" fn(*mut GstAudioEncoder)>,
774    pub pre_push: Option<
775        unsafe extern "C" fn(*mut GstAudioEncoder, *mut *mut gst::GstBuffer) -> gst::GstFlowReturn,
776    >,
777    pub sink_event:
778        Option<unsafe extern "C" fn(*mut GstAudioEncoder, *mut gst::GstEvent) -> gboolean>,
779    pub src_event:
780        Option<unsafe extern "C" fn(*mut GstAudioEncoder, *mut gst::GstEvent) -> gboolean>,
781    pub getcaps:
782        Option<unsafe extern "C" fn(*mut GstAudioEncoder, *mut gst::GstCaps) -> *mut gst::GstCaps>,
783    pub open: Option<unsafe extern "C" fn(*mut GstAudioEncoder) -> gboolean>,
784    pub close: Option<unsafe extern "C" fn(*mut GstAudioEncoder) -> gboolean>,
785    pub negotiate: Option<unsafe extern "C" fn(*mut GstAudioEncoder) -> gboolean>,
786    pub decide_allocation:
787        Option<unsafe extern "C" fn(*mut GstAudioEncoder, *mut gst::GstQuery) -> gboolean>,
788    pub propose_allocation:
789        Option<unsafe extern "C" fn(*mut GstAudioEncoder, *mut gst::GstQuery) -> gboolean>,
790    pub transform_meta: Option<
791        unsafe extern "C" fn(
792            *mut GstAudioEncoder,
793            *mut gst::GstBuffer,
794            *mut gst::GstMeta,
795            *mut gst::GstBuffer,
796        ) -> gboolean,
797    >,
798    pub sink_query:
799        Option<unsafe extern "C" fn(*mut GstAudioEncoder, *mut gst::GstQuery) -> gboolean>,
800    pub src_query:
801        Option<unsafe extern "C" fn(*mut GstAudioEncoder, *mut gst::GstQuery) -> gboolean>,
802    pub _gst_reserved: [gpointer; 17],
803}
804
805impl ::std::fmt::Debug for GstAudioEncoderClass {
806    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
807        f.debug_struct(&format!("GstAudioEncoderClass @ {self:p}"))
808            .field("element_class", &self.element_class)
809            .field("start", &self.start)
810            .field("stop", &self.stop)
811            .field("set_format", &self.set_format)
812            .field("handle_frame", &self.handle_frame)
813            .field("flush", &self.flush)
814            .field("pre_push", &self.pre_push)
815            .field("sink_event", &self.sink_event)
816            .field("src_event", &self.src_event)
817            .field("getcaps", &self.getcaps)
818            .field("open", &self.open)
819            .field("close", &self.close)
820            .field("negotiate", &self.negotiate)
821            .field("decide_allocation", &self.decide_allocation)
822            .field("propose_allocation", &self.propose_allocation)
823            .field("transform_meta", &self.transform_meta)
824            .field("sink_query", &self.sink_query)
825            .field("src_query", &self.src_query)
826            .finish()
827    }
828}
829
830#[repr(C)]
831#[allow(dead_code)]
832pub struct _GstAudioEncoderPrivate {
833    _data: [u8; 0],
834    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
835}
836
837pub type GstAudioEncoderPrivate = _GstAudioEncoderPrivate;
838
839#[derive(Copy, Clone)]
840#[repr(C)]
841pub struct GstAudioFilterClass {
842    pub basetransformclass: gst_base::GstBaseTransformClass,
843    pub setup: Option<unsafe extern "C" fn(*mut GstAudioFilter, *const GstAudioInfo) -> gboolean>,
844    pub _gst_reserved: [gpointer; 4],
845}
846
847impl ::std::fmt::Debug for GstAudioFilterClass {
848    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
849        f.debug_struct(&format!("GstAudioFilterClass @ {self:p}"))
850            .field("basetransformclass", &self.basetransformclass)
851            .field("setup", &self.setup)
852            .finish()
853    }
854}
855
856#[derive(Copy, Clone)]
857#[repr(C)]
858pub struct GstAudioFormatInfo {
859    pub format: GstAudioFormat,
860    pub name: *const c_char,
861    pub description: *const c_char,
862    pub flags: GstAudioFormatFlags,
863    pub endianness: c_int,
864    pub width: c_int,
865    pub depth: c_int,
866    pub silence: [u8; 8],
867    pub unpack_format: GstAudioFormat,
868    pub unpack_func: GstAudioFormatUnpack,
869    pub pack_func: GstAudioFormatPack,
870    pub _gst_reserved: [gpointer; 4],
871}
872
873impl ::std::fmt::Debug for GstAudioFormatInfo {
874    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
875        f.debug_struct(&format!("GstAudioFormatInfo @ {self:p}"))
876            .field("format", &self.format)
877            .field("name", &self.name)
878            .field("description", &self.description)
879            .field("flags", &self.flags)
880            .field("endianness", &self.endianness)
881            .field("width", &self.width)
882            .field("depth", &self.depth)
883            .field("silence", &self.silence)
884            .field("unpack_format", &self.unpack_format)
885            .field("unpack_func", &self.unpack_func)
886            .field("pack_func", &self.pack_func)
887            .finish()
888    }
889}
890
891#[derive(Copy, Clone)]
892#[repr(C)]
893pub struct GstAudioInfo {
894    pub finfo: *const GstAudioFormatInfo,
895    pub flags: GstAudioFlags,
896    pub layout: GstAudioLayout,
897    pub rate: c_int,
898    pub channels: c_int,
899    pub bpf: c_int,
900    pub position: [GstAudioChannelPosition; 64],
901    pub _gst_reserved: [gpointer; 4],
902}
903
904impl ::std::fmt::Debug for GstAudioInfo {
905    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
906        f.debug_struct(&format!("GstAudioInfo @ {self:p}"))
907            .field("finfo", &self.finfo)
908            .field("flags", &self.flags)
909            .field("layout", &self.layout)
910            .field("rate", &self.rate)
911            .field("channels", &self.channels)
912            .field("bpf", &self.bpf)
913            .finish()
914    }
915}
916
917#[derive(Copy, Clone)]
918#[repr(C)]
919pub struct GstAudioLevelMeta {
920    pub meta: gst::GstMeta,
921    pub level: u8,
922    pub voice_activity: gboolean,
923}
924
925impl ::std::fmt::Debug for GstAudioLevelMeta {
926    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
927        f.debug_struct(&format!("GstAudioLevelMeta @ {self:p}"))
928            .field("meta", &self.meta)
929            .field("level", &self.level)
930            .field("voice_activity", &self.voice_activity)
931            .finish()
932    }
933}
934
935#[derive(Copy, Clone)]
936#[repr(C)]
937pub struct GstAudioMeta {
938    pub meta: gst::GstMeta,
939    pub info: GstAudioInfo,
940    pub samples: size_t,
941    pub offsets: *mut size_t,
942    pub priv_offsets_arr: [size_t; 8],
943    pub _gst_reserved: [gpointer; 4],
944}
945
946impl ::std::fmt::Debug for GstAudioMeta {
947    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
948        f.debug_struct(&format!("GstAudioMeta @ {self:p}"))
949            .field("meta", &self.meta)
950            .field("info", &self.info)
951            .field("samples", &self.samples)
952            .field("offsets", &self.offsets)
953            .finish()
954    }
955}
956
957#[repr(C)]
958#[allow(dead_code)]
959pub struct _GstAudioQuantize {
960    _data: [u8; 0],
961    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
962}
963
964pub type GstAudioQuantize = _GstAudioQuantize;
965
966#[repr(C)]
967#[allow(dead_code)]
968pub struct _GstAudioResampler {
969    _data: [u8; 0],
970    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
971}
972
973pub type GstAudioResampler = _GstAudioResampler;
974
975#[derive(Copy, Clone)]
976#[repr(C)]
977pub struct GstAudioRingBufferClass {
978    pub parent_class: gst::GstObjectClass,
979    pub open_device: Option<unsafe extern "C" fn(*mut GstAudioRingBuffer) -> gboolean>,
980    pub acquire: Option<
981        unsafe extern "C" fn(*mut GstAudioRingBuffer, *mut GstAudioRingBufferSpec) -> gboolean,
982    >,
983    pub release: Option<unsafe extern "C" fn(*mut GstAudioRingBuffer) -> gboolean>,
984    pub close_device: Option<unsafe extern "C" fn(*mut GstAudioRingBuffer) -> gboolean>,
985    pub start: Option<unsafe extern "C" fn(*mut GstAudioRingBuffer) -> gboolean>,
986    pub pause: Option<unsafe extern "C" fn(*mut GstAudioRingBuffer) -> gboolean>,
987    pub resume: Option<unsafe extern "C" fn(*mut GstAudioRingBuffer) -> gboolean>,
988    pub stop: Option<unsafe extern "C" fn(*mut GstAudioRingBuffer) -> gboolean>,
989    pub delay: Option<unsafe extern "C" fn(*mut GstAudioRingBuffer) -> c_uint>,
990    pub activate: Option<unsafe extern "C" fn(*mut GstAudioRingBuffer, gboolean) -> gboolean>,
991    pub commit: Option<
992        unsafe extern "C" fn(
993            *mut GstAudioRingBuffer,
994            *mut u64,
995            *mut u8,
996            c_int,
997            c_int,
998            *mut c_int,
999        ) -> c_uint,
1000    >,
1001    pub clear_all: Option<unsafe extern "C" fn(*mut GstAudioRingBuffer)>,
1002    pub _gst_reserved: [gpointer; 4],
1003}
1004
1005impl ::std::fmt::Debug for GstAudioRingBufferClass {
1006    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1007        f.debug_struct(&format!("GstAudioRingBufferClass @ {self:p}"))
1008            .field("parent_class", &self.parent_class)
1009            .field("open_device", &self.open_device)
1010            .field("acquire", &self.acquire)
1011            .field("release", &self.release)
1012            .field("close_device", &self.close_device)
1013            .field("start", &self.start)
1014            .field("pause", &self.pause)
1015            .field("resume", &self.resume)
1016            .field("stop", &self.stop)
1017            .field("delay", &self.delay)
1018            .field("activate", &self.activate)
1019            .field("commit", &self.commit)
1020            .field("clear_all", &self.clear_all)
1021            .finish()
1022    }
1023}
1024
1025#[repr(C)]
1026#[allow(dead_code)]
1027pub struct _GstAudioRingBufferPrivate {
1028    _data: [u8; 0],
1029    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1030}
1031
1032pub type GstAudioRingBufferPrivate = _GstAudioRingBufferPrivate;
1033
1034#[derive(Copy, Clone)]
1035#[repr(C)]
1036pub struct GstAudioRingBufferSpec {
1037    pub caps: *mut gst::GstCaps,
1038    pub type_: GstAudioRingBufferFormatType,
1039    pub info: GstAudioInfo,
1040    pub latency_time: u64,
1041    pub buffer_time: u64,
1042    pub segsize: c_int,
1043    pub segtotal: c_int,
1044    pub seglatency: c_int,
1045    pub ABI: GstAudioRingBufferSpec_ABI,
1046}
1047
1048impl ::std::fmt::Debug for GstAudioRingBufferSpec {
1049    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1050        f.debug_struct(&format!("GstAudioRingBufferSpec @ {self:p}"))
1051            .field("caps", &self.caps)
1052            .field("type_", &self.type_)
1053            .field("info", &self.info)
1054            .field("latency_time", &self.latency_time)
1055            .field("buffer_time", &self.buffer_time)
1056            .field("segsize", &self.segsize)
1057            .field("segtotal", &self.segtotal)
1058            .field("seglatency", &self.seglatency)
1059            .field("ABI", &self.ABI)
1060            .finish()
1061    }
1062}
1063
1064#[derive(Copy, Clone)]
1065#[repr(C)]
1066pub struct GstAudioRingBufferSpec_ABI_abi {
1067    pub dsd_format: GstDsdFormat,
1068}
1069
1070impl ::std::fmt::Debug for GstAudioRingBufferSpec_ABI_abi {
1071    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1072        f.debug_struct(&format!("GstAudioRingBufferSpec_ABI_abi @ {self:p}"))
1073            .field("dsd_format", &self.dsd_format)
1074            .finish()
1075    }
1076}
1077
1078#[derive(Copy, Clone)]
1079#[repr(C)]
1080pub struct GstAudioSinkClass {
1081    pub parent_class: GstAudioBaseSinkClass,
1082    pub open: Option<unsafe extern "C" fn(*mut GstAudioSink) -> gboolean>,
1083    pub prepare:
1084        Option<unsafe extern "C" fn(*mut GstAudioSink, *mut GstAudioRingBufferSpec) -> gboolean>,
1085    pub unprepare: Option<unsafe extern "C" fn(*mut GstAudioSink) -> gboolean>,
1086    pub close: Option<unsafe extern "C" fn(*mut GstAudioSink) -> gboolean>,
1087    pub write: Option<unsafe extern "C" fn(*mut GstAudioSink, gpointer, c_uint) -> c_int>,
1088    pub delay: Option<unsafe extern "C" fn(*mut GstAudioSink) -> c_uint>,
1089    pub reset: Option<unsafe extern "C" fn(*mut GstAudioSink)>,
1090    pub pause: Option<unsafe extern "C" fn(*mut GstAudioSink)>,
1091    pub resume: Option<unsafe extern "C" fn(*mut GstAudioSink)>,
1092    pub stop: Option<unsafe extern "C" fn(*mut GstAudioSink)>,
1093    pub extension: *mut GstAudioSinkClassExtension,
1094}
1095
1096impl ::std::fmt::Debug for GstAudioSinkClass {
1097    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1098        f.debug_struct(&format!("GstAudioSinkClass @ {self:p}"))
1099            .field("parent_class", &self.parent_class)
1100            .field("open", &self.open)
1101            .field("prepare", &self.prepare)
1102            .field("unprepare", &self.unprepare)
1103            .field("close", &self.close)
1104            .field("write", &self.write)
1105            .field("delay", &self.delay)
1106            .field("reset", &self.reset)
1107            .field("pause", &self.pause)
1108            .field("resume", &self.resume)
1109            .field("stop", &self.stop)
1110            .field("extension", &self.extension)
1111            .finish()
1112    }
1113}
1114
1115#[derive(Copy, Clone)]
1116#[repr(C)]
1117pub struct GstAudioSinkClassExtension {
1118    pub clear_all: Option<unsafe extern "C" fn(*mut GstAudioSink)>,
1119}
1120
1121impl ::std::fmt::Debug for GstAudioSinkClassExtension {
1122    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1123        f.debug_struct(&format!("GstAudioSinkClassExtension @ {self:p}"))
1124            .field("clear_all", &self.clear_all)
1125            .finish()
1126    }
1127}
1128
1129#[derive(Copy, Clone)]
1130#[repr(C)]
1131pub struct GstAudioSrcClass {
1132    pub parent_class: GstAudioBaseSrcClass,
1133    pub open: Option<unsafe extern "C" fn(*mut GstAudioSrc) -> gboolean>,
1134    pub prepare:
1135        Option<unsafe extern "C" fn(*mut GstAudioSrc, *mut GstAudioRingBufferSpec) -> gboolean>,
1136    pub unprepare: Option<unsafe extern "C" fn(*mut GstAudioSrc) -> gboolean>,
1137    pub close: Option<unsafe extern "C" fn(*mut GstAudioSrc) -> gboolean>,
1138    pub read: Option<
1139        unsafe extern "C" fn(*mut GstAudioSrc, gpointer, c_uint, *mut gst::GstClockTime) -> c_uint,
1140    >,
1141    pub delay: Option<unsafe extern "C" fn(*mut GstAudioSrc) -> c_uint>,
1142    pub reset: Option<unsafe extern "C" fn(*mut GstAudioSrc)>,
1143    pub _gst_reserved: [gpointer; 4],
1144}
1145
1146impl ::std::fmt::Debug for GstAudioSrcClass {
1147    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1148        f.debug_struct(&format!("GstAudioSrcClass @ {self:p}"))
1149            .field("parent_class", &self.parent_class)
1150            .field("open", &self.open)
1151            .field("prepare", &self.prepare)
1152            .field("unprepare", &self.unprepare)
1153            .field("close", &self.close)
1154            .field("read", &self.read)
1155            .field("delay", &self.delay)
1156            .field("reset", &self.reset)
1157            .finish()
1158    }
1159}
1160
1161#[repr(C)]
1162#[allow(dead_code)]
1163pub struct GstAudioStreamAlign {
1164    _data: [u8; 0],
1165    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1166}
1167
1168impl ::std::fmt::Debug for GstAudioStreamAlign {
1169    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1170        f.debug_struct(&format!("GstAudioStreamAlign @ {self:p}"))
1171            .finish()
1172    }
1173}
1174
1175#[derive(Copy, Clone)]
1176#[repr(C)]
1177pub struct GstDsdInfo {
1178    pub format: GstDsdFormat,
1179    pub rate: c_int,
1180    pub channels: c_int,
1181    pub layout: GstAudioLayout,
1182    pub reversed_bytes: gboolean,
1183    pub positions: [GstAudioChannelPosition; 64],
1184    pub flags: GstAudioFlags,
1185    pub _gst_reserved: [gpointer; 4],
1186}
1187
1188impl ::std::fmt::Debug for GstDsdInfo {
1189    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1190        f.debug_struct(&format!("GstDsdInfo @ {self:p}"))
1191            .field("format", &self.format)
1192            .field("rate", &self.rate)
1193            .field("channels", &self.channels)
1194            .field("layout", &self.layout)
1195            .field("reversed_bytes", &self.reversed_bytes)
1196            .field("flags", &self.flags)
1197            .finish()
1198    }
1199}
1200
1201#[derive(Copy, Clone)]
1202#[repr(C)]
1203pub struct GstDsdPlaneOffsetMeta {
1204    pub meta: gst::GstMeta,
1205    pub num_channels: c_int,
1206    pub num_bytes_per_channel: size_t,
1207    pub offsets: *mut size_t,
1208    pub priv_offsets_arr: [size_t; 8],
1209    pub _gst_reserved: [gpointer; 4],
1210}
1211
1212impl ::std::fmt::Debug for GstDsdPlaneOffsetMeta {
1213    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1214        f.debug_struct(&format!("GstDsdPlaneOffsetMeta @ {self:p}"))
1215            .field("meta", &self.meta)
1216            .field("num_channels", &self.num_channels)
1217            .field("num_bytes_per_channel", &self.num_bytes_per_channel)
1218            .field("offsets", &self.offsets)
1219            .finish()
1220    }
1221}
1222
1223#[derive(Copy, Clone)]
1224#[repr(C)]
1225pub struct GstStreamVolumeInterface {
1226    pub iface: gobject::GTypeInterface,
1227}
1228
1229impl ::std::fmt::Debug for GstStreamVolumeInterface {
1230    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1231        f.debug_struct(&format!("GstStreamVolumeInterface @ {self:p}"))
1232            .field("iface", &self.iface)
1233            .finish()
1234    }
1235}
1236
1237// Classes
1238#[derive(Copy, Clone)]
1239#[repr(C)]
1240pub struct GstAudioAggregator {
1241    pub parent: gst_base::GstAggregator,
1242    pub current_caps: *mut gst::GstCaps,
1243    pub priv_: *mut GstAudioAggregatorPrivate,
1244    pub _gst_reserved: [gpointer; 4],
1245}
1246
1247impl ::std::fmt::Debug for GstAudioAggregator {
1248    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1249        f.debug_struct(&format!("GstAudioAggregator @ {self:p}"))
1250            .field("parent", &self.parent)
1251            .field("current_caps", &self.current_caps)
1252            .finish()
1253    }
1254}
1255
1256#[derive(Copy, Clone)]
1257#[repr(C)]
1258pub struct GstAudioAggregatorConvertPad {
1259    pub parent: GstAudioAggregatorPad,
1260    pub priv_: *mut GstAudioAggregatorConvertPadPrivate,
1261    pub _gst_reserved: [gpointer; 4],
1262}
1263
1264impl ::std::fmt::Debug for GstAudioAggregatorConvertPad {
1265    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1266        f.debug_struct(&format!("GstAudioAggregatorConvertPad @ {self:p}"))
1267            .finish()
1268    }
1269}
1270
1271#[derive(Copy, Clone)]
1272#[repr(C)]
1273pub struct GstAudioAggregatorPad {
1274    pub parent: gst_base::GstAggregatorPad,
1275    pub info: GstAudioInfo,
1276    pub priv_: *mut GstAudioAggregatorPadPrivate,
1277    pub _gst_reserved: [gpointer; 4],
1278}
1279
1280impl ::std::fmt::Debug for GstAudioAggregatorPad {
1281    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1282        f.debug_struct(&format!("GstAudioAggregatorPad @ {self:p}"))
1283            .field("parent", &self.parent)
1284            .field("info", &self.info)
1285            .finish()
1286    }
1287}
1288
1289#[derive(Copy, Clone)]
1290#[repr(C)]
1291pub struct GstAudioBaseSink {
1292    pub element: gst_base::GstBaseSink,
1293    pub ringbuffer: *mut GstAudioRingBuffer,
1294    pub buffer_time: u64,
1295    pub latency_time: u64,
1296    pub next_sample: u64,
1297    pub provided_clock: *mut gst::GstClock,
1298    pub eos_rendering: gboolean,
1299    pub priv_: *mut GstAudioBaseSinkPrivate,
1300    pub _gst_reserved: [gpointer; 4],
1301}
1302
1303impl ::std::fmt::Debug for GstAudioBaseSink {
1304    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1305        f.debug_struct(&format!("GstAudioBaseSink @ {self:p}"))
1306            .field("element", &self.element)
1307            .field("ringbuffer", &self.ringbuffer)
1308            .field("buffer_time", &self.buffer_time)
1309            .field("latency_time", &self.latency_time)
1310            .field("next_sample", &self.next_sample)
1311            .field("provided_clock", &self.provided_clock)
1312            .field("eos_rendering", &self.eos_rendering)
1313            .finish()
1314    }
1315}
1316
1317#[derive(Copy, Clone)]
1318#[repr(C)]
1319pub struct GstAudioBaseSrc {
1320    pub element: gst_base::GstPushSrc,
1321    pub ringbuffer: *mut GstAudioRingBuffer,
1322    pub buffer_time: gst::GstClockTime,
1323    pub latency_time: gst::GstClockTime,
1324    pub next_sample: u64,
1325    pub clock: *mut gst::GstClock,
1326    pub priv_: *mut GstAudioBaseSrcPrivate,
1327    pub _gst_reserved: [gpointer; 4],
1328}
1329
1330impl ::std::fmt::Debug for GstAudioBaseSrc {
1331    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1332        f.debug_struct(&format!("GstAudioBaseSrc @ {self:p}"))
1333            .field("element", &self.element)
1334            .field("ringbuffer", &self.ringbuffer)
1335            .field("buffer_time", &self.buffer_time)
1336            .field("latency_time", &self.latency_time)
1337            .field("next_sample", &self.next_sample)
1338            .field("clock", &self.clock)
1339            .finish()
1340    }
1341}
1342
1343#[derive(Copy, Clone)]
1344#[repr(C)]
1345pub struct GstAudioCdSrc {
1346    pub pushsrc: gst_base::GstPushSrc,
1347    pub tags: *mut gst::GstTagList,
1348    pub priv_: *mut GstAudioCdSrcPrivate,
1349    pub _gst_reserved1: [c_uint; 2],
1350    pub _gst_reserved2: [gpointer; 2],
1351}
1352
1353impl ::std::fmt::Debug for GstAudioCdSrc {
1354    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1355        f.debug_struct(&format!("GstAudioCdSrc @ {self:p}"))
1356            .field("pushsrc", &self.pushsrc)
1357            .field("tags", &self.tags)
1358            .finish()
1359    }
1360}
1361
1362#[derive(Copy, Clone)]
1363#[repr(C)]
1364pub struct GstAudioClock {
1365    pub clock: gst::GstSystemClock,
1366    pub func: GstAudioClockGetTimeFunc,
1367    pub user_data: gpointer,
1368    pub destroy_notify: glib::GDestroyNotify,
1369    pub last_time: gst::GstClockTime,
1370    pub time_offset: gst::GstClockTimeDiff,
1371    pub _gst_reserved: [gpointer; 4],
1372}
1373
1374impl ::std::fmt::Debug for GstAudioClock {
1375    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1376        f.debug_struct(&format!("GstAudioClock @ {self:p}"))
1377            .field("clock", &self.clock)
1378            .field("func", &self.func)
1379            .field("user_data", &self.user_data)
1380            .field("destroy_notify", &self.destroy_notify)
1381            .finish()
1382    }
1383}
1384
1385#[derive(Copy, Clone)]
1386#[repr(C)]
1387pub struct GstAudioDecoder {
1388    pub element: gst::GstElement,
1389    pub sinkpad: *mut gst::GstPad,
1390    pub srcpad: *mut gst::GstPad,
1391    pub stream_lock: glib::GRecMutex,
1392    pub input_segment: gst::GstSegment,
1393    pub output_segment: gst::GstSegment,
1394    pub priv_: *mut GstAudioDecoderPrivate,
1395    pub _gst_reserved: [gpointer; 20],
1396}
1397
1398impl ::std::fmt::Debug for GstAudioDecoder {
1399    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1400        f.debug_struct(&format!("GstAudioDecoder @ {self:p}"))
1401            .field("element", &self.element)
1402            .field("sinkpad", &self.sinkpad)
1403            .field("srcpad", &self.srcpad)
1404            .field("stream_lock", &self.stream_lock)
1405            .field("input_segment", &self.input_segment)
1406            .field("output_segment", &self.output_segment)
1407            .finish()
1408    }
1409}
1410
1411#[derive(Copy, Clone)]
1412#[repr(C)]
1413pub struct GstAudioEncoder {
1414    pub element: gst::GstElement,
1415    pub sinkpad: *mut gst::GstPad,
1416    pub srcpad: *mut gst::GstPad,
1417    pub stream_lock: glib::GRecMutex,
1418    pub input_segment: gst::GstSegment,
1419    pub output_segment: gst::GstSegment,
1420    pub priv_: *mut GstAudioEncoderPrivate,
1421    pub _gst_reserved: [gpointer; 20],
1422}
1423
1424impl ::std::fmt::Debug for GstAudioEncoder {
1425    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1426        f.debug_struct(&format!("GstAudioEncoder @ {self:p}"))
1427            .field("element", &self.element)
1428            .field("sinkpad", &self.sinkpad)
1429            .field("srcpad", &self.srcpad)
1430            .field("stream_lock", &self.stream_lock)
1431            .field("input_segment", &self.input_segment)
1432            .field("output_segment", &self.output_segment)
1433            .finish()
1434    }
1435}
1436
1437#[derive(Copy, Clone)]
1438#[repr(C)]
1439pub struct GstAudioFilter {
1440    pub basetransform: gst_base::GstBaseTransform,
1441    pub info: GstAudioInfo,
1442    pub _gst_reserved: [gpointer; 4],
1443}
1444
1445impl ::std::fmt::Debug for GstAudioFilter {
1446    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1447        f.debug_struct(&format!("GstAudioFilter @ {self:p}"))
1448            .field("basetransform", &self.basetransform)
1449            .field("info", &self.info)
1450            .finish()
1451    }
1452}
1453
1454#[derive(Copy, Clone)]
1455#[repr(C)]
1456pub struct GstAudioRingBuffer {
1457    pub object: gst::GstObject,
1458    pub cond: glib::GCond,
1459    pub open: gboolean,
1460    pub acquired: gboolean,
1461    pub memory: *mut u8,
1462    pub size: size_t,
1463    pub timestamps: *mut gst::GstClockTime,
1464    pub spec: GstAudioRingBufferSpec,
1465    pub samples_per_seg: c_int,
1466    pub empty_seg: *mut u8,
1467    pub state: c_int,
1468    pub segdone: c_int,
1469    pub segbase: c_int,
1470    pub waiting: c_int,
1471    pub callback: GstAudioRingBufferCallback,
1472    pub cb_data: gpointer,
1473    pub need_reorder: gboolean,
1474    pub channel_reorder_map: [c_int; 64],
1475    pub flushing: gboolean,
1476    pub may_start: c_int,
1477    pub active: gboolean,
1478    pub cb_data_notify: glib::GDestroyNotify,
1479    pub priv_: *mut GstAudioRingBufferPrivate,
1480    pub _gst_reserved: [gpointer; 2],
1481}
1482
1483impl ::std::fmt::Debug for GstAudioRingBuffer {
1484    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1485        f.debug_struct(&format!("GstAudioRingBuffer @ {self:p}"))
1486            .field("object", &self.object)
1487            .field("cond", &self.cond)
1488            .field("open", &self.open)
1489            .field("acquired", &self.acquired)
1490            .field("memory", &self.memory)
1491            .field("size", &self.size)
1492            .field("spec", &self.spec)
1493            .field("samples_per_seg", &self.samples_per_seg)
1494            .field("empty_seg", &self.empty_seg)
1495            .field("state", &self.state)
1496            .field("segdone", &self.segdone)
1497            .field("segbase", &self.segbase)
1498            .field("waiting", &self.waiting)
1499            .finish()
1500    }
1501}
1502
1503#[derive(Copy, Clone)]
1504#[repr(C)]
1505pub struct GstAudioSink {
1506    pub element: GstAudioBaseSink,
1507    pub thread: *mut glib::GThread,
1508    pub _gst_reserved: [gpointer; 4],
1509}
1510
1511impl ::std::fmt::Debug for GstAudioSink {
1512    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1513        f.debug_struct(&format!("GstAudioSink @ {self:p}"))
1514            .field("element", &self.element)
1515            .finish()
1516    }
1517}
1518
1519#[derive(Copy, Clone)]
1520#[repr(C)]
1521pub struct GstAudioSrc {
1522    pub element: GstAudioBaseSrc,
1523    pub thread: *mut glib::GThread,
1524    pub _gst_reserved: [gpointer; 4],
1525}
1526
1527impl ::std::fmt::Debug for GstAudioSrc {
1528    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1529        f.debug_struct(&format!("GstAudioSrc @ {self:p}"))
1530            .field("element", &self.element)
1531            .finish()
1532    }
1533}
1534
1535// Interfaces
1536#[repr(C)]
1537#[allow(dead_code)]
1538pub struct GstStreamVolume {
1539    _data: [u8; 0],
1540    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1541}
1542
1543impl ::std::fmt::Debug for GstStreamVolume {
1544    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1545        write!(f, "GstStreamVolume @ {self:p}")
1546    }
1547}
1548
1549extern "C" {
1550
1551    //=========================================================================
1552    // GstAudioBaseSinkDiscontReason
1553    //=========================================================================
1554    pub fn gst_audio_base_sink_discont_reason_get_type() -> GType;
1555
1556    //=========================================================================
1557    // GstAudioBaseSinkSlaveMethod
1558    //=========================================================================
1559    pub fn gst_audio_base_sink_slave_method_get_type() -> GType;
1560
1561    //=========================================================================
1562    // GstAudioBaseSrcSlaveMethod
1563    //=========================================================================
1564    pub fn gst_audio_base_src_slave_method_get_type() -> GType;
1565
1566    //=========================================================================
1567    // GstAudioCdSrcMode
1568    //=========================================================================
1569    pub fn gst_audio_cd_src_mode_get_type() -> GType;
1570
1571    //=========================================================================
1572    // GstAudioChannelPosition
1573    //=========================================================================
1574    pub fn gst_audio_channel_position_get_type() -> GType;
1575
1576    //=========================================================================
1577    // GstAudioDitherMethod
1578    //=========================================================================
1579    pub fn gst_audio_dither_method_get_type() -> GType;
1580
1581    //=========================================================================
1582    // GstAudioFormat
1583    //=========================================================================
1584    pub fn gst_audio_format_get_type() -> GType;
1585    pub fn gst_audio_format_build_integer(
1586        sign: gboolean,
1587        endianness: c_int,
1588        width: c_int,
1589        depth: c_int,
1590    ) -> GstAudioFormat;
1591    pub fn gst_audio_format_fill_silence(
1592        info: *const GstAudioFormatInfo,
1593        dest: gpointer,
1594        length: size_t,
1595    );
1596    pub fn gst_audio_format_from_string(format: *const c_char) -> GstAudioFormat;
1597    pub fn gst_audio_format_get_info(format: GstAudioFormat) -> *const GstAudioFormatInfo;
1598    pub fn gst_audio_format_to_string(format: GstAudioFormat) -> *const c_char;
1599
1600    //=========================================================================
1601    // GstAudioLayout
1602    //=========================================================================
1603    pub fn gst_audio_layout_get_type() -> GType;
1604
1605    //=========================================================================
1606    // GstAudioNoiseShapingMethod
1607    //=========================================================================
1608    pub fn gst_audio_noise_shaping_method_get_type() -> GType;
1609
1610    //=========================================================================
1611    // GstAudioResamplerFilterInterpolation
1612    //=========================================================================
1613    pub fn gst_audio_resampler_filter_interpolation_get_type() -> GType;
1614
1615    //=========================================================================
1616    // GstAudioResamplerFilterMode
1617    //=========================================================================
1618    pub fn gst_audio_resampler_filter_mode_get_type() -> GType;
1619
1620    //=========================================================================
1621    // GstAudioResamplerMethod
1622    //=========================================================================
1623    pub fn gst_audio_resampler_method_get_type() -> GType;
1624
1625    //=========================================================================
1626    // GstAudioRingBufferFormatType
1627    //=========================================================================
1628    pub fn gst_audio_ring_buffer_format_type_get_type() -> GType;
1629
1630    //=========================================================================
1631    // GstAudioRingBufferState
1632    //=========================================================================
1633    pub fn gst_audio_ring_buffer_state_get_type() -> GType;
1634
1635    //=========================================================================
1636    // GstDsdFormat
1637    //=========================================================================
1638    #[cfg(feature = "v1_24")]
1639    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
1640    pub fn gst_dsd_format_get_type() -> GType;
1641    #[cfg(feature = "v1_24")]
1642    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
1643    pub fn gst_dsd_format_from_string(str: *const c_char) -> GstDsdFormat;
1644    #[cfg(feature = "v1_24")]
1645    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
1646    pub fn gst_dsd_format_get_width(format: GstDsdFormat) -> c_uint;
1647    #[cfg(feature = "v1_24")]
1648    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
1649    pub fn gst_dsd_format_to_string(format: GstDsdFormat) -> *const c_char;
1650
1651    //=========================================================================
1652    // GstAudioChannelMixerFlags
1653    //=========================================================================
1654    pub fn gst_audio_channel_mixer_flags_get_type() -> GType;
1655
1656    //=========================================================================
1657    // GstAudioConverterFlags
1658    //=========================================================================
1659    pub fn gst_audio_converter_flags_get_type() -> GType;
1660
1661    //=========================================================================
1662    // GstAudioFlags
1663    //=========================================================================
1664    pub fn gst_audio_flags_get_type() -> GType;
1665
1666    //=========================================================================
1667    // GstAudioFormatFlags
1668    //=========================================================================
1669    pub fn gst_audio_format_flags_get_type() -> GType;
1670
1671    //=========================================================================
1672    // GstAudioPackFlags
1673    //=========================================================================
1674    pub fn gst_audio_pack_flags_get_type() -> GType;
1675
1676    //=========================================================================
1677    // GstAudioQuantizeFlags
1678    //=========================================================================
1679    pub fn gst_audio_quantize_flags_get_type() -> GType;
1680
1681    //=========================================================================
1682    // GstAudioResamplerFlags
1683    //=========================================================================
1684    pub fn gst_audio_resampler_flags_get_type() -> GType;
1685
1686    //=========================================================================
1687    // GstAudioBuffer
1688    //=========================================================================
1689    #[cfg(feature = "v1_16")]
1690    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1691    pub fn gst_audio_buffer_unmap(buffer: *mut GstAudioBuffer);
1692    pub fn gst_audio_buffer_clip(
1693        buffer: *mut gst::GstBuffer,
1694        segment: *const gst::GstSegment,
1695        rate: c_int,
1696        bpf: c_int,
1697    ) -> *mut gst::GstBuffer;
1698    #[cfg(feature = "v1_16")]
1699    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1700    pub fn gst_audio_buffer_map(
1701        buffer: *mut GstAudioBuffer,
1702        info: *const GstAudioInfo,
1703        gstbuffer: *mut gst::GstBuffer,
1704        flags: gst::GstMapFlags,
1705    ) -> gboolean;
1706    pub fn gst_audio_buffer_reorder_channels(
1707        buffer: *mut gst::GstBuffer,
1708        format: GstAudioFormat,
1709        channels: c_int,
1710        from: *const GstAudioChannelPosition,
1711        to: *const GstAudioChannelPosition,
1712    ) -> gboolean;
1713    #[cfg(feature = "v1_16")]
1714    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1715    pub fn gst_audio_buffer_truncate(
1716        buffer: *mut gst::GstBuffer,
1717        bpf: c_int,
1718        trim: size_t,
1719        samples: size_t,
1720    ) -> *mut gst::GstBuffer;
1721
1722    //=========================================================================
1723    // GstAudioChannelMixer
1724    //=========================================================================
1725    pub fn gst_audio_channel_mixer_free(mix: *mut GstAudioChannelMixer);
1726    pub fn gst_audio_channel_mixer_is_passthrough(mix: *mut GstAudioChannelMixer) -> gboolean;
1727    pub fn gst_audio_channel_mixer_samples(
1728        mix: *mut GstAudioChannelMixer,
1729        in_: *const gpointer,
1730        out: *mut gpointer,
1731        samples: c_int,
1732    );
1733    pub fn gst_audio_channel_mixer_new(
1734        flags: GstAudioChannelMixerFlags,
1735        format: GstAudioFormat,
1736        in_channels: c_int,
1737        in_position: *mut GstAudioChannelPosition,
1738        out_channels: c_int,
1739        out_position: *mut GstAudioChannelPosition,
1740    ) -> *mut GstAudioChannelMixer;
1741    pub fn gst_audio_channel_mixer_new_with_matrix(
1742        flags: GstAudioChannelMixerFlags,
1743        format: GstAudioFormat,
1744        in_channels: c_int,
1745        out_channels: c_int,
1746        matrix: *mut *mut c_float,
1747    ) -> *mut GstAudioChannelMixer;
1748
1749    //=========================================================================
1750    // GstAudioClippingMeta
1751    //=========================================================================
1752    pub fn gst_audio_clipping_meta_get_info() -> *const gst::GstMetaInfo;
1753
1754    //=========================================================================
1755    // GstAudioConverter
1756    //=========================================================================
1757    pub fn gst_audio_converter_get_type() -> GType;
1758    pub fn gst_audio_converter_new(
1759        flags: GstAudioConverterFlags,
1760        in_info: *mut GstAudioInfo,
1761        out_info: *mut GstAudioInfo,
1762        config: *mut gst::GstStructure,
1763    ) -> *mut GstAudioConverter;
1764    pub fn gst_audio_converter_convert(
1765        convert: *mut GstAudioConverter,
1766        flags: GstAudioConverterFlags,
1767        in_: gpointer,
1768        in_size: size_t,
1769        out: *mut u8,
1770        out_size: *mut size_t,
1771    ) -> gboolean;
1772    pub fn gst_audio_converter_free(convert: *mut GstAudioConverter);
1773    pub fn gst_audio_converter_get_config(
1774        convert: *mut GstAudioConverter,
1775        in_rate: *mut c_int,
1776        out_rate: *mut c_int,
1777    ) -> *const gst::GstStructure;
1778    pub fn gst_audio_converter_get_in_frames(
1779        convert: *mut GstAudioConverter,
1780        out_frames: size_t,
1781    ) -> size_t;
1782    pub fn gst_audio_converter_get_max_latency(convert: *mut GstAudioConverter) -> size_t;
1783    pub fn gst_audio_converter_get_out_frames(
1784        convert: *mut GstAudioConverter,
1785        in_frames: size_t,
1786    ) -> size_t;
1787    #[cfg(feature = "v1_16")]
1788    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1789    pub fn gst_audio_converter_is_passthrough(convert: *mut GstAudioConverter) -> gboolean;
1790    pub fn gst_audio_converter_reset(convert: *mut GstAudioConverter);
1791    pub fn gst_audio_converter_samples(
1792        convert: *mut GstAudioConverter,
1793        flags: GstAudioConverterFlags,
1794        in_: *mut gpointer,
1795        in_frames: size_t,
1796        out: *mut gpointer,
1797        out_frames: size_t,
1798    ) -> gboolean;
1799    pub fn gst_audio_converter_supports_inplace(convert: *mut GstAudioConverter) -> gboolean;
1800    pub fn gst_audio_converter_update_config(
1801        convert: *mut GstAudioConverter,
1802        in_rate: c_int,
1803        out_rate: c_int,
1804        config: *mut gst::GstStructure,
1805    ) -> gboolean;
1806
1807    //=========================================================================
1808    // GstAudioDownmixMeta
1809    //=========================================================================
1810    pub fn gst_audio_downmix_meta_get_info() -> *const gst::GstMetaInfo;
1811
1812    //=========================================================================
1813    // GstAudioFilterClass
1814    //=========================================================================
1815    pub fn gst_audio_filter_class_add_pad_templates(
1816        klass: *mut GstAudioFilterClass,
1817        allowed_caps: *mut gst::GstCaps,
1818    );
1819
1820    //=========================================================================
1821    // GstAudioFormatInfo
1822    //=========================================================================
1823    pub fn gst_audio_format_info_get_type() -> GType;
1824    #[cfg(feature = "v1_20")]
1825    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1826    pub fn gst_audio_format_info_fill_silence(
1827        info: *const GstAudioFormatInfo,
1828        dest: gpointer,
1829        length: size_t,
1830    );
1831
1832    //=========================================================================
1833    // GstAudioInfo
1834    //=========================================================================
1835    pub fn gst_audio_info_get_type() -> GType;
1836    pub fn gst_audio_info_new() -> *mut GstAudioInfo;
1837    #[cfg(feature = "v1_20")]
1838    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1839    pub fn gst_audio_info_new_from_caps(caps: *const gst::GstCaps) -> *mut GstAudioInfo;
1840    pub fn gst_audio_info_convert(
1841        info: *const GstAudioInfo,
1842        src_fmt: gst::GstFormat,
1843        src_val: i64,
1844        dest_fmt: gst::GstFormat,
1845        dest_val: *mut i64,
1846    ) -> gboolean;
1847    pub fn gst_audio_info_copy(info: *const GstAudioInfo) -> *mut GstAudioInfo;
1848    pub fn gst_audio_info_free(info: *mut GstAudioInfo);
1849    pub fn gst_audio_info_is_equal(
1850        info: *const GstAudioInfo,
1851        other: *const GstAudioInfo,
1852    ) -> gboolean;
1853    pub fn gst_audio_info_set_format(
1854        info: *mut GstAudioInfo,
1855        format: GstAudioFormat,
1856        rate: c_int,
1857        channels: c_int,
1858        position: *const [GstAudioChannelPosition; 64],
1859    );
1860    pub fn gst_audio_info_to_caps(info: *const GstAudioInfo) -> *mut gst::GstCaps;
1861    pub fn gst_audio_info_from_caps(info: *mut GstAudioInfo, caps: *const gst::GstCaps)
1862        -> gboolean;
1863    pub fn gst_audio_info_init(info: *mut GstAudioInfo);
1864
1865    //=========================================================================
1866    // GstAudioLevelMeta
1867    //=========================================================================
1868    #[cfg(feature = "v1_20")]
1869    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1870    pub fn gst_audio_level_meta_get_info() -> *const gst::GstMetaInfo;
1871
1872    //=========================================================================
1873    // GstAudioMeta
1874    //=========================================================================
1875    #[cfg(feature = "v1_16")]
1876    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1877    pub fn gst_audio_meta_get_info() -> *const gst::GstMetaInfo;
1878
1879    //=========================================================================
1880    // GstAudioQuantize
1881    //=========================================================================
1882    pub fn gst_audio_quantize_free(quant: *mut GstAudioQuantize);
1883    pub fn gst_audio_quantize_reset(quant: *mut GstAudioQuantize);
1884    pub fn gst_audio_quantize_samples(
1885        quant: *mut GstAudioQuantize,
1886        in_: *const gpointer,
1887        out: *mut gpointer,
1888        samples: c_uint,
1889    );
1890    pub fn gst_audio_quantize_new(
1891        dither: GstAudioDitherMethod,
1892        ns: GstAudioNoiseShapingMethod,
1893        flags: GstAudioQuantizeFlags,
1894        format: GstAudioFormat,
1895        channels: c_uint,
1896        quantizer: c_uint,
1897    ) -> *mut GstAudioQuantize;
1898
1899    //=========================================================================
1900    // GstAudioResampler
1901    //=========================================================================
1902    pub fn gst_audio_resampler_free(resampler: *mut GstAudioResampler);
1903    pub fn gst_audio_resampler_get_in_frames(
1904        resampler: *mut GstAudioResampler,
1905        out_frames: size_t,
1906    ) -> size_t;
1907    pub fn gst_audio_resampler_get_max_latency(resampler: *mut GstAudioResampler) -> size_t;
1908    pub fn gst_audio_resampler_get_out_frames(
1909        resampler: *mut GstAudioResampler,
1910        in_frames: size_t,
1911    ) -> size_t;
1912    pub fn gst_audio_resampler_resample(
1913        resampler: *mut GstAudioResampler,
1914        in_: *mut gpointer,
1915        in_frames: size_t,
1916        out: *mut gpointer,
1917        out_frames: size_t,
1918    );
1919    pub fn gst_audio_resampler_reset(resampler: *mut GstAudioResampler);
1920    pub fn gst_audio_resampler_update(
1921        resampler: *mut GstAudioResampler,
1922        in_rate: c_int,
1923        out_rate: c_int,
1924        options: *mut gst::GstStructure,
1925    ) -> gboolean;
1926    pub fn gst_audio_resampler_new(
1927        method: GstAudioResamplerMethod,
1928        flags: GstAudioResamplerFlags,
1929        format: GstAudioFormat,
1930        channels: c_int,
1931        in_rate: c_int,
1932        out_rate: c_int,
1933        options: *mut gst::GstStructure,
1934    ) -> *mut GstAudioResampler;
1935    pub fn gst_audio_resampler_options_set_quality(
1936        method: GstAudioResamplerMethod,
1937        quality: c_uint,
1938        in_rate: c_int,
1939        out_rate: c_int,
1940        options: *mut gst::GstStructure,
1941    );
1942
1943    //=========================================================================
1944    // GstAudioStreamAlign
1945    //=========================================================================
1946    pub fn gst_audio_stream_align_get_type() -> GType;
1947    pub fn gst_audio_stream_align_new(
1948        rate: c_int,
1949        alignment_threshold: gst::GstClockTime,
1950        discont_wait: gst::GstClockTime,
1951    ) -> *mut GstAudioStreamAlign;
1952    pub fn gst_audio_stream_align_copy(
1953        align: *const GstAudioStreamAlign,
1954    ) -> *mut GstAudioStreamAlign;
1955    pub fn gst_audio_stream_align_free(align: *mut GstAudioStreamAlign);
1956    pub fn gst_audio_stream_align_get_alignment_threshold(
1957        align: *const GstAudioStreamAlign,
1958    ) -> gst::GstClockTime;
1959    pub fn gst_audio_stream_align_get_discont_wait(
1960        align: *const GstAudioStreamAlign,
1961    ) -> gst::GstClockTime;
1962    pub fn gst_audio_stream_align_get_rate(align: *const GstAudioStreamAlign) -> c_int;
1963    pub fn gst_audio_stream_align_get_samples_since_discont(
1964        align: *const GstAudioStreamAlign,
1965    ) -> u64;
1966    pub fn gst_audio_stream_align_get_timestamp_at_discont(
1967        align: *const GstAudioStreamAlign,
1968    ) -> gst::GstClockTime;
1969    pub fn gst_audio_stream_align_mark_discont(align: *mut GstAudioStreamAlign);
1970    pub fn gst_audio_stream_align_process(
1971        align: *mut GstAudioStreamAlign,
1972        discont: gboolean,
1973        timestamp: gst::GstClockTime,
1974        n_samples: c_uint,
1975        out_timestamp: *mut gst::GstClockTime,
1976        out_duration: *mut gst::GstClockTime,
1977        out_sample_position: *mut u64,
1978    ) -> gboolean;
1979    pub fn gst_audio_stream_align_set_alignment_threshold(
1980        align: *mut GstAudioStreamAlign,
1981        alignment_threshold: gst::GstClockTime,
1982    );
1983    pub fn gst_audio_stream_align_set_discont_wait(
1984        align: *mut GstAudioStreamAlign,
1985        discont_wait: gst::GstClockTime,
1986    );
1987    pub fn gst_audio_stream_align_set_rate(align: *mut GstAudioStreamAlign, rate: c_int);
1988
1989    //=========================================================================
1990    // GstDsdInfo
1991    //=========================================================================
1992    #[cfg(feature = "v1_24")]
1993    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
1994    pub fn gst_dsd_info_get_type() -> GType;
1995    #[cfg(feature = "v1_24")]
1996    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
1997    pub fn gst_dsd_info_new() -> *mut GstDsdInfo;
1998    #[cfg(feature = "v1_24")]
1999    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2000    pub fn gst_dsd_info_new_from_caps(caps: *const gst::GstCaps) -> *mut GstDsdInfo;
2001    #[cfg(feature = "v1_24")]
2002    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2003    pub fn gst_dsd_info_copy(info: *const GstDsdInfo) -> *mut GstDsdInfo;
2004    #[cfg(feature = "v1_24")]
2005    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2006    pub fn gst_dsd_info_free(info: *mut GstDsdInfo);
2007    #[cfg(feature = "v1_24")]
2008    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2009    pub fn gst_dsd_info_is_equal(info: *const GstDsdInfo, other: *const GstDsdInfo) -> gboolean;
2010    #[cfg(feature = "v1_24")]
2011    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2012    pub fn gst_dsd_info_set_format(
2013        info: *mut GstDsdInfo,
2014        format: GstDsdFormat,
2015        rate: c_int,
2016        channels: c_int,
2017        positions: *const [GstAudioChannelPosition; 64],
2018    );
2019    #[cfg(feature = "v1_24")]
2020    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2021    pub fn gst_dsd_info_to_caps(info: *const GstDsdInfo) -> *mut gst::GstCaps;
2022    #[cfg(feature = "v1_24")]
2023    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2024    pub fn gst_dsd_info_from_caps(info: *mut GstDsdInfo, caps: *const gst::GstCaps) -> gboolean;
2025    #[cfg(feature = "v1_24")]
2026    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2027    pub fn gst_dsd_info_init(info: *mut GstDsdInfo);
2028
2029    //=========================================================================
2030    // GstDsdPlaneOffsetMeta
2031    //=========================================================================
2032    #[cfg(feature = "v1_24")]
2033    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2034    pub fn gst_dsd_plane_offset_meta_get_info() -> *const gst::GstMetaInfo;
2035
2036    //=========================================================================
2037    // GstAudioAggregator
2038    //=========================================================================
2039    pub fn gst_audio_aggregator_get_type() -> GType;
2040    pub fn gst_audio_aggregator_set_sink_caps(
2041        aagg: *mut GstAudioAggregator,
2042        pad: *mut GstAudioAggregatorPad,
2043        caps: *mut gst::GstCaps,
2044    );
2045
2046    //=========================================================================
2047    // GstAudioAggregatorConvertPad
2048    //=========================================================================
2049    pub fn gst_audio_aggregator_convert_pad_get_type() -> GType;
2050
2051    //=========================================================================
2052    // GstAudioAggregatorPad
2053    //=========================================================================
2054    pub fn gst_audio_aggregator_pad_get_type() -> GType;
2055
2056    //=========================================================================
2057    // GstAudioBaseSink
2058    //=========================================================================
2059    pub fn gst_audio_base_sink_get_type() -> GType;
2060    pub fn gst_audio_base_sink_create_ringbuffer(
2061        sink: *mut GstAudioBaseSink,
2062    ) -> *mut GstAudioRingBuffer;
2063    pub fn gst_audio_base_sink_get_alignment_threshold(
2064        sink: *mut GstAudioBaseSink,
2065    ) -> gst::GstClockTime;
2066    pub fn gst_audio_base_sink_get_discont_wait(sink: *mut GstAudioBaseSink) -> gst::GstClockTime;
2067    pub fn gst_audio_base_sink_get_drift_tolerance(sink: *mut GstAudioBaseSink) -> i64;
2068    pub fn gst_audio_base_sink_get_provide_clock(sink: *mut GstAudioBaseSink) -> gboolean;
2069    pub fn gst_audio_base_sink_get_slave_method(
2070        sink: *mut GstAudioBaseSink,
2071    ) -> GstAudioBaseSinkSlaveMethod;
2072    pub fn gst_audio_base_sink_report_device_failure(sink: *mut GstAudioBaseSink);
2073    pub fn gst_audio_base_sink_set_alignment_threshold(
2074        sink: *mut GstAudioBaseSink,
2075        alignment_threshold: gst::GstClockTime,
2076    );
2077    pub fn gst_audio_base_sink_set_custom_slaving_callback(
2078        sink: *mut GstAudioBaseSink,
2079        callback: GstAudioBaseSinkCustomSlavingCallback,
2080        user_data: gpointer,
2081        notify: glib::GDestroyNotify,
2082    );
2083    pub fn gst_audio_base_sink_set_discont_wait(
2084        sink: *mut GstAudioBaseSink,
2085        discont_wait: gst::GstClockTime,
2086    );
2087    pub fn gst_audio_base_sink_set_drift_tolerance(
2088        sink: *mut GstAudioBaseSink,
2089        drift_tolerance: i64,
2090    );
2091    pub fn gst_audio_base_sink_set_provide_clock(sink: *mut GstAudioBaseSink, provide: gboolean);
2092    pub fn gst_audio_base_sink_set_slave_method(
2093        sink: *mut GstAudioBaseSink,
2094        method: GstAudioBaseSinkSlaveMethod,
2095    );
2096
2097    //=========================================================================
2098    // GstAudioBaseSrc
2099    //=========================================================================
2100    pub fn gst_audio_base_src_get_type() -> GType;
2101    pub fn gst_audio_base_src_create_ringbuffer(
2102        src: *mut GstAudioBaseSrc,
2103    ) -> *mut GstAudioRingBuffer;
2104    pub fn gst_audio_base_src_get_provide_clock(src: *mut GstAudioBaseSrc) -> gboolean;
2105    pub fn gst_audio_base_src_get_slave_method(
2106        src: *mut GstAudioBaseSrc,
2107    ) -> GstAudioBaseSrcSlaveMethod;
2108    pub fn gst_audio_base_src_set_provide_clock(src: *mut GstAudioBaseSrc, provide: gboolean);
2109    pub fn gst_audio_base_src_set_slave_method(
2110        src: *mut GstAudioBaseSrc,
2111        method: GstAudioBaseSrcSlaveMethod,
2112    );
2113
2114    //=========================================================================
2115    // GstAudioCdSrc
2116    //=========================================================================
2117    pub fn gst_audio_cd_src_get_type() -> GType;
2118    pub fn gst_audio_cd_src_add_track(
2119        src: *mut GstAudioCdSrc,
2120        track: *mut GstAudioCdSrcTrack,
2121    ) -> gboolean;
2122
2123    //=========================================================================
2124    // GstAudioClock
2125    //=========================================================================
2126    pub fn gst_audio_clock_get_type() -> GType;
2127    pub fn gst_audio_clock_new(
2128        name: *const c_char,
2129        func: GstAudioClockGetTimeFunc,
2130        user_data: gpointer,
2131        destroy_notify: glib::GDestroyNotify,
2132    ) -> *mut gst::GstClock;
2133    pub fn gst_audio_clock_adjust(
2134        clock: *mut GstAudioClock,
2135        time: gst::GstClockTime,
2136    ) -> gst::GstClockTime;
2137    pub fn gst_audio_clock_get_time(clock: *mut GstAudioClock) -> gst::GstClockTime;
2138    pub fn gst_audio_clock_invalidate(clock: *mut GstAudioClock);
2139    pub fn gst_audio_clock_reset(clock: *mut GstAudioClock, time: gst::GstClockTime);
2140
2141    //=========================================================================
2142    // GstAudioDecoder
2143    //=========================================================================
2144    pub fn gst_audio_decoder_get_type() -> GType;
2145    pub fn gst_audio_decoder_allocate_output_buffer(
2146        dec: *mut GstAudioDecoder,
2147        size: size_t,
2148    ) -> *mut gst::GstBuffer;
2149    pub fn gst_audio_decoder_finish_frame(
2150        dec: *mut GstAudioDecoder,
2151        buf: *mut gst::GstBuffer,
2152        frames: c_int,
2153    ) -> gst::GstFlowReturn;
2154    #[cfg(feature = "v1_16")]
2155    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
2156    pub fn gst_audio_decoder_finish_subframe(
2157        dec: *mut GstAudioDecoder,
2158        buf: *mut gst::GstBuffer,
2159    ) -> gst::GstFlowReturn;
2160    pub fn gst_audio_decoder_get_allocator(
2161        dec: *mut GstAudioDecoder,
2162        allocator: *mut *mut gst::GstAllocator,
2163        params: *mut gst::GstAllocationParams,
2164    );
2165    pub fn gst_audio_decoder_get_audio_info(dec: *mut GstAudioDecoder) -> *mut GstAudioInfo;
2166    pub fn gst_audio_decoder_get_delay(dec: *mut GstAudioDecoder) -> c_int;
2167    pub fn gst_audio_decoder_get_drainable(dec: *mut GstAudioDecoder) -> gboolean;
2168    pub fn gst_audio_decoder_get_estimate_rate(dec: *mut GstAudioDecoder) -> c_int;
2169    pub fn gst_audio_decoder_get_latency(
2170        dec: *mut GstAudioDecoder,
2171        min: *mut gst::GstClockTime,
2172        max: *mut gst::GstClockTime,
2173    );
2174    pub fn gst_audio_decoder_get_max_errors(dec: *mut GstAudioDecoder) -> c_int;
2175    pub fn gst_audio_decoder_get_min_latency(dec: *mut GstAudioDecoder) -> gst::GstClockTime;
2176    pub fn gst_audio_decoder_get_needs_format(dec: *mut GstAudioDecoder) -> gboolean;
2177    pub fn gst_audio_decoder_get_parse_state(
2178        dec: *mut GstAudioDecoder,
2179        sync: *mut gboolean,
2180        eos: *mut gboolean,
2181    );
2182    pub fn gst_audio_decoder_get_plc(dec: *mut GstAudioDecoder) -> gboolean;
2183    pub fn gst_audio_decoder_get_plc_aware(dec: *mut GstAudioDecoder) -> c_int;
2184    pub fn gst_audio_decoder_get_tolerance(dec: *mut GstAudioDecoder) -> gst::GstClockTime;
2185    pub fn gst_audio_decoder_merge_tags(
2186        dec: *mut GstAudioDecoder,
2187        tags: *const gst::GstTagList,
2188        mode: gst::GstTagMergeMode,
2189    );
2190    pub fn gst_audio_decoder_negotiate(dec: *mut GstAudioDecoder) -> gboolean;
2191    pub fn gst_audio_decoder_proxy_getcaps(
2192        decoder: *mut GstAudioDecoder,
2193        caps: *mut gst::GstCaps,
2194        filter: *mut gst::GstCaps,
2195    ) -> *mut gst::GstCaps;
2196    pub fn gst_audio_decoder_set_allocation_caps(
2197        dec: *mut GstAudioDecoder,
2198        allocation_caps: *mut gst::GstCaps,
2199    );
2200    pub fn gst_audio_decoder_set_drainable(dec: *mut GstAudioDecoder, enabled: gboolean);
2201    pub fn gst_audio_decoder_set_estimate_rate(dec: *mut GstAudioDecoder, enabled: gboolean);
2202    pub fn gst_audio_decoder_set_latency(
2203        dec: *mut GstAudioDecoder,
2204        min: gst::GstClockTime,
2205        max: gst::GstClockTime,
2206    );
2207    pub fn gst_audio_decoder_set_max_errors(dec: *mut GstAudioDecoder, num: c_int);
2208    pub fn gst_audio_decoder_set_min_latency(dec: *mut GstAudioDecoder, num: gst::GstClockTime);
2209    pub fn gst_audio_decoder_set_needs_format(dec: *mut GstAudioDecoder, enabled: gboolean);
2210    #[cfg(feature = "v1_16")]
2211    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
2212    pub fn gst_audio_decoder_set_output_caps(
2213        dec: *mut GstAudioDecoder,
2214        caps: *mut gst::GstCaps,
2215    ) -> gboolean;
2216    pub fn gst_audio_decoder_set_output_format(
2217        dec: *mut GstAudioDecoder,
2218        info: *const GstAudioInfo,
2219    ) -> gboolean;
2220    pub fn gst_audio_decoder_set_plc(dec: *mut GstAudioDecoder, enabled: gboolean);
2221    pub fn gst_audio_decoder_set_plc_aware(dec: *mut GstAudioDecoder, plc: gboolean);
2222    pub fn gst_audio_decoder_set_tolerance(dec: *mut GstAudioDecoder, tolerance: gst::GstClockTime);
2223    pub fn gst_audio_decoder_set_use_default_pad_acceptcaps(
2224        decoder: *mut GstAudioDecoder,
2225        use_: gboolean,
2226    );
2227
2228    //=========================================================================
2229    // GstAudioEncoder
2230    //=========================================================================
2231    pub fn gst_audio_encoder_get_type() -> GType;
2232    pub fn gst_audio_encoder_allocate_output_buffer(
2233        enc: *mut GstAudioEncoder,
2234        size: size_t,
2235    ) -> *mut gst::GstBuffer;
2236    pub fn gst_audio_encoder_finish_frame(
2237        enc: *mut GstAudioEncoder,
2238        buffer: *mut gst::GstBuffer,
2239        samples: c_int,
2240    ) -> gst::GstFlowReturn;
2241    pub fn gst_audio_encoder_get_allocator(
2242        enc: *mut GstAudioEncoder,
2243        allocator: *mut *mut gst::GstAllocator,
2244        params: *mut gst::GstAllocationParams,
2245    );
2246    pub fn gst_audio_encoder_get_audio_info(enc: *mut GstAudioEncoder) -> *mut GstAudioInfo;
2247    pub fn gst_audio_encoder_get_drainable(enc: *mut GstAudioEncoder) -> gboolean;
2248    pub fn gst_audio_encoder_get_frame_max(enc: *mut GstAudioEncoder) -> c_int;
2249    pub fn gst_audio_encoder_get_frame_samples_max(enc: *mut GstAudioEncoder) -> c_int;
2250    pub fn gst_audio_encoder_get_frame_samples_min(enc: *mut GstAudioEncoder) -> c_int;
2251    pub fn gst_audio_encoder_get_hard_min(enc: *mut GstAudioEncoder) -> gboolean;
2252    pub fn gst_audio_encoder_get_hard_resync(enc: *mut GstAudioEncoder) -> gboolean;
2253    pub fn gst_audio_encoder_get_latency(
2254        enc: *mut GstAudioEncoder,
2255        min: *mut gst::GstClockTime,
2256        max: *mut gst::GstClockTime,
2257    );
2258    pub fn gst_audio_encoder_get_lookahead(enc: *mut GstAudioEncoder) -> c_int;
2259    pub fn gst_audio_encoder_get_mark_granule(enc: *mut GstAudioEncoder) -> gboolean;
2260    pub fn gst_audio_encoder_get_perfect_timestamp(enc: *mut GstAudioEncoder) -> gboolean;
2261    pub fn gst_audio_encoder_get_tolerance(enc: *mut GstAudioEncoder) -> gst::GstClockTime;
2262    pub fn gst_audio_encoder_merge_tags(
2263        enc: *mut GstAudioEncoder,
2264        tags: *const gst::GstTagList,
2265        mode: gst::GstTagMergeMode,
2266    );
2267    pub fn gst_audio_encoder_negotiate(enc: *mut GstAudioEncoder) -> gboolean;
2268    pub fn gst_audio_encoder_proxy_getcaps(
2269        enc: *mut GstAudioEncoder,
2270        caps: *mut gst::GstCaps,
2271        filter: *mut gst::GstCaps,
2272    ) -> *mut gst::GstCaps;
2273    pub fn gst_audio_encoder_set_allocation_caps(
2274        enc: *mut GstAudioEncoder,
2275        allocation_caps: *mut gst::GstCaps,
2276    );
2277    pub fn gst_audio_encoder_set_drainable(enc: *mut GstAudioEncoder, enabled: gboolean);
2278    pub fn gst_audio_encoder_set_frame_max(enc: *mut GstAudioEncoder, num: c_int);
2279    pub fn gst_audio_encoder_set_frame_samples_max(enc: *mut GstAudioEncoder, num: c_int);
2280    pub fn gst_audio_encoder_set_frame_samples_min(enc: *mut GstAudioEncoder, num: c_int);
2281    pub fn gst_audio_encoder_set_hard_min(enc: *mut GstAudioEncoder, enabled: gboolean);
2282    pub fn gst_audio_encoder_set_hard_resync(enc: *mut GstAudioEncoder, enabled: gboolean);
2283    pub fn gst_audio_encoder_set_headers(enc: *mut GstAudioEncoder, headers: *mut glib::GList);
2284    pub fn gst_audio_encoder_set_latency(
2285        enc: *mut GstAudioEncoder,
2286        min: gst::GstClockTime,
2287        max: gst::GstClockTime,
2288    );
2289    pub fn gst_audio_encoder_set_lookahead(enc: *mut GstAudioEncoder, num: c_int);
2290    pub fn gst_audio_encoder_set_mark_granule(enc: *mut GstAudioEncoder, enabled: gboolean);
2291    pub fn gst_audio_encoder_set_output_format(
2292        enc: *mut GstAudioEncoder,
2293        caps: *mut gst::GstCaps,
2294    ) -> gboolean;
2295    pub fn gst_audio_encoder_set_perfect_timestamp(enc: *mut GstAudioEncoder, enabled: gboolean);
2296    pub fn gst_audio_encoder_set_tolerance(enc: *mut GstAudioEncoder, tolerance: gst::GstClockTime);
2297
2298    //=========================================================================
2299    // GstAudioFilter
2300    //=========================================================================
2301    pub fn gst_audio_filter_get_type() -> GType;
2302
2303    //=========================================================================
2304    // GstAudioRingBuffer
2305    //=========================================================================
2306    pub fn gst_audio_ring_buffer_get_type() -> GType;
2307    pub fn gst_audio_ring_buffer_debug_spec_buff(spec: *mut GstAudioRingBufferSpec);
2308    pub fn gst_audio_ring_buffer_debug_spec_caps(spec: *mut GstAudioRingBufferSpec);
2309    pub fn gst_audio_ring_buffer_parse_caps(
2310        spec: *mut GstAudioRingBufferSpec,
2311        caps: *mut gst::GstCaps,
2312    ) -> gboolean;
2313    pub fn gst_audio_ring_buffer_acquire(
2314        buf: *mut GstAudioRingBuffer,
2315        spec: *mut GstAudioRingBufferSpec,
2316    ) -> gboolean;
2317    pub fn gst_audio_ring_buffer_activate(
2318        buf: *mut GstAudioRingBuffer,
2319        active: gboolean,
2320    ) -> gboolean;
2321    pub fn gst_audio_ring_buffer_advance(buf: *mut GstAudioRingBuffer, advance: c_uint);
2322    pub fn gst_audio_ring_buffer_clear(buf: *mut GstAudioRingBuffer, segment: c_int);
2323    pub fn gst_audio_ring_buffer_clear_all(buf: *mut GstAudioRingBuffer);
2324    pub fn gst_audio_ring_buffer_close_device(buf: *mut GstAudioRingBuffer) -> gboolean;
2325    pub fn gst_audio_ring_buffer_commit(
2326        buf: *mut GstAudioRingBuffer,
2327        sample: *mut u64,
2328        data: *mut u8,
2329        in_samples: c_int,
2330        out_samples: c_int,
2331        accum: *mut c_int,
2332    ) -> c_uint;
2333    pub fn gst_audio_ring_buffer_convert(
2334        buf: *mut GstAudioRingBuffer,
2335        src_fmt: gst::GstFormat,
2336        src_val: i64,
2337        dest_fmt: gst::GstFormat,
2338        dest_val: *mut i64,
2339    ) -> gboolean;
2340    pub fn gst_audio_ring_buffer_delay(buf: *mut GstAudioRingBuffer) -> c_uint;
2341    pub fn gst_audio_ring_buffer_device_is_open(buf: *mut GstAudioRingBuffer) -> gboolean;
2342    #[cfg(feature = "v1_26")]
2343    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
2344    pub fn gst_audio_ring_buffer_get_segbase(buf: *mut GstAudioRingBuffer) -> u64;
2345    #[cfg(feature = "v1_26")]
2346    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
2347    pub fn gst_audio_ring_buffer_get_segdone(buf: *mut GstAudioRingBuffer) -> u64;
2348    pub fn gst_audio_ring_buffer_is_acquired(buf: *mut GstAudioRingBuffer) -> gboolean;
2349    pub fn gst_audio_ring_buffer_is_active(buf: *mut GstAudioRingBuffer) -> gboolean;
2350    pub fn gst_audio_ring_buffer_is_flushing(buf: *mut GstAudioRingBuffer) -> gboolean;
2351    pub fn gst_audio_ring_buffer_may_start(buf: *mut GstAudioRingBuffer, allowed: gboolean);
2352    pub fn gst_audio_ring_buffer_open_device(buf: *mut GstAudioRingBuffer) -> gboolean;
2353    pub fn gst_audio_ring_buffer_pause(buf: *mut GstAudioRingBuffer) -> gboolean;
2354    pub fn gst_audio_ring_buffer_prepare_read(
2355        buf: *mut GstAudioRingBuffer,
2356        segment: *mut c_int,
2357        readptr: *mut *mut u8,
2358        len: *mut c_int,
2359    ) -> gboolean;
2360    pub fn gst_audio_ring_buffer_read(
2361        buf: *mut GstAudioRingBuffer,
2362        sample: u64,
2363        data: *mut u8,
2364        len: c_uint,
2365        timestamp: *mut gst::GstClockTime,
2366    ) -> c_uint;
2367    pub fn gst_audio_ring_buffer_release(buf: *mut GstAudioRingBuffer) -> gboolean;
2368    pub fn gst_audio_ring_buffer_samples_done(buf: *mut GstAudioRingBuffer) -> u64;
2369    pub fn gst_audio_ring_buffer_set_callback(
2370        buf: *mut GstAudioRingBuffer,
2371        cb: GstAudioRingBufferCallback,
2372        user_data: gpointer,
2373    );
2374    pub fn gst_audio_ring_buffer_set_callback_full(
2375        buf: *mut GstAudioRingBuffer,
2376        cb: GstAudioRingBufferCallback,
2377        user_data: gpointer,
2378        notify: glib::GDestroyNotify,
2379    );
2380    pub fn gst_audio_ring_buffer_set_channel_positions(
2381        buf: *mut GstAudioRingBuffer,
2382        position: *const GstAudioChannelPosition,
2383    );
2384    #[cfg(feature = "v1_24")]
2385    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2386    pub fn gst_audio_ring_buffer_set_errored(buf: *mut GstAudioRingBuffer);
2387    pub fn gst_audio_ring_buffer_set_flushing(buf: *mut GstAudioRingBuffer, flushing: gboolean);
2388    pub fn gst_audio_ring_buffer_set_sample(buf: *mut GstAudioRingBuffer, sample: u64);
2389    #[cfg(feature = "v1_26")]
2390    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
2391    pub fn gst_audio_ring_buffer_set_segdone(buf: *mut GstAudioRingBuffer, segdone: u64);
2392    pub fn gst_audio_ring_buffer_set_timestamp(
2393        buf: *mut GstAudioRingBuffer,
2394        readseg: c_int,
2395        timestamp: gst::GstClockTime,
2396    );
2397    pub fn gst_audio_ring_buffer_start(buf: *mut GstAudioRingBuffer) -> gboolean;
2398    pub fn gst_audio_ring_buffer_stop(buf: *mut GstAudioRingBuffer) -> gboolean;
2399
2400    //=========================================================================
2401    // GstAudioSink
2402    //=========================================================================
2403    pub fn gst_audio_sink_get_type() -> GType;
2404
2405    //=========================================================================
2406    // GstAudioSrc
2407    //=========================================================================
2408    pub fn gst_audio_src_get_type() -> GType;
2409
2410    //=========================================================================
2411    // GstStreamVolume
2412    //=========================================================================
2413    pub fn gst_stream_volume_get_type() -> GType;
2414    pub fn gst_stream_volume_convert_volume(
2415        from: GstStreamVolumeFormat,
2416        to: GstStreamVolumeFormat,
2417        val: c_double,
2418    ) -> c_double;
2419    pub fn gst_stream_volume_get_mute(volume: *mut GstStreamVolume) -> gboolean;
2420    pub fn gst_stream_volume_get_volume(
2421        volume: *mut GstStreamVolume,
2422        format: GstStreamVolumeFormat,
2423    ) -> c_double;
2424    pub fn gst_stream_volume_set_mute(volume: *mut GstStreamVolume, mute: gboolean);
2425    pub fn gst_stream_volume_set_volume(
2426        volume: *mut GstStreamVolume,
2427        format: GstStreamVolumeFormat,
2428        val: c_double,
2429    );
2430
2431    //=========================================================================
2432    // Other functions
2433    //=========================================================================
2434    pub fn gst_audio_channel_get_fallback_mask(channels: c_int) -> u64;
2435    pub fn gst_audio_channel_positions_from_mask(
2436        channels: c_int,
2437        channel_mask: u64,
2438        position: *mut GstAudioChannelPosition,
2439    ) -> gboolean;
2440    pub fn gst_audio_channel_positions_to_mask(
2441        position: *const GstAudioChannelPosition,
2442        channels: c_int,
2443        force_order: gboolean,
2444        channel_mask: *mut u64,
2445    ) -> gboolean;
2446    pub fn gst_audio_channel_positions_to_string(
2447        position: *const GstAudioChannelPosition,
2448        channels: c_int,
2449    ) -> *mut c_char;
2450    pub fn gst_audio_channel_positions_to_valid_order(
2451        position: *mut GstAudioChannelPosition,
2452        channels: c_int,
2453    ) -> gboolean;
2454    pub fn gst_audio_check_valid_channel_positions(
2455        position: *const GstAudioChannelPosition,
2456        channels: c_int,
2457        force_order: gboolean,
2458    ) -> gboolean;
2459    pub fn gst_audio_clipping_meta_api_get_type() -> GType;
2460    pub fn gst_audio_downmix_meta_api_get_type() -> GType;
2461    #[cfg(feature = "v1_18")]
2462    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
2463    pub fn gst_audio_formats_raw(len: *mut c_uint) -> *const GstAudioFormat;
2464    pub fn gst_audio_get_channel_reorder_map(
2465        channels: c_int,
2466        from: *const GstAudioChannelPosition,
2467        to: *const GstAudioChannelPosition,
2468        reorder_map: *mut c_int,
2469    ) -> gboolean;
2470    pub fn gst_audio_iec61937_frame_size(spec: *const GstAudioRingBufferSpec) -> c_uint;
2471    pub fn gst_audio_iec61937_payload(
2472        src: *const u8,
2473        src_n: c_uint,
2474        dst: *mut u8,
2475        dst_n: c_uint,
2476        spec: *const GstAudioRingBufferSpec,
2477        endianness: c_int,
2478    ) -> gboolean;
2479    #[cfg(feature = "v1_20")]
2480    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
2481    pub fn gst_audio_level_meta_api_get_type() -> GType;
2482    #[cfg(feature = "v1_18")]
2483    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
2484    pub fn gst_audio_make_raw_caps(
2485        formats: *const GstAudioFormat,
2486        len: c_uint,
2487        layout: GstAudioLayout,
2488    ) -> *mut gst::GstCaps;
2489    #[cfg(feature = "v1_16")]
2490    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
2491    pub fn gst_audio_meta_api_get_type() -> GType;
2492    pub fn gst_audio_reorder_channels(
2493        data: gpointer,
2494        size: size_t,
2495        format: GstAudioFormat,
2496        channels: c_int,
2497        from: *const GstAudioChannelPosition,
2498        to: *const GstAudioChannelPosition,
2499    ) -> gboolean;
2500    #[cfg(feature = "v1_26")]
2501    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
2502    pub fn gst_audio_reorder_channels_with_reorder_map(
2503        data: gpointer,
2504        size: size_t,
2505        bps: c_int,
2506        channels: c_int,
2507        reorder_map: *const c_int,
2508    );
2509    pub fn gst_buffer_add_audio_clipping_meta(
2510        buffer: *mut gst::GstBuffer,
2511        format: gst::GstFormat,
2512        start: u64,
2513        end: u64,
2514    ) -> *mut GstAudioClippingMeta;
2515    pub fn gst_buffer_add_audio_downmix_meta(
2516        buffer: *mut gst::GstBuffer,
2517        from_position: *const GstAudioChannelPosition,
2518        from_channels: c_int,
2519        to_position: *const GstAudioChannelPosition,
2520        to_channels: c_int,
2521        matrix: *mut *const c_float,
2522    ) -> *mut GstAudioDownmixMeta;
2523    #[cfg(feature = "v1_20")]
2524    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
2525    pub fn gst_buffer_add_audio_level_meta(
2526        buffer: *mut gst::GstBuffer,
2527        level: u8,
2528        voice_activity: gboolean,
2529    ) -> *mut GstAudioLevelMeta;
2530    #[cfg(feature = "v1_16")]
2531    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
2532    pub fn gst_buffer_add_audio_meta(
2533        buffer: *mut gst::GstBuffer,
2534        info: *const GstAudioInfo,
2535        samples: size_t,
2536        offsets: *mut size_t,
2537    ) -> *mut GstAudioMeta;
2538    #[cfg(feature = "v1_24")]
2539    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2540    pub fn gst_buffer_add_dsd_plane_offset_meta(
2541        buffer: *mut gst::GstBuffer,
2542        num_channels: c_int,
2543        num_bytes_per_channel: size_t,
2544        offsets: *mut size_t,
2545    ) -> *mut GstDsdPlaneOffsetMeta;
2546    pub fn gst_buffer_get_audio_downmix_meta_for_channels(
2547        buffer: *mut gst::GstBuffer,
2548        to_position: *const GstAudioChannelPosition,
2549        to_channels: c_int,
2550    ) -> *mut GstAudioDownmixMeta;
2551    #[cfg(feature = "v1_20")]
2552    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
2553    pub fn gst_buffer_get_audio_level_meta(buffer: *mut gst::GstBuffer) -> *mut GstAudioLevelMeta;
2554    #[cfg(feature = "v1_24")]
2555    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2556    pub fn gst_dsd_convert(
2557        input_data: *const u8,
2558        output_data: *mut u8,
2559        input_format: GstDsdFormat,
2560        output_format: GstDsdFormat,
2561        input_layout: GstAudioLayout,
2562        output_layout: GstAudioLayout,
2563        input_plane_offsets: *const size_t,
2564        output_plane_offsets: *const size_t,
2565        num_dsd_bytes: size_t,
2566        num_channels: c_int,
2567        reverse_byte_bits: gboolean,
2568    );
2569    pub fn gst_dsd_plane_offset_meta_api_get_type() -> GType;
2570
2571}