gstreamer_audio/auto/
enums.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
6use crate::ffi;
7use glib::{prelude::*, translate::*};
8
9/// Set of available dithering methods.
10#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
11#[non_exhaustive]
12#[doc(alias = "GstAudioDitherMethod")]
13pub enum AudioDitherMethod {
14    /// No dithering
15    #[doc(alias = "GST_AUDIO_DITHER_NONE")]
16    None,
17    /// Rectangular dithering
18    #[doc(alias = "GST_AUDIO_DITHER_RPDF")]
19    Rpdf,
20    /// Triangular dithering (default)
21    #[doc(alias = "GST_AUDIO_DITHER_TPDF")]
22    Tpdf,
23    /// High frequency triangular dithering
24    #[doc(alias = "GST_AUDIO_DITHER_TPDF_HF")]
25    TpdfHf,
26    #[doc(hidden)]
27    __Unknown(i32),
28}
29
30#[doc(hidden)]
31impl IntoGlib for AudioDitherMethod {
32    type GlibType = ffi::GstAudioDitherMethod;
33
34    #[inline]
35    fn into_glib(self) -> ffi::GstAudioDitherMethod {
36        match self {
37            Self::None => ffi::GST_AUDIO_DITHER_NONE,
38            Self::Rpdf => ffi::GST_AUDIO_DITHER_RPDF,
39            Self::Tpdf => ffi::GST_AUDIO_DITHER_TPDF,
40            Self::TpdfHf => ffi::GST_AUDIO_DITHER_TPDF_HF,
41            Self::__Unknown(value) => value,
42        }
43    }
44}
45
46#[doc(hidden)]
47impl FromGlib<ffi::GstAudioDitherMethod> for AudioDitherMethod {
48    #[inline]
49    unsafe fn from_glib(value: ffi::GstAudioDitherMethod) -> Self {
50        skip_assert_initialized!();
51
52        match value {
53            ffi::GST_AUDIO_DITHER_NONE => Self::None,
54            ffi::GST_AUDIO_DITHER_RPDF => Self::Rpdf,
55            ffi::GST_AUDIO_DITHER_TPDF => Self::Tpdf,
56            ffi::GST_AUDIO_DITHER_TPDF_HF => Self::TpdfHf,
57            value => Self::__Unknown(value),
58        }
59    }
60}
61
62impl StaticType for AudioDitherMethod {
63    #[inline]
64    #[doc(alias = "gst_audio_dither_method_get_type")]
65    fn static_type() -> glib::Type {
66        unsafe { from_glib(ffi::gst_audio_dither_method_get_type()) }
67    }
68}
69
70impl glib::HasParamSpec for AudioDitherMethod {
71    type ParamSpec = glib::ParamSpecEnum;
72    type SetValue = Self;
73    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
74
75    fn param_spec_builder() -> Self::BuilderFn {
76        Self::ParamSpec::builder_with_default
77    }
78}
79
80impl glib::value::ValueType for AudioDitherMethod {
81    type Type = Self;
82}
83
84unsafe impl<'a> glib::value::FromValue<'a> for AudioDitherMethod {
85    type Checker = glib::value::GenericValueTypeChecker<Self>;
86
87    #[inline]
88    unsafe fn from_value(value: &'a glib::Value) -> Self {
89        skip_assert_initialized!();
90        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
91    }
92}
93
94impl ToValue for AudioDitherMethod {
95    #[inline]
96    fn to_value(&self) -> glib::Value {
97        let mut value = glib::Value::for_value_type::<Self>();
98        unsafe {
99            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
100        }
101        value
102    }
103
104    #[inline]
105    fn value_type(&self) -> glib::Type {
106        Self::static_type()
107    }
108}
109
110impl From<AudioDitherMethod> for glib::Value {
111    #[inline]
112    fn from(v: AudioDitherMethod) -> Self {
113        skip_assert_initialized!();
114        ToValue::to_value(&v)
115    }
116}
117
118/// Enum value describing the most common audio formats.
119#[derive(Debug, Eq, PartialEq, Hash, Clone, Copy)]
120#[non_exhaustive]
121#[doc(alias = "GstAudioFormat")]
122pub enum AudioFormat {
123    /// unknown or unset audio format
124    #[doc(alias = "GST_AUDIO_FORMAT_UNKNOWN")]
125    Unknown,
126    /// encoded audio format
127    #[doc(alias = "GST_AUDIO_FORMAT_ENCODED")]
128    Encoded,
129    /// 8 bits in 8 bits, signed
130    #[doc(alias = "GST_AUDIO_FORMAT_S8")]
131    S8,
132    /// 8 bits in 8 bits, unsigned
133    #[doc(alias = "GST_AUDIO_FORMAT_U8")]
134    U8,
135    /// 16 bits in 16 bits, signed, little endian
136    #[doc(alias = "GST_AUDIO_FORMAT_S16LE")]
137    S16le,
138    /// 16 bits in 16 bits, signed, big endian
139    #[doc(alias = "GST_AUDIO_FORMAT_S16BE")]
140    S16be,
141    /// 16 bits in 16 bits, unsigned, little endian
142    #[doc(alias = "GST_AUDIO_FORMAT_U16LE")]
143    U16le,
144    /// 16 bits in 16 bits, unsigned, big endian
145    #[doc(alias = "GST_AUDIO_FORMAT_U16BE")]
146    U16be,
147    /// 24 bits in 32 bits, signed, little endian
148    #[doc(alias = "GST_AUDIO_FORMAT_S24_32LE")]
149    S2432le,
150    /// 24 bits in 32 bits, signed, big endian
151    #[doc(alias = "GST_AUDIO_FORMAT_S24_32BE")]
152    S2432be,
153    /// 24 bits in 32 bits, unsigned, little endian
154    #[doc(alias = "GST_AUDIO_FORMAT_U24_32LE")]
155    U2432le,
156    /// 24 bits in 32 bits, unsigned, big endian
157    #[doc(alias = "GST_AUDIO_FORMAT_U24_32BE")]
158    U2432be,
159    /// 32 bits in 32 bits, signed, little endian
160    #[doc(alias = "GST_AUDIO_FORMAT_S32LE")]
161    S32le,
162    /// 32 bits in 32 bits, signed, big endian
163    #[doc(alias = "GST_AUDIO_FORMAT_S32BE")]
164    S32be,
165    /// 32 bits in 32 bits, unsigned, little endian
166    #[doc(alias = "GST_AUDIO_FORMAT_U32LE")]
167    U32le,
168    /// 32 bits in 32 bits, unsigned, big endian
169    #[doc(alias = "GST_AUDIO_FORMAT_U32BE")]
170    U32be,
171    /// 24 bits in 24 bits, signed, little endian
172    #[doc(alias = "GST_AUDIO_FORMAT_S24LE")]
173    S24le,
174    /// 24 bits in 24 bits, signed, big endian
175    #[doc(alias = "GST_AUDIO_FORMAT_S24BE")]
176    S24be,
177    /// 24 bits in 24 bits, unsigned, little endian
178    #[doc(alias = "GST_AUDIO_FORMAT_U24LE")]
179    U24le,
180    /// 24 bits in 24 bits, unsigned, big endian
181    #[doc(alias = "GST_AUDIO_FORMAT_U24BE")]
182    U24be,
183    /// 20 bits in 24 bits, signed, little endian
184    #[doc(alias = "GST_AUDIO_FORMAT_S20LE")]
185    S20le,
186    /// 20 bits in 24 bits, signed, big endian
187    #[doc(alias = "GST_AUDIO_FORMAT_S20BE")]
188    S20be,
189    /// 20 bits in 24 bits, unsigned, little endian
190    #[doc(alias = "GST_AUDIO_FORMAT_U20LE")]
191    U20le,
192    /// 20 bits in 24 bits, unsigned, big endian
193    #[doc(alias = "GST_AUDIO_FORMAT_U20BE")]
194    U20be,
195    /// 18 bits in 24 bits, signed, little endian
196    #[doc(alias = "GST_AUDIO_FORMAT_S18LE")]
197    S18le,
198    /// 18 bits in 24 bits, signed, big endian
199    #[doc(alias = "GST_AUDIO_FORMAT_S18BE")]
200    S18be,
201    /// 18 bits in 24 bits, unsigned, little endian
202    #[doc(alias = "GST_AUDIO_FORMAT_U18LE")]
203    U18le,
204    /// 18 bits in 24 bits, unsigned, big endian
205    #[doc(alias = "GST_AUDIO_FORMAT_U18BE")]
206    U18be,
207    /// 32-bit floating point samples, little endian
208    #[doc(alias = "GST_AUDIO_FORMAT_F32LE")]
209    F32le,
210    /// 32-bit floating point samples, big endian
211    #[doc(alias = "GST_AUDIO_FORMAT_F32BE")]
212    F32be,
213    /// 64-bit floating point samples, little endian
214    #[doc(alias = "GST_AUDIO_FORMAT_F64LE")]
215    F64le,
216    /// 64-bit floating point samples, big endian
217    #[doc(alias = "GST_AUDIO_FORMAT_F64BE")]
218    F64be,
219    #[doc(hidden)]
220    __Unknown(i32),
221}
222
223impl AudioFormat {
224    #[doc(alias = "gst_audio_format_from_string")]
225    pub fn from_string(format: &str) -> AudioFormat {
226        assert_initialized_main_thread!();
227        unsafe { from_glib(ffi::gst_audio_format_from_string(format.to_glib_none().0)) }
228    }
229}
230
231impl std::fmt::Display for AudioFormat {
232    #[inline]
233    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
234        f.write_str(&self.to_str())
235    }
236}
237
238#[doc(hidden)]
239impl IntoGlib for AudioFormat {
240    type GlibType = ffi::GstAudioFormat;
241
242    fn into_glib(self) -> ffi::GstAudioFormat {
243        match self {
244            Self::Unknown => ffi::GST_AUDIO_FORMAT_UNKNOWN,
245            Self::Encoded => ffi::GST_AUDIO_FORMAT_ENCODED,
246            Self::S8 => ffi::GST_AUDIO_FORMAT_S8,
247            Self::U8 => ffi::GST_AUDIO_FORMAT_U8,
248            Self::S16le => ffi::GST_AUDIO_FORMAT_S16LE,
249            Self::S16be => ffi::GST_AUDIO_FORMAT_S16BE,
250            Self::U16le => ffi::GST_AUDIO_FORMAT_U16LE,
251            Self::U16be => ffi::GST_AUDIO_FORMAT_U16BE,
252            Self::S2432le => ffi::GST_AUDIO_FORMAT_S24_32LE,
253            Self::S2432be => ffi::GST_AUDIO_FORMAT_S24_32BE,
254            Self::U2432le => ffi::GST_AUDIO_FORMAT_U24_32LE,
255            Self::U2432be => ffi::GST_AUDIO_FORMAT_U24_32BE,
256            Self::S32le => ffi::GST_AUDIO_FORMAT_S32LE,
257            Self::S32be => ffi::GST_AUDIO_FORMAT_S32BE,
258            Self::U32le => ffi::GST_AUDIO_FORMAT_U32LE,
259            Self::U32be => ffi::GST_AUDIO_FORMAT_U32BE,
260            Self::S24le => ffi::GST_AUDIO_FORMAT_S24LE,
261            Self::S24be => ffi::GST_AUDIO_FORMAT_S24BE,
262            Self::U24le => ffi::GST_AUDIO_FORMAT_U24LE,
263            Self::U24be => ffi::GST_AUDIO_FORMAT_U24BE,
264            Self::S20le => ffi::GST_AUDIO_FORMAT_S20LE,
265            Self::S20be => ffi::GST_AUDIO_FORMAT_S20BE,
266            Self::U20le => ffi::GST_AUDIO_FORMAT_U20LE,
267            Self::U20be => ffi::GST_AUDIO_FORMAT_U20BE,
268            Self::S18le => ffi::GST_AUDIO_FORMAT_S18LE,
269            Self::S18be => ffi::GST_AUDIO_FORMAT_S18BE,
270            Self::U18le => ffi::GST_AUDIO_FORMAT_U18LE,
271            Self::U18be => ffi::GST_AUDIO_FORMAT_U18BE,
272            Self::F32le => ffi::GST_AUDIO_FORMAT_F32LE,
273            Self::F32be => ffi::GST_AUDIO_FORMAT_F32BE,
274            Self::F64le => ffi::GST_AUDIO_FORMAT_F64LE,
275            Self::F64be => ffi::GST_AUDIO_FORMAT_F64BE,
276            Self::__Unknown(value) => value,
277        }
278    }
279}
280
281#[doc(hidden)]
282impl FromGlib<ffi::GstAudioFormat> for AudioFormat {
283    unsafe fn from_glib(value: ffi::GstAudioFormat) -> Self {
284        skip_assert_initialized!();
285
286        match value {
287            ffi::GST_AUDIO_FORMAT_UNKNOWN => Self::Unknown,
288            ffi::GST_AUDIO_FORMAT_ENCODED => Self::Encoded,
289            ffi::GST_AUDIO_FORMAT_S8 => Self::S8,
290            ffi::GST_AUDIO_FORMAT_U8 => Self::U8,
291            ffi::GST_AUDIO_FORMAT_S16LE => Self::S16le,
292            ffi::GST_AUDIO_FORMAT_S16BE => Self::S16be,
293            ffi::GST_AUDIO_FORMAT_U16LE => Self::U16le,
294            ffi::GST_AUDIO_FORMAT_U16BE => Self::U16be,
295            ffi::GST_AUDIO_FORMAT_S24_32LE => Self::S2432le,
296            ffi::GST_AUDIO_FORMAT_S24_32BE => Self::S2432be,
297            ffi::GST_AUDIO_FORMAT_U24_32LE => Self::U2432le,
298            ffi::GST_AUDIO_FORMAT_U24_32BE => Self::U2432be,
299            ffi::GST_AUDIO_FORMAT_S32LE => Self::S32le,
300            ffi::GST_AUDIO_FORMAT_S32BE => Self::S32be,
301            ffi::GST_AUDIO_FORMAT_U32LE => Self::U32le,
302            ffi::GST_AUDIO_FORMAT_U32BE => Self::U32be,
303            ffi::GST_AUDIO_FORMAT_S24LE => Self::S24le,
304            ffi::GST_AUDIO_FORMAT_S24BE => Self::S24be,
305            ffi::GST_AUDIO_FORMAT_U24LE => Self::U24le,
306            ffi::GST_AUDIO_FORMAT_U24BE => Self::U24be,
307            ffi::GST_AUDIO_FORMAT_S20LE => Self::S20le,
308            ffi::GST_AUDIO_FORMAT_S20BE => Self::S20be,
309            ffi::GST_AUDIO_FORMAT_U20LE => Self::U20le,
310            ffi::GST_AUDIO_FORMAT_U20BE => Self::U20be,
311            ffi::GST_AUDIO_FORMAT_S18LE => Self::S18le,
312            ffi::GST_AUDIO_FORMAT_S18BE => Self::S18be,
313            ffi::GST_AUDIO_FORMAT_U18LE => Self::U18le,
314            ffi::GST_AUDIO_FORMAT_U18BE => Self::U18be,
315            ffi::GST_AUDIO_FORMAT_F32LE => Self::F32le,
316            ffi::GST_AUDIO_FORMAT_F32BE => Self::F32be,
317            ffi::GST_AUDIO_FORMAT_F64LE => Self::F64le,
318            ffi::GST_AUDIO_FORMAT_F64BE => Self::F64be,
319            value => Self::__Unknown(value),
320        }
321    }
322}
323
324impl StaticType for AudioFormat {
325    #[inline]
326    #[doc(alias = "gst_audio_format_get_type")]
327    fn static_type() -> glib::Type {
328        unsafe { from_glib(ffi::gst_audio_format_get_type()) }
329    }
330}
331
332impl glib::HasParamSpec for AudioFormat {
333    type ParamSpec = glib::ParamSpecEnum;
334    type SetValue = Self;
335    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
336
337    fn param_spec_builder() -> Self::BuilderFn {
338        Self::ParamSpec::builder_with_default
339    }
340}
341
342impl glib::value::ValueType for AudioFormat {
343    type Type = Self;
344}
345
346unsafe impl<'a> glib::value::FromValue<'a> for AudioFormat {
347    type Checker = glib::value::GenericValueTypeChecker<Self>;
348
349    #[inline]
350    unsafe fn from_value(value: &'a glib::Value) -> Self {
351        skip_assert_initialized!();
352        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
353    }
354}
355
356impl ToValue for AudioFormat {
357    #[inline]
358    fn to_value(&self) -> glib::Value {
359        let mut value = glib::Value::for_value_type::<Self>();
360        unsafe {
361            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
362        }
363        value
364    }
365
366    #[inline]
367    fn value_type(&self) -> glib::Type {
368        Self::static_type()
369    }
370}
371
372impl From<AudioFormat> for glib::Value {
373    #[inline]
374    fn from(v: AudioFormat) -> Self {
375        skip_assert_initialized!();
376        ToValue::to_value(&v)
377    }
378}
379
380/// Layout of the audio samples for the different channels.
381#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
382#[non_exhaustive]
383#[doc(alias = "GstAudioLayout")]
384pub enum AudioLayout {
385    /// interleaved audio
386    #[doc(alias = "GST_AUDIO_LAYOUT_INTERLEAVED")]
387    Interleaved,
388    /// non-interleaved audio
389    #[doc(alias = "GST_AUDIO_LAYOUT_NON_INTERLEAVED")]
390    NonInterleaved,
391    #[doc(hidden)]
392    __Unknown(i32),
393}
394
395#[doc(hidden)]
396impl IntoGlib for AudioLayout {
397    type GlibType = ffi::GstAudioLayout;
398
399    #[inline]
400    fn into_glib(self) -> ffi::GstAudioLayout {
401        match self {
402            Self::Interleaved => ffi::GST_AUDIO_LAYOUT_INTERLEAVED,
403            Self::NonInterleaved => ffi::GST_AUDIO_LAYOUT_NON_INTERLEAVED,
404            Self::__Unknown(value) => value,
405        }
406    }
407}
408
409#[doc(hidden)]
410impl FromGlib<ffi::GstAudioLayout> for AudioLayout {
411    #[inline]
412    unsafe fn from_glib(value: ffi::GstAudioLayout) -> Self {
413        skip_assert_initialized!();
414
415        match value {
416            ffi::GST_AUDIO_LAYOUT_INTERLEAVED => Self::Interleaved,
417            ffi::GST_AUDIO_LAYOUT_NON_INTERLEAVED => Self::NonInterleaved,
418            value => Self::__Unknown(value),
419        }
420    }
421}
422
423impl StaticType for AudioLayout {
424    #[inline]
425    #[doc(alias = "gst_audio_layout_get_type")]
426    fn static_type() -> glib::Type {
427        unsafe { from_glib(ffi::gst_audio_layout_get_type()) }
428    }
429}
430
431impl glib::HasParamSpec for AudioLayout {
432    type ParamSpec = glib::ParamSpecEnum;
433    type SetValue = Self;
434    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
435
436    fn param_spec_builder() -> Self::BuilderFn {
437        Self::ParamSpec::builder_with_default
438    }
439}
440
441impl glib::value::ValueType for AudioLayout {
442    type Type = Self;
443}
444
445unsafe impl<'a> glib::value::FromValue<'a> for AudioLayout {
446    type Checker = glib::value::GenericValueTypeChecker<Self>;
447
448    #[inline]
449    unsafe fn from_value(value: &'a glib::Value) -> Self {
450        skip_assert_initialized!();
451        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
452    }
453}
454
455impl ToValue for AudioLayout {
456    #[inline]
457    fn to_value(&self) -> glib::Value {
458        let mut value = glib::Value::for_value_type::<Self>();
459        unsafe {
460            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
461        }
462        value
463    }
464
465    #[inline]
466    fn value_type(&self) -> glib::Type {
467        Self::static_type()
468    }
469}
470
471impl From<AudioLayout> for glib::Value {
472    #[inline]
473    fn from(v: AudioLayout) -> Self {
474        skip_assert_initialized!();
475        ToValue::to_value(&v)
476    }
477}
478
479/// Set of available noise shaping methods
480#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
481#[non_exhaustive]
482#[doc(alias = "GstAudioNoiseShapingMethod")]
483pub enum AudioNoiseShapingMethod {
484    /// No noise shaping (default)
485    #[doc(alias = "GST_AUDIO_NOISE_SHAPING_NONE")]
486    None,
487    /// Error feedback
488    #[doc(alias = "GST_AUDIO_NOISE_SHAPING_ERROR_FEEDBACK")]
489    ErrorFeedback,
490    /// Simple 2-pole noise shaping
491    #[doc(alias = "GST_AUDIO_NOISE_SHAPING_SIMPLE")]
492    Simple,
493    /// Medium 5-pole noise shaping
494    #[doc(alias = "GST_AUDIO_NOISE_SHAPING_MEDIUM")]
495    Medium,
496    /// High 8-pole noise shaping
497    #[doc(alias = "GST_AUDIO_NOISE_SHAPING_HIGH")]
498    High,
499    #[doc(hidden)]
500    __Unknown(i32),
501}
502
503#[doc(hidden)]
504impl IntoGlib for AudioNoiseShapingMethod {
505    type GlibType = ffi::GstAudioNoiseShapingMethod;
506
507    #[inline]
508    fn into_glib(self) -> ffi::GstAudioNoiseShapingMethod {
509        match self {
510            Self::None => ffi::GST_AUDIO_NOISE_SHAPING_NONE,
511            Self::ErrorFeedback => ffi::GST_AUDIO_NOISE_SHAPING_ERROR_FEEDBACK,
512            Self::Simple => ffi::GST_AUDIO_NOISE_SHAPING_SIMPLE,
513            Self::Medium => ffi::GST_AUDIO_NOISE_SHAPING_MEDIUM,
514            Self::High => ffi::GST_AUDIO_NOISE_SHAPING_HIGH,
515            Self::__Unknown(value) => value,
516        }
517    }
518}
519
520#[doc(hidden)]
521impl FromGlib<ffi::GstAudioNoiseShapingMethod> for AudioNoiseShapingMethod {
522    #[inline]
523    unsafe fn from_glib(value: ffi::GstAudioNoiseShapingMethod) -> Self {
524        skip_assert_initialized!();
525
526        match value {
527            ffi::GST_AUDIO_NOISE_SHAPING_NONE => Self::None,
528            ffi::GST_AUDIO_NOISE_SHAPING_ERROR_FEEDBACK => Self::ErrorFeedback,
529            ffi::GST_AUDIO_NOISE_SHAPING_SIMPLE => Self::Simple,
530            ffi::GST_AUDIO_NOISE_SHAPING_MEDIUM => Self::Medium,
531            ffi::GST_AUDIO_NOISE_SHAPING_HIGH => Self::High,
532            value => Self::__Unknown(value),
533        }
534    }
535}
536
537impl StaticType for AudioNoiseShapingMethod {
538    #[inline]
539    #[doc(alias = "gst_audio_noise_shaping_method_get_type")]
540    fn static_type() -> glib::Type {
541        unsafe { from_glib(ffi::gst_audio_noise_shaping_method_get_type()) }
542    }
543}
544
545impl glib::HasParamSpec for AudioNoiseShapingMethod {
546    type ParamSpec = glib::ParamSpecEnum;
547    type SetValue = Self;
548    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
549
550    fn param_spec_builder() -> Self::BuilderFn {
551        Self::ParamSpec::builder_with_default
552    }
553}
554
555impl glib::value::ValueType for AudioNoiseShapingMethod {
556    type Type = Self;
557}
558
559unsafe impl<'a> glib::value::FromValue<'a> for AudioNoiseShapingMethod {
560    type Checker = glib::value::GenericValueTypeChecker<Self>;
561
562    #[inline]
563    unsafe fn from_value(value: &'a glib::Value) -> Self {
564        skip_assert_initialized!();
565        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
566    }
567}
568
569impl ToValue for AudioNoiseShapingMethod {
570    #[inline]
571    fn to_value(&self) -> glib::Value {
572        let mut value = glib::Value::for_value_type::<Self>();
573        unsafe {
574            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
575        }
576        value
577    }
578
579    #[inline]
580    fn value_type(&self) -> glib::Type {
581        Self::static_type()
582    }
583}
584
585impl From<AudioNoiseShapingMethod> for glib::Value {
586    #[inline]
587    fn from(v: AudioNoiseShapingMethod) -> Self {
588        skip_assert_initialized!();
589        ToValue::to_value(&v)
590    }
591}
592
593/// Different subsampling and upsampling methods
594#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
595#[non_exhaustive]
596#[doc(alias = "GstAudioResamplerMethod")]
597pub enum AudioResamplerMethod {
598    /// Duplicates the samples when
599    ///  upsampling and drops when downsampling
600    #[doc(alias = "GST_AUDIO_RESAMPLER_METHOD_NEAREST")]
601    Nearest,
602    /// Uses linear interpolation to reconstruct
603    ///  missing samples and averaging to downsample
604    #[doc(alias = "GST_AUDIO_RESAMPLER_METHOD_LINEAR")]
605    Linear,
606    /// Uses cubic interpolation
607    #[doc(alias = "GST_AUDIO_RESAMPLER_METHOD_CUBIC")]
608    Cubic,
609    /// Uses Blackman-Nuttall windowed sinc interpolation
610    #[doc(alias = "GST_AUDIO_RESAMPLER_METHOD_BLACKMAN_NUTTALL")]
611    BlackmanNuttall,
612    /// Uses Kaiser windowed sinc interpolation
613    #[doc(alias = "GST_AUDIO_RESAMPLER_METHOD_KAISER")]
614    Kaiser,
615    #[doc(hidden)]
616    __Unknown(i32),
617}
618
619#[doc(hidden)]
620impl IntoGlib for AudioResamplerMethod {
621    type GlibType = ffi::GstAudioResamplerMethod;
622
623    #[inline]
624    fn into_glib(self) -> ffi::GstAudioResamplerMethod {
625        match self {
626            Self::Nearest => ffi::GST_AUDIO_RESAMPLER_METHOD_NEAREST,
627            Self::Linear => ffi::GST_AUDIO_RESAMPLER_METHOD_LINEAR,
628            Self::Cubic => ffi::GST_AUDIO_RESAMPLER_METHOD_CUBIC,
629            Self::BlackmanNuttall => ffi::GST_AUDIO_RESAMPLER_METHOD_BLACKMAN_NUTTALL,
630            Self::Kaiser => ffi::GST_AUDIO_RESAMPLER_METHOD_KAISER,
631            Self::__Unknown(value) => value,
632        }
633    }
634}
635
636#[doc(hidden)]
637impl FromGlib<ffi::GstAudioResamplerMethod> for AudioResamplerMethod {
638    #[inline]
639    unsafe fn from_glib(value: ffi::GstAudioResamplerMethod) -> Self {
640        skip_assert_initialized!();
641
642        match value {
643            ffi::GST_AUDIO_RESAMPLER_METHOD_NEAREST => Self::Nearest,
644            ffi::GST_AUDIO_RESAMPLER_METHOD_LINEAR => Self::Linear,
645            ffi::GST_AUDIO_RESAMPLER_METHOD_CUBIC => Self::Cubic,
646            ffi::GST_AUDIO_RESAMPLER_METHOD_BLACKMAN_NUTTALL => Self::BlackmanNuttall,
647            ffi::GST_AUDIO_RESAMPLER_METHOD_KAISER => Self::Kaiser,
648            value => Self::__Unknown(value),
649        }
650    }
651}
652
653impl StaticType for AudioResamplerMethod {
654    #[inline]
655    #[doc(alias = "gst_audio_resampler_method_get_type")]
656    fn static_type() -> glib::Type {
657        unsafe { from_glib(ffi::gst_audio_resampler_method_get_type()) }
658    }
659}
660
661impl glib::HasParamSpec for AudioResamplerMethod {
662    type ParamSpec = glib::ParamSpecEnum;
663    type SetValue = Self;
664    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
665
666    fn param_spec_builder() -> Self::BuilderFn {
667        Self::ParamSpec::builder_with_default
668    }
669}
670
671impl glib::value::ValueType for AudioResamplerMethod {
672    type Type = Self;
673}
674
675unsafe impl<'a> glib::value::FromValue<'a> for AudioResamplerMethod {
676    type Checker = glib::value::GenericValueTypeChecker<Self>;
677
678    #[inline]
679    unsafe fn from_value(value: &'a glib::Value) -> Self {
680        skip_assert_initialized!();
681        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
682    }
683}
684
685impl ToValue for AudioResamplerMethod {
686    #[inline]
687    fn to_value(&self) -> glib::Value {
688        let mut value = glib::Value::for_value_type::<Self>();
689        unsafe {
690            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
691        }
692        value
693    }
694
695    #[inline]
696    fn value_type(&self) -> glib::Type {
697        Self::static_type()
698    }
699}
700
701impl From<AudioResamplerMethod> for glib::Value {
702    #[inline]
703    fn from(v: AudioResamplerMethod) -> Self {
704        skip_assert_initialized!();
705        ToValue::to_value(&v)
706    }
707}
708
709/// The format of the samples in the ringbuffer.
710#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
711#[non_exhaustive]
712#[doc(alias = "GstAudioRingBufferFormatType")]
713pub enum AudioRingBufferFormatType {
714    /// samples in linear or float
715    #[doc(alias = "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_RAW")]
716    Raw,
717    /// samples in mulaw
718    #[doc(alias = "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MU_LAW")]
719    MuLaw,
720    /// samples in alaw
721    #[doc(alias = "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_A_LAW")]
722    ALaw,
723    /// samples in ima adpcm
724    #[doc(alias = "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_IMA_ADPCM")]
725    ImaAdpcm,
726    /// samples in mpeg audio (but not AAC) format
727    #[doc(alias = "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG")]
728    Mpeg,
729    /// samples in gsm format
730    #[doc(alias = "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_GSM")]
731    Gsm,
732    /// samples in IEC958 frames (e.g. AC3)
733    #[doc(alias = "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_IEC958")]
734    Iec958,
735    /// samples in AC3 format
736    #[doc(alias = "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_AC3")]
737    Ac3,
738    /// samples in EAC3 format
739    #[doc(alias = "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_EAC3")]
740    Eac3,
741    /// samples in DTS format
742    #[doc(alias = "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_DTS")]
743    Dts,
744    /// samples in MPEG-2 AAC ADTS format
745    #[doc(alias = "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG2_AAC")]
746    Mpeg2Aac,
747    /// samples in MPEG-4 AAC ADTS format
748    #[doc(alias = "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG4_AAC")]
749    Mpeg4Aac,
750    /// samples in MPEG-2 AAC raw format (Since: 1.12)
751    #[doc(alias = "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG2_AAC_RAW")]
752    Mpeg2AacRaw,
753    /// samples in MPEG-4 AAC raw format (Since: 1.12)
754    #[doc(alias = "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG4_AAC_RAW")]
755    Mpeg4AacRaw,
756    /// samples in FLAC format (Since: 1.12)
757    #[doc(alias = "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_FLAC")]
758    Flac,
759    /// samples in DSD format (Since: 1.24)
760    #[cfg(feature = "v1_24")]
761    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
762    #[doc(alias = "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_DSD")]
763    Dsd,
764    #[doc(hidden)]
765    __Unknown(i32),
766}
767
768#[doc(hidden)]
769impl IntoGlib for AudioRingBufferFormatType {
770    type GlibType = ffi::GstAudioRingBufferFormatType;
771
772    fn into_glib(self) -> ffi::GstAudioRingBufferFormatType {
773        match self {
774            Self::Raw => ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_RAW,
775            Self::MuLaw => ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MU_LAW,
776            Self::ALaw => ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_A_LAW,
777            Self::ImaAdpcm => ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_IMA_ADPCM,
778            Self::Mpeg => ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG,
779            Self::Gsm => ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_GSM,
780            Self::Iec958 => ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_IEC958,
781            Self::Ac3 => ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_AC3,
782            Self::Eac3 => ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_EAC3,
783            Self::Dts => ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_DTS,
784            Self::Mpeg2Aac => ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG2_AAC,
785            Self::Mpeg4Aac => ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG4_AAC,
786            Self::Mpeg2AacRaw => ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG2_AAC_RAW,
787            Self::Mpeg4AacRaw => ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG4_AAC_RAW,
788            Self::Flac => ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_FLAC,
789            #[cfg(feature = "v1_24")]
790            Self::Dsd => ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_DSD,
791            Self::__Unknown(value) => value,
792        }
793    }
794}
795
796#[doc(hidden)]
797impl FromGlib<ffi::GstAudioRingBufferFormatType> for AudioRingBufferFormatType {
798    unsafe fn from_glib(value: ffi::GstAudioRingBufferFormatType) -> Self {
799        skip_assert_initialized!();
800
801        match value {
802            ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_RAW => Self::Raw,
803            ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MU_LAW => Self::MuLaw,
804            ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_A_LAW => Self::ALaw,
805            ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_IMA_ADPCM => Self::ImaAdpcm,
806            ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG => Self::Mpeg,
807            ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_GSM => Self::Gsm,
808            ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_IEC958 => Self::Iec958,
809            ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_AC3 => Self::Ac3,
810            ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_EAC3 => Self::Eac3,
811            ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_DTS => Self::Dts,
812            ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG2_AAC => Self::Mpeg2Aac,
813            ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG4_AAC => Self::Mpeg4Aac,
814            ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG2_AAC_RAW => Self::Mpeg2AacRaw,
815            ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG4_AAC_RAW => Self::Mpeg4AacRaw,
816            ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_FLAC => Self::Flac,
817            #[cfg(feature = "v1_24")]
818            ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_DSD => Self::Dsd,
819            value => Self::__Unknown(value),
820        }
821    }
822}
823
824impl StaticType for AudioRingBufferFormatType {
825    #[inline]
826    #[doc(alias = "gst_audio_ring_buffer_format_type_get_type")]
827    fn static_type() -> glib::Type {
828        unsafe { from_glib(ffi::gst_audio_ring_buffer_format_type_get_type()) }
829    }
830}
831
832impl glib::HasParamSpec for AudioRingBufferFormatType {
833    type ParamSpec = glib::ParamSpecEnum;
834    type SetValue = Self;
835    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
836
837    fn param_spec_builder() -> Self::BuilderFn {
838        Self::ParamSpec::builder_with_default
839    }
840}
841
842impl glib::value::ValueType for AudioRingBufferFormatType {
843    type Type = Self;
844}
845
846unsafe impl<'a> glib::value::FromValue<'a> for AudioRingBufferFormatType {
847    type Checker = glib::value::GenericValueTypeChecker<Self>;
848
849    #[inline]
850    unsafe fn from_value(value: &'a glib::Value) -> Self {
851        skip_assert_initialized!();
852        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
853    }
854}
855
856impl ToValue for AudioRingBufferFormatType {
857    #[inline]
858    fn to_value(&self) -> glib::Value {
859        let mut value = glib::Value::for_value_type::<Self>();
860        unsafe {
861            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
862        }
863        value
864    }
865
866    #[inline]
867    fn value_type(&self) -> glib::Type {
868        Self::static_type()
869    }
870}
871
872impl From<AudioRingBufferFormatType> for glib::Value {
873    #[inline]
874    fn from(v: AudioRingBufferFormatType) -> Self {
875        skip_assert_initialized!();
876        ToValue::to_value(&v)
877    }
878}
879
880/// Different representations of a stream volume. [`StreamVolume::convert_volume()`][crate::StreamVolume::convert_volume()]
881/// allows to convert between the different representations.
882///
883/// Formulas to convert from a linear to a cubic or dB volume are
884/// cbrt(val) and 20 * log10 (val).
885#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
886#[non_exhaustive]
887#[doc(alias = "GstStreamVolumeFormat")]
888pub enum StreamVolumeFormat {
889    /// Linear scale factor, 1.0 = 100%
890    #[doc(alias = "GST_STREAM_VOLUME_FORMAT_LINEAR")]
891    Linear,
892    /// Cubic volume scale
893    #[doc(alias = "GST_STREAM_VOLUME_FORMAT_CUBIC")]
894    Cubic,
895    /// Logarithmic volume scale (dB, amplitude not power)
896    #[doc(alias = "GST_STREAM_VOLUME_FORMAT_DB")]
897    Db,
898    #[doc(hidden)]
899    __Unknown(i32),
900}
901
902#[doc(hidden)]
903impl IntoGlib for StreamVolumeFormat {
904    type GlibType = ffi::GstStreamVolumeFormat;
905
906    #[inline]
907    fn into_glib(self) -> ffi::GstStreamVolumeFormat {
908        match self {
909            Self::Linear => ffi::GST_STREAM_VOLUME_FORMAT_LINEAR,
910            Self::Cubic => ffi::GST_STREAM_VOLUME_FORMAT_CUBIC,
911            Self::Db => ffi::GST_STREAM_VOLUME_FORMAT_DB,
912            Self::__Unknown(value) => value,
913        }
914    }
915}
916
917#[doc(hidden)]
918impl FromGlib<ffi::GstStreamVolumeFormat> for StreamVolumeFormat {
919    #[inline]
920    unsafe fn from_glib(value: ffi::GstStreamVolumeFormat) -> Self {
921        skip_assert_initialized!();
922
923        match value {
924            ffi::GST_STREAM_VOLUME_FORMAT_LINEAR => Self::Linear,
925            ffi::GST_STREAM_VOLUME_FORMAT_CUBIC => Self::Cubic,
926            ffi::GST_STREAM_VOLUME_FORMAT_DB => Self::Db,
927            value => Self::__Unknown(value),
928        }
929    }
930}