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    /// 20 bits in 32 bits, signed, little endian.
220    #[cfg(feature = "v1_28")]
221    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
222    #[doc(alias = "GST_AUDIO_FORMAT_S20_32LE")]
223    S2032le,
224    /// 20 bits in 32 bits, signed, big endian.
225    #[cfg(feature = "v1_28")]
226    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
227    #[doc(alias = "GST_AUDIO_FORMAT_S20_32BE")]
228    S2032be,
229    /// 20 bits in 32 bits, unsigned, little endian.
230    #[cfg(feature = "v1_28")]
231    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
232    #[doc(alias = "GST_AUDIO_FORMAT_U20_32LE")]
233    U2032le,
234    /// 20 bits in 32 bits, unsigned, big endian.
235    #[cfg(feature = "v1_28")]
236    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
237    #[doc(alias = "GST_AUDIO_FORMAT_U20_32BE")]
238    U2032be,
239    #[doc(hidden)]
240    __Unknown(i32),
241}
242
243impl AudioFormat {
244    #[doc(alias = "gst_audio_format_from_string")]
245    pub fn from_string(format: &str) -> AudioFormat {
246        assert_initialized_main_thread!();
247        unsafe { from_glib(ffi::gst_audio_format_from_string(format.to_glib_none().0)) }
248    }
249}
250
251impl std::fmt::Display for AudioFormat {
252    #[inline]
253    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
254        f.write_str(&self.to_str())
255    }
256}
257
258#[doc(hidden)]
259impl IntoGlib for AudioFormat {
260    type GlibType = ffi::GstAudioFormat;
261
262    fn into_glib(self) -> ffi::GstAudioFormat {
263        match self {
264            Self::Unknown => ffi::GST_AUDIO_FORMAT_UNKNOWN,
265            Self::Encoded => ffi::GST_AUDIO_FORMAT_ENCODED,
266            Self::S8 => ffi::GST_AUDIO_FORMAT_S8,
267            Self::U8 => ffi::GST_AUDIO_FORMAT_U8,
268            Self::S16le => ffi::GST_AUDIO_FORMAT_S16LE,
269            Self::S16be => ffi::GST_AUDIO_FORMAT_S16BE,
270            Self::U16le => ffi::GST_AUDIO_FORMAT_U16LE,
271            Self::U16be => ffi::GST_AUDIO_FORMAT_U16BE,
272            Self::S2432le => ffi::GST_AUDIO_FORMAT_S24_32LE,
273            Self::S2432be => ffi::GST_AUDIO_FORMAT_S24_32BE,
274            Self::U2432le => ffi::GST_AUDIO_FORMAT_U24_32LE,
275            Self::U2432be => ffi::GST_AUDIO_FORMAT_U24_32BE,
276            Self::S32le => ffi::GST_AUDIO_FORMAT_S32LE,
277            Self::S32be => ffi::GST_AUDIO_FORMAT_S32BE,
278            Self::U32le => ffi::GST_AUDIO_FORMAT_U32LE,
279            Self::U32be => ffi::GST_AUDIO_FORMAT_U32BE,
280            Self::S24le => ffi::GST_AUDIO_FORMAT_S24LE,
281            Self::S24be => ffi::GST_AUDIO_FORMAT_S24BE,
282            Self::U24le => ffi::GST_AUDIO_FORMAT_U24LE,
283            Self::U24be => ffi::GST_AUDIO_FORMAT_U24BE,
284            Self::S20le => ffi::GST_AUDIO_FORMAT_S20LE,
285            Self::S20be => ffi::GST_AUDIO_FORMAT_S20BE,
286            Self::U20le => ffi::GST_AUDIO_FORMAT_U20LE,
287            Self::U20be => ffi::GST_AUDIO_FORMAT_U20BE,
288            Self::S18le => ffi::GST_AUDIO_FORMAT_S18LE,
289            Self::S18be => ffi::GST_AUDIO_FORMAT_S18BE,
290            Self::U18le => ffi::GST_AUDIO_FORMAT_U18LE,
291            Self::U18be => ffi::GST_AUDIO_FORMAT_U18BE,
292            Self::F32le => ffi::GST_AUDIO_FORMAT_F32LE,
293            Self::F32be => ffi::GST_AUDIO_FORMAT_F32BE,
294            Self::F64le => ffi::GST_AUDIO_FORMAT_F64LE,
295            Self::F64be => ffi::GST_AUDIO_FORMAT_F64BE,
296            #[cfg(feature = "v1_28")]
297            Self::S2032le => ffi::GST_AUDIO_FORMAT_S20_32LE,
298            #[cfg(feature = "v1_28")]
299            Self::S2032be => ffi::GST_AUDIO_FORMAT_S20_32BE,
300            #[cfg(feature = "v1_28")]
301            Self::U2032le => ffi::GST_AUDIO_FORMAT_U20_32LE,
302            #[cfg(feature = "v1_28")]
303            Self::U2032be => ffi::GST_AUDIO_FORMAT_U20_32BE,
304            Self::__Unknown(value) => value,
305        }
306    }
307}
308
309#[doc(hidden)]
310impl FromGlib<ffi::GstAudioFormat> for AudioFormat {
311    unsafe fn from_glib(value: ffi::GstAudioFormat) -> Self {
312        skip_assert_initialized!();
313
314        match value {
315            ffi::GST_AUDIO_FORMAT_UNKNOWN => Self::Unknown,
316            ffi::GST_AUDIO_FORMAT_ENCODED => Self::Encoded,
317            ffi::GST_AUDIO_FORMAT_S8 => Self::S8,
318            ffi::GST_AUDIO_FORMAT_U8 => Self::U8,
319            ffi::GST_AUDIO_FORMAT_S16LE => Self::S16le,
320            ffi::GST_AUDIO_FORMAT_S16BE => Self::S16be,
321            ffi::GST_AUDIO_FORMAT_U16LE => Self::U16le,
322            ffi::GST_AUDIO_FORMAT_U16BE => Self::U16be,
323            ffi::GST_AUDIO_FORMAT_S24_32LE => Self::S2432le,
324            ffi::GST_AUDIO_FORMAT_S24_32BE => Self::S2432be,
325            ffi::GST_AUDIO_FORMAT_U24_32LE => Self::U2432le,
326            ffi::GST_AUDIO_FORMAT_U24_32BE => Self::U2432be,
327            ffi::GST_AUDIO_FORMAT_S32LE => Self::S32le,
328            ffi::GST_AUDIO_FORMAT_S32BE => Self::S32be,
329            ffi::GST_AUDIO_FORMAT_U32LE => Self::U32le,
330            ffi::GST_AUDIO_FORMAT_U32BE => Self::U32be,
331            ffi::GST_AUDIO_FORMAT_S24LE => Self::S24le,
332            ffi::GST_AUDIO_FORMAT_S24BE => Self::S24be,
333            ffi::GST_AUDIO_FORMAT_U24LE => Self::U24le,
334            ffi::GST_AUDIO_FORMAT_U24BE => Self::U24be,
335            ffi::GST_AUDIO_FORMAT_S20LE => Self::S20le,
336            ffi::GST_AUDIO_FORMAT_S20BE => Self::S20be,
337            ffi::GST_AUDIO_FORMAT_U20LE => Self::U20le,
338            ffi::GST_AUDIO_FORMAT_U20BE => Self::U20be,
339            ffi::GST_AUDIO_FORMAT_S18LE => Self::S18le,
340            ffi::GST_AUDIO_FORMAT_S18BE => Self::S18be,
341            ffi::GST_AUDIO_FORMAT_U18LE => Self::U18le,
342            ffi::GST_AUDIO_FORMAT_U18BE => Self::U18be,
343            ffi::GST_AUDIO_FORMAT_F32LE => Self::F32le,
344            ffi::GST_AUDIO_FORMAT_F32BE => Self::F32be,
345            ffi::GST_AUDIO_FORMAT_F64LE => Self::F64le,
346            ffi::GST_AUDIO_FORMAT_F64BE => Self::F64be,
347            #[cfg(feature = "v1_28")]
348            ffi::GST_AUDIO_FORMAT_S20_32LE => Self::S2032le,
349            #[cfg(feature = "v1_28")]
350            ffi::GST_AUDIO_FORMAT_S20_32BE => Self::S2032be,
351            #[cfg(feature = "v1_28")]
352            ffi::GST_AUDIO_FORMAT_U20_32LE => Self::U2032le,
353            #[cfg(feature = "v1_28")]
354            ffi::GST_AUDIO_FORMAT_U20_32BE => Self::U2032be,
355            value => Self::__Unknown(value),
356        }
357    }
358}
359
360impl StaticType for AudioFormat {
361    #[inline]
362    #[doc(alias = "gst_audio_format_get_type")]
363    fn static_type() -> glib::Type {
364        unsafe { from_glib(ffi::gst_audio_format_get_type()) }
365    }
366}
367
368impl glib::HasParamSpec for AudioFormat {
369    type ParamSpec = glib::ParamSpecEnum;
370    type SetValue = Self;
371    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
372
373    fn param_spec_builder() -> Self::BuilderFn {
374        Self::ParamSpec::builder_with_default
375    }
376}
377
378impl glib::value::ValueType for AudioFormat {
379    type Type = Self;
380}
381
382unsafe impl<'a> glib::value::FromValue<'a> for AudioFormat {
383    type Checker = glib::value::GenericValueTypeChecker<Self>;
384
385    #[inline]
386    unsafe fn from_value(value: &'a glib::Value) -> Self {
387        skip_assert_initialized!();
388        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
389    }
390}
391
392impl ToValue for AudioFormat {
393    #[inline]
394    fn to_value(&self) -> glib::Value {
395        let mut value = glib::Value::for_value_type::<Self>();
396        unsafe {
397            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
398        }
399        value
400    }
401
402    #[inline]
403    fn value_type(&self) -> glib::Type {
404        Self::static_type()
405    }
406}
407
408impl From<AudioFormat> for glib::Value {
409    #[inline]
410    fn from(v: AudioFormat) -> Self {
411        skip_assert_initialized!();
412        ToValue::to_value(&v)
413    }
414}
415
416/// Layout of the audio samples for the different channels.
417#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
418#[non_exhaustive]
419#[doc(alias = "GstAudioLayout")]
420pub enum AudioLayout {
421    /// interleaved audio
422    #[doc(alias = "GST_AUDIO_LAYOUT_INTERLEAVED")]
423    Interleaved,
424    /// non-interleaved audio
425    #[doc(alias = "GST_AUDIO_LAYOUT_NON_INTERLEAVED")]
426    NonInterleaved,
427    #[doc(hidden)]
428    __Unknown(i32),
429}
430
431#[doc(hidden)]
432impl IntoGlib for AudioLayout {
433    type GlibType = ffi::GstAudioLayout;
434
435    #[inline]
436    fn into_glib(self) -> ffi::GstAudioLayout {
437        match self {
438            Self::Interleaved => ffi::GST_AUDIO_LAYOUT_INTERLEAVED,
439            Self::NonInterleaved => ffi::GST_AUDIO_LAYOUT_NON_INTERLEAVED,
440            Self::__Unknown(value) => value,
441        }
442    }
443}
444
445#[doc(hidden)]
446impl FromGlib<ffi::GstAudioLayout> for AudioLayout {
447    #[inline]
448    unsafe fn from_glib(value: ffi::GstAudioLayout) -> Self {
449        skip_assert_initialized!();
450
451        match value {
452            ffi::GST_AUDIO_LAYOUT_INTERLEAVED => Self::Interleaved,
453            ffi::GST_AUDIO_LAYOUT_NON_INTERLEAVED => Self::NonInterleaved,
454            value => Self::__Unknown(value),
455        }
456    }
457}
458
459impl StaticType for AudioLayout {
460    #[inline]
461    #[doc(alias = "gst_audio_layout_get_type")]
462    fn static_type() -> glib::Type {
463        unsafe { from_glib(ffi::gst_audio_layout_get_type()) }
464    }
465}
466
467impl glib::HasParamSpec for AudioLayout {
468    type ParamSpec = glib::ParamSpecEnum;
469    type SetValue = Self;
470    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
471
472    fn param_spec_builder() -> Self::BuilderFn {
473        Self::ParamSpec::builder_with_default
474    }
475}
476
477impl glib::value::ValueType for AudioLayout {
478    type Type = Self;
479}
480
481unsafe impl<'a> glib::value::FromValue<'a> for AudioLayout {
482    type Checker = glib::value::GenericValueTypeChecker<Self>;
483
484    #[inline]
485    unsafe fn from_value(value: &'a glib::Value) -> Self {
486        skip_assert_initialized!();
487        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
488    }
489}
490
491impl ToValue for AudioLayout {
492    #[inline]
493    fn to_value(&self) -> glib::Value {
494        let mut value = glib::Value::for_value_type::<Self>();
495        unsafe {
496            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
497        }
498        value
499    }
500
501    #[inline]
502    fn value_type(&self) -> glib::Type {
503        Self::static_type()
504    }
505}
506
507impl From<AudioLayout> for glib::Value {
508    #[inline]
509    fn from(v: AudioLayout) -> Self {
510        skip_assert_initialized!();
511        ToValue::to_value(&v)
512    }
513}
514
515/// Set of available noise shaping methods
516#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
517#[non_exhaustive]
518#[doc(alias = "GstAudioNoiseShapingMethod")]
519pub enum AudioNoiseShapingMethod {
520    /// No noise shaping (default)
521    #[doc(alias = "GST_AUDIO_NOISE_SHAPING_NONE")]
522    None,
523    /// Error feedback
524    #[doc(alias = "GST_AUDIO_NOISE_SHAPING_ERROR_FEEDBACK")]
525    ErrorFeedback,
526    /// Simple 2-pole noise shaping
527    #[doc(alias = "GST_AUDIO_NOISE_SHAPING_SIMPLE")]
528    Simple,
529    /// Medium 5-pole noise shaping
530    #[doc(alias = "GST_AUDIO_NOISE_SHAPING_MEDIUM")]
531    Medium,
532    /// High 8-pole noise shaping
533    #[doc(alias = "GST_AUDIO_NOISE_SHAPING_HIGH")]
534    High,
535    #[doc(hidden)]
536    __Unknown(i32),
537}
538
539#[doc(hidden)]
540impl IntoGlib for AudioNoiseShapingMethod {
541    type GlibType = ffi::GstAudioNoiseShapingMethod;
542
543    #[inline]
544    fn into_glib(self) -> ffi::GstAudioNoiseShapingMethod {
545        match self {
546            Self::None => ffi::GST_AUDIO_NOISE_SHAPING_NONE,
547            Self::ErrorFeedback => ffi::GST_AUDIO_NOISE_SHAPING_ERROR_FEEDBACK,
548            Self::Simple => ffi::GST_AUDIO_NOISE_SHAPING_SIMPLE,
549            Self::Medium => ffi::GST_AUDIO_NOISE_SHAPING_MEDIUM,
550            Self::High => ffi::GST_AUDIO_NOISE_SHAPING_HIGH,
551            Self::__Unknown(value) => value,
552        }
553    }
554}
555
556#[doc(hidden)]
557impl FromGlib<ffi::GstAudioNoiseShapingMethod> for AudioNoiseShapingMethod {
558    #[inline]
559    unsafe fn from_glib(value: ffi::GstAudioNoiseShapingMethod) -> Self {
560        skip_assert_initialized!();
561
562        match value {
563            ffi::GST_AUDIO_NOISE_SHAPING_NONE => Self::None,
564            ffi::GST_AUDIO_NOISE_SHAPING_ERROR_FEEDBACK => Self::ErrorFeedback,
565            ffi::GST_AUDIO_NOISE_SHAPING_SIMPLE => Self::Simple,
566            ffi::GST_AUDIO_NOISE_SHAPING_MEDIUM => Self::Medium,
567            ffi::GST_AUDIO_NOISE_SHAPING_HIGH => Self::High,
568            value => Self::__Unknown(value),
569        }
570    }
571}
572
573impl StaticType for AudioNoiseShapingMethod {
574    #[inline]
575    #[doc(alias = "gst_audio_noise_shaping_method_get_type")]
576    fn static_type() -> glib::Type {
577        unsafe { from_glib(ffi::gst_audio_noise_shaping_method_get_type()) }
578    }
579}
580
581impl glib::HasParamSpec for AudioNoiseShapingMethod {
582    type ParamSpec = glib::ParamSpecEnum;
583    type SetValue = Self;
584    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
585
586    fn param_spec_builder() -> Self::BuilderFn {
587        Self::ParamSpec::builder_with_default
588    }
589}
590
591impl glib::value::ValueType for AudioNoiseShapingMethod {
592    type Type = Self;
593}
594
595unsafe impl<'a> glib::value::FromValue<'a> for AudioNoiseShapingMethod {
596    type Checker = glib::value::GenericValueTypeChecker<Self>;
597
598    #[inline]
599    unsafe fn from_value(value: &'a glib::Value) -> Self {
600        skip_assert_initialized!();
601        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
602    }
603}
604
605impl ToValue for AudioNoiseShapingMethod {
606    #[inline]
607    fn to_value(&self) -> glib::Value {
608        let mut value = glib::Value::for_value_type::<Self>();
609        unsafe {
610            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
611        }
612        value
613    }
614
615    #[inline]
616    fn value_type(&self) -> glib::Type {
617        Self::static_type()
618    }
619}
620
621impl From<AudioNoiseShapingMethod> for glib::Value {
622    #[inline]
623    fn from(v: AudioNoiseShapingMethod) -> Self {
624        skip_assert_initialized!();
625        ToValue::to_value(&v)
626    }
627}
628
629/// Different subsampling and upsampling methods
630#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
631#[non_exhaustive]
632#[doc(alias = "GstAudioResamplerMethod")]
633pub enum AudioResamplerMethod {
634    /// Duplicates the samples when
635    ///  upsampling and drops when downsampling
636    #[doc(alias = "GST_AUDIO_RESAMPLER_METHOD_NEAREST")]
637    Nearest,
638    /// Uses linear interpolation to reconstruct
639    ///  missing samples and averaging to downsample
640    #[doc(alias = "GST_AUDIO_RESAMPLER_METHOD_LINEAR")]
641    Linear,
642    /// Uses cubic interpolation
643    #[doc(alias = "GST_AUDIO_RESAMPLER_METHOD_CUBIC")]
644    Cubic,
645    /// Uses Blackman-Nuttall windowed sinc interpolation
646    #[doc(alias = "GST_AUDIO_RESAMPLER_METHOD_BLACKMAN_NUTTALL")]
647    BlackmanNuttall,
648    /// Uses Kaiser windowed sinc interpolation
649    #[doc(alias = "GST_AUDIO_RESAMPLER_METHOD_KAISER")]
650    Kaiser,
651    #[doc(hidden)]
652    __Unknown(i32),
653}
654
655#[doc(hidden)]
656impl IntoGlib for AudioResamplerMethod {
657    type GlibType = ffi::GstAudioResamplerMethod;
658
659    #[inline]
660    fn into_glib(self) -> ffi::GstAudioResamplerMethod {
661        match self {
662            Self::Nearest => ffi::GST_AUDIO_RESAMPLER_METHOD_NEAREST,
663            Self::Linear => ffi::GST_AUDIO_RESAMPLER_METHOD_LINEAR,
664            Self::Cubic => ffi::GST_AUDIO_RESAMPLER_METHOD_CUBIC,
665            Self::BlackmanNuttall => ffi::GST_AUDIO_RESAMPLER_METHOD_BLACKMAN_NUTTALL,
666            Self::Kaiser => ffi::GST_AUDIO_RESAMPLER_METHOD_KAISER,
667            Self::__Unknown(value) => value,
668        }
669    }
670}
671
672#[doc(hidden)]
673impl FromGlib<ffi::GstAudioResamplerMethod> for AudioResamplerMethod {
674    #[inline]
675    unsafe fn from_glib(value: ffi::GstAudioResamplerMethod) -> Self {
676        skip_assert_initialized!();
677
678        match value {
679            ffi::GST_AUDIO_RESAMPLER_METHOD_NEAREST => Self::Nearest,
680            ffi::GST_AUDIO_RESAMPLER_METHOD_LINEAR => Self::Linear,
681            ffi::GST_AUDIO_RESAMPLER_METHOD_CUBIC => Self::Cubic,
682            ffi::GST_AUDIO_RESAMPLER_METHOD_BLACKMAN_NUTTALL => Self::BlackmanNuttall,
683            ffi::GST_AUDIO_RESAMPLER_METHOD_KAISER => Self::Kaiser,
684            value => Self::__Unknown(value),
685        }
686    }
687}
688
689impl StaticType for AudioResamplerMethod {
690    #[inline]
691    #[doc(alias = "gst_audio_resampler_method_get_type")]
692    fn static_type() -> glib::Type {
693        unsafe { from_glib(ffi::gst_audio_resampler_method_get_type()) }
694    }
695}
696
697impl glib::HasParamSpec for AudioResamplerMethod {
698    type ParamSpec = glib::ParamSpecEnum;
699    type SetValue = Self;
700    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
701
702    fn param_spec_builder() -> Self::BuilderFn {
703        Self::ParamSpec::builder_with_default
704    }
705}
706
707impl glib::value::ValueType for AudioResamplerMethod {
708    type Type = Self;
709}
710
711unsafe impl<'a> glib::value::FromValue<'a> for AudioResamplerMethod {
712    type Checker = glib::value::GenericValueTypeChecker<Self>;
713
714    #[inline]
715    unsafe fn from_value(value: &'a glib::Value) -> Self {
716        skip_assert_initialized!();
717        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
718    }
719}
720
721impl ToValue for AudioResamplerMethod {
722    #[inline]
723    fn to_value(&self) -> glib::Value {
724        let mut value = glib::Value::for_value_type::<Self>();
725        unsafe {
726            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
727        }
728        value
729    }
730
731    #[inline]
732    fn value_type(&self) -> glib::Type {
733        Self::static_type()
734    }
735}
736
737impl From<AudioResamplerMethod> for glib::Value {
738    #[inline]
739    fn from(v: AudioResamplerMethod) -> Self {
740        skip_assert_initialized!();
741        ToValue::to_value(&v)
742    }
743}
744
745/// The format of the samples in the ringbuffer.
746#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
747#[non_exhaustive]
748#[doc(alias = "GstAudioRingBufferFormatType")]
749pub enum AudioRingBufferFormatType {
750    /// samples in linear or float
751    #[doc(alias = "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_RAW")]
752    Raw,
753    /// samples in mulaw
754    #[doc(alias = "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MU_LAW")]
755    MuLaw,
756    /// samples in alaw
757    #[doc(alias = "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_A_LAW")]
758    ALaw,
759    /// samples in ima adpcm
760    #[doc(alias = "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_IMA_ADPCM")]
761    ImaAdpcm,
762    /// samples in mpeg audio (but not AAC) format
763    #[doc(alias = "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG")]
764    Mpeg,
765    /// samples in gsm format
766    #[doc(alias = "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_GSM")]
767    Gsm,
768    /// samples in IEC958 frames (e.g. AC3)
769    #[doc(alias = "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_IEC958")]
770    Iec958,
771    /// samples in AC3 format
772    #[doc(alias = "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_AC3")]
773    Ac3,
774    /// samples in EAC3 format
775    #[doc(alias = "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_EAC3")]
776    Eac3,
777    /// samples in DTS format
778    #[doc(alias = "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_DTS")]
779    Dts,
780    /// samples in MPEG-2 AAC ADTS format
781    #[doc(alias = "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG2_AAC")]
782    Mpeg2Aac,
783    /// samples in MPEG-4 AAC ADTS format
784    #[doc(alias = "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG4_AAC")]
785    Mpeg4Aac,
786    /// samples in MPEG-2 AAC raw format (Since: 1.12)
787    #[doc(alias = "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG2_AAC_RAW")]
788    Mpeg2AacRaw,
789    /// samples in MPEG-4 AAC raw format (Since: 1.12)
790    #[doc(alias = "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG4_AAC_RAW")]
791    Mpeg4AacRaw,
792    /// samples in FLAC format (Since: 1.12)
793    #[doc(alias = "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_FLAC")]
794    Flac,
795    /// samples in DSD format (Since: 1.24)
796    #[cfg(feature = "v1_24")]
797    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
798    #[doc(alias = "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_DSD")]
799    Dsd,
800    #[doc(hidden)]
801    __Unknown(i32),
802}
803
804#[doc(hidden)]
805impl IntoGlib for AudioRingBufferFormatType {
806    type GlibType = ffi::GstAudioRingBufferFormatType;
807
808    fn into_glib(self) -> ffi::GstAudioRingBufferFormatType {
809        match self {
810            Self::Raw => ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_RAW,
811            Self::MuLaw => ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MU_LAW,
812            Self::ALaw => ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_A_LAW,
813            Self::ImaAdpcm => ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_IMA_ADPCM,
814            Self::Mpeg => ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG,
815            Self::Gsm => ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_GSM,
816            Self::Iec958 => ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_IEC958,
817            Self::Ac3 => ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_AC3,
818            Self::Eac3 => ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_EAC3,
819            Self::Dts => ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_DTS,
820            Self::Mpeg2Aac => ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG2_AAC,
821            Self::Mpeg4Aac => ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG4_AAC,
822            Self::Mpeg2AacRaw => ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG2_AAC_RAW,
823            Self::Mpeg4AacRaw => ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG4_AAC_RAW,
824            Self::Flac => ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_FLAC,
825            #[cfg(feature = "v1_24")]
826            Self::Dsd => ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_DSD,
827            Self::__Unknown(value) => value,
828        }
829    }
830}
831
832#[doc(hidden)]
833impl FromGlib<ffi::GstAudioRingBufferFormatType> for AudioRingBufferFormatType {
834    unsafe fn from_glib(value: ffi::GstAudioRingBufferFormatType) -> Self {
835        skip_assert_initialized!();
836
837        match value {
838            ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_RAW => Self::Raw,
839            ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MU_LAW => Self::MuLaw,
840            ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_A_LAW => Self::ALaw,
841            ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_IMA_ADPCM => Self::ImaAdpcm,
842            ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG => Self::Mpeg,
843            ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_GSM => Self::Gsm,
844            ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_IEC958 => Self::Iec958,
845            ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_AC3 => Self::Ac3,
846            ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_EAC3 => Self::Eac3,
847            ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_DTS => Self::Dts,
848            ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG2_AAC => Self::Mpeg2Aac,
849            ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG4_AAC => Self::Mpeg4Aac,
850            ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG2_AAC_RAW => Self::Mpeg2AacRaw,
851            ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG4_AAC_RAW => Self::Mpeg4AacRaw,
852            ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_FLAC => Self::Flac,
853            #[cfg(feature = "v1_24")]
854            ffi::GST_AUDIO_RING_BUFFER_FORMAT_TYPE_DSD => Self::Dsd,
855            value => Self::__Unknown(value),
856        }
857    }
858}
859
860impl StaticType for AudioRingBufferFormatType {
861    #[inline]
862    #[doc(alias = "gst_audio_ring_buffer_format_type_get_type")]
863    fn static_type() -> glib::Type {
864        unsafe { from_glib(ffi::gst_audio_ring_buffer_format_type_get_type()) }
865    }
866}
867
868impl glib::HasParamSpec for AudioRingBufferFormatType {
869    type ParamSpec = glib::ParamSpecEnum;
870    type SetValue = Self;
871    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
872
873    fn param_spec_builder() -> Self::BuilderFn {
874        Self::ParamSpec::builder_with_default
875    }
876}
877
878impl glib::value::ValueType for AudioRingBufferFormatType {
879    type Type = Self;
880}
881
882unsafe impl<'a> glib::value::FromValue<'a> for AudioRingBufferFormatType {
883    type Checker = glib::value::GenericValueTypeChecker<Self>;
884
885    #[inline]
886    unsafe fn from_value(value: &'a glib::Value) -> Self {
887        skip_assert_initialized!();
888        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
889    }
890}
891
892impl ToValue for AudioRingBufferFormatType {
893    #[inline]
894    fn to_value(&self) -> glib::Value {
895        let mut value = glib::Value::for_value_type::<Self>();
896        unsafe {
897            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
898        }
899        value
900    }
901
902    #[inline]
903    fn value_type(&self) -> glib::Type {
904        Self::static_type()
905    }
906}
907
908impl From<AudioRingBufferFormatType> for glib::Value {
909    #[inline]
910    fn from(v: AudioRingBufferFormatType) -> Self {
911        skip_assert_initialized!();
912        ToValue::to_value(&v)
913    }
914}
915
916/// Different representations of a stream volume. [`StreamVolume::convert_volume()`][crate::StreamVolume::convert_volume()]
917/// allows to convert between the different representations.
918///
919/// Formulas to convert from a linear to a cubic or dB volume are
920/// cbrt(val) and 20 * log10 (val).
921#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
922#[non_exhaustive]
923#[doc(alias = "GstStreamVolumeFormat")]
924pub enum StreamVolumeFormat {
925    /// Linear scale factor, 1.0 = 100%
926    #[doc(alias = "GST_STREAM_VOLUME_FORMAT_LINEAR")]
927    Linear,
928    /// Cubic volume scale
929    #[doc(alias = "GST_STREAM_VOLUME_FORMAT_CUBIC")]
930    Cubic,
931    /// Logarithmic volume scale (dB, amplitude not power)
932    #[doc(alias = "GST_STREAM_VOLUME_FORMAT_DB")]
933    Db,
934    #[doc(hidden)]
935    __Unknown(i32),
936}
937
938#[doc(hidden)]
939impl IntoGlib for StreamVolumeFormat {
940    type GlibType = ffi::GstStreamVolumeFormat;
941
942    #[inline]
943    fn into_glib(self) -> ffi::GstStreamVolumeFormat {
944        match self {
945            Self::Linear => ffi::GST_STREAM_VOLUME_FORMAT_LINEAR,
946            Self::Cubic => ffi::GST_STREAM_VOLUME_FORMAT_CUBIC,
947            Self::Db => ffi::GST_STREAM_VOLUME_FORMAT_DB,
948            Self::__Unknown(value) => value,
949        }
950    }
951}
952
953#[doc(hidden)]
954impl FromGlib<ffi::GstStreamVolumeFormat> for StreamVolumeFormat {
955    #[inline]
956    unsafe fn from_glib(value: ffi::GstStreamVolumeFormat) -> Self {
957        skip_assert_initialized!();
958
959        match value {
960            ffi::GST_STREAM_VOLUME_FORMAT_LINEAR => Self::Linear,
961            ffi::GST_STREAM_VOLUME_FORMAT_CUBIC => Self::Cubic,
962            ffi::GST_STREAM_VOLUME_FORMAT_DB => Self::Db,
963            value => Self::__Unknown(value),
964        }
965    }
966}