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