gstreamer/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, EventTypeFlags};
7use glib::{prelude::*, translate::*, GStr};
8
9#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
10#[non_exhaustive]
11#[doc(alias = "GstBufferingMode")]
12pub enum BufferingMode {
13    #[doc(alias = "GST_BUFFERING_STREAM")]
14    Stream,
15    #[doc(alias = "GST_BUFFERING_DOWNLOAD")]
16    Download,
17    #[doc(alias = "GST_BUFFERING_TIMESHIFT")]
18    Timeshift,
19    #[doc(alias = "GST_BUFFERING_LIVE")]
20    Live,
21    #[doc(hidden)]
22    __Unknown(i32),
23}
24
25#[doc(hidden)]
26impl IntoGlib for BufferingMode {
27    type GlibType = ffi::GstBufferingMode;
28
29    #[inline]
30    fn into_glib(self) -> ffi::GstBufferingMode {
31        match self {
32            Self::Stream => ffi::GST_BUFFERING_STREAM,
33            Self::Download => ffi::GST_BUFFERING_DOWNLOAD,
34            Self::Timeshift => ffi::GST_BUFFERING_TIMESHIFT,
35            Self::Live => ffi::GST_BUFFERING_LIVE,
36            Self::__Unknown(value) => value,
37        }
38    }
39}
40
41#[doc(hidden)]
42impl FromGlib<ffi::GstBufferingMode> for BufferingMode {
43    #[inline]
44    unsafe fn from_glib(value: ffi::GstBufferingMode) -> Self {
45        skip_assert_initialized!();
46
47        match value {
48            ffi::GST_BUFFERING_STREAM => Self::Stream,
49            ffi::GST_BUFFERING_DOWNLOAD => Self::Download,
50            ffi::GST_BUFFERING_TIMESHIFT => Self::Timeshift,
51            ffi::GST_BUFFERING_LIVE => Self::Live,
52            value => Self::__Unknown(value),
53        }
54    }
55}
56
57impl StaticType for BufferingMode {
58    #[inline]
59    #[doc(alias = "gst_buffering_mode_get_type")]
60    fn static_type() -> glib::Type {
61        unsafe { from_glib(ffi::gst_buffering_mode_get_type()) }
62    }
63}
64
65impl glib::HasParamSpec for BufferingMode {
66    type ParamSpec = glib::ParamSpecEnum;
67    type SetValue = Self;
68    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
69
70    fn param_spec_builder() -> Self::BuilderFn {
71        Self::ParamSpec::builder_with_default
72    }
73}
74
75impl glib::value::ValueType for BufferingMode {
76    type Type = Self;
77}
78
79unsafe impl<'a> glib::value::FromValue<'a> for BufferingMode {
80    type Checker = glib::value::GenericValueTypeChecker<Self>;
81
82    #[inline]
83    unsafe fn from_value(value: &'a glib::Value) -> Self {
84        skip_assert_initialized!();
85        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
86    }
87}
88
89impl ToValue for BufferingMode {
90    #[inline]
91    fn to_value(&self) -> glib::Value {
92        let mut value = glib::Value::for_value_type::<Self>();
93        unsafe {
94            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
95        }
96        value
97    }
98
99    #[inline]
100    fn value_type(&self) -> glib::Type {
101        Self::static_type()
102    }
103}
104
105impl From<BufferingMode> for glib::Value {
106    #[inline]
107    fn from(v: BufferingMode) -> Self {
108        skip_assert_initialized!();
109        ToValue::to_value(&v)
110    }
111}
112
113#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
114#[repr(i32)]
115#[doc(alias = "GstBusSyncReply")]
116pub enum BusSyncReply {
117    #[doc(alias = "GST_BUS_DROP")]
118    Drop = ffi::GST_BUS_DROP,
119    #[doc(alias = "GST_BUS_PASS")]
120    Pass = ffi::GST_BUS_PASS,
121    #[doc(alias = "GST_BUS_ASYNC")]
122    Async = ffi::GST_BUS_ASYNC,
123}
124
125#[doc(hidden)]
126impl IntoGlib for BusSyncReply {
127    type GlibType = ffi::GstBusSyncReply;
128
129    #[inline]
130    fn into_glib(self) -> ffi::GstBusSyncReply {
131        self as ffi::GstBusSyncReply
132    }
133}
134
135#[doc(hidden)]
136impl FromGlib<ffi::GstBusSyncReply> for BusSyncReply {
137    #[inline]
138    unsafe fn from_glib(value: ffi::GstBusSyncReply) -> Self {
139        skip_assert_initialized!();
140
141        debug_assert!([ffi::GST_BUS_DROP, ffi::GST_BUS_PASS, ffi::GST_BUS_ASYNC].contains(&value));
142        std::mem::transmute(value)
143    }
144}
145
146impl StaticType for BusSyncReply {
147    #[inline]
148    #[doc(alias = "gst_bus_sync_reply_get_type")]
149    fn static_type() -> glib::Type {
150        unsafe { from_glib(ffi::gst_bus_sync_reply_get_type()) }
151    }
152}
153
154impl glib::HasParamSpec for BusSyncReply {
155    type ParamSpec = glib::ParamSpecEnum;
156    type SetValue = Self;
157    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
158
159    fn param_spec_builder() -> Self::BuilderFn {
160        Self::ParamSpec::builder_with_default
161    }
162}
163
164impl glib::value::ValueType for BusSyncReply {
165    type Type = Self;
166}
167
168unsafe impl<'a> glib::value::FromValue<'a> for BusSyncReply {
169    type Checker = glib::value::GenericValueTypeChecker<Self>;
170
171    #[inline]
172    unsafe fn from_value(value: &'a glib::Value) -> Self {
173        skip_assert_initialized!();
174        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
175    }
176}
177
178impl ToValue for BusSyncReply {
179    #[inline]
180    fn to_value(&self) -> glib::Value {
181        let mut value = glib::Value::for_value_type::<Self>();
182        unsafe {
183            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
184        }
185        value
186    }
187
188    #[inline]
189    fn value_type(&self) -> glib::Type {
190        Self::static_type()
191    }
192}
193
194impl From<BusSyncReply> for glib::Value {
195    #[inline]
196    fn from(v: BusSyncReply) -> Self {
197        skip_assert_initialized!();
198        ToValue::to_value(&v)
199    }
200}
201
202#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
203#[non_exhaustive]
204#[doc(alias = "GstCapsIntersectMode")]
205pub enum CapsIntersectMode {
206    #[doc(alias = "GST_CAPS_INTERSECT_ZIG_ZAG")]
207    ZigZag,
208    #[doc(alias = "GST_CAPS_INTERSECT_FIRST")]
209    First,
210    #[doc(hidden)]
211    __Unknown(i32),
212}
213
214#[doc(hidden)]
215impl IntoGlib for CapsIntersectMode {
216    type GlibType = ffi::GstCapsIntersectMode;
217
218    #[inline]
219    fn into_glib(self) -> ffi::GstCapsIntersectMode {
220        match self {
221            Self::ZigZag => ffi::GST_CAPS_INTERSECT_ZIG_ZAG,
222            Self::First => ffi::GST_CAPS_INTERSECT_FIRST,
223            Self::__Unknown(value) => value,
224        }
225    }
226}
227
228#[doc(hidden)]
229impl FromGlib<ffi::GstCapsIntersectMode> for CapsIntersectMode {
230    #[inline]
231    unsafe fn from_glib(value: ffi::GstCapsIntersectMode) -> Self {
232        skip_assert_initialized!();
233
234        match value {
235            ffi::GST_CAPS_INTERSECT_ZIG_ZAG => Self::ZigZag,
236            ffi::GST_CAPS_INTERSECT_FIRST => Self::First,
237            value => Self::__Unknown(value),
238        }
239    }
240}
241
242impl StaticType for CapsIntersectMode {
243    #[inline]
244    #[doc(alias = "gst_caps_intersect_mode_get_type")]
245    fn static_type() -> glib::Type {
246        unsafe { from_glib(ffi::gst_caps_intersect_mode_get_type()) }
247    }
248}
249
250impl glib::HasParamSpec for CapsIntersectMode {
251    type ParamSpec = glib::ParamSpecEnum;
252    type SetValue = Self;
253    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
254
255    fn param_spec_builder() -> Self::BuilderFn {
256        Self::ParamSpec::builder_with_default
257    }
258}
259
260impl glib::value::ValueType for CapsIntersectMode {
261    type Type = Self;
262}
263
264unsafe impl<'a> glib::value::FromValue<'a> for CapsIntersectMode {
265    type Checker = glib::value::GenericValueTypeChecker<Self>;
266
267    #[inline]
268    unsafe fn from_value(value: &'a glib::Value) -> Self {
269        skip_assert_initialized!();
270        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
271    }
272}
273
274impl ToValue for CapsIntersectMode {
275    #[inline]
276    fn to_value(&self) -> glib::Value {
277        let mut value = glib::Value::for_value_type::<Self>();
278        unsafe {
279            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
280        }
281        value
282    }
283
284    #[inline]
285    fn value_type(&self) -> glib::Type {
286        Self::static_type()
287    }
288}
289
290impl From<CapsIntersectMode> for glib::Value {
291    #[inline]
292    fn from(v: CapsIntersectMode) -> Self {
293        skip_assert_initialized!();
294        ToValue::to_value(&v)
295    }
296}
297
298#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
299#[non_exhaustive]
300#[doc(alias = "GstClockEntryType")]
301pub enum ClockEntryType {
302    #[doc(alias = "GST_CLOCK_ENTRY_SINGLE")]
303    Single,
304    #[doc(alias = "GST_CLOCK_ENTRY_PERIODIC")]
305    Periodic,
306    #[doc(hidden)]
307    __Unknown(i32),
308}
309
310#[doc(hidden)]
311impl IntoGlib for ClockEntryType {
312    type GlibType = ffi::GstClockEntryType;
313
314    #[inline]
315    fn into_glib(self) -> ffi::GstClockEntryType {
316        match self {
317            Self::Single => ffi::GST_CLOCK_ENTRY_SINGLE,
318            Self::Periodic => ffi::GST_CLOCK_ENTRY_PERIODIC,
319            Self::__Unknown(value) => value,
320        }
321    }
322}
323
324#[doc(hidden)]
325impl FromGlib<ffi::GstClockEntryType> for ClockEntryType {
326    #[inline]
327    unsafe fn from_glib(value: ffi::GstClockEntryType) -> Self {
328        skip_assert_initialized!();
329
330        match value {
331            ffi::GST_CLOCK_ENTRY_SINGLE => Self::Single,
332            ffi::GST_CLOCK_ENTRY_PERIODIC => Self::Periodic,
333            value => Self::__Unknown(value),
334        }
335    }
336}
337
338impl StaticType for ClockEntryType {
339    #[inline]
340    #[doc(alias = "gst_clock_entry_type_get_type")]
341    fn static_type() -> glib::Type {
342        unsafe { from_glib(ffi::gst_clock_entry_type_get_type()) }
343    }
344}
345
346impl glib::HasParamSpec for ClockEntryType {
347    type ParamSpec = glib::ParamSpecEnum;
348    type SetValue = Self;
349    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
350
351    fn param_spec_builder() -> Self::BuilderFn {
352        Self::ParamSpec::builder_with_default
353    }
354}
355
356impl glib::value::ValueType for ClockEntryType {
357    type Type = Self;
358}
359
360unsafe impl<'a> glib::value::FromValue<'a> for ClockEntryType {
361    type Checker = glib::value::GenericValueTypeChecker<Self>;
362
363    #[inline]
364    unsafe fn from_value(value: &'a glib::Value) -> Self {
365        skip_assert_initialized!();
366        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
367    }
368}
369
370impl ToValue for ClockEntryType {
371    #[inline]
372    fn to_value(&self) -> glib::Value {
373        let mut value = glib::Value::for_value_type::<Self>();
374        unsafe {
375            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
376        }
377        value
378    }
379
380    #[inline]
381    fn value_type(&self) -> glib::Type {
382        Self::static_type()
383    }
384}
385
386impl From<ClockEntryType> for glib::Value {
387    #[inline]
388    fn from(v: ClockEntryType) -> Self {
389        skip_assert_initialized!();
390        ToValue::to_value(&v)
391    }
392}
393
394#[must_use]
395#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
396#[repr(i32)]
397#[doc(alias = "GstClockReturn")]
398pub enum ClockReturn {
399    #[doc(alias = "GST_CLOCK_OK")]
400    Ok = ffi::GST_CLOCK_OK,
401    #[doc(alias = "GST_CLOCK_EARLY")]
402    Early = ffi::GST_CLOCK_EARLY,
403    #[doc(alias = "GST_CLOCK_UNSCHEDULED")]
404    Unscheduled = ffi::GST_CLOCK_UNSCHEDULED,
405    #[doc(alias = "GST_CLOCK_BUSY")]
406    Busy = ffi::GST_CLOCK_BUSY,
407    #[doc(alias = "GST_CLOCK_BADTIME")]
408    Badtime = ffi::GST_CLOCK_BADTIME,
409    #[doc(alias = "GST_CLOCK_ERROR")]
410    Error = ffi::GST_CLOCK_ERROR,
411    #[doc(alias = "GST_CLOCK_UNSUPPORTED")]
412    Unsupported = ffi::GST_CLOCK_UNSUPPORTED,
413    #[doc(alias = "GST_CLOCK_DONE")]
414    Done = ffi::GST_CLOCK_DONE,
415}
416
417#[doc(hidden)]
418impl IntoGlib for ClockReturn {
419    type GlibType = ffi::GstClockReturn;
420
421    #[inline]
422    fn into_glib(self) -> ffi::GstClockReturn {
423        self as ffi::GstClockReturn
424    }
425}
426
427#[doc(hidden)]
428impl FromGlib<ffi::GstClockReturn> for ClockReturn {
429    #[inline]
430    unsafe fn from_glib(value: ffi::GstClockReturn) -> Self {
431        skip_assert_initialized!();
432
433        debug_assert!([
434            ffi::GST_CLOCK_OK,
435            ffi::GST_CLOCK_EARLY,
436            ffi::GST_CLOCK_UNSCHEDULED,
437            ffi::GST_CLOCK_BUSY,
438            ffi::GST_CLOCK_BADTIME,
439            ffi::GST_CLOCK_ERROR,
440            ffi::GST_CLOCK_UNSUPPORTED,
441            ffi::GST_CLOCK_DONE
442        ]
443        .contains(&value));
444        std::mem::transmute(value)
445    }
446}
447
448impl StaticType for ClockReturn {
449    #[inline]
450    #[doc(alias = "gst_clock_return_get_type")]
451    fn static_type() -> glib::Type {
452        unsafe { from_glib(ffi::gst_clock_return_get_type()) }
453    }
454}
455
456impl glib::HasParamSpec for ClockReturn {
457    type ParamSpec = glib::ParamSpecEnum;
458    type SetValue = Self;
459    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
460
461    fn param_spec_builder() -> Self::BuilderFn {
462        Self::ParamSpec::builder_with_default
463    }
464}
465
466impl glib::value::ValueType for ClockReturn {
467    type Type = Self;
468}
469
470unsafe impl<'a> glib::value::FromValue<'a> for ClockReturn {
471    type Checker = glib::value::GenericValueTypeChecker<Self>;
472
473    #[inline]
474    unsafe fn from_value(value: &'a glib::Value) -> Self {
475        skip_assert_initialized!();
476        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
477    }
478}
479
480impl ToValue for ClockReturn {
481    #[inline]
482    fn to_value(&self) -> glib::Value {
483        let mut value = glib::Value::for_value_type::<Self>();
484        unsafe {
485            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
486        }
487        value
488    }
489
490    #[inline]
491    fn value_type(&self) -> glib::Type {
492        Self::static_type()
493    }
494}
495
496impl From<ClockReturn> for glib::Value {
497    #[inline]
498    fn from(v: ClockReturn) -> Self {
499        skip_assert_initialized!();
500        ToValue::to_value(&v)
501    }
502}
503
504#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
505#[non_exhaustive]
506#[doc(alias = "GstClockType")]
507pub enum ClockType {
508    #[doc(alias = "GST_CLOCK_TYPE_REALTIME")]
509    Realtime,
510    #[doc(alias = "GST_CLOCK_TYPE_MONOTONIC")]
511    Monotonic,
512    #[doc(alias = "GST_CLOCK_TYPE_OTHER")]
513    Other,
514    #[cfg(feature = "v1_18")]
515    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
516    #[doc(alias = "GST_CLOCK_TYPE_TAI")]
517    Tai,
518    #[doc(hidden)]
519    __Unknown(i32),
520}
521
522#[doc(hidden)]
523impl IntoGlib for ClockType {
524    type GlibType = ffi::GstClockType;
525
526    #[inline]
527    fn into_glib(self) -> ffi::GstClockType {
528        match self {
529            Self::Realtime => ffi::GST_CLOCK_TYPE_REALTIME,
530            Self::Monotonic => ffi::GST_CLOCK_TYPE_MONOTONIC,
531            Self::Other => ffi::GST_CLOCK_TYPE_OTHER,
532            #[cfg(feature = "v1_18")]
533            Self::Tai => ffi::GST_CLOCK_TYPE_TAI,
534            Self::__Unknown(value) => value,
535        }
536    }
537}
538
539#[doc(hidden)]
540impl FromGlib<ffi::GstClockType> for ClockType {
541    #[inline]
542    unsafe fn from_glib(value: ffi::GstClockType) -> Self {
543        skip_assert_initialized!();
544
545        match value {
546            ffi::GST_CLOCK_TYPE_REALTIME => Self::Realtime,
547            ffi::GST_CLOCK_TYPE_MONOTONIC => Self::Monotonic,
548            ffi::GST_CLOCK_TYPE_OTHER => Self::Other,
549            #[cfg(feature = "v1_18")]
550            ffi::GST_CLOCK_TYPE_TAI => Self::Tai,
551            value => Self::__Unknown(value),
552        }
553    }
554}
555
556impl StaticType for ClockType {
557    #[inline]
558    #[doc(alias = "gst_clock_type_get_type")]
559    fn static_type() -> glib::Type {
560        unsafe { from_glib(ffi::gst_clock_type_get_type()) }
561    }
562}
563
564impl glib::HasParamSpec for ClockType {
565    type ParamSpec = glib::ParamSpecEnum;
566    type SetValue = Self;
567    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
568
569    fn param_spec_builder() -> Self::BuilderFn {
570        Self::ParamSpec::builder_with_default
571    }
572}
573
574impl glib::value::ValueType for ClockType {
575    type Type = Self;
576}
577
578unsafe impl<'a> glib::value::FromValue<'a> for ClockType {
579    type Checker = glib::value::GenericValueTypeChecker<Self>;
580
581    #[inline]
582    unsafe fn from_value(value: &'a glib::Value) -> Self {
583        skip_assert_initialized!();
584        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
585    }
586}
587
588impl ToValue for ClockType {
589    #[inline]
590    fn to_value(&self) -> glib::Value {
591        let mut value = glib::Value::for_value_type::<Self>();
592        unsafe {
593            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
594        }
595        value
596    }
597
598    #[inline]
599    fn value_type(&self) -> glib::Type {
600        Self::static_type()
601    }
602}
603
604impl From<ClockType> for glib::Value {
605    #[inline]
606    fn from(v: ClockType) -> Self {
607        skip_assert_initialized!();
608        ToValue::to_value(&v)
609    }
610}
611
612#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
613#[non_exhaustive]
614#[doc(alias = "GstCoreError")]
615pub enum CoreError {
616    #[doc(alias = "GST_CORE_ERROR_FAILED")]
617    Failed,
618    #[doc(alias = "GST_CORE_ERROR_TOO_LAZY")]
619    TooLazy,
620    #[doc(alias = "GST_CORE_ERROR_NOT_IMPLEMENTED")]
621    NotImplemented,
622    #[doc(alias = "GST_CORE_ERROR_STATE_CHANGE")]
623    StateChange,
624    #[doc(alias = "GST_CORE_ERROR_PAD")]
625    Pad,
626    #[doc(alias = "GST_CORE_ERROR_THREAD")]
627    Thread,
628    #[doc(alias = "GST_CORE_ERROR_NEGOTIATION")]
629    Negotiation,
630    #[doc(alias = "GST_CORE_ERROR_EVENT")]
631    Event,
632    #[doc(alias = "GST_CORE_ERROR_SEEK")]
633    Seek,
634    #[doc(alias = "GST_CORE_ERROR_CAPS")]
635    Caps,
636    #[doc(alias = "GST_CORE_ERROR_TAG")]
637    Tag,
638    #[doc(alias = "GST_CORE_ERROR_MISSING_PLUGIN")]
639    MissingPlugin,
640    #[doc(alias = "GST_CORE_ERROR_CLOCK")]
641    Clock,
642    #[doc(alias = "GST_CORE_ERROR_DISABLED")]
643    Disabled,
644    #[doc(hidden)]
645    __Unknown(i32),
646}
647
648#[doc(hidden)]
649impl IntoGlib for CoreError {
650    type GlibType = ffi::GstCoreError;
651
652    fn into_glib(self) -> ffi::GstCoreError {
653        match self {
654            Self::Failed => ffi::GST_CORE_ERROR_FAILED,
655            Self::TooLazy => ffi::GST_CORE_ERROR_TOO_LAZY,
656            Self::NotImplemented => ffi::GST_CORE_ERROR_NOT_IMPLEMENTED,
657            Self::StateChange => ffi::GST_CORE_ERROR_STATE_CHANGE,
658            Self::Pad => ffi::GST_CORE_ERROR_PAD,
659            Self::Thread => ffi::GST_CORE_ERROR_THREAD,
660            Self::Negotiation => ffi::GST_CORE_ERROR_NEGOTIATION,
661            Self::Event => ffi::GST_CORE_ERROR_EVENT,
662            Self::Seek => ffi::GST_CORE_ERROR_SEEK,
663            Self::Caps => ffi::GST_CORE_ERROR_CAPS,
664            Self::Tag => ffi::GST_CORE_ERROR_TAG,
665            Self::MissingPlugin => ffi::GST_CORE_ERROR_MISSING_PLUGIN,
666            Self::Clock => ffi::GST_CORE_ERROR_CLOCK,
667            Self::Disabled => ffi::GST_CORE_ERROR_DISABLED,
668            Self::__Unknown(value) => value,
669        }
670    }
671}
672
673#[doc(hidden)]
674impl FromGlib<ffi::GstCoreError> for CoreError {
675    unsafe fn from_glib(value: ffi::GstCoreError) -> Self {
676        skip_assert_initialized!();
677
678        match value {
679            ffi::GST_CORE_ERROR_FAILED => Self::Failed,
680            ffi::GST_CORE_ERROR_TOO_LAZY => Self::TooLazy,
681            ffi::GST_CORE_ERROR_NOT_IMPLEMENTED => Self::NotImplemented,
682            ffi::GST_CORE_ERROR_STATE_CHANGE => Self::StateChange,
683            ffi::GST_CORE_ERROR_PAD => Self::Pad,
684            ffi::GST_CORE_ERROR_THREAD => Self::Thread,
685            ffi::GST_CORE_ERROR_NEGOTIATION => Self::Negotiation,
686            ffi::GST_CORE_ERROR_EVENT => Self::Event,
687            ffi::GST_CORE_ERROR_SEEK => Self::Seek,
688            ffi::GST_CORE_ERROR_CAPS => Self::Caps,
689            ffi::GST_CORE_ERROR_TAG => Self::Tag,
690            ffi::GST_CORE_ERROR_MISSING_PLUGIN => Self::MissingPlugin,
691            ffi::GST_CORE_ERROR_CLOCK => Self::Clock,
692            ffi::GST_CORE_ERROR_DISABLED => Self::Disabled,
693            value => Self::__Unknown(value),
694        }
695    }
696}
697
698impl glib::error::ErrorDomain for CoreError {
699    #[inline]
700    fn domain() -> glib::Quark {
701        skip_assert_initialized!();
702
703        unsafe { from_glib(ffi::gst_core_error_quark()) }
704    }
705
706    #[inline]
707    fn code(self) -> i32 {
708        self.into_glib()
709    }
710
711    #[inline]
712    #[allow(clippy::match_single_binding)]
713    fn from(code: i32) -> Option<Self> {
714        skip_assert_initialized!();
715        match unsafe { from_glib(code) } {
716            Self::__Unknown(_) => Some(Self::Failed),
717            value => Some(value),
718        }
719    }
720}
721
722impl StaticType for CoreError {
723    #[inline]
724    #[doc(alias = "gst_core_error_get_type")]
725    fn static_type() -> glib::Type {
726        unsafe { from_glib(ffi::gst_core_error_get_type()) }
727    }
728}
729
730impl glib::HasParamSpec for CoreError {
731    type ParamSpec = glib::ParamSpecEnum;
732    type SetValue = Self;
733    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
734
735    fn param_spec_builder() -> Self::BuilderFn {
736        Self::ParamSpec::builder_with_default
737    }
738}
739
740impl glib::value::ValueType for CoreError {
741    type Type = Self;
742}
743
744unsafe impl<'a> glib::value::FromValue<'a> for CoreError {
745    type Checker = glib::value::GenericValueTypeChecker<Self>;
746
747    #[inline]
748    unsafe fn from_value(value: &'a glib::Value) -> Self {
749        skip_assert_initialized!();
750        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
751    }
752}
753
754impl ToValue for CoreError {
755    #[inline]
756    fn to_value(&self) -> glib::Value {
757        let mut value = glib::Value::for_value_type::<Self>();
758        unsafe {
759            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
760        }
761        value
762    }
763
764    #[inline]
765    fn value_type(&self) -> glib::Type {
766        Self::static_type()
767    }
768}
769
770impl From<CoreError> for glib::Value {
771    #[inline]
772    fn from(v: CoreError) -> Self {
773        skip_assert_initialized!();
774        ToValue::to_value(&v)
775    }
776}
777
778#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
779#[non_exhaustive]
780#[doc(alias = "GstDebugLevel")]
781pub enum DebugLevel {
782    #[doc(alias = "GST_LEVEL_NONE")]
783    None,
784    #[doc(alias = "GST_LEVEL_ERROR")]
785    Error,
786    #[doc(alias = "GST_LEVEL_WARNING")]
787    Warning,
788    #[doc(alias = "GST_LEVEL_FIXME")]
789    Fixme,
790    #[doc(alias = "GST_LEVEL_INFO")]
791    Info,
792    #[doc(alias = "GST_LEVEL_DEBUG")]
793    Debug,
794    #[doc(alias = "GST_LEVEL_LOG")]
795    Log,
796    #[doc(alias = "GST_LEVEL_TRACE")]
797    Trace,
798    #[doc(alias = "GST_LEVEL_MEMDUMP")]
799    Memdump,
800    #[doc(hidden)]
801    __Unknown(i32),
802}
803
804impl DebugLevel {
805    pub fn name<'a>(self) -> &'a GStr {
806        unsafe {
807            GStr::from_ptr(
808                ffi::gst_debug_level_get_name(self.into_glib())
809                    .as_ref()
810                    .expect("gst_debug_level_get_name returned NULL"),
811            )
812        }
813    }
814}
815
816impl std::fmt::Display for DebugLevel {
817    #[inline]
818    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
819        f.write_str(&self.name())
820    }
821}
822
823#[doc(hidden)]
824impl IntoGlib for DebugLevel {
825    type GlibType = ffi::GstDebugLevel;
826
827    #[inline]
828    fn into_glib(self) -> ffi::GstDebugLevel {
829        match self {
830            Self::None => ffi::GST_LEVEL_NONE,
831            Self::Error => ffi::GST_LEVEL_ERROR,
832            Self::Warning => ffi::GST_LEVEL_WARNING,
833            Self::Fixme => ffi::GST_LEVEL_FIXME,
834            Self::Info => ffi::GST_LEVEL_INFO,
835            Self::Debug => ffi::GST_LEVEL_DEBUG,
836            Self::Log => ffi::GST_LEVEL_LOG,
837            Self::Trace => ffi::GST_LEVEL_TRACE,
838            Self::Memdump => ffi::GST_LEVEL_MEMDUMP,
839            Self::__Unknown(value) => value,
840        }
841    }
842}
843
844#[doc(hidden)]
845impl FromGlib<ffi::GstDebugLevel> for DebugLevel {
846    #[inline]
847    unsafe fn from_glib(value: ffi::GstDebugLevel) -> Self {
848        skip_assert_initialized!();
849
850        match value {
851            ffi::GST_LEVEL_NONE => Self::None,
852            ffi::GST_LEVEL_ERROR => Self::Error,
853            ffi::GST_LEVEL_WARNING => Self::Warning,
854            ffi::GST_LEVEL_FIXME => Self::Fixme,
855            ffi::GST_LEVEL_INFO => Self::Info,
856            ffi::GST_LEVEL_DEBUG => Self::Debug,
857            ffi::GST_LEVEL_LOG => Self::Log,
858            ffi::GST_LEVEL_TRACE => Self::Trace,
859            ffi::GST_LEVEL_MEMDUMP => Self::Memdump,
860            value => Self::__Unknown(value),
861        }
862    }
863}
864
865impl StaticType for DebugLevel {
866    #[inline]
867    #[doc(alias = "gst_debug_level_get_type")]
868    fn static_type() -> glib::Type {
869        unsafe { from_glib(ffi::gst_debug_level_get_type()) }
870    }
871}
872
873impl glib::HasParamSpec for DebugLevel {
874    type ParamSpec = glib::ParamSpecEnum;
875    type SetValue = Self;
876    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
877
878    fn param_spec_builder() -> Self::BuilderFn {
879        Self::ParamSpec::builder_with_default
880    }
881}
882
883impl glib::value::ValueType for DebugLevel {
884    type Type = Self;
885}
886
887unsafe impl<'a> glib::value::FromValue<'a> for DebugLevel {
888    type Checker = glib::value::GenericValueTypeChecker<Self>;
889
890    #[inline]
891    unsafe fn from_value(value: &'a glib::Value) -> Self {
892        skip_assert_initialized!();
893        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
894    }
895}
896
897impl ToValue for DebugLevel {
898    #[inline]
899    fn to_value(&self) -> glib::Value {
900        let mut value = glib::Value::for_value_type::<Self>();
901        unsafe {
902            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
903        }
904        value
905    }
906
907    #[inline]
908    fn value_type(&self) -> glib::Type {
909        Self::static_type()
910    }
911}
912
913impl From<DebugLevel> for glib::Value {
914    #[inline]
915    fn from(v: DebugLevel) -> Self {
916        skip_assert_initialized!();
917        ToValue::to_value(&v)
918    }
919}
920
921#[derive(Debug, PartialEq, Eq, Hash, Clone, Copy)]
922#[non_exhaustive]
923#[doc(alias = "GstEventType")]
924pub enum EventType {
925    #[doc(alias = "GST_EVENT_UNKNOWN")]
926    Unknown,
927    #[doc(alias = "GST_EVENT_FLUSH_START")]
928    FlushStart,
929    #[doc(alias = "GST_EVENT_FLUSH_STOP")]
930    FlushStop,
931    #[doc(alias = "GST_EVENT_STREAM_START")]
932    StreamStart,
933    #[doc(alias = "GST_EVENT_CAPS")]
934    Caps,
935    #[doc(alias = "GST_EVENT_SEGMENT")]
936    Segment,
937    #[doc(alias = "GST_EVENT_STREAM_COLLECTION")]
938    StreamCollection,
939    #[doc(alias = "GST_EVENT_TAG")]
940    Tag,
941    #[doc(alias = "GST_EVENT_BUFFERSIZE")]
942    Buffersize,
943    #[doc(alias = "GST_EVENT_SINK_MESSAGE")]
944    SinkMessage,
945    #[doc(alias = "GST_EVENT_STREAM_GROUP_DONE")]
946    StreamGroupDone,
947    #[doc(alias = "GST_EVENT_EOS")]
948    Eos,
949    #[doc(alias = "GST_EVENT_TOC")]
950    Toc,
951    #[doc(alias = "GST_EVENT_PROTECTION")]
952    Protection,
953    #[doc(alias = "GST_EVENT_SEGMENT_DONE")]
954    SegmentDone,
955    #[doc(alias = "GST_EVENT_GAP")]
956    Gap,
957    #[cfg(feature = "v1_18")]
958    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
959    #[doc(alias = "GST_EVENT_INSTANT_RATE_CHANGE")]
960    InstantRateChange,
961    #[doc(alias = "GST_EVENT_QOS")]
962    Qos,
963    #[doc(alias = "GST_EVENT_SEEK")]
964    Seek,
965    #[doc(alias = "GST_EVENT_NAVIGATION")]
966    Navigation,
967    #[doc(alias = "GST_EVENT_LATENCY")]
968    Latency,
969    #[doc(alias = "GST_EVENT_STEP")]
970    Step,
971    #[doc(alias = "GST_EVENT_RECONFIGURE")]
972    Reconfigure,
973    #[doc(alias = "GST_EVENT_TOC_SELECT")]
974    TocSelect,
975    #[doc(alias = "GST_EVENT_SELECT_STREAMS")]
976    SelectStreams,
977    #[cfg(feature = "v1_18")]
978    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
979    #[doc(alias = "GST_EVENT_INSTANT_RATE_SYNC_TIME")]
980    InstantRateSyncTime,
981    #[doc(alias = "GST_EVENT_CUSTOM_UPSTREAM")]
982    CustomUpstream,
983    #[doc(alias = "GST_EVENT_CUSTOM_DOWNSTREAM")]
984    CustomDownstream,
985    #[doc(alias = "GST_EVENT_CUSTOM_DOWNSTREAM_OOB")]
986    CustomDownstreamOob,
987    #[doc(alias = "GST_EVENT_CUSTOM_DOWNSTREAM_STICKY")]
988    CustomDownstreamSticky,
989    #[doc(alias = "GST_EVENT_CUSTOM_BOTH")]
990    CustomBoth,
991    #[doc(alias = "GST_EVENT_CUSTOM_BOTH_OOB")]
992    CustomBothOob,
993    #[doc(hidden)]
994    __Unknown(i32),
995}
996
997impl EventType {
998    #[doc(alias = "gst_event_type_get_flags")]
999    #[doc(alias = "get_flags")]
1000    pub fn flags(self) -> EventTypeFlags {
1001        assert_initialized_main_thread!();
1002        unsafe { from_glib(ffi::gst_event_type_get_flags(self.into_glib())) }
1003    }
1004
1005    pub fn name<'a>(self) -> &'a GStr {
1006        unsafe {
1007            GStr::from_ptr(
1008                ffi::gst_event_type_get_name(self.into_glib())
1009                    .as_ref()
1010                    .expect("gst_event_type_get_name returned NULL"),
1011            )
1012        }
1013    }
1014
1015    #[doc(alias = "gst_event_type_to_quark")]
1016    pub fn to_quark(self) -> glib::Quark {
1017        assert_initialized_main_thread!();
1018        unsafe { from_glib(ffi::gst_event_type_to_quark(self.into_glib())) }
1019    }
1020}
1021
1022impl std::fmt::Display for EventType {
1023    #[inline]
1024    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
1025        f.write_str(&self.name())
1026    }
1027}
1028
1029#[doc(hidden)]
1030impl IntoGlib for EventType {
1031    type GlibType = ffi::GstEventType;
1032
1033    fn into_glib(self) -> ffi::GstEventType {
1034        match self {
1035            Self::Unknown => ffi::GST_EVENT_UNKNOWN,
1036            Self::FlushStart => ffi::GST_EVENT_FLUSH_START,
1037            Self::FlushStop => ffi::GST_EVENT_FLUSH_STOP,
1038            Self::StreamStart => ffi::GST_EVENT_STREAM_START,
1039            Self::Caps => ffi::GST_EVENT_CAPS,
1040            Self::Segment => ffi::GST_EVENT_SEGMENT,
1041            Self::StreamCollection => ffi::GST_EVENT_STREAM_COLLECTION,
1042            Self::Tag => ffi::GST_EVENT_TAG,
1043            Self::Buffersize => ffi::GST_EVENT_BUFFERSIZE,
1044            Self::SinkMessage => ffi::GST_EVENT_SINK_MESSAGE,
1045            Self::StreamGroupDone => ffi::GST_EVENT_STREAM_GROUP_DONE,
1046            Self::Eos => ffi::GST_EVENT_EOS,
1047            Self::Toc => ffi::GST_EVENT_TOC,
1048            Self::Protection => ffi::GST_EVENT_PROTECTION,
1049            Self::SegmentDone => ffi::GST_EVENT_SEGMENT_DONE,
1050            Self::Gap => ffi::GST_EVENT_GAP,
1051            #[cfg(feature = "v1_18")]
1052            Self::InstantRateChange => ffi::GST_EVENT_INSTANT_RATE_CHANGE,
1053            Self::Qos => ffi::GST_EVENT_QOS,
1054            Self::Seek => ffi::GST_EVENT_SEEK,
1055            Self::Navigation => ffi::GST_EVENT_NAVIGATION,
1056            Self::Latency => ffi::GST_EVENT_LATENCY,
1057            Self::Step => ffi::GST_EVENT_STEP,
1058            Self::Reconfigure => ffi::GST_EVENT_RECONFIGURE,
1059            Self::TocSelect => ffi::GST_EVENT_TOC_SELECT,
1060            Self::SelectStreams => ffi::GST_EVENT_SELECT_STREAMS,
1061            #[cfg(feature = "v1_18")]
1062            Self::InstantRateSyncTime => ffi::GST_EVENT_INSTANT_RATE_SYNC_TIME,
1063            Self::CustomUpstream => ffi::GST_EVENT_CUSTOM_UPSTREAM,
1064            Self::CustomDownstream => ffi::GST_EVENT_CUSTOM_DOWNSTREAM,
1065            Self::CustomDownstreamOob => ffi::GST_EVENT_CUSTOM_DOWNSTREAM_OOB,
1066            Self::CustomDownstreamSticky => ffi::GST_EVENT_CUSTOM_DOWNSTREAM_STICKY,
1067            Self::CustomBoth => ffi::GST_EVENT_CUSTOM_BOTH,
1068            Self::CustomBothOob => ffi::GST_EVENT_CUSTOM_BOTH_OOB,
1069            Self::__Unknown(value) => value,
1070        }
1071    }
1072}
1073
1074#[doc(hidden)]
1075impl FromGlib<ffi::GstEventType> for EventType {
1076    unsafe fn from_glib(value: ffi::GstEventType) -> Self {
1077        skip_assert_initialized!();
1078
1079        match value {
1080            ffi::GST_EVENT_UNKNOWN => Self::Unknown,
1081            ffi::GST_EVENT_FLUSH_START => Self::FlushStart,
1082            ffi::GST_EVENT_FLUSH_STOP => Self::FlushStop,
1083            ffi::GST_EVENT_STREAM_START => Self::StreamStart,
1084            ffi::GST_EVENT_CAPS => Self::Caps,
1085            ffi::GST_EVENT_SEGMENT => Self::Segment,
1086            ffi::GST_EVENT_STREAM_COLLECTION => Self::StreamCollection,
1087            ffi::GST_EVENT_TAG => Self::Tag,
1088            ffi::GST_EVENT_BUFFERSIZE => Self::Buffersize,
1089            ffi::GST_EVENT_SINK_MESSAGE => Self::SinkMessage,
1090            ffi::GST_EVENT_STREAM_GROUP_DONE => Self::StreamGroupDone,
1091            ffi::GST_EVENT_EOS => Self::Eos,
1092            ffi::GST_EVENT_TOC => Self::Toc,
1093            ffi::GST_EVENT_PROTECTION => Self::Protection,
1094            ffi::GST_EVENT_SEGMENT_DONE => Self::SegmentDone,
1095            ffi::GST_EVENT_GAP => Self::Gap,
1096            #[cfg(feature = "v1_18")]
1097            ffi::GST_EVENT_INSTANT_RATE_CHANGE => Self::InstantRateChange,
1098            ffi::GST_EVENT_QOS => Self::Qos,
1099            ffi::GST_EVENT_SEEK => Self::Seek,
1100            ffi::GST_EVENT_NAVIGATION => Self::Navigation,
1101            ffi::GST_EVENT_LATENCY => Self::Latency,
1102            ffi::GST_EVENT_STEP => Self::Step,
1103            ffi::GST_EVENT_RECONFIGURE => Self::Reconfigure,
1104            ffi::GST_EVENT_TOC_SELECT => Self::TocSelect,
1105            ffi::GST_EVENT_SELECT_STREAMS => Self::SelectStreams,
1106            #[cfg(feature = "v1_18")]
1107            ffi::GST_EVENT_INSTANT_RATE_SYNC_TIME => Self::InstantRateSyncTime,
1108            ffi::GST_EVENT_CUSTOM_UPSTREAM => Self::CustomUpstream,
1109            ffi::GST_EVENT_CUSTOM_DOWNSTREAM => Self::CustomDownstream,
1110            ffi::GST_EVENT_CUSTOM_DOWNSTREAM_OOB => Self::CustomDownstreamOob,
1111            ffi::GST_EVENT_CUSTOM_DOWNSTREAM_STICKY => Self::CustomDownstreamSticky,
1112            ffi::GST_EVENT_CUSTOM_BOTH => Self::CustomBoth,
1113            ffi::GST_EVENT_CUSTOM_BOTH_OOB => Self::CustomBothOob,
1114            value => Self::__Unknown(value),
1115        }
1116    }
1117}
1118
1119impl StaticType for EventType {
1120    #[inline]
1121    #[doc(alias = "gst_event_type_get_type")]
1122    fn static_type() -> glib::Type {
1123        unsafe { from_glib(ffi::gst_event_type_get_type()) }
1124    }
1125}
1126
1127impl glib::HasParamSpec for EventType {
1128    type ParamSpec = glib::ParamSpecEnum;
1129    type SetValue = Self;
1130    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1131
1132    fn param_spec_builder() -> Self::BuilderFn {
1133        Self::ParamSpec::builder_with_default
1134    }
1135}
1136
1137impl glib::value::ValueType for EventType {
1138    type Type = Self;
1139}
1140
1141unsafe impl<'a> glib::value::FromValue<'a> for EventType {
1142    type Checker = glib::value::GenericValueTypeChecker<Self>;
1143
1144    #[inline]
1145    unsafe fn from_value(value: &'a glib::Value) -> Self {
1146        skip_assert_initialized!();
1147        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1148    }
1149}
1150
1151impl ToValue for EventType {
1152    #[inline]
1153    fn to_value(&self) -> glib::Value {
1154        let mut value = glib::Value::for_value_type::<Self>();
1155        unsafe {
1156            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1157        }
1158        value
1159    }
1160
1161    #[inline]
1162    fn value_type(&self) -> glib::Type {
1163        Self::static_type()
1164    }
1165}
1166
1167impl From<EventType> for glib::Value {
1168    #[inline]
1169    fn from(v: EventType) -> Self {
1170        skip_assert_initialized!();
1171        ToValue::to_value(&v)
1172    }
1173}
1174
1175#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1176#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Clone, Copy)]
1177#[non_exhaustive]
1178#[doc(alias = "GstFormat")]
1179pub enum Format {
1180    #[doc(alias = "GST_FORMAT_UNDEFINED")]
1181    Undefined,
1182    #[doc(alias = "GST_FORMAT_DEFAULT")]
1183    Default,
1184    #[doc(alias = "GST_FORMAT_BYTES")]
1185    Bytes,
1186    #[doc(alias = "GST_FORMAT_TIME")]
1187    Time,
1188    #[doc(alias = "GST_FORMAT_BUFFERS")]
1189    Buffers,
1190    #[doc(alias = "GST_FORMAT_PERCENT")]
1191    Percent,
1192    #[doc(hidden)]
1193    __Unknown(i32),
1194}
1195
1196impl Format {
1197    #[doc(alias = "gst_format_get_by_nick")]
1198    #[doc(alias = "get_by_nick")]
1199    pub fn by_nick(nick: &str) -> Format {
1200        assert_initialized_main_thread!();
1201        unsafe { from_glib(ffi::gst_format_get_by_nick(nick.to_glib_none().0)) }
1202    }
1203
1204    //#[doc(alias = "gst_format_get_details")]
1205    //#[doc(alias = "get_details")]
1206    //pub fn details(self) -> /*Ignored*/Option<FormatDefinition> {
1207    //    unsafe { TODO: call ffi:gst_format_get_details() }
1208    //}
1209
1210    #[doc(alias = "gst_format_get_name")]
1211    #[doc(alias = "get_name")]
1212    pub fn name(self) -> Option<glib::GString> {
1213        assert_initialized_main_thread!();
1214        unsafe { from_glib_none(ffi::gst_format_get_name(self.into_glib())) }
1215    }
1216
1217    //#[doc(alias = "gst_format_iterate_definitions")]
1218    //pub fn iterate_definitions() -> /*Ignored*/Iterator {
1219    //    unsafe { TODO: call ffi:gst_format_iterate_definitions() }
1220    //}
1221
1222    #[doc(alias = "gst_format_to_quark")]
1223    pub fn to_quark(self) -> glib::Quark {
1224        assert_initialized_main_thread!();
1225        unsafe { from_glib(ffi::gst_format_to_quark(self.into_glib())) }
1226    }
1227}
1228
1229#[doc(hidden)]
1230impl IntoGlib for Format {
1231    type GlibType = ffi::GstFormat;
1232
1233    #[inline]
1234    fn into_glib(self) -> ffi::GstFormat {
1235        match self {
1236            Self::Undefined => ffi::GST_FORMAT_UNDEFINED,
1237            Self::Default => ffi::GST_FORMAT_DEFAULT,
1238            Self::Bytes => ffi::GST_FORMAT_BYTES,
1239            Self::Time => ffi::GST_FORMAT_TIME,
1240            Self::Buffers => ffi::GST_FORMAT_BUFFERS,
1241            Self::Percent => ffi::GST_FORMAT_PERCENT,
1242            Self::__Unknown(value) => value,
1243        }
1244    }
1245}
1246
1247#[doc(hidden)]
1248impl FromGlib<ffi::GstFormat> for Format {
1249    #[inline]
1250    unsafe fn from_glib(value: ffi::GstFormat) -> Self {
1251        skip_assert_initialized!();
1252
1253        match value {
1254            ffi::GST_FORMAT_UNDEFINED => Self::Undefined,
1255            ffi::GST_FORMAT_DEFAULT => Self::Default,
1256            ffi::GST_FORMAT_BYTES => Self::Bytes,
1257            ffi::GST_FORMAT_TIME => Self::Time,
1258            ffi::GST_FORMAT_BUFFERS => Self::Buffers,
1259            ffi::GST_FORMAT_PERCENT => Self::Percent,
1260            value => Self::__Unknown(value),
1261        }
1262    }
1263}
1264
1265impl StaticType for Format {
1266    #[inline]
1267    #[doc(alias = "gst_format_get_type")]
1268    fn static_type() -> glib::Type {
1269        unsafe { from_glib(ffi::gst_format_get_type()) }
1270    }
1271}
1272
1273impl glib::HasParamSpec for Format {
1274    type ParamSpec = glib::ParamSpecEnum;
1275    type SetValue = Self;
1276    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1277
1278    fn param_spec_builder() -> Self::BuilderFn {
1279        Self::ParamSpec::builder_with_default
1280    }
1281}
1282
1283impl glib::value::ValueType for Format {
1284    type Type = Self;
1285}
1286
1287unsafe impl<'a> glib::value::FromValue<'a> for Format {
1288    type Checker = glib::value::GenericValueTypeChecker<Self>;
1289
1290    #[inline]
1291    unsafe fn from_value(value: &'a glib::Value) -> Self {
1292        skip_assert_initialized!();
1293        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1294    }
1295}
1296
1297impl ToValue for Format {
1298    #[inline]
1299    fn to_value(&self) -> glib::Value {
1300        let mut value = glib::Value::for_value_type::<Self>();
1301        unsafe {
1302            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1303        }
1304        value
1305    }
1306
1307    #[inline]
1308    fn value_type(&self) -> glib::Type {
1309        Self::static_type()
1310    }
1311}
1312
1313impl From<Format> for glib::Value {
1314    #[inline]
1315    fn from(v: Format) -> Self {
1316        skip_assert_initialized!();
1317        ToValue::to_value(&v)
1318    }
1319}
1320
1321#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1322#[non_exhaustive]
1323#[doc(alias = "GstLibraryError")]
1324pub enum LibraryError {
1325    #[doc(alias = "GST_LIBRARY_ERROR_FAILED")]
1326    Failed,
1327    #[doc(alias = "GST_LIBRARY_ERROR_TOO_LAZY")]
1328    TooLazy,
1329    #[doc(alias = "GST_LIBRARY_ERROR_INIT")]
1330    Init,
1331    #[doc(alias = "GST_LIBRARY_ERROR_SHUTDOWN")]
1332    Shutdown,
1333    #[doc(alias = "GST_LIBRARY_ERROR_SETTINGS")]
1334    Settings,
1335    #[doc(alias = "GST_LIBRARY_ERROR_ENCODE")]
1336    Encode,
1337    #[doc(hidden)]
1338    __Unknown(i32),
1339}
1340
1341#[doc(hidden)]
1342impl IntoGlib for LibraryError {
1343    type GlibType = ffi::GstLibraryError;
1344
1345    #[inline]
1346    fn into_glib(self) -> ffi::GstLibraryError {
1347        match self {
1348            Self::Failed => ffi::GST_LIBRARY_ERROR_FAILED,
1349            Self::TooLazy => ffi::GST_LIBRARY_ERROR_TOO_LAZY,
1350            Self::Init => ffi::GST_LIBRARY_ERROR_INIT,
1351            Self::Shutdown => ffi::GST_LIBRARY_ERROR_SHUTDOWN,
1352            Self::Settings => ffi::GST_LIBRARY_ERROR_SETTINGS,
1353            Self::Encode => ffi::GST_LIBRARY_ERROR_ENCODE,
1354            Self::__Unknown(value) => value,
1355        }
1356    }
1357}
1358
1359#[doc(hidden)]
1360impl FromGlib<ffi::GstLibraryError> for LibraryError {
1361    #[inline]
1362    unsafe fn from_glib(value: ffi::GstLibraryError) -> Self {
1363        skip_assert_initialized!();
1364
1365        match value {
1366            ffi::GST_LIBRARY_ERROR_FAILED => Self::Failed,
1367            ffi::GST_LIBRARY_ERROR_TOO_LAZY => Self::TooLazy,
1368            ffi::GST_LIBRARY_ERROR_INIT => Self::Init,
1369            ffi::GST_LIBRARY_ERROR_SHUTDOWN => Self::Shutdown,
1370            ffi::GST_LIBRARY_ERROR_SETTINGS => Self::Settings,
1371            ffi::GST_LIBRARY_ERROR_ENCODE => Self::Encode,
1372            value => Self::__Unknown(value),
1373        }
1374    }
1375}
1376
1377impl glib::error::ErrorDomain for LibraryError {
1378    #[inline]
1379    fn domain() -> glib::Quark {
1380        skip_assert_initialized!();
1381
1382        unsafe { from_glib(ffi::gst_library_error_quark()) }
1383    }
1384
1385    #[inline]
1386    fn code(self) -> i32 {
1387        self.into_glib()
1388    }
1389
1390    #[inline]
1391    #[allow(clippy::match_single_binding)]
1392    fn from(code: i32) -> Option<Self> {
1393        skip_assert_initialized!();
1394        match unsafe { from_glib(code) } {
1395            Self::__Unknown(_) => Some(Self::Failed),
1396            value => Some(value),
1397        }
1398    }
1399}
1400
1401impl StaticType for LibraryError {
1402    #[inline]
1403    #[doc(alias = "gst_library_error_get_type")]
1404    fn static_type() -> glib::Type {
1405        unsafe { from_glib(ffi::gst_library_error_get_type()) }
1406    }
1407}
1408
1409impl glib::HasParamSpec for LibraryError {
1410    type ParamSpec = glib::ParamSpecEnum;
1411    type SetValue = Self;
1412    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1413
1414    fn param_spec_builder() -> Self::BuilderFn {
1415        Self::ParamSpec::builder_with_default
1416    }
1417}
1418
1419impl glib::value::ValueType for LibraryError {
1420    type Type = Self;
1421}
1422
1423unsafe impl<'a> glib::value::FromValue<'a> for LibraryError {
1424    type Checker = glib::value::GenericValueTypeChecker<Self>;
1425
1426    #[inline]
1427    unsafe fn from_value(value: &'a glib::Value) -> Self {
1428        skip_assert_initialized!();
1429        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1430    }
1431}
1432
1433impl ToValue for LibraryError {
1434    #[inline]
1435    fn to_value(&self) -> glib::Value {
1436        let mut value = glib::Value::for_value_type::<Self>();
1437        unsafe {
1438            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1439        }
1440        value
1441    }
1442
1443    #[inline]
1444    fn value_type(&self) -> glib::Type {
1445        Self::static_type()
1446    }
1447}
1448
1449impl From<LibraryError> for glib::Value {
1450    #[inline]
1451    fn from(v: LibraryError) -> Self {
1452        skip_assert_initialized!();
1453        ToValue::to_value(&v)
1454    }
1455}
1456
1457#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1458#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Clone, Copy)]
1459#[repr(i32)]
1460#[doc(alias = "GstPadDirection")]
1461pub enum PadDirection {
1462    #[doc(alias = "GST_PAD_UNKNOWN")]
1463    Unknown = ffi::GST_PAD_UNKNOWN,
1464    #[doc(alias = "GST_PAD_SRC")]
1465    Src = ffi::GST_PAD_SRC,
1466    #[doc(alias = "GST_PAD_SINK")]
1467    Sink = ffi::GST_PAD_SINK,
1468}
1469
1470#[doc(hidden)]
1471impl IntoGlib for PadDirection {
1472    type GlibType = ffi::GstPadDirection;
1473
1474    #[inline]
1475    fn into_glib(self) -> ffi::GstPadDirection {
1476        self as ffi::GstPadDirection
1477    }
1478}
1479
1480#[doc(hidden)]
1481impl FromGlib<ffi::GstPadDirection> for PadDirection {
1482    #[inline]
1483    unsafe fn from_glib(value: ffi::GstPadDirection) -> Self {
1484        skip_assert_initialized!();
1485
1486        debug_assert!([ffi::GST_PAD_UNKNOWN, ffi::GST_PAD_SRC, ffi::GST_PAD_SINK].contains(&value));
1487        std::mem::transmute(value)
1488    }
1489}
1490
1491impl StaticType for PadDirection {
1492    #[inline]
1493    #[doc(alias = "gst_pad_direction_get_type")]
1494    fn static_type() -> glib::Type {
1495        unsafe { from_glib(ffi::gst_pad_direction_get_type()) }
1496    }
1497}
1498
1499impl glib::HasParamSpec for PadDirection {
1500    type ParamSpec = glib::ParamSpecEnum;
1501    type SetValue = Self;
1502    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1503
1504    fn param_spec_builder() -> Self::BuilderFn {
1505        Self::ParamSpec::builder_with_default
1506    }
1507}
1508
1509impl glib::value::ValueType for PadDirection {
1510    type Type = Self;
1511}
1512
1513unsafe impl<'a> glib::value::FromValue<'a> for PadDirection {
1514    type Checker = glib::value::GenericValueTypeChecker<Self>;
1515
1516    #[inline]
1517    unsafe fn from_value(value: &'a glib::Value) -> Self {
1518        skip_assert_initialized!();
1519        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1520    }
1521}
1522
1523impl ToValue for PadDirection {
1524    #[inline]
1525    fn to_value(&self) -> glib::Value {
1526        let mut value = glib::Value::for_value_type::<Self>();
1527        unsafe {
1528            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1529        }
1530        value
1531    }
1532
1533    #[inline]
1534    fn value_type(&self) -> glib::Type {
1535        Self::static_type()
1536    }
1537}
1538
1539impl From<PadDirection> for glib::Value {
1540    #[inline]
1541    fn from(v: PadDirection) -> Self {
1542        skip_assert_initialized!();
1543        ToValue::to_value(&v)
1544    }
1545}
1546
1547#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1548#[repr(i32)]
1549#[doc(alias = "GstPadMode")]
1550pub enum PadMode {
1551    #[doc(alias = "GST_PAD_MODE_NONE")]
1552    None = ffi::GST_PAD_MODE_NONE,
1553    #[doc(alias = "GST_PAD_MODE_PUSH")]
1554    Push = ffi::GST_PAD_MODE_PUSH,
1555    #[doc(alias = "GST_PAD_MODE_PULL")]
1556    Pull = ffi::GST_PAD_MODE_PULL,
1557}
1558
1559impl PadMode {
1560    pub fn name<'a>(self) -> &'a GStr {
1561        unsafe {
1562            GStr::from_ptr(
1563                ffi::gst_pad_mode_get_name(self.into_glib())
1564                    .as_ref()
1565                    .expect("gst_pad_mode_get_name returned NULL"),
1566            )
1567        }
1568    }
1569}
1570
1571impl std::fmt::Display for PadMode {
1572    #[inline]
1573    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
1574        f.write_str(&self.name())
1575    }
1576}
1577
1578#[doc(hidden)]
1579impl IntoGlib for PadMode {
1580    type GlibType = ffi::GstPadMode;
1581
1582    #[inline]
1583    fn into_glib(self) -> ffi::GstPadMode {
1584        self as ffi::GstPadMode
1585    }
1586}
1587
1588#[doc(hidden)]
1589impl FromGlib<ffi::GstPadMode> for PadMode {
1590    #[inline]
1591    unsafe fn from_glib(value: ffi::GstPadMode) -> Self {
1592        skip_assert_initialized!();
1593
1594        debug_assert!([
1595            ffi::GST_PAD_MODE_NONE,
1596            ffi::GST_PAD_MODE_PUSH,
1597            ffi::GST_PAD_MODE_PULL
1598        ]
1599        .contains(&value));
1600        std::mem::transmute(value)
1601    }
1602}
1603
1604impl StaticType for PadMode {
1605    #[inline]
1606    #[doc(alias = "gst_pad_mode_get_type")]
1607    fn static_type() -> glib::Type {
1608        unsafe { from_glib(ffi::gst_pad_mode_get_type()) }
1609    }
1610}
1611
1612impl glib::HasParamSpec for PadMode {
1613    type ParamSpec = glib::ParamSpecEnum;
1614    type SetValue = Self;
1615    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1616
1617    fn param_spec_builder() -> Self::BuilderFn {
1618        Self::ParamSpec::builder_with_default
1619    }
1620}
1621
1622impl glib::value::ValueType for PadMode {
1623    type Type = Self;
1624}
1625
1626unsafe impl<'a> glib::value::FromValue<'a> for PadMode {
1627    type Checker = glib::value::GenericValueTypeChecker<Self>;
1628
1629    #[inline]
1630    unsafe fn from_value(value: &'a glib::Value) -> Self {
1631        skip_assert_initialized!();
1632        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1633    }
1634}
1635
1636impl ToValue for PadMode {
1637    #[inline]
1638    fn to_value(&self) -> glib::Value {
1639        let mut value = glib::Value::for_value_type::<Self>();
1640        unsafe {
1641            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1642        }
1643        value
1644    }
1645
1646    #[inline]
1647    fn value_type(&self) -> glib::Type {
1648        Self::static_type()
1649    }
1650}
1651
1652impl From<PadMode> for glib::Value {
1653    #[inline]
1654    fn from(v: PadMode) -> Self {
1655        skip_assert_initialized!();
1656        ToValue::to_value(&v)
1657    }
1658}
1659
1660#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1661#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Clone, Copy)]
1662#[repr(i32)]
1663#[doc(alias = "GstPadPresence")]
1664pub enum PadPresence {
1665    #[doc(alias = "GST_PAD_ALWAYS")]
1666    Always = ffi::GST_PAD_ALWAYS,
1667    #[doc(alias = "GST_PAD_SOMETIMES")]
1668    Sometimes = ffi::GST_PAD_SOMETIMES,
1669    #[doc(alias = "GST_PAD_REQUEST")]
1670    Request = ffi::GST_PAD_REQUEST,
1671}
1672
1673#[doc(hidden)]
1674impl IntoGlib for PadPresence {
1675    type GlibType = ffi::GstPadPresence;
1676
1677    #[inline]
1678    fn into_glib(self) -> ffi::GstPadPresence {
1679        self as ffi::GstPadPresence
1680    }
1681}
1682
1683#[doc(hidden)]
1684impl FromGlib<ffi::GstPadPresence> for PadPresence {
1685    #[inline]
1686    unsafe fn from_glib(value: ffi::GstPadPresence) -> Self {
1687        skip_assert_initialized!();
1688
1689        debug_assert!([
1690            ffi::GST_PAD_ALWAYS,
1691            ffi::GST_PAD_SOMETIMES,
1692            ffi::GST_PAD_REQUEST
1693        ]
1694        .contains(&value));
1695        std::mem::transmute(value)
1696    }
1697}
1698
1699impl StaticType for PadPresence {
1700    #[inline]
1701    #[doc(alias = "gst_pad_presence_get_type")]
1702    fn static_type() -> glib::Type {
1703        unsafe { from_glib(ffi::gst_pad_presence_get_type()) }
1704    }
1705}
1706
1707impl glib::HasParamSpec for PadPresence {
1708    type ParamSpec = glib::ParamSpecEnum;
1709    type SetValue = Self;
1710    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1711
1712    fn param_spec_builder() -> Self::BuilderFn {
1713        Self::ParamSpec::builder_with_default
1714    }
1715}
1716
1717impl glib::value::ValueType for PadPresence {
1718    type Type = Self;
1719}
1720
1721unsafe impl<'a> glib::value::FromValue<'a> for PadPresence {
1722    type Checker = glib::value::GenericValueTypeChecker<Self>;
1723
1724    #[inline]
1725    unsafe fn from_value(value: &'a glib::Value) -> Self {
1726        skip_assert_initialized!();
1727        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1728    }
1729}
1730
1731impl ToValue for PadPresence {
1732    #[inline]
1733    fn to_value(&self) -> glib::Value {
1734        let mut value = glib::Value::for_value_type::<Self>();
1735        unsafe {
1736            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1737        }
1738        value
1739    }
1740
1741    #[inline]
1742    fn value_type(&self) -> glib::Type {
1743        Self::static_type()
1744    }
1745}
1746
1747impl From<PadPresence> for glib::Value {
1748    #[inline]
1749    fn from(v: PadPresence) -> Self {
1750        skip_assert_initialized!();
1751        ToValue::to_value(&v)
1752    }
1753}
1754
1755#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1756#[repr(i32)]
1757#[doc(alias = "GstPadProbeReturn")]
1758pub enum PadProbeReturn {
1759    #[doc(alias = "GST_PAD_PROBE_DROP")]
1760    Drop = ffi::GST_PAD_PROBE_DROP,
1761    #[doc(alias = "GST_PAD_PROBE_OK")]
1762    Ok = ffi::GST_PAD_PROBE_OK,
1763    #[doc(alias = "GST_PAD_PROBE_REMOVE")]
1764    Remove = ffi::GST_PAD_PROBE_REMOVE,
1765    #[doc(alias = "GST_PAD_PROBE_PASS")]
1766    Pass = ffi::GST_PAD_PROBE_PASS,
1767    #[doc(alias = "GST_PAD_PROBE_HANDLED")]
1768    Handled = ffi::GST_PAD_PROBE_HANDLED,
1769}
1770
1771#[doc(hidden)]
1772impl IntoGlib for PadProbeReturn {
1773    type GlibType = ffi::GstPadProbeReturn;
1774
1775    #[inline]
1776    fn into_glib(self) -> ffi::GstPadProbeReturn {
1777        self as ffi::GstPadProbeReturn
1778    }
1779}
1780
1781#[doc(hidden)]
1782impl FromGlib<ffi::GstPadProbeReturn> for PadProbeReturn {
1783    #[inline]
1784    unsafe fn from_glib(value: ffi::GstPadProbeReturn) -> Self {
1785        skip_assert_initialized!();
1786
1787        debug_assert!([
1788            ffi::GST_PAD_PROBE_DROP,
1789            ffi::GST_PAD_PROBE_OK,
1790            ffi::GST_PAD_PROBE_REMOVE,
1791            ffi::GST_PAD_PROBE_PASS,
1792            ffi::GST_PAD_PROBE_HANDLED
1793        ]
1794        .contains(&value));
1795        std::mem::transmute(value)
1796    }
1797}
1798
1799impl StaticType for PadProbeReturn {
1800    #[inline]
1801    #[doc(alias = "gst_pad_probe_return_get_type")]
1802    fn static_type() -> glib::Type {
1803        unsafe { from_glib(ffi::gst_pad_probe_return_get_type()) }
1804    }
1805}
1806
1807impl glib::HasParamSpec for PadProbeReturn {
1808    type ParamSpec = glib::ParamSpecEnum;
1809    type SetValue = Self;
1810    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1811
1812    fn param_spec_builder() -> Self::BuilderFn {
1813        Self::ParamSpec::builder_with_default
1814    }
1815}
1816
1817impl glib::value::ValueType for PadProbeReturn {
1818    type Type = Self;
1819}
1820
1821unsafe impl<'a> glib::value::FromValue<'a> for PadProbeReturn {
1822    type Checker = glib::value::GenericValueTypeChecker<Self>;
1823
1824    #[inline]
1825    unsafe fn from_value(value: &'a glib::Value) -> Self {
1826        skip_assert_initialized!();
1827        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1828    }
1829}
1830
1831impl ToValue for PadProbeReturn {
1832    #[inline]
1833    fn to_value(&self) -> glib::Value {
1834        let mut value = glib::Value::for_value_type::<Self>();
1835        unsafe {
1836            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1837        }
1838        value
1839    }
1840
1841    #[inline]
1842    fn value_type(&self) -> glib::Type {
1843        Self::static_type()
1844    }
1845}
1846
1847impl From<PadProbeReturn> for glib::Value {
1848    #[inline]
1849    fn from(v: PadProbeReturn) -> Self {
1850        skip_assert_initialized!();
1851        ToValue::to_value(&v)
1852    }
1853}
1854
1855#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1856#[non_exhaustive]
1857#[doc(alias = "GstParseError")]
1858pub enum ParseError {
1859    #[doc(alias = "GST_PARSE_ERROR_SYNTAX")]
1860    Syntax,
1861    #[doc(alias = "GST_PARSE_ERROR_NO_SUCH_ELEMENT")]
1862    NoSuchElement,
1863    #[doc(alias = "GST_PARSE_ERROR_NO_SUCH_PROPERTY")]
1864    NoSuchProperty,
1865    #[doc(alias = "GST_PARSE_ERROR_LINK")]
1866    Link,
1867    #[doc(alias = "GST_PARSE_ERROR_COULD_NOT_SET_PROPERTY")]
1868    CouldNotSetProperty,
1869    #[doc(alias = "GST_PARSE_ERROR_EMPTY_BIN")]
1870    EmptyBin,
1871    #[doc(alias = "GST_PARSE_ERROR_EMPTY")]
1872    Empty,
1873    #[doc(alias = "GST_PARSE_ERROR_DELAYED_LINK")]
1874    DelayedLink,
1875    #[doc(hidden)]
1876    __Unknown(i32),
1877}
1878
1879#[doc(hidden)]
1880impl IntoGlib for ParseError {
1881    type GlibType = ffi::GstParseError;
1882
1883    #[inline]
1884    fn into_glib(self) -> ffi::GstParseError {
1885        match self {
1886            Self::Syntax => ffi::GST_PARSE_ERROR_SYNTAX,
1887            Self::NoSuchElement => ffi::GST_PARSE_ERROR_NO_SUCH_ELEMENT,
1888            Self::NoSuchProperty => ffi::GST_PARSE_ERROR_NO_SUCH_PROPERTY,
1889            Self::Link => ffi::GST_PARSE_ERROR_LINK,
1890            Self::CouldNotSetProperty => ffi::GST_PARSE_ERROR_COULD_NOT_SET_PROPERTY,
1891            Self::EmptyBin => ffi::GST_PARSE_ERROR_EMPTY_BIN,
1892            Self::Empty => ffi::GST_PARSE_ERROR_EMPTY,
1893            Self::DelayedLink => ffi::GST_PARSE_ERROR_DELAYED_LINK,
1894            Self::__Unknown(value) => value,
1895        }
1896    }
1897}
1898
1899#[doc(hidden)]
1900impl FromGlib<ffi::GstParseError> for ParseError {
1901    #[inline]
1902    unsafe fn from_glib(value: ffi::GstParseError) -> Self {
1903        skip_assert_initialized!();
1904
1905        match value {
1906            ffi::GST_PARSE_ERROR_SYNTAX => Self::Syntax,
1907            ffi::GST_PARSE_ERROR_NO_SUCH_ELEMENT => Self::NoSuchElement,
1908            ffi::GST_PARSE_ERROR_NO_SUCH_PROPERTY => Self::NoSuchProperty,
1909            ffi::GST_PARSE_ERROR_LINK => Self::Link,
1910            ffi::GST_PARSE_ERROR_COULD_NOT_SET_PROPERTY => Self::CouldNotSetProperty,
1911            ffi::GST_PARSE_ERROR_EMPTY_BIN => Self::EmptyBin,
1912            ffi::GST_PARSE_ERROR_EMPTY => Self::Empty,
1913            ffi::GST_PARSE_ERROR_DELAYED_LINK => Self::DelayedLink,
1914            value => Self::__Unknown(value),
1915        }
1916    }
1917}
1918
1919impl glib::error::ErrorDomain for ParseError {
1920    #[inline]
1921    fn domain() -> glib::Quark {
1922        skip_assert_initialized!();
1923
1924        unsafe { from_glib(ffi::gst_parse_error_quark()) }
1925    }
1926
1927    #[inline]
1928    fn code(self) -> i32 {
1929        self.into_glib()
1930    }
1931
1932    #[inline]
1933    #[allow(clippy::match_single_binding)]
1934    fn from(code: i32) -> Option<Self> {
1935        skip_assert_initialized!();
1936        match unsafe { from_glib(code) } {
1937            value => Some(value),
1938        }
1939    }
1940}
1941
1942impl StaticType for ParseError {
1943    #[inline]
1944    #[doc(alias = "gst_parse_error_get_type")]
1945    fn static_type() -> glib::Type {
1946        unsafe { from_glib(ffi::gst_parse_error_get_type()) }
1947    }
1948}
1949
1950impl glib::HasParamSpec for ParseError {
1951    type ParamSpec = glib::ParamSpecEnum;
1952    type SetValue = Self;
1953    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1954
1955    fn param_spec_builder() -> Self::BuilderFn {
1956        Self::ParamSpec::builder_with_default
1957    }
1958}
1959
1960impl glib::value::ValueType for ParseError {
1961    type Type = Self;
1962}
1963
1964unsafe impl<'a> glib::value::FromValue<'a> for ParseError {
1965    type Checker = glib::value::GenericValueTypeChecker<Self>;
1966
1967    #[inline]
1968    unsafe fn from_value(value: &'a glib::Value) -> Self {
1969        skip_assert_initialized!();
1970        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1971    }
1972}
1973
1974impl ToValue for ParseError {
1975    #[inline]
1976    fn to_value(&self) -> glib::Value {
1977        let mut value = glib::Value::for_value_type::<Self>();
1978        unsafe {
1979            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1980        }
1981        value
1982    }
1983
1984    #[inline]
1985    fn value_type(&self) -> glib::Type {
1986        Self::static_type()
1987    }
1988}
1989
1990impl From<ParseError> for glib::Value {
1991    #[inline]
1992    fn from(v: ParseError) -> Self {
1993        skip_assert_initialized!();
1994        ToValue::to_value(&v)
1995    }
1996}
1997
1998#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1999#[non_exhaustive]
2000#[doc(alias = "GstPluginError")]
2001pub enum PluginError {
2002    #[doc(alias = "GST_PLUGIN_ERROR_MODULE")]
2003    Module,
2004    #[doc(alias = "GST_PLUGIN_ERROR_DEPENDENCIES")]
2005    Dependencies,
2006    #[doc(alias = "GST_PLUGIN_ERROR_NAME_MISMATCH")]
2007    NameMismatch,
2008    #[doc(hidden)]
2009    __Unknown(i32),
2010}
2011
2012#[doc(hidden)]
2013impl IntoGlib for PluginError {
2014    type GlibType = ffi::GstPluginError;
2015
2016    #[inline]
2017    fn into_glib(self) -> ffi::GstPluginError {
2018        match self {
2019            Self::Module => ffi::GST_PLUGIN_ERROR_MODULE,
2020            Self::Dependencies => ffi::GST_PLUGIN_ERROR_DEPENDENCIES,
2021            Self::NameMismatch => ffi::GST_PLUGIN_ERROR_NAME_MISMATCH,
2022            Self::__Unknown(value) => value,
2023        }
2024    }
2025}
2026
2027#[doc(hidden)]
2028impl FromGlib<ffi::GstPluginError> for PluginError {
2029    #[inline]
2030    unsafe fn from_glib(value: ffi::GstPluginError) -> Self {
2031        skip_assert_initialized!();
2032
2033        match value {
2034            ffi::GST_PLUGIN_ERROR_MODULE => Self::Module,
2035            ffi::GST_PLUGIN_ERROR_DEPENDENCIES => Self::Dependencies,
2036            ffi::GST_PLUGIN_ERROR_NAME_MISMATCH => Self::NameMismatch,
2037            value => Self::__Unknown(value),
2038        }
2039    }
2040}
2041
2042impl glib::error::ErrorDomain for PluginError {
2043    #[inline]
2044    fn domain() -> glib::Quark {
2045        skip_assert_initialized!();
2046
2047        unsafe { from_glib(ffi::gst_plugin_error_quark()) }
2048    }
2049
2050    #[inline]
2051    fn code(self) -> i32 {
2052        self.into_glib()
2053    }
2054
2055    #[inline]
2056    #[allow(clippy::match_single_binding)]
2057    fn from(code: i32) -> Option<Self> {
2058        skip_assert_initialized!();
2059        match unsafe { from_glib(code) } {
2060            value => Some(value),
2061        }
2062    }
2063}
2064
2065impl StaticType for PluginError {
2066    #[inline]
2067    #[doc(alias = "gst_plugin_error_get_type")]
2068    fn static_type() -> glib::Type {
2069        unsafe { from_glib(ffi::gst_plugin_error_get_type()) }
2070    }
2071}
2072
2073impl glib::HasParamSpec for PluginError {
2074    type ParamSpec = glib::ParamSpecEnum;
2075    type SetValue = Self;
2076    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2077
2078    fn param_spec_builder() -> Self::BuilderFn {
2079        Self::ParamSpec::builder_with_default
2080    }
2081}
2082
2083impl glib::value::ValueType for PluginError {
2084    type Type = Self;
2085}
2086
2087unsafe impl<'a> glib::value::FromValue<'a> for PluginError {
2088    type Checker = glib::value::GenericValueTypeChecker<Self>;
2089
2090    #[inline]
2091    unsafe fn from_value(value: &'a glib::Value) -> Self {
2092        skip_assert_initialized!();
2093        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2094    }
2095}
2096
2097impl ToValue for PluginError {
2098    #[inline]
2099    fn to_value(&self) -> glib::Value {
2100        let mut value = glib::Value::for_value_type::<Self>();
2101        unsafe {
2102            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2103        }
2104        value
2105    }
2106
2107    #[inline]
2108    fn value_type(&self) -> glib::Type {
2109        Self::static_type()
2110    }
2111}
2112
2113impl From<PluginError> for glib::Value {
2114    #[inline]
2115    fn from(v: PluginError) -> Self {
2116        skip_assert_initialized!();
2117        ToValue::to_value(&v)
2118    }
2119}
2120
2121#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2122#[non_exhaustive]
2123#[doc(alias = "GstProgressType")]
2124pub enum ProgressType {
2125    #[doc(alias = "GST_PROGRESS_TYPE_START")]
2126    Start,
2127    #[doc(alias = "GST_PROGRESS_TYPE_CONTINUE")]
2128    Continue,
2129    #[doc(alias = "GST_PROGRESS_TYPE_COMPLETE")]
2130    Complete,
2131    #[doc(alias = "GST_PROGRESS_TYPE_CANCELED")]
2132    Canceled,
2133    #[doc(alias = "GST_PROGRESS_TYPE_ERROR")]
2134    Error,
2135    #[doc(hidden)]
2136    __Unknown(i32),
2137}
2138
2139#[doc(hidden)]
2140impl IntoGlib for ProgressType {
2141    type GlibType = ffi::GstProgressType;
2142
2143    #[inline]
2144    fn into_glib(self) -> ffi::GstProgressType {
2145        match self {
2146            Self::Start => ffi::GST_PROGRESS_TYPE_START,
2147            Self::Continue => ffi::GST_PROGRESS_TYPE_CONTINUE,
2148            Self::Complete => ffi::GST_PROGRESS_TYPE_COMPLETE,
2149            Self::Canceled => ffi::GST_PROGRESS_TYPE_CANCELED,
2150            Self::Error => ffi::GST_PROGRESS_TYPE_ERROR,
2151            Self::__Unknown(value) => value,
2152        }
2153    }
2154}
2155
2156#[doc(hidden)]
2157impl FromGlib<ffi::GstProgressType> for ProgressType {
2158    #[inline]
2159    unsafe fn from_glib(value: ffi::GstProgressType) -> Self {
2160        skip_assert_initialized!();
2161
2162        match value {
2163            ffi::GST_PROGRESS_TYPE_START => Self::Start,
2164            ffi::GST_PROGRESS_TYPE_CONTINUE => Self::Continue,
2165            ffi::GST_PROGRESS_TYPE_COMPLETE => Self::Complete,
2166            ffi::GST_PROGRESS_TYPE_CANCELED => Self::Canceled,
2167            ffi::GST_PROGRESS_TYPE_ERROR => Self::Error,
2168            value => Self::__Unknown(value),
2169        }
2170    }
2171}
2172
2173impl StaticType for ProgressType {
2174    #[inline]
2175    #[doc(alias = "gst_progress_type_get_type")]
2176    fn static_type() -> glib::Type {
2177        unsafe { from_glib(ffi::gst_progress_type_get_type()) }
2178    }
2179}
2180
2181impl glib::HasParamSpec for ProgressType {
2182    type ParamSpec = glib::ParamSpecEnum;
2183    type SetValue = Self;
2184    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2185
2186    fn param_spec_builder() -> Self::BuilderFn {
2187        Self::ParamSpec::builder_with_default
2188    }
2189}
2190
2191impl glib::value::ValueType for ProgressType {
2192    type Type = Self;
2193}
2194
2195unsafe impl<'a> glib::value::FromValue<'a> for ProgressType {
2196    type Checker = glib::value::GenericValueTypeChecker<Self>;
2197
2198    #[inline]
2199    unsafe fn from_value(value: &'a glib::Value) -> Self {
2200        skip_assert_initialized!();
2201        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2202    }
2203}
2204
2205impl ToValue for ProgressType {
2206    #[inline]
2207    fn to_value(&self) -> glib::Value {
2208        let mut value = glib::Value::for_value_type::<Self>();
2209        unsafe {
2210            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2211        }
2212        value
2213    }
2214
2215    #[inline]
2216    fn value_type(&self) -> glib::Type {
2217        Self::static_type()
2218    }
2219}
2220
2221impl From<ProgressType> for glib::Value {
2222    #[inline]
2223    fn from(v: ProgressType) -> Self {
2224        skip_assert_initialized!();
2225        ToValue::to_value(&v)
2226    }
2227}
2228
2229#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2230#[non_exhaustive]
2231#[doc(alias = "GstPromiseResult")]
2232pub enum PromiseResult {
2233    #[doc(alias = "GST_PROMISE_RESULT_PENDING")]
2234    Pending,
2235    #[doc(alias = "GST_PROMISE_RESULT_INTERRUPTED")]
2236    Interrupted,
2237    #[doc(alias = "GST_PROMISE_RESULT_REPLIED")]
2238    Replied,
2239    #[doc(alias = "GST_PROMISE_RESULT_EXPIRED")]
2240    Expired,
2241    #[doc(hidden)]
2242    __Unknown(i32),
2243}
2244
2245#[doc(hidden)]
2246impl IntoGlib for PromiseResult {
2247    type GlibType = ffi::GstPromiseResult;
2248
2249    #[inline]
2250    fn into_glib(self) -> ffi::GstPromiseResult {
2251        match self {
2252            Self::Pending => ffi::GST_PROMISE_RESULT_PENDING,
2253            Self::Interrupted => ffi::GST_PROMISE_RESULT_INTERRUPTED,
2254            Self::Replied => ffi::GST_PROMISE_RESULT_REPLIED,
2255            Self::Expired => ffi::GST_PROMISE_RESULT_EXPIRED,
2256            Self::__Unknown(value) => value,
2257        }
2258    }
2259}
2260
2261#[doc(hidden)]
2262impl FromGlib<ffi::GstPromiseResult> for PromiseResult {
2263    #[inline]
2264    unsafe fn from_glib(value: ffi::GstPromiseResult) -> Self {
2265        skip_assert_initialized!();
2266
2267        match value {
2268            ffi::GST_PROMISE_RESULT_PENDING => Self::Pending,
2269            ffi::GST_PROMISE_RESULT_INTERRUPTED => Self::Interrupted,
2270            ffi::GST_PROMISE_RESULT_REPLIED => Self::Replied,
2271            ffi::GST_PROMISE_RESULT_EXPIRED => Self::Expired,
2272            value => Self::__Unknown(value),
2273        }
2274    }
2275}
2276
2277impl StaticType for PromiseResult {
2278    #[inline]
2279    #[doc(alias = "gst_promise_result_get_type")]
2280    fn static_type() -> glib::Type {
2281        unsafe { from_glib(ffi::gst_promise_result_get_type()) }
2282    }
2283}
2284
2285impl glib::HasParamSpec for PromiseResult {
2286    type ParamSpec = glib::ParamSpecEnum;
2287    type SetValue = Self;
2288    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2289
2290    fn param_spec_builder() -> Self::BuilderFn {
2291        Self::ParamSpec::builder_with_default
2292    }
2293}
2294
2295impl glib::value::ValueType for PromiseResult {
2296    type Type = Self;
2297}
2298
2299unsafe impl<'a> glib::value::FromValue<'a> for PromiseResult {
2300    type Checker = glib::value::GenericValueTypeChecker<Self>;
2301
2302    #[inline]
2303    unsafe fn from_value(value: &'a glib::Value) -> Self {
2304        skip_assert_initialized!();
2305        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2306    }
2307}
2308
2309impl ToValue for PromiseResult {
2310    #[inline]
2311    fn to_value(&self) -> glib::Value {
2312        let mut value = glib::Value::for_value_type::<Self>();
2313        unsafe {
2314            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2315        }
2316        value
2317    }
2318
2319    #[inline]
2320    fn value_type(&self) -> glib::Type {
2321        Self::static_type()
2322    }
2323}
2324
2325impl From<PromiseResult> for glib::Value {
2326    #[inline]
2327    fn from(v: PromiseResult) -> Self {
2328        skip_assert_initialized!();
2329        ToValue::to_value(&v)
2330    }
2331}
2332
2333#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2334#[non_exhaustive]
2335#[doc(alias = "GstQOSType")]
2336pub enum QOSType {
2337    #[doc(alias = "GST_QOS_TYPE_OVERFLOW")]
2338    Overflow,
2339    #[doc(alias = "GST_QOS_TYPE_UNDERFLOW")]
2340    Underflow,
2341    #[doc(alias = "GST_QOS_TYPE_THROTTLE")]
2342    Throttle,
2343    #[doc(hidden)]
2344    __Unknown(i32),
2345}
2346
2347#[doc(hidden)]
2348impl IntoGlib for QOSType {
2349    type GlibType = ffi::GstQOSType;
2350
2351    #[inline]
2352    fn into_glib(self) -> ffi::GstQOSType {
2353        match self {
2354            Self::Overflow => ffi::GST_QOS_TYPE_OVERFLOW,
2355            Self::Underflow => ffi::GST_QOS_TYPE_UNDERFLOW,
2356            Self::Throttle => ffi::GST_QOS_TYPE_THROTTLE,
2357            Self::__Unknown(value) => value,
2358        }
2359    }
2360}
2361
2362#[doc(hidden)]
2363impl FromGlib<ffi::GstQOSType> for QOSType {
2364    #[inline]
2365    unsafe fn from_glib(value: ffi::GstQOSType) -> Self {
2366        skip_assert_initialized!();
2367
2368        match value {
2369            ffi::GST_QOS_TYPE_OVERFLOW => Self::Overflow,
2370            ffi::GST_QOS_TYPE_UNDERFLOW => Self::Underflow,
2371            ffi::GST_QOS_TYPE_THROTTLE => Self::Throttle,
2372            value => Self::__Unknown(value),
2373        }
2374    }
2375}
2376
2377impl StaticType for QOSType {
2378    #[inline]
2379    #[doc(alias = "gst_qos_type_get_type")]
2380    fn static_type() -> glib::Type {
2381        unsafe { from_glib(ffi::gst_qos_type_get_type()) }
2382    }
2383}
2384
2385impl glib::HasParamSpec for QOSType {
2386    type ParamSpec = glib::ParamSpecEnum;
2387    type SetValue = Self;
2388    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2389
2390    fn param_spec_builder() -> Self::BuilderFn {
2391        Self::ParamSpec::builder_with_default
2392    }
2393}
2394
2395impl glib::value::ValueType for QOSType {
2396    type Type = Self;
2397}
2398
2399unsafe impl<'a> glib::value::FromValue<'a> for QOSType {
2400    type Checker = glib::value::GenericValueTypeChecker<Self>;
2401
2402    #[inline]
2403    unsafe fn from_value(value: &'a glib::Value) -> Self {
2404        skip_assert_initialized!();
2405        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2406    }
2407}
2408
2409impl ToValue for QOSType {
2410    #[inline]
2411    fn to_value(&self) -> glib::Value {
2412        let mut value = glib::Value::for_value_type::<Self>();
2413        unsafe {
2414            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2415        }
2416        value
2417    }
2418
2419    #[inline]
2420    fn value_type(&self) -> glib::Type {
2421        Self::static_type()
2422    }
2423}
2424
2425impl From<QOSType> for glib::Value {
2426    #[inline]
2427    fn from(v: QOSType) -> Self {
2428        skip_assert_initialized!();
2429        ToValue::to_value(&v)
2430    }
2431}
2432
2433#[derive(Debug, PartialEq, Eq, Hash, Clone, Copy)]
2434#[non_exhaustive]
2435#[doc(alias = "GstQueryType")]
2436pub enum QueryType {
2437    #[doc(alias = "GST_QUERY_UNKNOWN")]
2438    Unknown,
2439    #[doc(alias = "GST_QUERY_POSITION")]
2440    Position,
2441    #[doc(alias = "GST_QUERY_DURATION")]
2442    Duration,
2443    #[doc(alias = "GST_QUERY_LATENCY")]
2444    Latency,
2445    #[doc(alias = "GST_QUERY_JITTER")]
2446    Jitter,
2447    #[doc(alias = "GST_QUERY_RATE")]
2448    Rate,
2449    #[doc(alias = "GST_QUERY_SEEKING")]
2450    Seeking,
2451    #[doc(alias = "GST_QUERY_SEGMENT")]
2452    Segment,
2453    #[doc(alias = "GST_QUERY_CONVERT")]
2454    Convert,
2455    #[doc(alias = "GST_QUERY_FORMATS")]
2456    Formats,
2457    #[doc(alias = "GST_QUERY_BUFFERING")]
2458    Buffering,
2459    #[doc(alias = "GST_QUERY_CUSTOM")]
2460    Custom,
2461    #[doc(alias = "GST_QUERY_URI")]
2462    Uri,
2463    #[doc(alias = "GST_QUERY_ALLOCATION")]
2464    Allocation,
2465    #[doc(alias = "GST_QUERY_SCHEDULING")]
2466    Scheduling,
2467    #[doc(alias = "GST_QUERY_ACCEPT_CAPS")]
2468    AcceptCaps,
2469    #[doc(alias = "GST_QUERY_CAPS")]
2470    Caps,
2471    #[doc(alias = "GST_QUERY_DRAIN")]
2472    Drain,
2473    #[doc(alias = "GST_QUERY_CONTEXT")]
2474    Context,
2475    #[doc(alias = "GST_QUERY_BITRATE")]
2476    Bitrate,
2477    #[cfg(feature = "v1_22")]
2478    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
2479    #[doc(alias = "GST_QUERY_SELECTABLE")]
2480    Selectable,
2481    #[doc(hidden)]
2482    __Unknown(i32),
2483}
2484
2485impl QueryType {
2486    //#[doc(alias = "gst_query_type_get_flags")]
2487    //#[doc(alias = "get_flags")]
2488    //pub fn flags(self) -> /*Ignored*/QueryTypeFlags {
2489    //    unsafe { TODO: call ffi:gst_query_type_get_flags() }
2490    //}
2491
2492    pub fn name<'a>(self) -> &'a GStr {
2493        unsafe {
2494            GStr::from_ptr(
2495                ffi::gst_query_type_get_name(self.into_glib())
2496                    .as_ref()
2497                    .expect("gst_query_type_get_name returned NULL"),
2498            )
2499        }
2500    }
2501
2502    #[doc(alias = "gst_query_type_to_quark")]
2503    pub fn to_quark(self) -> glib::Quark {
2504        assert_initialized_main_thread!();
2505        unsafe { from_glib(ffi::gst_query_type_to_quark(self.into_glib())) }
2506    }
2507}
2508
2509impl std::fmt::Display for QueryType {
2510    #[inline]
2511    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
2512        f.write_str(&self.name())
2513    }
2514}
2515
2516#[doc(hidden)]
2517impl IntoGlib for QueryType {
2518    type GlibType = ffi::GstQueryType;
2519
2520    fn into_glib(self) -> ffi::GstQueryType {
2521        match self {
2522            Self::Unknown => ffi::GST_QUERY_UNKNOWN,
2523            Self::Position => ffi::GST_QUERY_POSITION,
2524            Self::Duration => ffi::GST_QUERY_DURATION,
2525            Self::Latency => ffi::GST_QUERY_LATENCY,
2526            Self::Jitter => ffi::GST_QUERY_JITTER,
2527            Self::Rate => ffi::GST_QUERY_RATE,
2528            Self::Seeking => ffi::GST_QUERY_SEEKING,
2529            Self::Segment => ffi::GST_QUERY_SEGMENT,
2530            Self::Convert => ffi::GST_QUERY_CONVERT,
2531            Self::Formats => ffi::GST_QUERY_FORMATS,
2532            Self::Buffering => ffi::GST_QUERY_BUFFERING,
2533            Self::Custom => ffi::GST_QUERY_CUSTOM,
2534            Self::Uri => ffi::GST_QUERY_URI,
2535            Self::Allocation => ffi::GST_QUERY_ALLOCATION,
2536            Self::Scheduling => ffi::GST_QUERY_SCHEDULING,
2537            Self::AcceptCaps => ffi::GST_QUERY_ACCEPT_CAPS,
2538            Self::Caps => ffi::GST_QUERY_CAPS,
2539            Self::Drain => ffi::GST_QUERY_DRAIN,
2540            Self::Context => ffi::GST_QUERY_CONTEXT,
2541            Self::Bitrate => ffi::GST_QUERY_BITRATE,
2542            #[cfg(feature = "v1_22")]
2543            Self::Selectable => ffi::GST_QUERY_SELECTABLE,
2544            Self::__Unknown(value) => value,
2545        }
2546    }
2547}
2548
2549#[doc(hidden)]
2550impl FromGlib<ffi::GstQueryType> for QueryType {
2551    unsafe fn from_glib(value: ffi::GstQueryType) -> Self {
2552        skip_assert_initialized!();
2553
2554        match value {
2555            ffi::GST_QUERY_UNKNOWN => Self::Unknown,
2556            ffi::GST_QUERY_POSITION => Self::Position,
2557            ffi::GST_QUERY_DURATION => Self::Duration,
2558            ffi::GST_QUERY_LATENCY => Self::Latency,
2559            ffi::GST_QUERY_JITTER => Self::Jitter,
2560            ffi::GST_QUERY_RATE => Self::Rate,
2561            ffi::GST_QUERY_SEEKING => Self::Seeking,
2562            ffi::GST_QUERY_SEGMENT => Self::Segment,
2563            ffi::GST_QUERY_CONVERT => Self::Convert,
2564            ffi::GST_QUERY_FORMATS => Self::Formats,
2565            ffi::GST_QUERY_BUFFERING => Self::Buffering,
2566            ffi::GST_QUERY_CUSTOM => Self::Custom,
2567            ffi::GST_QUERY_URI => Self::Uri,
2568            ffi::GST_QUERY_ALLOCATION => Self::Allocation,
2569            ffi::GST_QUERY_SCHEDULING => Self::Scheduling,
2570            ffi::GST_QUERY_ACCEPT_CAPS => Self::AcceptCaps,
2571            ffi::GST_QUERY_CAPS => Self::Caps,
2572            ffi::GST_QUERY_DRAIN => Self::Drain,
2573            ffi::GST_QUERY_CONTEXT => Self::Context,
2574            ffi::GST_QUERY_BITRATE => Self::Bitrate,
2575            #[cfg(feature = "v1_22")]
2576            ffi::GST_QUERY_SELECTABLE => Self::Selectable,
2577            value => Self::__Unknown(value),
2578        }
2579    }
2580}
2581
2582impl StaticType for QueryType {
2583    #[inline]
2584    #[doc(alias = "gst_query_type_get_type")]
2585    fn static_type() -> glib::Type {
2586        unsafe { from_glib(ffi::gst_query_type_get_type()) }
2587    }
2588}
2589
2590impl glib::HasParamSpec for QueryType {
2591    type ParamSpec = glib::ParamSpecEnum;
2592    type SetValue = Self;
2593    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2594
2595    fn param_spec_builder() -> Self::BuilderFn {
2596        Self::ParamSpec::builder_with_default
2597    }
2598}
2599
2600impl glib::value::ValueType for QueryType {
2601    type Type = Self;
2602}
2603
2604unsafe impl<'a> glib::value::FromValue<'a> for QueryType {
2605    type Checker = glib::value::GenericValueTypeChecker<Self>;
2606
2607    #[inline]
2608    unsafe fn from_value(value: &'a glib::Value) -> Self {
2609        skip_assert_initialized!();
2610        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2611    }
2612}
2613
2614impl ToValue for QueryType {
2615    #[inline]
2616    fn to_value(&self) -> glib::Value {
2617        let mut value = glib::Value::for_value_type::<Self>();
2618        unsafe {
2619            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2620        }
2621        value
2622    }
2623
2624    #[inline]
2625    fn value_type(&self) -> glib::Type {
2626        Self::static_type()
2627    }
2628}
2629
2630impl From<QueryType> for glib::Value {
2631    #[inline]
2632    fn from(v: QueryType) -> Self {
2633        skip_assert_initialized!();
2634        ToValue::to_value(&v)
2635    }
2636}
2637
2638#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2639#[non_exhaustive]
2640#[doc(alias = "GstResourceError")]
2641pub enum ResourceError {
2642    #[doc(alias = "GST_RESOURCE_ERROR_FAILED")]
2643    Failed,
2644    #[doc(alias = "GST_RESOURCE_ERROR_TOO_LAZY")]
2645    TooLazy,
2646    #[doc(alias = "GST_RESOURCE_ERROR_NOT_FOUND")]
2647    NotFound,
2648    #[doc(alias = "GST_RESOURCE_ERROR_BUSY")]
2649    Busy,
2650    #[doc(alias = "GST_RESOURCE_ERROR_OPEN_READ")]
2651    OpenRead,
2652    #[doc(alias = "GST_RESOURCE_ERROR_OPEN_WRITE")]
2653    OpenWrite,
2654    #[doc(alias = "GST_RESOURCE_ERROR_OPEN_READ_WRITE")]
2655    OpenReadWrite,
2656    #[doc(alias = "GST_RESOURCE_ERROR_CLOSE")]
2657    Close,
2658    #[doc(alias = "GST_RESOURCE_ERROR_READ")]
2659    Read,
2660    #[doc(alias = "GST_RESOURCE_ERROR_WRITE")]
2661    Write,
2662    #[doc(alias = "GST_RESOURCE_ERROR_SEEK")]
2663    Seek,
2664    #[doc(alias = "GST_RESOURCE_ERROR_SYNC")]
2665    Sync,
2666    #[doc(alias = "GST_RESOURCE_ERROR_SETTINGS")]
2667    Settings,
2668    #[doc(alias = "GST_RESOURCE_ERROR_NO_SPACE_LEFT")]
2669    NoSpaceLeft,
2670    #[doc(alias = "GST_RESOURCE_ERROR_NOT_AUTHORIZED")]
2671    NotAuthorized,
2672    #[doc(hidden)]
2673    __Unknown(i32),
2674}
2675
2676#[doc(hidden)]
2677impl IntoGlib for ResourceError {
2678    type GlibType = ffi::GstResourceError;
2679
2680    fn into_glib(self) -> ffi::GstResourceError {
2681        match self {
2682            Self::Failed => ffi::GST_RESOURCE_ERROR_FAILED,
2683            Self::TooLazy => ffi::GST_RESOURCE_ERROR_TOO_LAZY,
2684            Self::NotFound => ffi::GST_RESOURCE_ERROR_NOT_FOUND,
2685            Self::Busy => ffi::GST_RESOURCE_ERROR_BUSY,
2686            Self::OpenRead => ffi::GST_RESOURCE_ERROR_OPEN_READ,
2687            Self::OpenWrite => ffi::GST_RESOURCE_ERROR_OPEN_WRITE,
2688            Self::OpenReadWrite => ffi::GST_RESOURCE_ERROR_OPEN_READ_WRITE,
2689            Self::Close => ffi::GST_RESOURCE_ERROR_CLOSE,
2690            Self::Read => ffi::GST_RESOURCE_ERROR_READ,
2691            Self::Write => ffi::GST_RESOURCE_ERROR_WRITE,
2692            Self::Seek => ffi::GST_RESOURCE_ERROR_SEEK,
2693            Self::Sync => ffi::GST_RESOURCE_ERROR_SYNC,
2694            Self::Settings => ffi::GST_RESOURCE_ERROR_SETTINGS,
2695            Self::NoSpaceLeft => ffi::GST_RESOURCE_ERROR_NO_SPACE_LEFT,
2696            Self::NotAuthorized => ffi::GST_RESOURCE_ERROR_NOT_AUTHORIZED,
2697            Self::__Unknown(value) => value,
2698        }
2699    }
2700}
2701
2702#[doc(hidden)]
2703impl FromGlib<ffi::GstResourceError> for ResourceError {
2704    unsafe fn from_glib(value: ffi::GstResourceError) -> Self {
2705        skip_assert_initialized!();
2706
2707        match value {
2708            ffi::GST_RESOURCE_ERROR_FAILED => Self::Failed,
2709            ffi::GST_RESOURCE_ERROR_TOO_LAZY => Self::TooLazy,
2710            ffi::GST_RESOURCE_ERROR_NOT_FOUND => Self::NotFound,
2711            ffi::GST_RESOURCE_ERROR_BUSY => Self::Busy,
2712            ffi::GST_RESOURCE_ERROR_OPEN_READ => Self::OpenRead,
2713            ffi::GST_RESOURCE_ERROR_OPEN_WRITE => Self::OpenWrite,
2714            ffi::GST_RESOURCE_ERROR_OPEN_READ_WRITE => Self::OpenReadWrite,
2715            ffi::GST_RESOURCE_ERROR_CLOSE => Self::Close,
2716            ffi::GST_RESOURCE_ERROR_READ => Self::Read,
2717            ffi::GST_RESOURCE_ERROR_WRITE => Self::Write,
2718            ffi::GST_RESOURCE_ERROR_SEEK => Self::Seek,
2719            ffi::GST_RESOURCE_ERROR_SYNC => Self::Sync,
2720            ffi::GST_RESOURCE_ERROR_SETTINGS => Self::Settings,
2721            ffi::GST_RESOURCE_ERROR_NO_SPACE_LEFT => Self::NoSpaceLeft,
2722            ffi::GST_RESOURCE_ERROR_NOT_AUTHORIZED => Self::NotAuthorized,
2723            value => Self::__Unknown(value),
2724        }
2725    }
2726}
2727
2728impl glib::error::ErrorDomain for ResourceError {
2729    #[inline]
2730    fn domain() -> glib::Quark {
2731        skip_assert_initialized!();
2732
2733        unsafe { from_glib(ffi::gst_resource_error_quark()) }
2734    }
2735
2736    #[inline]
2737    fn code(self) -> i32 {
2738        self.into_glib()
2739    }
2740
2741    #[inline]
2742    #[allow(clippy::match_single_binding)]
2743    fn from(code: i32) -> Option<Self> {
2744        skip_assert_initialized!();
2745        match unsafe { from_glib(code) } {
2746            Self::__Unknown(_) => Some(Self::Failed),
2747            value => Some(value),
2748        }
2749    }
2750}
2751
2752impl StaticType for ResourceError {
2753    #[inline]
2754    #[doc(alias = "gst_resource_error_get_type")]
2755    fn static_type() -> glib::Type {
2756        unsafe { from_glib(ffi::gst_resource_error_get_type()) }
2757    }
2758}
2759
2760impl glib::HasParamSpec for ResourceError {
2761    type ParamSpec = glib::ParamSpecEnum;
2762    type SetValue = Self;
2763    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2764
2765    fn param_spec_builder() -> Self::BuilderFn {
2766        Self::ParamSpec::builder_with_default
2767    }
2768}
2769
2770impl glib::value::ValueType for ResourceError {
2771    type Type = Self;
2772}
2773
2774unsafe impl<'a> glib::value::FromValue<'a> for ResourceError {
2775    type Checker = glib::value::GenericValueTypeChecker<Self>;
2776
2777    #[inline]
2778    unsafe fn from_value(value: &'a glib::Value) -> Self {
2779        skip_assert_initialized!();
2780        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2781    }
2782}
2783
2784impl ToValue for ResourceError {
2785    #[inline]
2786    fn to_value(&self) -> glib::Value {
2787        let mut value = glib::Value::for_value_type::<Self>();
2788        unsafe {
2789            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2790        }
2791        value
2792    }
2793
2794    #[inline]
2795    fn value_type(&self) -> glib::Type {
2796        Self::static_type()
2797    }
2798}
2799
2800impl From<ResourceError> for glib::Value {
2801    #[inline]
2802    fn from(v: ResourceError) -> Self {
2803        skip_assert_initialized!();
2804        ToValue::to_value(&v)
2805    }
2806}
2807
2808#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2809#[repr(i32)]
2810#[doc(alias = "GstSeekType")]
2811pub enum SeekType {
2812    #[doc(alias = "GST_SEEK_TYPE_NONE")]
2813    None = ffi::GST_SEEK_TYPE_NONE,
2814    #[doc(alias = "GST_SEEK_TYPE_SET")]
2815    Set = ffi::GST_SEEK_TYPE_SET,
2816    #[doc(alias = "GST_SEEK_TYPE_END")]
2817    End = ffi::GST_SEEK_TYPE_END,
2818}
2819
2820#[doc(hidden)]
2821impl IntoGlib for SeekType {
2822    type GlibType = ffi::GstSeekType;
2823
2824    #[inline]
2825    fn into_glib(self) -> ffi::GstSeekType {
2826        self as ffi::GstSeekType
2827    }
2828}
2829
2830#[doc(hidden)]
2831impl FromGlib<ffi::GstSeekType> for SeekType {
2832    #[inline]
2833    unsafe fn from_glib(value: ffi::GstSeekType) -> Self {
2834        skip_assert_initialized!();
2835
2836        debug_assert!([
2837            ffi::GST_SEEK_TYPE_NONE,
2838            ffi::GST_SEEK_TYPE_SET,
2839            ffi::GST_SEEK_TYPE_END
2840        ]
2841        .contains(&value));
2842        std::mem::transmute(value)
2843    }
2844}
2845
2846impl StaticType for SeekType {
2847    #[inline]
2848    #[doc(alias = "gst_seek_type_get_type")]
2849    fn static_type() -> glib::Type {
2850        unsafe { from_glib(ffi::gst_seek_type_get_type()) }
2851    }
2852}
2853
2854impl glib::HasParamSpec for SeekType {
2855    type ParamSpec = glib::ParamSpecEnum;
2856    type SetValue = Self;
2857    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2858
2859    fn param_spec_builder() -> Self::BuilderFn {
2860        Self::ParamSpec::builder_with_default
2861    }
2862}
2863
2864impl glib::value::ValueType for SeekType {
2865    type Type = Self;
2866}
2867
2868unsafe impl<'a> glib::value::FromValue<'a> for SeekType {
2869    type Checker = glib::value::GenericValueTypeChecker<Self>;
2870
2871    #[inline]
2872    unsafe fn from_value(value: &'a glib::Value) -> Self {
2873        skip_assert_initialized!();
2874        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2875    }
2876}
2877
2878impl ToValue for SeekType {
2879    #[inline]
2880    fn to_value(&self) -> glib::Value {
2881        let mut value = glib::Value::for_value_type::<Self>();
2882        unsafe {
2883            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2884        }
2885        value
2886    }
2887
2888    #[inline]
2889    fn value_type(&self) -> glib::Type {
2890        Self::static_type()
2891    }
2892}
2893
2894impl From<SeekType> for glib::Value {
2895    #[inline]
2896    fn from(v: SeekType) -> Self {
2897        skip_assert_initialized!();
2898        ToValue::to_value(&v)
2899    }
2900}
2901
2902#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2903#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Clone, Copy)]
2904#[repr(i32)]
2905#[doc(alias = "GstState")]
2906pub enum State {
2907    #[doc(alias = "GST_STATE_VOID_PENDING")]
2908    VoidPending = ffi::GST_STATE_VOID_PENDING,
2909    #[doc(alias = "GST_STATE_NULL")]
2910    Null = ffi::GST_STATE_NULL,
2911    #[doc(alias = "GST_STATE_READY")]
2912    Ready = ffi::GST_STATE_READY,
2913    #[doc(alias = "GST_STATE_PAUSED")]
2914    Paused = ffi::GST_STATE_PAUSED,
2915    #[doc(alias = "GST_STATE_PLAYING")]
2916    Playing = ffi::GST_STATE_PLAYING,
2917}
2918
2919#[doc(hidden)]
2920impl IntoGlib for State {
2921    type GlibType = ffi::GstState;
2922
2923    #[inline]
2924    fn into_glib(self) -> ffi::GstState {
2925        self as ffi::GstState
2926    }
2927}
2928
2929#[doc(hidden)]
2930impl FromGlib<ffi::GstState> for State {
2931    #[inline]
2932    unsafe fn from_glib(value: ffi::GstState) -> Self {
2933        skip_assert_initialized!();
2934
2935        debug_assert!([
2936            ffi::GST_STATE_VOID_PENDING,
2937            ffi::GST_STATE_NULL,
2938            ffi::GST_STATE_READY,
2939            ffi::GST_STATE_PAUSED,
2940            ffi::GST_STATE_PLAYING
2941        ]
2942        .contains(&value));
2943        std::mem::transmute(value)
2944    }
2945}
2946
2947impl StaticType for State {
2948    #[inline]
2949    #[doc(alias = "gst_state_get_type")]
2950    fn static_type() -> glib::Type {
2951        unsafe { from_glib(ffi::gst_state_get_type()) }
2952    }
2953}
2954
2955impl glib::HasParamSpec for State {
2956    type ParamSpec = glib::ParamSpecEnum;
2957    type SetValue = Self;
2958    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2959
2960    fn param_spec_builder() -> Self::BuilderFn {
2961        Self::ParamSpec::builder_with_default
2962    }
2963}
2964
2965impl glib::value::ValueType for State {
2966    type Type = Self;
2967}
2968
2969unsafe impl<'a> glib::value::FromValue<'a> for State {
2970    type Checker = glib::value::GenericValueTypeChecker<Self>;
2971
2972    #[inline]
2973    unsafe fn from_value(value: &'a glib::Value) -> Self {
2974        skip_assert_initialized!();
2975        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2976    }
2977}
2978
2979impl ToValue for State {
2980    #[inline]
2981    fn to_value(&self) -> glib::Value {
2982        let mut value = glib::Value::for_value_type::<Self>();
2983        unsafe {
2984            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2985        }
2986        value
2987    }
2988
2989    #[inline]
2990    fn value_type(&self) -> glib::Type {
2991        Self::static_type()
2992    }
2993}
2994
2995impl From<State> for glib::Value {
2996    #[inline]
2997    fn from(v: State) -> Self {
2998        skip_assert_initialized!();
2999        ToValue::to_value(&v)
3000    }
3001}
3002
3003#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3004#[repr(i32)]
3005#[doc(alias = "GstStateChange")]
3006pub enum StateChange {
3007    #[doc(alias = "GST_STATE_CHANGE_NULL_TO_READY")]
3008    NullToReady = ffi::GST_STATE_CHANGE_NULL_TO_READY,
3009    #[doc(alias = "GST_STATE_CHANGE_READY_TO_PAUSED")]
3010    ReadyToPaused = ffi::GST_STATE_CHANGE_READY_TO_PAUSED,
3011    #[doc(alias = "GST_STATE_CHANGE_PAUSED_TO_PLAYING")]
3012    PausedToPlaying = ffi::GST_STATE_CHANGE_PAUSED_TO_PLAYING,
3013    #[doc(alias = "GST_STATE_CHANGE_PLAYING_TO_PAUSED")]
3014    PlayingToPaused = ffi::GST_STATE_CHANGE_PLAYING_TO_PAUSED,
3015    #[doc(alias = "GST_STATE_CHANGE_PAUSED_TO_READY")]
3016    PausedToReady = ffi::GST_STATE_CHANGE_PAUSED_TO_READY,
3017    #[doc(alias = "GST_STATE_CHANGE_READY_TO_NULL")]
3018    ReadyToNull = ffi::GST_STATE_CHANGE_READY_TO_NULL,
3019    #[doc(alias = "GST_STATE_CHANGE_NULL_TO_NULL")]
3020    NullToNull = ffi::GST_STATE_CHANGE_NULL_TO_NULL,
3021    #[doc(alias = "GST_STATE_CHANGE_READY_TO_READY")]
3022    ReadyToReady = ffi::GST_STATE_CHANGE_READY_TO_READY,
3023    #[doc(alias = "GST_STATE_CHANGE_PAUSED_TO_PAUSED")]
3024    PausedToPaused = ffi::GST_STATE_CHANGE_PAUSED_TO_PAUSED,
3025    #[doc(alias = "GST_STATE_CHANGE_PLAYING_TO_PLAYING")]
3026    PlayingToPlaying = ffi::GST_STATE_CHANGE_PLAYING_TO_PLAYING,
3027}
3028
3029impl StateChange {
3030    pub fn name<'a>(self) -> &'a GStr {
3031        unsafe {
3032            GStr::from_ptr(
3033                ffi::gst_state_change_get_name(self.into_glib())
3034                    .as_ref()
3035                    .expect("gst_state_change_get_name returned NULL"),
3036            )
3037        }
3038    }
3039}
3040
3041impl std::fmt::Display for StateChange {
3042    #[inline]
3043    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
3044        f.write_str(&self.name())
3045    }
3046}
3047
3048#[doc(hidden)]
3049impl IntoGlib for StateChange {
3050    type GlibType = ffi::GstStateChange;
3051
3052    #[inline]
3053    fn into_glib(self) -> ffi::GstStateChange {
3054        self as ffi::GstStateChange
3055    }
3056}
3057
3058#[doc(hidden)]
3059impl FromGlib<ffi::GstStateChange> for StateChange {
3060    #[inline]
3061    unsafe fn from_glib(value: ffi::GstStateChange) -> Self {
3062        skip_assert_initialized!();
3063
3064        debug_assert!([
3065            ffi::GST_STATE_CHANGE_NULL_TO_READY,
3066            ffi::GST_STATE_CHANGE_READY_TO_PAUSED,
3067            ffi::GST_STATE_CHANGE_PAUSED_TO_PLAYING,
3068            ffi::GST_STATE_CHANGE_PLAYING_TO_PAUSED,
3069            ffi::GST_STATE_CHANGE_PAUSED_TO_READY,
3070            ffi::GST_STATE_CHANGE_READY_TO_NULL,
3071            ffi::GST_STATE_CHANGE_NULL_TO_NULL,
3072            ffi::GST_STATE_CHANGE_READY_TO_READY,
3073            ffi::GST_STATE_CHANGE_PAUSED_TO_PAUSED,
3074            ffi::GST_STATE_CHANGE_PLAYING_TO_PLAYING
3075        ]
3076        .contains(&value));
3077        std::mem::transmute(value)
3078    }
3079}
3080
3081impl StaticType for StateChange {
3082    #[inline]
3083    #[doc(alias = "gst_state_change_get_type")]
3084    fn static_type() -> glib::Type {
3085        unsafe { from_glib(ffi::gst_state_change_get_type()) }
3086    }
3087}
3088
3089impl glib::HasParamSpec for StateChange {
3090    type ParamSpec = glib::ParamSpecEnum;
3091    type SetValue = Self;
3092    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3093
3094    fn param_spec_builder() -> Self::BuilderFn {
3095        Self::ParamSpec::builder_with_default
3096    }
3097}
3098
3099impl glib::value::ValueType for StateChange {
3100    type Type = Self;
3101}
3102
3103unsafe impl<'a> glib::value::FromValue<'a> for StateChange {
3104    type Checker = glib::value::GenericValueTypeChecker<Self>;
3105
3106    #[inline]
3107    unsafe fn from_value(value: &'a glib::Value) -> Self {
3108        skip_assert_initialized!();
3109        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3110    }
3111}
3112
3113impl ToValue for StateChange {
3114    #[inline]
3115    fn to_value(&self) -> glib::Value {
3116        let mut value = glib::Value::for_value_type::<Self>();
3117        unsafe {
3118            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3119        }
3120        value
3121    }
3122
3123    #[inline]
3124    fn value_type(&self) -> glib::Type {
3125        Self::static_type()
3126    }
3127}
3128
3129impl From<StateChange> for glib::Value {
3130    #[inline]
3131    fn from(v: StateChange) -> Self {
3132        skip_assert_initialized!();
3133        ToValue::to_value(&v)
3134    }
3135}
3136
3137#[must_use]
3138#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3139#[repr(i32)]
3140#[doc(alias = "GstStateChangeReturn")]
3141pub enum StateChangeReturn {
3142    #[doc(alias = "GST_STATE_CHANGE_FAILURE")]
3143    Failure = ffi::GST_STATE_CHANGE_FAILURE,
3144    #[doc(alias = "GST_STATE_CHANGE_SUCCESS")]
3145    Success = ffi::GST_STATE_CHANGE_SUCCESS,
3146    #[doc(alias = "GST_STATE_CHANGE_ASYNC")]
3147    Async = ffi::GST_STATE_CHANGE_ASYNC,
3148    #[doc(alias = "GST_STATE_CHANGE_NO_PREROLL")]
3149    NoPreroll = ffi::GST_STATE_CHANGE_NO_PREROLL,
3150}
3151
3152#[doc(hidden)]
3153impl IntoGlib for StateChangeReturn {
3154    type GlibType = ffi::GstStateChangeReturn;
3155
3156    #[inline]
3157    fn into_glib(self) -> ffi::GstStateChangeReturn {
3158        self as ffi::GstStateChangeReturn
3159    }
3160}
3161
3162#[doc(hidden)]
3163impl FromGlib<ffi::GstStateChangeReturn> for StateChangeReturn {
3164    #[inline]
3165    unsafe fn from_glib(value: ffi::GstStateChangeReturn) -> Self {
3166        skip_assert_initialized!();
3167
3168        debug_assert!([
3169            ffi::GST_STATE_CHANGE_FAILURE,
3170            ffi::GST_STATE_CHANGE_SUCCESS,
3171            ffi::GST_STATE_CHANGE_ASYNC,
3172            ffi::GST_STATE_CHANGE_NO_PREROLL
3173        ]
3174        .contains(&value));
3175        std::mem::transmute(value)
3176    }
3177}
3178
3179impl StaticType for StateChangeReturn {
3180    #[inline]
3181    #[doc(alias = "gst_state_change_return_get_type")]
3182    fn static_type() -> glib::Type {
3183        unsafe { from_glib(ffi::gst_state_change_return_get_type()) }
3184    }
3185}
3186
3187impl glib::HasParamSpec for StateChangeReturn {
3188    type ParamSpec = glib::ParamSpecEnum;
3189    type SetValue = Self;
3190    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3191
3192    fn param_spec_builder() -> Self::BuilderFn {
3193        Self::ParamSpec::builder_with_default
3194    }
3195}
3196
3197impl glib::value::ValueType for StateChangeReturn {
3198    type Type = Self;
3199}
3200
3201unsafe impl<'a> glib::value::FromValue<'a> for StateChangeReturn {
3202    type Checker = glib::value::GenericValueTypeChecker<Self>;
3203
3204    #[inline]
3205    unsafe fn from_value(value: &'a glib::Value) -> Self {
3206        skip_assert_initialized!();
3207        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3208    }
3209}
3210
3211impl ToValue for StateChangeReturn {
3212    #[inline]
3213    fn to_value(&self) -> glib::Value {
3214        let mut value = glib::Value::for_value_type::<Self>();
3215        unsafe {
3216            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3217        }
3218        value
3219    }
3220
3221    #[inline]
3222    fn value_type(&self) -> glib::Type {
3223        Self::static_type()
3224    }
3225}
3226
3227impl From<StateChangeReturn> for glib::Value {
3228    #[inline]
3229    fn from(v: StateChangeReturn) -> Self {
3230        skip_assert_initialized!();
3231        ToValue::to_value(&v)
3232    }
3233}
3234
3235#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3236#[non_exhaustive]
3237#[doc(alias = "GstStreamError")]
3238pub enum StreamError {
3239    #[doc(alias = "GST_STREAM_ERROR_FAILED")]
3240    Failed,
3241    #[doc(alias = "GST_STREAM_ERROR_TOO_LAZY")]
3242    TooLazy,
3243    #[doc(alias = "GST_STREAM_ERROR_NOT_IMPLEMENTED")]
3244    NotImplemented,
3245    #[doc(alias = "GST_STREAM_ERROR_TYPE_NOT_FOUND")]
3246    TypeNotFound,
3247    #[doc(alias = "GST_STREAM_ERROR_WRONG_TYPE")]
3248    WrongType,
3249    #[doc(alias = "GST_STREAM_ERROR_CODEC_NOT_FOUND")]
3250    CodecNotFound,
3251    #[doc(alias = "GST_STREAM_ERROR_DECODE")]
3252    Decode,
3253    #[doc(alias = "GST_STREAM_ERROR_ENCODE")]
3254    Encode,
3255    #[doc(alias = "GST_STREAM_ERROR_DEMUX")]
3256    Demux,
3257    #[doc(alias = "GST_STREAM_ERROR_MUX")]
3258    Mux,
3259    #[doc(alias = "GST_STREAM_ERROR_FORMAT")]
3260    Format,
3261    #[doc(alias = "GST_STREAM_ERROR_DECRYPT")]
3262    Decrypt,
3263    #[doc(alias = "GST_STREAM_ERROR_DECRYPT_NOKEY")]
3264    DecryptNokey,
3265    #[doc(hidden)]
3266    __Unknown(i32),
3267}
3268
3269#[doc(hidden)]
3270impl IntoGlib for StreamError {
3271    type GlibType = ffi::GstStreamError;
3272
3273    fn into_glib(self) -> ffi::GstStreamError {
3274        match self {
3275            Self::Failed => ffi::GST_STREAM_ERROR_FAILED,
3276            Self::TooLazy => ffi::GST_STREAM_ERROR_TOO_LAZY,
3277            Self::NotImplemented => ffi::GST_STREAM_ERROR_NOT_IMPLEMENTED,
3278            Self::TypeNotFound => ffi::GST_STREAM_ERROR_TYPE_NOT_FOUND,
3279            Self::WrongType => ffi::GST_STREAM_ERROR_WRONG_TYPE,
3280            Self::CodecNotFound => ffi::GST_STREAM_ERROR_CODEC_NOT_FOUND,
3281            Self::Decode => ffi::GST_STREAM_ERROR_DECODE,
3282            Self::Encode => ffi::GST_STREAM_ERROR_ENCODE,
3283            Self::Demux => ffi::GST_STREAM_ERROR_DEMUX,
3284            Self::Mux => ffi::GST_STREAM_ERROR_MUX,
3285            Self::Format => ffi::GST_STREAM_ERROR_FORMAT,
3286            Self::Decrypt => ffi::GST_STREAM_ERROR_DECRYPT,
3287            Self::DecryptNokey => ffi::GST_STREAM_ERROR_DECRYPT_NOKEY,
3288            Self::__Unknown(value) => value,
3289        }
3290    }
3291}
3292
3293#[doc(hidden)]
3294impl FromGlib<ffi::GstStreamError> for StreamError {
3295    unsafe fn from_glib(value: ffi::GstStreamError) -> Self {
3296        skip_assert_initialized!();
3297
3298        match value {
3299            ffi::GST_STREAM_ERROR_FAILED => Self::Failed,
3300            ffi::GST_STREAM_ERROR_TOO_LAZY => Self::TooLazy,
3301            ffi::GST_STREAM_ERROR_NOT_IMPLEMENTED => Self::NotImplemented,
3302            ffi::GST_STREAM_ERROR_TYPE_NOT_FOUND => Self::TypeNotFound,
3303            ffi::GST_STREAM_ERROR_WRONG_TYPE => Self::WrongType,
3304            ffi::GST_STREAM_ERROR_CODEC_NOT_FOUND => Self::CodecNotFound,
3305            ffi::GST_STREAM_ERROR_DECODE => Self::Decode,
3306            ffi::GST_STREAM_ERROR_ENCODE => Self::Encode,
3307            ffi::GST_STREAM_ERROR_DEMUX => Self::Demux,
3308            ffi::GST_STREAM_ERROR_MUX => Self::Mux,
3309            ffi::GST_STREAM_ERROR_FORMAT => Self::Format,
3310            ffi::GST_STREAM_ERROR_DECRYPT => Self::Decrypt,
3311            ffi::GST_STREAM_ERROR_DECRYPT_NOKEY => Self::DecryptNokey,
3312            value => Self::__Unknown(value),
3313        }
3314    }
3315}
3316
3317impl glib::error::ErrorDomain for StreamError {
3318    #[inline]
3319    fn domain() -> glib::Quark {
3320        skip_assert_initialized!();
3321
3322        unsafe { from_glib(ffi::gst_stream_error_quark()) }
3323    }
3324
3325    #[inline]
3326    fn code(self) -> i32 {
3327        self.into_glib()
3328    }
3329
3330    #[inline]
3331    #[allow(clippy::match_single_binding)]
3332    fn from(code: i32) -> Option<Self> {
3333        skip_assert_initialized!();
3334        match unsafe { from_glib(code) } {
3335            Self::__Unknown(_) => Some(Self::Failed),
3336            value => Some(value),
3337        }
3338    }
3339}
3340
3341impl StaticType for StreamError {
3342    #[inline]
3343    #[doc(alias = "gst_stream_error_get_type")]
3344    fn static_type() -> glib::Type {
3345        unsafe { from_glib(ffi::gst_stream_error_get_type()) }
3346    }
3347}
3348
3349impl glib::HasParamSpec for StreamError {
3350    type ParamSpec = glib::ParamSpecEnum;
3351    type SetValue = Self;
3352    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3353
3354    fn param_spec_builder() -> Self::BuilderFn {
3355        Self::ParamSpec::builder_with_default
3356    }
3357}
3358
3359impl glib::value::ValueType for StreamError {
3360    type Type = Self;
3361}
3362
3363unsafe impl<'a> glib::value::FromValue<'a> for StreamError {
3364    type Checker = glib::value::GenericValueTypeChecker<Self>;
3365
3366    #[inline]
3367    unsafe fn from_value(value: &'a glib::Value) -> Self {
3368        skip_assert_initialized!();
3369        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3370    }
3371}
3372
3373impl ToValue for StreamError {
3374    #[inline]
3375    fn to_value(&self) -> glib::Value {
3376        let mut value = glib::Value::for_value_type::<Self>();
3377        unsafe {
3378            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3379        }
3380        value
3381    }
3382
3383    #[inline]
3384    fn value_type(&self) -> glib::Type {
3385        Self::static_type()
3386    }
3387}
3388
3389impl From<StreamError> for glib::Value {
3390    #[inline]
3391    fn from(v: StreamError) -> Self {
3392        skip_assert_initialized!();
3393        ToValue::to_value(&v)
3394    }
3395}
3396
3397#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3398#[non_exhaustive]
3399#[doc(alias = "GstStreamStatusType")]
3400pub enum StreamStatusType {
3401    #[doc(alias = "GST_STREAM_STATUS_TYPE_CREATE")]
3402    Create,
3403    #[doc(alias = "GST_STREAM_STATUS_TYPE_ENTER")]
3404    Enter,
3405    #[doc(alias = "GST_STREAM_STATUS_TYPE_LEAVE")]
3406    Leave,
3407    #[doc(alias = "GST_STREAM_STATUS_TYPE_DESTROY")]
3408    Destroy,
3409    #[doc(alias = "GST_STREAM_STATUS_TYPE_START")]
3410    Start,
3411    #[doc(alias = "GST_STREAM_STATUS_TYPE_PAUSE")]
3412    Pause,
3413    #[doc(alias = "GST_STREAM_STATUS_TYPE_STOP")]
3414    Stop,
3415    #[doc(hidden)]
3416    __Unknown(i32),
3417}
3418
3419#[doc(hidden)]
3420impl IntoGlib for StreamStatusType {
3421    type GlibType = ffi::GstStreamStatusType;
3422
3423    #[inline]
3424    fn into_glib(self) -> ffi::GstStreamStatusType {
3425        match self {
3426            Self::Create => ffi::GST_STREAM_STATUS_TYPE_CREATE,
3427            Self::Enter => ffi::GST_STREAM_STATUS_TYPE_ENTER,
3428            Self::Leave => ffi::GST_STREAM_STATUS_TYPE_LEAVE,
3429            Self::Destroy => ffi::GST_STREAM_STATUS_TYPE_DESTROY,
3430            Self::Start => ffi::GST_STREAM_STATUS_TYPE_START,
3431            Self::Pause => ffi::GST_STREAM_STATUS_TYPE_PAUSE,
3432            Self::Stop => ffi::GST_STREAM_STATUS_TYPE_STOP,
3433            Self::__Unknown(value) => value,
3434        }
3435    }
3436}
3437
3438#[doc(hidden)]
3439impl FromGlib<ffi::GstStreamStatusType> for StreamStatusType {
3440    #[inline]
3441    unsafe fn from_glib(value: ffi::GstStreamStatusType) -> Self {
3442        skip_assert_initialized!();
3443
3444        match value {
3445            ffi::GST_STREAM_STATUS_TYPE_CREATE => Self::Create,
3446            ffi::GST_STREAM_STATUS_TYPE_ENTER => Self::Enter,
3447            ffi::GST_STREAM_STATUS_TYPE_LEAVE => Self::Leave,
3448            ffi::GST_STREAM_STATUS_TYPE_DESTROY => Self::Destroy,
3449            ffi::GST_STREAM_STATUS_TYPE_START => Self::Start,
3450            ffi::GST_STREAM_STATUS_TYPE_PAUSE => Self::Pause,
3451            ffi::GST_STREAM_STATUS_TYPE_STOP => Self::Stop,
3452            value => Self::__Unknown(value),
3453        }
3454    }
3455}
3456
3457impl StaticType for StreamStatusType {
3458    #[inline]
3459    #[doc(alias = "gst_stream_status_type_get_type")]
3460    fn static_type() -> glib::Type {
3461        unsafe { from_glib(ffi::gst_stream_status_type_get_type()) }
3462    }
3463}
3464
3465impl glib::HasParamSpec for StreamStatusType {
3466    type ParamSpec = glib::ParamSpecEnum;
3467    type SetValue = Self;
3468    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3469
3470    fn param_spec_builder() -> Self::BuilderFn {
3471        Self::ParamSpec::builder_with_default
3472    }
3473}
3474
3475impl glib::value::ValueType for StreamStatusType {
3476    type Type = Self;
3477}
3478
3479unsafe impl<'a> glib::value::FromValue<'a> for StreamStatusType {
3480    type Checker = glib::value::GenericValueTypeChecker<Self>;
3481
3482    #[inline]
3483    unsafe fn from_value(value: &'a glib::Value) -> Self {
3484        skip_assert_initialized!();
3485        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3486    }
3487}
3488
3489impl ToValue for StreamStatusType {
3490    #[inline]
3491    fn to_value(&self) -> glib::Value {
3492        let mut value = glib::Value::for_value_type::<Self>();
3493        unsafe {
3494            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3495        }
3496        value
3497    }
3498
3499    #[inline]
3500    fn value_type(&self) -> glib::Type {
3501        Self::static_type()
3502    }
3503}
3504
3505impl From<StreamStatusType> for glib::Value {
3506    #[inline]
3507    fn from(v: StreamStatusType) -> Self {
3508        skip_assert_initialized!();
3509        ToValue::to_value(&v)
3510    }
3511}
3512
3513#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3514#[non_exhaustive]
3515#[doc(alias = "GstStructureChangeType")]
3516pub enum StructureChangeType {
3517    #[doc(alias = "GST_STRUCTURE_CHANGE_TYPE_PAD_LINK")]
3518    Link,
3519    #[doc(alias = "GST_STRUCTURE_CHANGE_TYPE_PAD_UNLINK")]
3520    Unlink,
3521    #[doc(hidden)]
3522    __Unknown(i32),
3523}
3524
3525#[doc(hidden)]
3526impl IntoGlib for StructureChangeType {
3527    type GlibType = ffi::GstStructureChangeType;
3528
3529    #[inline]
3530    fn into_glib(self) -> ffi::GstStructureChangeType {
3531        match self {
3532            Self::Link => ffi::GST_STRUCTURE_CHANGE_TYPE_PAD_LINK,
3533            Self::Unlink => ffi::GST_STRUCTURE_CHANGE_TYPE_PAD_UNLINK,
3534            Self::__Unknown(value) => value,
3535        }
3536    }
3537}
3538
3539#[doc(hidden)]
3540impl FromGlib<ffi::GstStructureChangeType> for StructureChangeType {
3541    #[inline]
3542    unsafe fn from_glib(value: ffi::GstStructureChangeType) -> Self {
3543        skip_assert_initialized!();
3544
3545        match value {
3546            ffi::GST_STRUCTURE_CHANGE_TYPE_PAD_LINK => Self::Link,
3547            ffi::GST_STRUCTURE_CHANGE_TYPE_PAD_UNLINK => Self::Unlink,
3548            value => Self::__Unknown(value),
3549        }
3550    }
3551}
3552
3553impl StaticType for StructureChangeType {
3554    #[inline]
3555    #[doc(alias = "gst_structure_change_type_get_type")]
3556    fn static_type() -> glib::Type {
3557        unsafe { from_glib(ffi::gst_structure_change_type_get_type()) }
3558    }
3559}
3560
3561impl glib::HasParamSpec for StructureChangeType {
3562    type ParamSpec = glib::ParamSpecEnum;
3563    type SetValue = Self;
3564    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3565
3566    fn param_spec_builder() -> Self::BuilderFn {
3567        Self::ParamSpec::builder_with_default
3568    }
3569}
3570
3571impl glib::value::ValueType for StructureChangeType {
3572    type Type = Self;
3573}
3574
3575unsafe impl<'a> glib::value::FromValue<'a> for StructureChangeType {
3576    type Checker = glib::value::GenericValueTypeChecker<Self>;
3577
3578    #[inline]
3579    unsafe fn from_value(value: &'a glib::Value) -> Self {
3580        skip_assert_initialized!();
3581        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3582    }
3583}
3584
3585impl ToValue for StructureChangeType {
3586    #[inline]
3587    fn to_value(&self) -> glib::Value {
3588        let mut value = glib::Value::for_value_type::<Self>();
3589        unsafe {
3590            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3591        }
3592        value
3593    }
3594
3595    #[inline]
3596    fn value_type(&self) -> glib::Type {
3597        Self::static_type()
3598    }
3599}
3600
3601impl From<StructureChangeType> for glib::Value {
3602    #[inline]
3603    fn from(v: StructureChangeType) -> Self {
3604        skip_assert_initialized!();
3605        ToValue::to_value(&v)
3606    }
3607}
3608
3609#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3610#[non_exhaustive]
3611#[doc(alias = "GstTagFlag")]
3612pub enum TagFlag {
3613    #[doc(alias = "GST_TAG_FLAG_UNDEFINED")]
3614    Undefined,
3615    #[doc(alias = "GST_TAG_FLAG_META")]
3616    Meta,
3617    #[doc(alias = "GST_TAG_FLAG_ENCODED")]
3618    Encoded,
3619    #[doc(alias = "GST_TAG_FLAG_DECODED")]
3620    Decoded,
3621    #[doc(hidden)]
3622    __Unknown(i32),
3623}
3624
3625#[doc(hidden)]
3626impl IntoGlib for TagFlag {
3627    type GlibType = ffi::GstTagFlag;
3628
3629    #[inline]
3630    fn into_glib(self) -> ffi::GstTagFlag {
3631        match self {
3632            Self::Undefined => ffi::GST_TAG_FLAG_UNDEFINED,
3633            Self::Meta => ffi::GST_TAG_FLAG_META,
3634            Self::Encoded => ffi::GST_TAG_FLAG_ENCODED,
3635            Self::Decoded => ffi::GST_TAG_FLAG_DECODED,
3636            Self::__Unknown(value) => value,
3637        }
3638    }
3639}
3640
3641#[doc(hidden)]
3642impl FromGlib<ffi::GstTagFlag> for TagFlag {
3643    #[inline]
3644    unsafe fn from_glib(value: ffi::GstTagFlag) -> Self {
3645        skip_assert_initialized!();
3646
3647        match value {
3648            ffi::GST_TAG_FLAG_UNDEFINED => Self::Undefined,
3649            ffi::GST_TAG_FLAG_META => Self::Meta,
3650            ffi::GST_TAG_FLAG_ENCODED => Self::Encoded,
3651            ffi::GST_TAG_FLAG_DECODED => Self::Decoded,
3652            value => Self::__Unknown(value),
3653        }
3654    }
3655}
3656
3657impl StaticType for TagFlag {
3658    #[inline]
3659    #[doc(alias = "gst_tag_flag_get_type")]
3660    fn static_type() -> glib::Type {
3661        unsafe { from_glib(ffi::gst_tag_flag_get_type()) }
3662    }
3663}
3664
3665impl glib::HasParamSpec for TagFlag {
3666    type ParamSpec = glib::ParamSpecEnum;
3667    type SetValue = Self;
3668    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3669
3670    fn param_spec_builder() -> Self::BuilderFn {
3671        Self::ParamSpec::builder_with_default
3672    }
3673}
3674
3675impl glib::value::ValueType for TagFlag {
3676    type Type = Self;
3677}
3678
3679unsafe impl<'a> glib::value::FromValue<'a> for TagFlag {
3680    type Checker = glib::value::GenericValueTypeChecker<Self>;
3681
3682    #[inline]
3683    unsafe fn from_value(value: &'a glib::Value) -> Self {
3684        skip_assert_initialized!();
3685        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3686    }
3687}
3688
3689impl ToValue for TagFlag {
3690    #[inline]
3691    fn to_value(&self) -> glib::Value {
3692        let mut value = glib::Value::for_value_type::<Self>();
3693        unsafe {
3694            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3695        }
3696        value
3697    }
3698
3699    #[inline]
3700    fn value_type(&self) -> glib::Type {
3701        Self::static_type()
3702    }
3703}
3704
3705impl From<TagFlag> for glib::Value {
3706    #[inline]
3707    fn from(v: TagFlag) -> Self {
3708        skip_assert_initialized!();
3709        ToValue::to_value(&v)
3710    }
3711}
3712
3713#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3714#[non_exhaustive]
3715#[doc(alias = "GstTagMergeMode")]
3716pub enum TagMergeMode {
3717    #[doc(alias = "GST_TAG_MERGE_UNDEFINED")]
3718    Undefined,
3719    #[doc(alias = "GST_TAG_MERGE_REPLACE_ALL")]
3720    ReplaceAll,
3721    #[doc(alias = "GST_TAG_MERGE_REPLACE")]
3722    Replace,
3723    #[doc(alias = "GST_TAG_MERGE_APPEND")]
3724    Append,
3725    #[doc(alias = "GST_TAG_MERGE_PREPEND")]
3726    Prepend,
3727    #[doc(alias = "GST_TAG_MERGE_KEEP")]
3728    Keep,
3729    #[doc(alias = "GST_TAG_MERGE_KEEP_ALL")]
3730    KeepAll,
3731    #[doc(hidden)]
3732    __Unknown(i32),
3733}
3734
3735#[doc(hidden)]
3736impl IntoGlib for TagMergeMode {
3737    type GlibType = ffi::GstTagMergeMode;
3738
3739    #[inline]
3740    fn into_glib(self) -> ffi::GstTagMergeMode {
3741        match self {
3742            Self::Undefined => ffi::GST_TAG_MERGE_UNDEFINED,
3743            Self::ReplaceAll => ffi::GST_TAG_MERGE_REPLACE_ALL,
3744            Self::Replace => ffi::GST_TAG_MERGE_REPLACE,
3745            Self::Append => ffi::GST_TAG_MERGE_APPEND,
3746            Self::Prepend => ffi::GST_TAG_MERGE_PREPEND,
3747            Self::Keep => ffi::GST_TAG_MERGE_KEEP,
3748            Self::KeepAll => ffi::GST_TAG_MERGE_KEEP_ALL,
3749            Self::__Unknown(value) => value,
3750        }
3751    }
3752}
3753
3754#[doc(hidden)]
3755impl FromGlib<ffi::GstTagMergeMode> for TagMergeMode {
3756    #[inline]
3757    unsafe fn from_glib(value: ffi::GstTagMergeMode) -> Self {
3758        skip_assert_initialized!();
3759
3760        match value {
3761            ffi::GST_TAG_MERGE_UNDEFINED => Self::Undefined,
3762            ffi::GST_TAG_MERGE_REPLACE_ALL => Self::ReplaceAll,
3763            ffi::GST_TAG_MERGE_REPLACE => Self::Replace,
3764            ffi::GST_TAG_MERGE_APPEND => Self::Append,
3765            ffi::GST_TAG_MERGE_PREPEND => Self::Prepend,
3766            ffi::GST_TAG_MERGE_KEEP => Self::Keep,
3767            ffi::GST_TAG_MERGE_KEEP_ALL => Self::KeepAll,
3768            value => Self::__Unknown(value),
3769        }
3770    }
3771}
3772
3773impl StaticType for TagMergeMode {
3774    #[inline]
3775    #[doc(alias = "gst_tag_merge_mode_get_type")]
3776    fn static_type() -> glib::Type {
3777        unsafe { from_glib(ffi::gst_tag_merge_mode_get_type()) }
3778    }
3779}
3780
3781impl glib::HasParamSpec for TagMergeMode {
3782    type ParamSpec = glib::ParamSpecEnum;
3783    type SetValue = Self;
3784    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3785
3786    fn param_spec_builder() -> Self::BuilderFn {
3787        Self::ParamSpec::builder_with_default
3788    }
3789}
3790
3791impl glib::value::ValueType for TagMergeMode {
3792    type Type = Self;
3793}
3794
3795unsafe impl<'a> glib::value::FromValue<'a> for TagMergeMode {
3796    type Checker = glib::value::GenericValueTypeChecker<Self>;
3797
3798    #[inline]
3799    unsafe fn from_value(value: &'a glib::Value) -> Self {
3800        skip_assert_initialized!();
3801        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3802    }
3803}
3804
3805impl ToValue for TagMergeMode {
3806    #[inline]
3807    fn to_value(&self) -> glib::Value {
3808        let mut value = glib::Value::for_value_type::<Self>();
3809        unsafe {
3810            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3811        }
3812        value
3813    }
3814
3815    #[inline]
3816    fn value_type(&self) -> glib::Type {
3817        Self::static_type()
3818    }
3819}
3820
3821impl From<TagMergeMode> for glib::Value {
3822    #[inline]
3823    fn from(v: TagMergeMode) -> Self {
3824        skip_assert_initialized!();
3825        ToValue::to_value(&v)
3826    }
3827}
3828
3829#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3830#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Clone, Copy)]
3831#[non_exhaustive]
3832#[doc(alias = "GstTagScope")]
3833pub enum TagScope {
3834    #[doc(alias = "GST_TAG_SCOPE_STREAM")]
3835    Stream,
3836    #[doc(alias = "GST_TAG_SCOPE_GLOBAL")]
3837    Global,
3838    #[doc(hidden)]
3839    __Unknown(i32),
3840}
3841
3842#[doc(hidden)]
3843impl IntoGlib for TagScope {
3844    type GlibType = ffi::GstTagScope;
3845
3846    #[inline]
3847    fn into_glib(self) -> ffi::GstTagScope {
3848        match self {
3849            Self::Stream => ffi::GST_TAG_SCOPE_STREAM,
3850            Self::Global => ffi::GST_TAG_SCOPE_GLOBAL,
3851            Self::__Unknown(value) => value,
3852        }
3853    }
3854}
3855
3856#[doc(hidden)]
3857impl FromGlib<ffi::GstTagScope> for TagScope {
3858    #[inline]
3859    unsafe fn from_glib(value: ffi::GstTagScope) -> Self {
3860        skip_assert_initialized!();
3861
3862        match value {
3863            ffi::GST_TAG_SCOPE_STREAM => Self::Stream,
3864            ffi::GST_TAG_SCOPE_GLOBAL => Self::Global,
3865            value => Self::__Unknown(value),
3866        }
3867    }
3868}
3869
3870impl StaticType for TagScope {
3871    #[inline]
3872    #[doc(alias = "gst_tag_scope_get_type")]
3873    fn static_type() -> glib::Type {
3874        unsafe { from_glib(ffi::gst_tag_scope_get_type()) }
3875    }
3876}
3877
3878impl glib::HasParamSpec for TagScope {
3879    type ParamSpec = glib::ParamSpecEnum;
3880    type SetValue = Self;
3881    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3882
3883    fn param_spec_builder() -> Self::BuilderFn {
3884        Self::ParamSpec::builder_with_default
3885    }
3886}
3887
3888impl glib::value::ValueType for TagScope {
3889    type Type = Self;
3890}
3891
3892unsafe impl<'a> glib::value::FromValue<'a> for TagScope {
3893    type Checker = glib::value::GenericValueTypeChecker<Self>;
3894
3895    #[inline]
3896    unsafe fn from_value(value: &'a glib::Value) -> Self {
3897        skip_assert_initialized!();
3898        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3899    }
3900}
3901
3902impl ToValue for TagScope {
3903    #[inline]
3904    fn to_value(&self) -> glib::Value {
3905        let mut value = glib::Value::for_value_type::<Self>();
3906        unsafe {
3907            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3908        }
3909        value
3910    }
3911
3912    #[inline]
3913    fn value_type(&self) -> glib::Type {
3914        Self::static_type()
3915    }
3916}
3917
3918impl From<TagScope> for glib::Value {
3919    #[inline]
3920    fn from(v: TagScope) -> Self {
3921        skip_assert_initialized!();
3922        ToValue::to_value(&v)
3923    }
3924}
3925
3926#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3927#[non_exhaustive]
3928#[doc(alias = "GstTaskState")]
3929pub enum TaskState {
3930    #[doc(alias = "GST_TASK_STARTED")]
3931    Started,
3932    #[doc(alias = "GST_TASK_STOPPED")]
3933    Stopped,
3934    #[doc(alias = "GST_TASK_PAUSED")]
3935    Paused,
3936    #[doc(hidden)]
3937    __Unknown(i32),
3938}
3939
3940#[doc(hidden)]
3941impl IntoGlib for TaskState {
3942    type GlibType = ffi::GstTaskState;
3943
3944    #[inline]
3945    fn into_glib(self) -> ffi::GstTaskState {
3946        match self {
3947            Self::Started => ffi::GST_TASK_STARTED,
3948            Self::Stopped => ffi::GST_TASK_STOPPED,
3949            Self::Paused => ffi::GST_TASK_PAUSED,
3950            Self::__Unknown(value) => value,
3951        }
3952    }
3953}
3954
3955#[doc(hidden)]
3956impl FromGlib<ffi::GstTaskState> for TaskState {
3957    #[inline]
3958    unsafe fn from_glib(value: ffi::GstTaskState) -> Self {
3959        skip_assert_initialized!();
3960
3961        match value {
3962            ffi::GST_TASK_STARTED => Self::Started,
3963            ffi::GST_TASK_STOPPED => Self::Stopped,
3964            ffi::GST_TASK_PAUSED => Self::Paused,
3965            value => Self::__Unknown(value),
3966        }
3967    }
3968}
3969
3970impl StaticType for TaskState {
3971    #[inline]
3972    #[doc(alias = "gst_task_state_get_type")]
3973    fn static_type() -> glib::Type {
3974        unsafe { from_glib(ffi::gst_task_state_get_type()) }
3975    }
3976}
3977
3978impl glib::HasParamSpec for TaskState {
3979    type ParamSpec = glib::ParamSpecEnum;
3980    type SetValue = Self;
3981    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3982
3983    fn param_spec_builder() -> Self::BuilderFn {
3984        Self::ParamSpec::builder_with_default
3985    }
3986}
3987
3988impl glib::value::ValueType for TaskState {
3989    type Type = Self;
3990}
3991
3992unsafe impl<'a> glib::value::FromValue<'a> for TaskState {
3993    type Checker = glib::value::GenericValueTypeChecker<Self>;
3994
3995    #[inline]
3996    unsafe fn from_value(value: &'a glib::Value) -> Self {
3997        skip_assert_initialized!();
3998        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3999    }
4000}
4001
4002impl ToValue for TaskState {
4003    #[inline]
4004    fn to_value(&self) -> glib::Value {
4005        let mut value = glib::Value::for_value_type::<Self>();
4006        unsafe {
4007            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4008        }
4009        value
4010    }
4011
4012    #[inline]
4013    fn value_type(&self) -> glib::Type {
4014        Self::static_type()
4015    }
4016}
4017
4018impl From<TaskState> for glib::Value {
4019    #[inline]
4020    fn from(v: TaskState) -> Self {
4021        skip_assert_initialized!();
4022        ToValue::to_value(&v)
4023    }
4024}
4025
4026#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4027#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Clone, Copy)]
4028#[non_exhaustive]
4029#[doc(alias = "GstTocEntryType")]
4030pub enum TocEntryType {
4031    #[doc(alias = "GST_TOC_ENTRY_TYPE_ANGLE")]
4032    Angle,
4033    #[doc(alias = "GST_TOC_ENTRY_TYPE_VERSION")]
4034    Version,
4035    #[doc(alias = "GST_TOC_ENTRY_TYPE_EDITION")]
4036    Edition,
4037    #[doc(alias = "GST_TOC_ENTRY_TYPE_INVALID")]
4038    Invalid,
4039    #[doc(alias = "GST_TOC_ENTRY_TYPE_TITLE")]
4040    Title,
4041    #[doc(alias = "GST_TOC_ENTRY_TYPE_TRACK")]
4042    Track,
4043    #[doc(alias = "GST_TOC_ENTRY_TYPE_CHAPTER")]
4044    Chapter,
4045    #[doc(hidden)]
4046    __Unknown(i32),
4047}
4048
4049impl TocEntryType {
4050    pub fn nick<'a>(self) -> &'a GStr {
4051        unsafe {
4052            GStr::from_ptr(
4053                ffi::gst_toc_entry_type_get_nick(self.into_glib())
4054                    .as_ref()
4055                    .expect("gst_toc_entry_type_get_nick returned NULL"),
4056            )
4057        }
4058    }
4059}
4060
4061#[doc(hidden)]
4062impl IntoGlib for TocEntryType {
4063    type GlibType = ffi::GstTocEntryType;
4064
4065    #[inline]
4066    fn into_glib(self) -> ffi::GstTocEntryType {
4067        match self {
4068            Self::Angle => ffi::GST_TOC_ENTRY_TYPE_ANGLE,
4069            Self::Version => ffi::GST_TOC_ENTRY_TYPE_VERSION,
4070            Self::Edition => ffi::GST_TOC_ENTRY_TYPE_EDITION,
4071            Self::Invalid => ffi::GST_TOC_ENTRY_TYPE_INVALID,
4072            Self::Title => ffi::GST_TOC_ENTRY_TYPE_TITLE,
4073            Self::Track => ffi::GST_TOC_ENTRY_TYPE_TRACK,
4074            Self::Chapter => ffi::GST_TOC_ENTRY_TYPE_CHAPTER,
4075            Self::__Unknown(value) => value,
4076        }
4077    }
4078}
4079
4080#[doc(hidden)]
4081impl FromGlib<ffi::GstTocEntryType> for TocEntryType {
4082    #[inline]
4083    unsafe fn from_glib(value: ffi::GstTocEntryType) -> Self {
4084        skip_assert_initialized!();
4085
4086        match value {
4087            ffi::GST_TOC_ENTRY_TYPE_ANGLE => Self::Angle,
4088            ffi::GST_TOC_ENTRY_TYPE_VERSION => Self::Version,
4089            ffi::GST_TOC_ENTRY_TYPE_EDITION => Self::Edition,
4090            ffi::GST_TOC_ENTRY_TYPE_INVALID => Self::Invalid,
4091            ffi::GST_TOC_ENTRY_TYPE_TITLE => Self::Title,
4092            ffi::GST_TOC_ENTRY_TYPE_TRACK => Self::Track,
4093            ffi::GST_TOC_ENTRY_TYPE_CHAPTER => Self::Chapter,
4094            value => Self::__Unknown(value),
4095        }
4096    }
4097}
4098
4099impl StaticType for TocEntryType {
4100    #[inline]
4101    #[doc(alias = "gst_toc_entry_type_get_type")]
4102    fn static_type() -> glib::Type {
4103        unsafe { from_glib(ffi::gst_toc_entry_type_get_type()) }
4104    }
4105}
4106
4107impl glib::HasParamSpec for TocEntryType {
4108    type ParamSpec = glib::ParamSpecEnum;
4109    type SetValue = Self;
4110    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4111
4112    fn param_spec_builder() -> Self::BuilderFn {
4113        Self::ParamSpec::builder_with_default
4114    }
4115}
4116
4117impl glib::value::ValueType for TocEntryType {
4118    type Type = Self;
4119}
4120
4121unsafe impl<'a> glib::value::FromValue<'a> for TocEntryType {
4122    type Checker = glib::value::GenericValueTypeChecker<Self>;
4123
4124    #[inline]
4125    unsafe fn from_value(value: &'a glib::Value) -> Self {
4126        skip_assert_initialized!();
4127        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
4128    }
4129}
4130
4131impl ToValue for TocEntryType {
4132    #[inline]
4133    fn to_value(&self) -> glib::Value {
4134        let mut value = glib::Value::for_value_type::<Self>();
4135        unsafe {
4136            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4137        }
4138        value
4139    }
4140
4141    #[inline]
4142    fn value_type(&self) -> glib::Type {
4143        Self::static_type()
4144    }
4145}
4146
4147impl From<TocEntryType> for glib::Value {
4148    #[inline]
4149    fn from(v: TocEntryType) -> Self {
4150        skip_assert_initialized!();
4151        ToValue::to_value(&v)
4152    }
4153}
4154
4155#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4156#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Clone, Copy)]
4157#[non_exhaustive]
4158#[doc(alias = "GstTocLoopType")]
4159pub enum TocLoopType {
4160    #[doc(alias = "GST_TOC_LOOP_NONE")]
4161    None,
4162    #[doc(alias = "GST_TOC_LOOP_FORWARD")]
4163    Forward,
4164    #[doc(alias = "GST_TOC_LOOP_REVERSE")]
4165    Reverse,
4166    #[doc(alias = "GST_TOC_LOOP_PING_PONG")]
4167    PingPong,
4168    #[doc(hidden)]
4169    __Unknown(i32),
4170}
4171
4172#[doc(hidden)]
4173impl IntoGlib for TocLoopType {
4174    type GlibType = ffi::GstTocLoopType;
4175
4176    #[inline]
4177    fn into_glib(self) -> ffi::GstTocLoopType {
4178        match self {
4179            Self::None => ffi::GST_TOC_LOOP_NONE,
4180            Self::Forward => ffi::GST_TOC_LOOP_FORWARD,
4181            Self::Reverse => ffi::GST_TOC_LOOP_REVERSE,
4182            Self::PingPong => ffi::GST_TOC_LOOP_PING_PONG,
4183            Self::__Unknown(value) => value,
4184        }
4185    }
4186}
4187
4188#[doc(hidden)]
4189impl FromGlib<ffi::GstTocLoopType> for TocLoopType {
4190    #[inline]
4191    unsafe fn from_glib(value: ffi::GstTocLoopType) -> Self {
4192        skip_assert_initialized!();
4193
4194        match value {
4195            ffi::GST_TOC_LOOP_NONE => Self::None,
4196            ffi::GST_TOC_LOOP_FORWARD => Self::Forward,
4197            ffi::GST_TOC_LOOP_REVERSE => Self::Reverse,
4198            ffi::GST_TOC_LOOP_PING_PONG => Self::PingPong,
4199            value => Self::__Unknown(value),
4200        }
4201    }
4202}
4203
4204impl StaticType for TocLoopType {
4205    #[inline]
4206    #[doc(alias = "gst_toc_loop_type_get_type")]
4207    fn static_type() -> glib::Type {
4208        unsafe { from_glib(ffi::gst_toc_loop_type_get_type()) }
4209    }
4210}
4211
4212impl glib::HasParamSpec for TocLoopType {
4213    type ParamSpec = glib::ParamSpecEnum;
4214    type SetValue = Self;
4215    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4216
4217    fn param_spec_builder() -> Self::BuilderFn {
4218        Self::ParamSpec::builder_with_default
4219    }
4220}
4221
4222impl glib::value::ValueType for TocLoopType {
4223    type Type = Self;
4224}
4225
4226unsafe impl<'a> glib::value::FromValue<'a> for TocLoopType {
4227    type Checker = glib::value::GenericValueTypeChecker<Self>;
4228
4229    #[inline]
4230    unsafe fn from_value(value: &'a glib::Value) -> Self {
4231        skip_assert_initialized!();
4232        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
4233    }
4234}
4235
4236impl ToValue for TocLoopType {
4237    #[inline]
4238    fn to_value(&self) -> glib::Value {
4239        let mut value = glib::Value::for_value_type::<Self>();
4240        unsafe {
4241            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4242        }
4243        value
4244    }
4245
4246    #[inline]
4247    fn value_type(&self) -> glib::Type {
4248        Self::static_type()
4249    }
4250}
4251
4252impl From<TocLoopType> for glib::Value {
4253    #[inline]
4254    fn from(v: TocLoopType) -> Self {
4255        skip_assert_initialized!();
4256        ToValue::to_value(&v)
4257    }
4258}
4259
4260#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4261#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Clone, Copy)]
4262#[non_exhaustive]
4263#[doc(alias = "GstTocScope")]
4264pub enum TocScope {
4265    #[doc(alias = "GST_TOC_SCOPE_GLOBAL")]
4266    Global,
4267    #[doc(alias = "GST_TOC_SCOPE_CURRENT")]
4268    Current,
4269    #[doc(hidden)]
4270    __Unknown(i32),
4271}
4272
4273#[doc(hidden)]
4274impl IntoGlib for TocScope {
4275    type GlibType = ffi::GstTocScope;
4276
4277    #[inline]
4278    fn into_glib(self) -> ffi::GstTocScope {
4279        match self {
4280            Self::Global => ffi::GST_TOC_SCOPE_GLOBAL,
4281            Self::Current => ffi::GST_TOC_SCOPE_CURRENT,
4282            Self::__Unknown(value) => value,
4283        }
4284    }
4285}
4286
4287#[doc(hidden)]
4288impl FromGlib<ffi::GstTocScope> for TocScope {
4289    #[inline]
4290    unsafe fn from_glib(value: ffi::GstTocScope) -> Self {
4291        skip_assert_initialized!();
4292
4293        match value {
4294            ffi::GST_TOC_SCOPE_GLOBAL => Self::Global,
4295            ffi::GST_TOC_SCOPE_CURRENT => Self::Current,
4296            value => Self::__Unknown(value),
4297        }
4298    }
4299}
4300
4301impl StaticType for TocScope {
4302    #[inline]
4303    #[doc(alias = "gst_toc_scope_get_type")]
4304    fn static_type() -> glib::Type {
4305        unsafe { from_glib(ffi::gst_toc_scope_get_type()) }
4306    }
4307}
4308
4309impl glib::HasParamSpec for TocScope {
4310    type ParamSpec = glib::ParamSpecEnum;
4311    type SetValue = Self;
4312    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4313
4314    fn param_spec_builder() -> Self::BuilderFn {
4315        Self::ParamSpec::builder_with_default
4316    }
4317}
4318
4319impl glib::value::ValueType for TocScope {
4320    type Type = Self;
4321}
4322
4323unsafe impl<'a> glib::value::FromValue<'a> for TocScope {
4324    type Checker = glib::value::GenericValueTypeChecker<Self>;
4325
4326    #[inline]
4327    unsafe fn from_value(value: &'a glib::Value) -> Self {
4328        skip_assert_initialized!();
4329        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
4330    }
4331}
4332
4333impl ToValue for TocScope {
4334    #[inline]
4335    fn to_value(&self) -> glib::Value {
4336        let mut value = glib::Value::for_value_type::<Self>();
4337        unsafe {
4338            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4339        }
4340        value
4341    }
4342
4343    #[inline]
4344    fn value_type(&self) -> glib::Type {
4345        Self::static_type()
4346    }
4347}
4348
4349impl From<TocScope> for glib::Value {
4350    #[inline]
4351    fn from(v: TocScope) -> Self {
4352        skip_assert_initialized!();
4353        ToValue::to_value(&v)
4354    }
4355}
4356
4357#[derive(Debug, Clone, Copy)]
4358#[non_exhaustive]
4359#[doc(alias = "GstTypeFindProbability")]
4360pub enum TypeFindProbability {
4361    #[doc(alias = "GST_TYPE_FIND_NONE")]
4362    None,
4363    #[doc(alias = "GST_TYPE_FIND_MINIMUM")]
4364    Minimum,
4365    #[doc(alias = "GST_TYPE_FIND_POSSIBLE")]
4366    Possible,
4367    #[doc(alias = "GST_TYPE_FIND_LIKELY")]
4368    Likely,
4369    #[doc(alias = "GST_TYPE_FIND_NEARLY_CERTAIN")]
4370    NearlyCertain,
4371    #[doc(alias = "GST_TYPE_FIND_MAXIMUM")]
4372    Maximum,
4373    #[doc(hidden)]
4374    __Unknown(i32),
4375}
4376
4377#[doc(hidden)]
4378impl IntoGlib for TypeFindProbability {
4379    type GlibType = ffi::GstTypeFindProbability;
4380
4381    #[inline]
4382    fn into_glib(self) -> ffi::GstTypeFindProbability {
4383        match self {
4384            Self::None => ffi::GST_TYPE_FIND_NONE,
4385            Self::Minimum => ffi::GST_TYPE_FIND_MINIMUM,
4386            Self::Possible => ffi::GST_TYPE_FIND_POSSIBLE,
4387            Self::Likely => ffi::GST_TYPE_FIND_LIKELY,
4388            Self::NearlyCertain => ffi::GST_TYPE_FIND_NEARLY_CERTAIN,
4389            Self::Maximum => ffi::GST_TYPE_FIND_MAXIMUM,
4390            Self::__Unknown(value) => value,
4391        }
4392    }
4393}
4394
4395#[doc(hidden)]
4396impl FromGlib<ffi::GstTypeFindProbability> for TypeFindProbability {
4397    #[inline]
4398    unsafe fn from_glib(value: ffi::GstTypeFindProbability) -> Self {
4399        skip_assert_initialized!();
4400
4401        match value {
4402            ffi::GST_TYPE_FIND_NONE => Self::None,
4403            ffi::GST_TYPE_FIND_MINIMUM => Self::Minimum,
4404            ffi::GST_TYPE_FIND_POSSIBLE => Self::Possible,
4405            ffi::GST_TYPE_FIND_LIKELY => Self::Likely,
4406            ffi::GST_TYPE_FIND_NEARLY_CERTAIN => Self::NearlyCertain,
4407            ffi::GST_TYPE_FIND_MAXIMUM => Self::Maximum,
4408            value => Self::__Unknown(value),
4409        }
4410    }
4411}
4412
4413impl StaticType for TypeFindProbability {
4414    #[inline]
4415    #[doc(alias = "gst_type_find_probability_get_type")]
4416    fn static_type() -> glib::Type {
4417        unsafe { from_glib(ffi::gst_type_find_probability_get_type()) }
4418    }
4419}
4420
4421impl glib::HasParamSpec for TypeFindProbability {
4422    type ParamSpec = glib::ParamSpecEnum;
4423    type SetValue = Self;
4424    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4425
4426    fn param_spec_builder() -> Self::BuilderFn {
4427        Self::ParamSpec::builder_with_default
4428    }
4429}
4430
4431impl glib::value::ValueType for TypeFindProbability {
4432    type Type = Self;
4433}
4434
4435unsafe impl<'a> glib::value::FromValue<'a> for TypeFindProbability {
4436    type Checker = glib::value::GenericValueTypeChecker<Self>;
4437
4438    #[inline]
4439    unsafe fn from_value(value: &'a glib::Value) -> Self {
4440        skip_assert_initialized!();
4441        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
4442    }
4443}
4444
4445impl ToValue for TypeFindProbability {
4446    #[inline]
4447    fn to_value(&self) -> glib::Value {
4448        let mut value = glib::Value::for_value_type::<Self>();
4449        unsafe {
4450            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4451        }
4452        value
4453    }
4454
4455    #[inline]
4456    fn value_type(&self) -> glib::Type {
4457        Self::static_type()
4458    }
4459}
4460
4461impl From<TypeFindProbability> for glib::Value {
4462    #[inline]
4463    fn from(v: TypeFindProbability) -> Self {
4464        skip_assert_initialized!();
4465        ToValue::to_value(&v)
4466    }
4467}
4468
4469#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4470#[non_exhaustive]
4471#[doc(alias = "GstURIError")]
4472pub enum URIError {
4473    #[doc(alias = "GST_URI_ERROR_UNSUPPORTED_PROTOCOL")]
4474    UnsupportedProtocol,
4475    #[doc(alias = "GST_URI_ERROR_BAD_URI")]
4476    BadUri,
4477    #[doc(alias = "GST_URI_ERROR_BAD_STATE")]
4478    BadState,
4479    #[doc(alias = "GST_URI_ERROR_BAD_REFERENCE")]
4480    BadReference,
4481    #[doc(hidden)]
4482    __Unknown(i32),
4483}
4484
4485#[doc(hidden)]
4486impl IntoGlib for URIError {
4487    type GlibType = ffi::GstURIError;
4488
4489    #[inline]
4490    fn into_glib(self) -> ffi::GstURIError {
4491        match self {
4492            Self::UnsupportedProtocol => ffi::GST_URI_ERROR_UNSUPPORTED_PROTOCOL,
4493            Self::BadUri => ffi::GST_URI_ERROR_BAD_URI,
4494            Self::BadState => ffi::GST_URI_ERROR_BAD_STATE,
4495            Self::BadReference => ffi::GST_URI_ERROR_BAD_REFERENCE,
4496            Self::__Unknown(value) => value,
4497        }
4498    }
4499}
4500
4501#[doc(hidden)]
4502impl FromGlib<ffi::GstURIError> for URIError {
4503    #[inline]
4504    unsafe fn from_glib(value: ffi::GstURIError) -> Self {
4505        skip_assert_initialized!();
4506
4507        match value {
4508            ffi::GST_URI_ERROR_UNSUPPORTED_PROTOCOL => Self::UnsupportedProtocol,
4509            ffi::GST_URI_ERROR_BAD_URI => Self::BadUri,
4510            ffi::GST_URI_ERROR_BAD_STATE => Self::BadState,
4511            ffi::GST_URI_ERROR_BAD_REFERENCE => Self::BadReference,
4512            value => Self::__Unknown(value),
4513        }
4514    }
4515}
4516
4517impl glib::error::ErrorDomain for URIError {
4518    #[inline]
4519    fn domain() -> glib::Quark {
4520        skip_assert_initialized!();
4521
4522        unsafe { from_glib(ffi::gst_uri_error_quark()) }
4523    }
4524
4525    #[inline]
4526    fn code(self) -> i32 {
4527        self.into_glib()
4528    }
4529
4530    #[inline]
4531    #[allow(clippy::match_single_binding)]
4532    fn from(code: i32) -> Option<Self> {
4533        skip_assert_initialized!();
4534        match unsafe { from_glib(code) } {
4535            value => Some(value),
4536        }
4537    }
4538}
4539
4540impl StaticType for URIError {
4541    #[inline]
4542    #[doc(alias = "gst_uri_error_get_type")]
4543    fn static_type() -> glib::Type {
4544        unsafe { from_glib(ffi::gst_uri_error_get_type()) }
4545    }
4546}
4547
4548impl glib::HasParamSpec for URIError {
4549    type ParamSpec = glib::ParamSpecEnum;
4550    type SetValue = Self;
4551    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4552
4553    fn param_spec_builder() -> Self::BuilderFn {
4554        Self::ParamSpec::builder_with_default
4555    }
4556}
4557
4558impl glib::value::ValueType for URIError {
4559    type Type = Self;
4560}
4561
4562unsafe impl<'a> glib::value::FromValue<'a> for URIError {
4563    type Checker = glib::value::GenericValueTypeChecker<Self>;
4564
4565    #[inline]
4566    unsafe fn from_value(value: &'a glib::Value) -> Self {
4567        skip_assert_initialized!();
4568        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
4569    }
4570}
4571
4572impl ToValue for URIError {
4573    #[inline]
4574    fn to_value(&self) -> glib::Value {
4575        let mut value = glib::Value::for_value_type::<Self>();
4576        unsafe {
4577            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4578        }
4579        value
4580    }
4581
4582    #[inline]
4583    fn value_type(&self) -> glib::Type {
4584        Self::static_type()
4585    }
4586}
4587
4588impl From<URIError> for glib::Value {
4589    #[inline]
4590    fn from(v: URIError) -> Self {
4591        skip_assert_initialized!();
4592        ToValue::to_value(&v)
4593    }
4594}
4595
4596#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4597#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Clone, Copy)]
4598#[repr(i32)]
4599#[doc(alias = "GstURIType")]
4600pub enum URIType {
4601    #[doc(alias = "GST_URI_UNKNOWN")]
4602    Unknown = ffi::GST_URI_UNKNOWN,
4603    #[doc(alias = "GST_URI_SINK")]
4604    Sink = ffi::GST_URI_SINK,
4605    #[doc(alias = "GST_URI_SRC")]
4606    Src = ffi::GST_URI_SRC,
4607}
4608
4609#[doc(hidden)]
4610impl IntoGlib for URIType {
4611    type GlibType = ffi::GstURIType;
4612
4613    #[inline]
4614    fn into_glib(self) -> ffi::GstURIType {
4615        self as ffi::GstURIType
4616    }
4617}
4618
4619#[doc(hidden)]
4620impl FromGlib<ffi::GstURIType> for URIType {
4621    #[inline]
4622    unsafe fn from_glib(value: ffi::GstURIType) -> Self {
4623        skip_assert_initialized!();
4624
4625        debug_assert!([ffi::GST_URI_UNKNOWN, ffi::GST_URI_SINK, ffi::GST_URI_SRC].contains(&value));
4626        std::mem::transmute(value)
4627    }
4628}
4629
4630impl StaticType for URIType {
4631    #[inline]
4632    #[doc(alias = "gst_uri_type_get_type")]
4633    fn static_type() -> glib::Type {
4634        unsafe { from_glib(ffi::gst_uri_type_get_type()) }
4635    }
4636}
4637
4638impl glib::HasParamSpec for URIType {
4639    type ParamSpec = glib::ParamSpecEnum;
4640    type SetValue = Self;
4641    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4642
4643    fn param_spec_builder() -> Self::BuilderFn {
4644        Self::ParamSpec::builder_with_default
4645    }
4646}
4647
4648impl glib::value::ValueType for URIType {
4649    type Type = Self;
4650}
4651
4652unsafe impl<'a> glib::value::FromValue<'a> for URIType {
4653    type Checker = glib::value::GenericValueTypeChecker<Self>;
4654
4655    #[inline]
4656    unsafe fn from_value(value: &'a glib::Value) -> Self {
4657        skip_assert_initialized!();
4658        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
4659    }
4660}
4661
4662impl ToValue for URIType {
4663    #[inline]
4664    fn to_value(&self) -> glib::Value {
4665        let mut value = glib::Value::for_value_type::<Self>();
4666        unsafe {
4667            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4668        }
4669        value
4670    }
4671
4672    #[inline]
4673    fn value_type(&self) -> glib::Type {
4674        Self::static_type()
4675    }
4676}
4677
4678impl From<URIType> for glib::Value {
4679    #[inline]
4680    fn from(v: URIType) -> Self {
4681        skip_assert_initialized!();
4682        ToValue::to_value(&v)
4683    }
4684}