gstreamer_video/auto/
enums.rs

1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from gir-files (https://github.com/gtk-rs/gir-files)
3// from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git)
4// DO NOT EDIT
5
6use crate::ffi;
7use glib::{prelude::*, translate::*, GStr};
8
9#[cfg(feature = "v1_24")]
10#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
11#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
12#[non_exhaustive]
13#[doc(alias = "GstAncillaryMetaField")]
14pub enum AncillaryMetaField {
15    #[doc(alias = "GST_ANCILLARY_META_FIELD_PROGRESSIVE")]
16    Progressive,
17    #[doc(alias = "GST_ANCILLARY_META_FIELD_INTERLACED_FIRST")]
18    InterlacedFirst,
19    #[doc(alias = "GST_ANCILLARY_META_FIELD_INTERLACED_SECOND")]
20    InterlacedSecond,
21    #[doc(hidden)]
22    __Unknown(i32),
23}
24
25#[cfg(feature = "v1_24")]
26#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
27#[doc(hidden)]
28impl IntoGlib for AncillaryMetaField {
29    type GlibType = ffi::GstAncillaryMetaField;
30
31    #[inline]
32    fn into_glib(self) -> ffi::GstAncillaryMetaField {
33        match self {
34            Self::Progressive => ffi::GST_ANCILLARY_META_FIELD_PROGRESSIVE,
35            Self::InterlacedFirst => ffi::GST_ANCILLARY_META_FIELD_INTERLACED_FIRST,
36            Self::InterlacedSecond => ffi::GST_ANCILLARY_META_FIELD_INTERLACED_SECOND,
37            Self::__Unknown(value) => value,
38        }
39    }
40}
41
42#[cfg(feature = "v1_24")]
43#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
44#[doc(hidden)]
45impl FromGlib<ffi::GstAncillaryMetaField> for AncillaryMetaField {
46    #[inline]
47    unsafe fn from_glib(value: ffi::GstAncillaryMetaField) -> Self {
48        skip_assert_initialized!();
49
50        match value {
51            ffi::GST_ANCILLARY_META_FIELD_PROGRESSIVE => Self::Progressive,
52            ffi::GST_ANCILLARY_META_FIELD_INTERLACED_FIRST => Self::InterlacedFirst,
53            ffi::GST_ANCILLARY_META_FIELD_INTERLACED_SECOND => Self::InterlacedSecond,
54            value => Self::__Unknown(value),
55        }
56    }
57}
58
59#[cfg(feature = "v1_24")]
60#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
61impl StaticType for AncillaryMetaField {
62    #[inline]
63    #[doc(alias = "gst_ancillary_meta_field_get_type")]
64    fn static_type() -> glib::Type {
65        unsafe { from_glib(ffi::gst_ancillary_meta_field_get_type()) }
66    }
67}
68
69#[cfg(feature = "v1_24")]
70#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
71impl glib::HasParamSpec for AncillaryMetaField {
72    type ParamSpec = glib::ParamSpecEnum;
73    type SetValue = Self;
74    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
75
76    fn param_spec_builder() -> Self::BuilderFn {
77        Self::ParamSpec::builder_with_default
78    }
79}
80
81#[cfg(feature = "v1_24")]
82#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
83impl glib::value::ValueType for AncillaryMetaField {
84    type Type = Self;
85}
86
87#[cfg(feature = "v1_24")]
88#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
89unsafe impl<'a> glib::value::FromValue<'a> for AncillaryMetaField {
90    type Checker = glib::value::GenericValueTypeChecker<Self>;
91
92    #[inline]
93    unsafe fn from_value(value: &'a glib::Value) -> Self {
94        skip_assert_initialized!();
95        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
96    }
97}
98
99#[cfg(feature = "v1_24")]
100#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
101impl ToValue for AncillaryMetaField {
102    #[inline]
103    fn to_value(&self) -> glib::Value {
104        let mut value = glib::Value::for_value_type::<Self>();
105        unsafe {
106            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
107        }
108        value
109    }
110
111    #[inline]
112    fn value_type(&self) -> glib::Type {
113        Self::static_type()
114    }
115}
116
117#[cfg(feature = "v1_24")]
118#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
119impl From<AncillaryMetaField> for glib::Value {
120    #[inline]
121    fn from(v: AncillaryMetaField) -> Self {
122        skip_assert_initialized!();
123        ToValue::to_value(&v)
124    }
125}
126
127#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
128#[non_exhaustive]
129#[doc(alias = "GstColorBalanceType")]
130pub enum ColorBalanceType {
131    #[doc(alias = "GST_COLOR_BALANCE_HARDWARE")]
132    Hardware,
133    #[doc(alias = "GST_COLOR_BALANCE_SOFTWARE")]
134    Software,
135    #[doc(hidden)]
136    __Unknown(i32),
137}
138
139#[doc(hidden)]
140impl IntoGlib for ColorBalanceType {
141    type GlibType = ffi::GstColorBalanceType;
142
143    #[inline]
144    fn into_glib(self) -> ffi::GstColorBalanceType {
145        match self {
146            Self::Hardware => ffi::GST_COLOR_BALANCE_HARDWARE,
147            Self::Software => ffi::GST_COLOR_BALANCE_SOFTWARE,
148            Self::__Unknown(value) => value,
149        }
150    }
151}
152
153#[doc(hidden)]
154impl FromGlib<ffi::GstColorBalanceType> for ColorBalanceType {
155    #[inline]
156    unsafe fn from_glib(value: ffi::GstColorBalanceType) -> Self {
157        skip_assert_initialized!();
158
159        match value {
160            ffi::GST_COLOR_BALANCE_HARDWARE => Self::Hardware,
161            ffi::GST_COLOR_BALANCE_SOFTWARE => Self::Software,
162            value => Self::__Unknown(value),
163        }
164    }
165}
166
167impl StaticType for ColorBalanceType {
168    #[inline]
169    #[doc(alias = "gst_color_balance_type_get_type")]
170    fn static_type() -> glib::Type {
171        unsafe { from_glib(ffi::gst_color_balance_type_get_type()) }
172    }
173}
174
175impl glib::HasParamSpec for ColorBalanceType {
176    type ParamSpec = glib::ParamSpecEnum;
177    type SetValue = Self;
178    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
179
180    fn param_spec_builder() -> Self::BuilderFn {
181        Self::ParamSpec::builder_with_default
182    }
183}
184
185impl glib::value::ValueType for ColorBalanceType {
186    type Type = Self;
187}
188
189unsafe impl<'a> glib::value::FromValue<'a> for ColorBalanceType {
190    type Checker = glib::value::GenericValueTypeChecker<Self>;
191
192    #[inline]
193    unsafe fn from_value(value: &'a glib::Value) -> Self {
194        skip_assert_initialized!();
195        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
196    }
197}
198
199impl ToValue for ColorBalanceType {
200    #[inline]
201    fn to_value(&self) -> glib::Value {
202        let mut value = glib::Value::for_value_type::<Self>();
203        unsafe {
204            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
205        }
206        value
207    }
208
209    #[inline]
210    fn value_type(&self) -> glib::Type {
211        Self::static_type()
212    }
213}
214
215impl From<ColorBalanceType> for glib::Value {
216    #[inline]
217    fn from(v: ColorBalanceType) -> Self {
218        skip_assert_initialized!();
219        ToValue::to_value(&v)
220    }
221}
222
223#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
224#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
225#[non_exhaustive]
226#[doc(alias = "GstNavigationCommand")]
227pub enum NavigationCommand {
228    #[doc(alias = "GST_NAVIGATION_COMMAND_INVALID")]
229    Invalid,
230    #[doc(alias = "GST_NAVIGATION_COMMAND_MENU1")]
231    Menu1,
232    #[doc(alias = "GST_NAVIGATION_COMMAND_MENU2")]
233    Menu2,
234    #[doc(alias = "GST_NAVIGATION_COMMAND_MENU3")]
235    Menu3,
236    #[doc(alias = "GST_NAVIGATION_COMMAND_MENU4")]
237    Menu4,
238    #[doc(alias = "GST_NAVIGATION_COMMAND_MENU5")]
239    Menu5,
240    #[doc(alias = "GST_NAVIGATION_COMMAND_MENU6")]
241    Menu6,
242    #[doc(alias = "GST_NAVIGATION_COMMAND_MENU7")]
243    Menu7,
244    #[doc(alias = "GST_NAVIGATION_COMMAND_LEFT")]
245    Left,
246    #[doc(alias = "GST_NAVIGATION_COMMAND_RIGHT")]
247    Right,
248    #[doc(alias = "GST_NAVIGATION_COMMAND_UP")]
249    Up,
250    #[doc(alias = "GST_NAVIGATION_COMMAND_DOWN")]
251    Down,
252    #[doc(alias = "GST_NAVIGATION_COMMAND_ACTIVATE")]
253    Activate,
254    #[doc(alias = "GST_NAVIGATION_COMMAND_PREV_ANGLE")]
255    PrevAngle,
256    #[doc(alias = "GST_NAVIGATION_COMMAND_NEXT_ANGLE")]
257    NextAngle,
258    #[doc(hidden)]
259    __Unknown(i32),
260}
261
262#[doc(hidden)]
263impl IntoGlib for NavigationCommand {
264    type GlibType = ffi::GstNavigationCommand;
265
266    fn into_glib(self) -> ffi::GstNavigationCommand {
267        match self {
268            Self::Invalid => ffi::GST_NAVIGATION_COMMAND_INVALID,
269            Self::Menu1 => ffi::GST_NAVIGATION_COMMAND_MENU1,
270            Self::Menu2 => ffi::GST_NAVIGATION_COMMAND_MENU2,
271            Self::Menu3 => ffi::GST_NAVIGATION_COMMAND_MENU3,
272            Self::Menu4 => ffi::GST_NAVIGATION_COMMAND_MENU4,
273            Self::Menu5 => ffi::GST_NAVIGATION_COMMAND_MENU5,
274            Self::Menu6 => ffi::GST_NAVIGATION_COMMAND_MENU6,
275            Self::Menu7 => ffi::GST_NAVIGATION_COMMAND_MENU7,
276            Self::Left => ffi::GST_NAVIGATION_COMMAND_LEFT,
277            Self::Right => ffi::GST_NAVIGATION_COMMAND_RIGHT,
278            Self::Up => ffi::GST_NAVIGATION_COMMAND_UP,
279            Self::Down => ffi::GST_NAVIGATION_COMMAND_DOWN,
280            Self::Activate => ffi::GST_NAVIGATION_COMMAND_ACTIVATE,
281            Self::PrevAngle => ffi::GST_NAVIGATION_COMMAND_PREV_ANGLE,
282            Self::NextAngle => ffi::GST_NAVIGATION_COMMAND_NEXT_ANGLE,
283            Self::__Unknown(value) => value,
284        }
285    }
286}
287
288#[doc(hidden)]
289impl FromGlib<ffi::GstNavigationCommand> for NavigationCommand {
290    unsafe fn from_glib(value: ffi::GstNavigationCommand) -> Self {
291        skip_assert_initialized!();
292
293        match value {
294            ffi::GST_NAVIGATION_COMMAND_INVALID => Self::Invalid,
295            ffi::GST_NAVIGATION_COMMAND_MENU1 => Self::Menu1,
296            ffi::GST_NAVIGATION_COMMAND_MENU2 => Self::Menu2,
297            ffi::GST_NAVIGATION_COMMAND_MENU3 => Self::Menu3,
298            ffi::GST_NAVIGATION_COMMAND_MENU4 => Self::Menu4,
299            ffi::GST_NAVIGATION_COMMAND_MENU5 => Self::Menu5,
300            ffi::GST_NAVIGATION_COMMAND_MENU6 => Self::Menu6,
301            ffi::GST_NAVIGATION_COMMAND_MENU7 => Self::Menu7,
302            ffi::GST_NAVIGATION_COMMAND_LEFT => Self::Left,
303            ffi::GST_NAVIGATION_COMMAND_RIGHT => Self::Right,
304            ffi::GST_NAVIGATION_COMMAND_UP => Self::Up,
305            ffi::GST_NAVIGATION_COMMAND_DOWN => Self::Down,
306            ffi::GST_NAVIGATION_COMMAND_ACTIVATE => Self::Activate,
307            ffi::GST_NAVIGATION_COMMAND_PREV_ANGLE => Self::PrevAngle,
308            ffi::GST_NAVIGATION_COMMAND_NEXT_ANGLE => Self::NextAngle,
309            value => Self::__Unknown(value),
310        }
311    }
312}
313
314impl StaticType for NavigationCommand {
315    #[inline]
316    #[doc(alias = "gst_navigation_command_get_type")]
317    fn static_type() -> glib::Type {
318        unsafe { from_glib(ffi::gst_navigation_command_get_type()) }
319    }
320}
321
322impl glib::HasParamSpec for NavigationCommand {
323    type ParamSpec = glib::ParamSpecEnum;
324    type SetValue = Self;
325    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
326
327    fn param_spec_builder() -> Self::BuilderFn {
328        Self::ParamSpec::builder_with_default
329    }
330}
331
332impl glib::value::ValueType for NavigationCommand {
333    type Type = Self;
334}
335
336unsafe impl<'a> glib::value::FromValue<'a> for NavigationCommand {
337    type Checker = glib::value::GenericValueTypeChecker<Self>;
338
339    #[inline]
340    unsafe fn from_value(value: &'a glib::Value) -> Self {
341        skip_assert_initialized!();
342        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
343    }
344}
345
346impl ToValue for NavigationCommand {
347    #[inline]
348    fn to_value(&self) -> glib::Value {
349        let mut value = glib::Value::for_value_type::<Self>();
350        unsafe {
351            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
352        }
353        value
354    }
355
356    #[inline]
357    fn value_type(&self) -> glib::Type {
358        Self::static_type()
359    }
360}
361
362impl From<NavigationCommand> for glib::Value {
363    #[inline]
364    fn from(v: NavigationCommand) -> Self {
365        skip_assert_initialized!();
366        ToValue::to_value(&v)
367    }
368}
369
370#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
371#[non_exhaustive]
372#[doc(alias = "GstNavigationEventType")]
373pub enum NavigationEventType {
374    #[doc(alias = "GST_NAVIGATION_EVENT_INVALID")]
375    Invalid,
376    #[doc(alias = "GST_NAVIGATION_EVENT_KEY_PRESS")]
377    KeyPress,
378    #[doc(alias = "GST_NAVIGATION_EVENT_KEY_RELEASE")]
379    KeyRelease,
380    #[doc(alias = "GST_NAVIGATION_EVENT_MOUSE_BUTTON_PRESS")]
381    MouseButtonPress,
382    #[doc(alias = "GST_NAVIGATION_EVENT_MOUSE_BUTTON_RELEASE")]
383    MouseButtonRelease,
384    #[doc(alias = "GST_NAVIGATION_EVENT_MOUSE_MOVE")]
385    MouseMove,
386    #[doc(alias = "GST_NAVIGATION_EVENT_COMMAND")]
387    Command,
388    #[cfg(feature = "v1_18")]
389    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
390    #[doc(alias = "GST_NAVIGATION_EVENT_MOUSE_SCROLL")]
391    MouseScroll,
392    #[cfg(feature = "v1_22")]
393    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
394    #[doc(alias = "GST_NAVIGATION_EVENT_TOUCH_DOWN")]
395    TouchDown,
396    #[cfg(feature = "v1_22")]
397    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
398    #[doc(alias = "GST_NAVIGATION_EVENT_TOUCH_MOTION")]
399    TouchMotion,
400    #[cfg(feature = "v1_22")]
401    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
402    #[doc(alias = "GST_NAVIGATION_EVENT_TOUCH_UP")]
403    TouchUp,
404    #[cfg(feature = "v1_22")]
405    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
406    #[doc(alias = "GST_NAVIGATION_EVENT_TOUCH_FRAME")]
407    TouchFrame,
408    #[cfg(feature = "v1_22")]
409    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
410    #[doc(alias = "GST_NAVIGATION_EVENT_TOUCH_CANCEL")]
411    TouchCancel,
412    #[cfg(feature = "v1_26")]
413    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
414    #[doc(alias = "GST_NAVIGATION_EVENT_MOUSE_DOUBLE_CLICK")]
415    MouseDoubleClick,
416    #[doc(hidden)]
417    __Unknown(i32),
418}
419
420#[doc(hidden)]
421impl IntoGlib for NavigationEventType {
422    type GlibType = ffi::GstNavigationEventType;
423
424    fn into_glib(self) -> ffi::GstNavigationEventType {
425        match self {
426            Self::Invalid => ffi::GST_NAVIGATION_EVENT_INVALID,
427            Self::KeyPress => ffi::GST_NAVIGATION_EVENT_KEY_PRESS,
428            Self::KeyRelease => ffi::GST_NAVIGATION_EVENT_KEY_RELEASE,
429            Self::MouseButtonPress => ffi::GST_NAVIGATION_EVENT_MOUSE_BUTTON_PRESS,
430            Self::MouseButtonRelease => ffi::GST_NAVIGATION_EVENT_MOUSE_BUTTON_RELEASE,
431            Self::MouseMove => ffi::GST_NAVIGATION_EVENT_MOUSE_MOVE,
432            Self::Command => ffi::GST_NAVIGATION_EVENT_COMMAND,
433            #[cfg(feature = "v1_18")]
434            Self::MouseScroll => ffi::GST_NAVIGATION_EVENT_MOUSE_SCROLL,
435            #[cfg(feature = "v1_22")]
436            Self::TouchDown => ffi::GST_NAVIGATION_EVENT_TOUCH_DOWN,
437            #[cfg(feature = "v1_22")]
438            Self::TouchMotion => ffi::GST_NAVIGATION_EVENT_TOUCH_MOTION,
439            #[cfg(feature = "v1_22")]
440            Self::TouchUp => ffi::GST_NAVIGATION_EVENT_TOUCH_UP,
441            #[cfg(feature = "v1_22")]
442            Self::TouchFrame => ffi::GST_NAVIGATION_EVENT_TOUCH_FRAME,
443            #[cfg(feature = "v1_22")]
444            Self::TouchCancel => ffi::GST_NAVIGATION_EVENT_TOUCH_CANCEL,
445            #[cfg(feature = "v1_26")]
446            Self::MouseDoubleClick => ffi::GST_NAVIGATION_EVENT_MOUSE_DOUBLE_CLICK,
447            Self::__Unknown(value) => value,
448        }
449    }
450}
451
452#[doc(hidden)]
453impl FromGlib<ffi::GstNavigationEventType> for NavigationEventType {
454    unsafe fn from_glib(value: ffi::GstNavigationEventType) -> Self {
455        skip_assert_initialized!();
456
457        match value {
458            ffi::GST_NAVIGATION_EVENT_INVALID => Self::Invalid,
459            ffi::GST_NAVIGATION_EVENT_KEY_PRESS => Self::KeyPress,
460            ffi::GST_NAVIGATION_EVENT_KEY_RELEASE => Self::KeyRelease,
461            ffi::GST_NAVIGATION_EVENT_MOUSE_BUTTON_PRESS => Self::MouseButtonPress,
462            ffi::GST_NAVIGATION_EVENT_MOUSE_BUTTON_RELEASE => Self::MouseButtonRelease,
463            ffi::GST_NAVIGATION_EVENT_MOUSE_MOVE => Self::MouseMove,
464            ffi::GST_NAVIGATION_EVENT_COMMAND => Self::Command,
465            #[cfg(feature = "v1_18")]
466            ffi::GST_NAVIGATION_EVENT_MOUSE_SCROLL => Self::MouseScroll,
467            #[cfg(feature = "v1_22")]
468            ffi::GST_NAVIGATION_EVENT_TOUCH_DOWN => Self::TouchDown,
469            #[cfg(feature = "v1_22")]
470            ffi::GST_NAVIGATION_EVENT_TOUCH_MOTION => Self::TouchMotion,
471            #[cfg(feature = "v1_22")]
472            ffi::GST_NAVIGATION_EVENT_TOUCH_UP => Self::TouchUp,
473            #[cfg(feature = "v1_22")]
474            ffi::GST_NAVIGATION_EVENT_TOUCH_FRAME => Self::TouchFrame,
475            #[cfg(feature = "v1_22")]
476            ffi::GST_NAVIGATION_EVENT_TOUCH_CANCEL => Self::TouchCancel,
477            #[cfg(feature = "v1_26")]
478            ffi::GST_NAVIGATION_EVENT_MOUSE_DOUBLE_CLICK => Self::MouseDoubleClick,
479            value => Self::__Unknown(value),
480        }
481    }
482}
483
484impl StaticType for NavigationEventType {
485    #[inline]
486    #[doc(alias = "gst_navigation_event_type_get_type")]
487    fn static_type() -> glib::Type {
488        unsafe { from_glib(ffi::gst_navigation_event_type_get_type()) }
489    }
490}
491
492impl glib::HasParamSpec for NavigationEventType {
493    type ParamSpec = glib::ParamSpecEnum;
494    type SetValue = Self;
495    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
496
497    fn param_spec_builder() -> Self::BuilderFn {
498        Self::ParamSpec::builder_with_default
499    }
500}
501
502impl glib::value::ValueType for NavigationEventType {
503    type Type = Self;
504}
505
506unsafe impl<'a> glib::value::FromValue<'a> for NavigationEventType {
507    type Checker = glib::value::GenericValueTypeChecker<Self>;
508
509    #[inline]
510    unsafe fn from_value(value: &'a glib::Value) -> Self {
511        skip_assert_initialized!();
512        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
513    }
514}
515
516impl ToValue for NavigationEventType {
517    #[inline]
518    fn to_value(&self) -> glib::Value {
519        let mut value = glib::Value::for_value_type::<Self>();
520        unsafe {
521            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
522        }
523        value
524    }
525
526    #[inline]
527    fn value_type(&self) -> glib::Type {
528        Self::static_type()
529    }
530}
531
532impl From<NavigationEventType> for glib::Value {
533    #[inline]
534    fn from(v: NavigationEventType) -> Self {
535        skip_assert_initialized!();
536        ToValue::to_value(&v)
537    }
538}
539
540#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
541#[non_exhaustive]
542#[doc(alias = "GstNavigationMessageType")]
543pub enum NavigationMessageType {
544    #[doc(alias = "GST_NAVIGATION_MESSAGE_INVALID")]
545    Invalid,
546    #[doc(alias = "GST_NAVIGATION_MESSAGE_MOUSE_OVER")]
547    MouseOver,
548    #[doc(alias = "GST_NAVIGATION_MESSAGE_COMMANDS_CHANGED")]
549    CommandsChanged,
550    #[doc(alias = "GST_NAVIGATION_MESSAGE_ANGLES_CHANGED")]
551    AnglesChanged,
552    #[doc(alias = "GST_NAVIGATION_MESSAGE_EVENT")]
553    Event,
554    #[doc(hidden)]
555    __Unknown(i32),
556}
557
558#[doc(hidden)]
559impl IntoGlib for NavigationMessageType {
560    type GlibType = ffi::GstNavigationMessageType;
561
562    #[inline]
563    fn into_glib(self) -> ffi::GstNavigationMessageType {
564        match self {
565            Self::Invalid => ffi::GST_NAVIGATION_MESSAGE_INVALID,
566            Self::MouseOver => ffi::GST_NAVIGATION_MESSAGE_MOUSE_OVER,
567            Self::CommandsChanged => ffi::GST_NAVIGATION_MESSAGE_COMMANDS_CHANGED,
568            Self::AnglesChanged => ffi::GST_NAVIGATION_MESSAGE_ANGLES_CHANGED,
569            Self::Event => ffi::GST_NAVIGATION_MESSAGE_EVENT,
570            Self::__Unknown(value) => value,
571        }
572    }
573}
574
575#[doc(hidden)]
576impl FromGlib<ffi::GstNavigationMessageType> for NavigationMessageType {
577    #[inline]
578    unsafe fn from_glib(value: ffi::GstNavigationMessageType) -> Self {
579        skip_assert_initialized!();
580
581        match value {
582            ffi::GST_NAVIGATION_MESSAGE_INVALID => Self::Invalid,
583            ffi::GST_NAVIGATION_MESSAGE_MOUSE_OVER => Self::MouseOver,
584            ffi::GST_NAVIGATION_MESSAGE_COMMANDS_CHANGED => Self::CommandsChanged,
585            ffi::GST_NAVIGATION_MESSAGE_ANGLES_CHANGED => Self::AnglesChanged,
586            ffi::GST_NAVIGATION_MESSAGE_EVENT => Self::Event,
587            value => Self::__Unknown(value),
588        }
589    }
590}
591
592impl StaticType for NavigationMessageType {
593    #[inline]
594    #[doc(alias = "gst_navigation_message_type_get_type")]
595    fn static_type() -> glib::Type {
596        unsafe { from_glib(ffi::gst_navigation_message_type_get_type()) }
597    }
598}
599
600impl glib::HasParamSpec for NavigationMessageType {
601    type ParamSpec = glib::ParamSpecEnum;
602    type SetValue = Self;
603    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
604
605    fn param_spec_builder() -> Self::BuilderFn {
606        Self::ParamSpec::builder_with_default
607    }
608}
609
610impl glib::value::ValueType for NavigationMessageType {
611    type Type = Self;
612}
613
614unsafe impl<'a> glib::value::FromValue<'a> for NavigationMessageType {
615    type Checker = glib::value::GenericValueTypeChecker<Self>;
616
617    #[inline]
618    unsafe fn from_value(value: &'a glib::Value) -> Self {
619        skip_assert_initialized!();
620        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
621    }
622}
623
624impl ToValue for NavigationMessageType {
625    #[inline]
626    fn to_value(&self) -> glib::Value {
627        let mut value = glib::Value::for_value_type::<Self>();
628        unsafe {
629            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
630        }
631        value
632    }
633
634    #[inline]
635    fn value_type(&self) -> glib::Type {
636        Self::static_type()
637    }
638}
639
640impl From<NavigationMessageType> for glib::Value {
641    #[inline]
642    fn from(v: NavigationMessageType) -> Self {
643        skip_assert_initialized!();
644        ToValue::to_value(&v)
645    }
646}
647
648#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
649#[non_exhaustive]
650#[doc(alias = "GstNavigationQueryType")]
651pub enum NavigationQueryType {
652    #[doc(alias = "GST_NAVIGATION_QUERY_INVALID")]
653    Invalid,
654    #[doc(alias = "GST_NAVIGATION_QUERY_COMMANDS")]
655    Commands,
656    #[doc(alias = "GST_NAVIGATION_QUERY_ANGLES")]
657    Angles,
658    #[doc(hidden)]
659    __Unknown(i32),
660}
661
662#[doc(hidden)]
663impl IntoGlib for NavigationQueryType {
664    type GlibType = ffi::GstNavigationQueryType;
665
666    #[inline]
667    fn into_glib(self) -> ffi::GstNavigationQueryType {
668        match self {
669            Self::Invalid => ffi::GST_NAVIGATION_QUERY_INVALID,
670            Self::Commands => ffi::GST_NAVIGATION_QUERY_COMMANDS,
671            Self::Angles => ffi::GST_NAVIGATION_QUERY_ANGLES,
672            Self::__Unknown(value) => value,
673        }
674    }
675}
676
677#[doc(hidden)]
678impl FromGlib<ffi::GstNavigationQueryType> for NavigationQueryType {
679    #[inline]
680    unsafe fn from_glib(value: ffi::GstNavigationQueryType) -> Self {
681        skip_assert_initialized!();
682
683        match value {
684            ffi::GST_NAVIGATION_QUERY_INVALID => Self::Invalid,
685            ffi::GST_NAVIGATION_QUERY_COMMANDS => Self::Commands,
686            ffi::GST_NAVIGATION_QUERY_ANGLES => Self::Angles,
687            value => Self::__Unknown(value),
688        }
689    }
690}
691
692impl StaticType for NavigationQueryType {
693    #[inline]
694    #[doc(alias = "gst_navigation_query_type_get_type")]
695    fn static_type() -> glib::Type {
696        unsafe { from_glib(ffi::gst_navigation_query_type_get_type()) }
697    }
698}
699
700impl glib::HasParamSpec for NavigationQueryType {
701    type ParamSpec = glib::ParamSpecEnum;
702    type SetValue = Self;
703    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
704
705    fn param_spec_builder() -> Self::BuilderFn {
706        Self::ParamSpec::builder_with_default
707    }
708}
709
710impl glib::value::ValueType for NavigationQueryType {
711    type Type = Self;
712}
713
714unsafe impl<'a> glib::value::FromValue<'a> for NavigationQueryType {
715    type Checker = glib::value::GenericValueTypeChecker<Self>;
716
717    #[inline]
718    unsafe fn from_value(value: &'a glib::Value) -> Self {
719        skip_assert_initialized!();
720        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
721    }
722}
723
724impl ToValue for NavigationQueryType {
725    #[inline]
726    fn to_value(&self) -> glib::Value {
727        let mut value = glib::Value::for_value_type::<Self>();
728        unsafe {
729            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
730        }
731        value
732    }
733
734    #[inline]
735    fn value_type(&self) -> glib::Type {
736        Self::static_type()
737    }
738}
739
740impl From<NavigationQueryType> for glib::Value {
741    #[inline]
742    fn from(v: NavigationQueryType) -> Self {
743        skip_assert_initialized!();
744        ToValue::to_value(&v)
745    }
746}
747
748#[cfg(feature = "v1_18")]
749#[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
750#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
751#[non_exhaustive]
752#[doc(alias = "GstVideoAFDSpec")]
753pub enum VideoAFDSpec {
754    #[doc(alias = "GST_VIDEO_AFD_SPEC_DVB_ETSI")]
755    DvbEtsi,
756    #[doc(alias = "GST_VIDEO_AFD_SPEC_ATSC_A53")]
757    AtscA53,
758    #[doc(alias = "GST_VIDEO_AFD_SPEC_SMPTE_ST2016_1")]
759    SmpteSt20161,
760    #[doc(hidden)]
761    __Unknown(i32),
762}
763
764#[cfg(feature = "v1_18")]
765#[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
766#[doc(hidden)]
767impl IntoGlib for VideoAFDSpec {
768    type GlibType = ffi::GstVideoAFDSpec;
769
770    #[inline]
771    fn into_glib(self) -> ffi::GstVideoAFDSpec {
772        match self {
773            Self::DvbEtsi => ffi::GST_VIDEO_AFD_SPEC_DVB_ETSI,
774            Self::AtscA53 => ffi::GST_VIDEO_AFD_SPEC_ATSC_A53,
775            Self::SmpteSt20161 => ffi::GST_VIDEO_AFD_SPEC_SMPTE_ST2016_1,
776            Self::__Unknown(value) => value,
777        }
778    }
779}
780
781#[cfg(feature = "v1_18")]
782#[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
783#[doc(hidden)]
784impl FromGlib<ffi::GstVideoAFDSpec> for VideoAFDSpec {
785    #[inline]
786    unsafe fn from_glib(value: ffi::GstVideoAFDSpec) -> Self {
787        skip_assert_initialized!();
788
789        match value {
790            ffi::GST_VIDEO_AFD_SPEC_DVB_ETSI => Self::DvbEtsi,
791            ffi::GST_VIDEO_AFD_SPEC_ATSC_A53 => Self::AtscA53,
792            ffi::GST_VIDEO_AFD_SPEC_SMPTE_ST2016_1 => Self::SmpteSt20161,
793            value => Self::__Unknown(value),
794        }
795    }
796}
797
798#[cfg(feature = "v1_18")]
799#[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
800impl StaticType for VideoAFDSpec {
801    #[inline]
802    #[doc(alias = "gst_video_afd_spec_get_type")]
803    fn static_type() -> glib::Type {
804        unsafe { from_glib(ffi::gst_video_afd_spec_get_type()) }
805    }
806}
807
808#[cfg(feature = "v1_18")]
809#[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
810impl glib::HasParamSpec for VideoAFDSpec {
811    type ParamSpec = glib::ParamSpecEnum;
812    type SetValue = Self;
813    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
814
815    fn param_spec_builder() -> Self::BuilderFn {
816        Self::ParamSpec::builder_with_default
817    }
818}
819
820#[cfg(feature = "v1_18")]
821#[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
822impl glib::value::ValueType for VideoAFDSpec {
823    type Type = Self;
824}
825
826#[cfg(feature = "v1_18")]
827#[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
828unsafe impl<'a> glib::value::FromValue<'a> for VideoAFDSpec {
829    type Checker = glib::value::GenericValueTypeChecker<Self>;
830
831    #[inline]
832    unsafe fn from_value(value: &'a glib::Value) -> Self {
833        skip_assert_initialized!();
834        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
835    }
836}
837
838#[cfg(feature = "v1_18")]
839#[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
840impl ToValue for VideoAFDSpec {
841    #[inline]
842    fn to_value(&self) -> glib::Value {
843        let mut value = glib::Value::for_value_type::<Self>();
844        unsafe {
845            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
846        }
847        value
848    }
849
850    #[inline]
851    fn value_type(&self) -> glib::Type {
852        Self::static_type()
853    }
854}
855
856#[cfg(feature = "v1_18")]
857#[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
858impl From<VideoAFDSpec> for glib::Value {
859    #[inline]
860    fn from(v: VideoAFDSpec) -> Self {
861        skip_assert_initialized!();
862        ToValue::to_value(&v)
863    }
864}
865
866#[cfg(feature = "v1_18")]
867#[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
868#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
869#[non_exhaustive]
870#[doc(alias = "GstVideoAFDValue")]
871pub enum VideoAFDValue {
872    #[doc(alias = "GST_VIDEO_AFD_UNAVAILABLE")]
873    Unavailable,
874    #[doc(alias = "GST_VIDEO_AFD_16_9_TOP_ALIGNED")]
875    _169TopAligned,
876    #[doc(alias = "GST_VIDEO_AFD_14_9_TOP_ALIGNED")]
877    _149TopAligned,
878    #[doc(alias = "GST_VIDEO_AFD_GREATER_THAN_16_9")]
879    GreaterThan169,
880    #[doc(alias = "GST_VIDEO_AFD_4_3_FULL_16_9_FULL")]
881    _43Full169Full,
882    #[doc(alias = "GST_VIDEO_AFD_4_3_FULL_4_3_PILLAR")]
883    _43Full43Pillar,
884    #[doc(alias = "GST_VIDEO_AFD_16_9_LETTER_16_9_FULL")]
885    _169Letter169Full,
886    #[doc(alias = "GST_VIDEO_AFD_14_9_LETTER_14_9_PILLAR")]
887    _149Letter149Pillar,
888    #[doc(alias = "GST_VIDEO_AFD_4_3_FULL_14_9_CENTER")]
889    _43Full149Center,
890    #[doc(alias = "GST_VIDEO_AFD_16_9_LETTER_14_9_CENTER")]
891    _169Letter149Center,
892    #[doc(alias = "GST_VIDEO_AFD_16_9_LETTER_4_3_CENTER")]
893    _169Letter43Center,
894    #[doc(hidden)]
895    __Unknown(i32),
896}
897
898#[cfg(feature = "v1_18")]
899#[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
900#[doc(hidden)]
901impl IntoGlib for VideoAFDValue {
902    type GlibType = ffi::GstVideoAFDValue;
903
904    #[inline]
905    fn into_glib(self) -> ffi::GstVideoAFDValue {
906        match self {
907            Self::Unavailable => ffi::GST_VIDEO_AFD_UNAVAILABLE,
908            Self::_169TopAligned => ffi::GST_VIDEO_AFD_16_9_TOP_ALIGNED,
909            Self::_149TopAligned => ffi::GST_VIDEO_AFD_14_9_TOP_ALIGNED,
910            Self::GreaterThan169 => ffi::GST_VIDEO_AFD_GREATER_THAN_16_9,
911            Self::_43Full169Full => ffi::GST_VIDEO_AFD_4_3_FULL_16_9_FULL,
912            Self::_43Full43Pillar => ffi::GST_VIDEO_AFD_4_3_FULL_4_3_PILLAR,
913            Self::_169Letter169Full => ffi::GST_VIDEO_AFD_16_9_LETTER_16_9_FULL,
914            Self::_149Letter149Pillar => ffi::GST_VIDEO_AFD_14_9_LETTER_14_9_PILLAR,
915            Self::_43Full149Center => ffi::GST_VIDEO_AFD_4_3_FULL_14_9_CENTER,
916            Self::_169Letter149Center => ffi::GST_VIDEO_AFD_16_9_LETTER_14_9_CENTER,
917            Self::_169Letter43Center => ffi::GST_VIDEO_AFD_16_9_LETTER_4_3_CENTER,
918            Self::__Unknown(value) => value,
919        }
920    }
921}
922
923#[cfg(feature = "v1_18")]
924#[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
925#[doc(hidden)]
926impl FromGlib<ffi::GstVideoAFDValue> for VideoAFDValue {
927    #[inline]
928    unsafe fn from_glib(value: ffi::GstVideoAFDValue) -> Self {
929        skip_assert_initialized!();
930
931        match value {
932            ffi::GST_VIDEO_AFD_UNAVAILABLE => Self::Unavailable,
933            ffi::GST_VIDEO_AFD_16_9_TOP_ALIGNED => Self::_169TopAligned,
934            ffi::GST_VIDEO_AFD_14_9_TOP_ALIGNED => Self::_149TopAligned,
935            ffi::GST_VIDEO_AFD_GREATER_THAN_16_9 => Self::GreaterThan169,
936            ffi::GST_VIDEO_AFD_4_3_FULL_16_9_FULL => Self::_43Full169Full,
937            ffi::GST_VIDEO_AFD_4_3_FULL_4_3_PILLAR => Self::_43Full43Pillar,
938            ffi::GST_VIDEO_AFD_16_9_LETTER_16_9_FULL => Self::_169Letter169Full,
939            ffi::GST_VIDEO_AFD_14_9_LETTER_14_9_PILLAR => Self::_149Letter149Pillar,
940            ffi::GST_VIDEO_AFD_4_3_FULL_14_9_CENTER => Self::_43Full149Center,
941            ffi::GST_VIDEO_AFD_16_9_LETTER_14_9_CENTER => Self::_169Letter149Center,
942            ffi::GST_VIDEO_AFD_16_9_LETTER_4_3_CENTER => Self::_169Letter43Center,
943            value => Self::__Unknown(value),
944        }
945    }
946}
947
948#[cfg(feature = "v1_18")]
949#[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
950impl StaticType for VideoAFDValue {
951    #[inline]
952    #[doc(alias = "gst_video_afd_value_get_type")]
953    fn static_type() -> glib::Type {
954        unsafe { from_glib(ffi::gst_video_afd_value_get_type()) }
955    }
956}
957
958#[cfg(feature = "v1_18")]
959#[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
960impl glib::HasParamSpec for VideoAFDValue {
961    type ParamSpec = glib::ParamSpecEnum;
962    type SetValue = Self;
963    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
964
965    fn param_spec_builder() -> Self::BuilderFn {
966        Self::ParamSpec::builder_with_default
967    }
968}
969
970#[cfg(feature = "v1_18")]
971#[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
972impl glib::value::ValueType for VideoAFDValue {
973    type Type = Self;
974}
975
976#[cfg(feature = "v1_18")]
977#[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
978unsafe impl<'a> glib::value::FromValue<'a> for VideoAFDValue {
979    type Checker = glib::value::GenericValueTypeChecker<Self>;
980
981    #[inline]
982    unsafe fn from_value(value: &'a glib::Value) -> Self {
983        skip_assert_initialized!();
984        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
985    }
986}
987
988#[cfg(feature = "v1_18")]
989#[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
990impl ToValue for VideoAFDValue {
991    #[inline]
992    fn to_value(&self) -> glib::Value {
993        let mut value = glib::Value::for_value_type::<Self>();
994        unsafe {
995            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
996        }
997        value
998    }
999
1000    #[inline]
1001    fn value_type(&self) -> glib::Type {
1002        Self::static_type()
1003    }
1004}
1005
1006#[cfg(feature = "v1_18")]
1007#[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
1008impl From<VideoAFDValue> for glib::Value {
1009    #[inline]
1010    fn from(v: VideoAFDValue) -> Self {
1011        skip_assert_initialized!();
1012        ToValue::to_value(&v)
1013    }
1014}
1015
1016#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1017#[non_exhaustive]
1018#[doc(alias = "GstVideoAlphaMode")]
1019pub enum VideoAlphaMode {
1020    #[doc(alias = "GST_VIDEO_ALPHA_MODE_COPY")]
1021    Copy,
1022    #[doc(alias = "GST_VIDEO_ALPHA_MODE_SET")]
1023    Set,
1024    #[doc(alias = "GST_VIDEO_ALPHA_MODE_MULT")]
1025    Mult,
1026    #[doc(hidden)]
1027    __Unknown(i32),
1028}
1029
1030#[doc(hidden)]
1031impl IntoGlib for VideoAlphaMode {
1032    type GlibType = ffi::GstVideoAlphaMode;
1033
1034    #[inline]
1035    fn into_glib(self) -> ffi::GstVideoAlphaMode {
1036        match self {
1037            Self::Copy => ffi::GST_VIDEO_ALPHA_MODE_COPY,
1038            Self::Set => ffi::GST_VIDEO_ALPHA_MODE_SET,
1039            Self::Mult => ffi::GST_VIDEO_ALPHA_MODE_MULT,
1040            Self::__Unknown(value) => value,
1041        }
1042    }
1043}
1044
1045#[doc(hidden)]
1046impl FromGlib<ffi::GstVideoAlphaMode> for VideoAlphaMode {
1047    #[inline]
1048    unsafe fn from_glib(value: ffi::GstVideoAlphaMode) -> Self {
1049        skip_assert_initialized!();
1050
1051        match value {
1052            ffi::GST_VIDEO_ALPHA_MODE_COPY => Self::Copy,
1053            ffi::GST_VIDEO_ALPHA_MODE_SET => Self::Set,
1054            ffi::GST_VIDEO_ALPHA_MODE_MULT => Self::Mult,
1055            value => Self::__Unknown(value),
1056        }
1057    }
1058}
1059
1060impl StaticType for VideoAlphaMode {
1061    #[inline]
1062    #[doc(alias = "gst_video_alpha_mode_get_type")]
1063    fn static_type() -> glib::Type {
1064        unsafe { from_glib(ffi::gst_video_alpha_mode_get_type()) }
1065    }
1066}
1067
1068impl glib::HasParamSpec for VideoAlphaMode {
1069    type ParamSpec = glib::ParamSpecEnum;
1070    type SetValue = Self;
1071    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1072
1073    fn param_spec_builder() -> Self::BuilderFn {
1074        Self::ParamSpec::builder_with_default
1075    }
1076}
1077
1078impl glib::value::ValueType for VideoAlphaMode {
1079    type Type = Self;
1080}
1081
1082unsafe impl<'a> glib::value::FromValue<'a> for VideoAlphaMode {
1083    type Checker = glib::value::GenericValueTypeChecker<Self>;
1084
1085    #[inline]
1086    unsafe fn from_value(value: &'a glib::Value) -> Self {
1087        skip_assert_initialized!();
1088        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1089    }
1090}
1091
1092impl ToValue for VideoAlphaMode {
1093    #[inline]
1094    fn to_value(&self) -> glib::Value {
1095        let mut value = glib::Value::for_value_type::<Self>();
1096        unsafe {
1097            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1098        }
1099        value
1100    }
1101
1102    #[inline]
1103    fn value_type(&self) -> glib::Type {
1104        Self::static_type()
1105    }
1106}
1107
1108impl From<VideoAlphaMode> for glib::Value {
1109    #[inline]
1110    fn from(v: VideoAlphaMode) -> Self {
1111        skip_assert_initialized!();
1112        ToValue::to_value(&v)
1113    }
1114}
1115
1116#[cfg(feature = "v1_16")]
1117#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1118#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1119#[non_exhaustive]
1120#[doc(alias = "GstVideoAncillaryDID")]
1121pub enum VideoAncillaryDID {
1122    #[doc(alias = "GST_VIDEO_ANCILLARY_DID_UNDEFINED")]
1123    Undefined,
1124    #[doc(alias = "GST_VIDEO_ANCILLARY_DID_DELETION")]
1125    Deletion,
1126    #[doc(alias = "GST_VIDEO_ANCILLARY_DID_HANC_3G_AUDIO_DATA_FIRST")]
1127    Hanc3gAudioDataFirst,
1128    #[doc(alias = "GST_VIDEO_ANCILLARY_DID_HANC_3G_AUDIO_DATA_LAST")]
1129    Hanc3gAudioDataLast,
1130    #[doc(alias = "GST_VIDEO_ANCILLARY_DID_HANC_HDTV_AUDIO_DATA_FIRST")]
1131    HancHdtvAudioDataFirst,
1132    #[doc(alias = "GST_VIDEO_ANCILLARY_DID_HANC_HDTV_AUDIO_DATA_LAST")]
1133    HancHdtvAudioDataLast,
1134    #[doc(alias = "GST_VIDEO_ANCILLARY_DID_HANC_SDTV_AUDIO_DATA_1_FIRST")]
1135    HancSdtvAudioData1First,
1136    #[doc(alias = "GST_VIDEO_ANCILLARY_DID_HANC_SDTV_AUDIO_DATA_1_LAST")]
1137    HancSdtvAudioData1Last,
1138    #[doc(alias = "GST_VIDEO_ANCILLARY_DID_CAMERA_POSITION")]
1139    CameraPosition,
1140    #[doc(alias = "GST_VIDEO_ANCILLARY_DID_HANC_ERROR_DETECTION")]
1141    HancErrorDetection,
1142    #[doc(alias = "GST_VIDEO_ANCILLARY_DID_HANC_SDTV_AUDIO_DATA_2_FIRST")]
1143    HancSdtvAudioData2First,
1144    #[doc(alias = "GST_VIDEO_ANCILLARY_DID_HANC_SDTV_AUDIO_DATA_2_LAST")]
1145    HancSdtvAudioData2Last,
1146    #[doc(hidden)]
1147    __Unknown(i32),
1148}
1149
1150#[cfg(feature = "v1_16")]
1151#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1152#[doc(hidden)]
1153impl IntoGlib for VideoAncillaryDID {
1154    type GlibType = ffi::GstVideoAncillaryDID;
1155
1156    #[inline]
1157    fn into_glib(self) -> ffi::GstVideoAncillaryDID {
1158        match self {
1159            Self::Undefined => ffi::GST_VIDEO_ANCILLARY_DID_UNDEFINED,
1160            Self::Deletion => ffi::GST_VIDEO_ANCILLARY_DID_DELETION,
1161            Self::Hanc3gAudioDataFirst => ffi::GST_VIDEO_ANCILLARY_DID_HANC_3G_AUDIO_DATA_FIRST,
1162            Self::Hanc3gAudioDataLast => ffi::GST_VIDEO_ANCILLARY_DID_HANC_3G_AUDIO_DATA_LAST,
1163            Self::HancHdtvAudioDataFirst => ffi::GST_VIDEO_ANCILLARY_DID_HANC_HDTV_AUDIO_DATA_FIRST,
1164            Self::HancHdtvAudioDataLast => ffi::GST_VIDEO_ANCILLARY_DID_HANC_HDTV_AUDIO_DATA_LAST,
1165            Self::HancSdtvAudioData1First => {
1166                ffi::GST_VIDEO_ANCILLARY_DID_HANC_SDTV_AUDIO_DATA_1_FIRST
1167            }
1168            Self::HancSdtvAudioData1Last => {
1169                ffi::GST_VIDEO_ANCILLARY_DID_HANC_SDTV_AUDIO_DATA_1_LAST
1170            }
1171            Self::CameraPosition => ffi::GST_VIDEO_ANCILLARY_DID_CAMERA_POSITION,
1172            Self::HancErrorDetection => ffi::GST_VIDEO_ANCILLARY_DID_HANC_ERROR_DETECTION,
1173            Self::HancSdtvAudioData2First => {
1174                ffi::GST_VIDEO_ANCILLARY_DID_HANC_SDTV_AUDIO_DATA_2_FIRST
1175            }
1176            Self::HancSdtvAudioData2Last => {
1177                ffi::GST_VIDEO_ANCILLARY_DID_HANC_SDTV_AUDIO_DATA_2_LAST
1178            }
1179            Self::__Unknown(value) => value,
1180        }
1181    }
1182}
1183
1184#[cfg(feature = "v1_16")]
1185#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1186#[doc(hidden)]
1187impl FromGlib<ffi::GstVideoAncillaryDID> for VideoAncillaryDID {
1188    #[inline]
1189    unsafe fn from_glib(value: ffi::GstVideoAncillaryDID) -> Self {
1190        skip_assert_initialized!();
1191
1192        match value {
1193            ffi::GST_VIDEO_ANCILLARY_DID_UNDEFINED => Self::Undefined,
1194            ffi::GST_VIDEO_ANCILLARY_DID_DELETION => Self::Deletion,
1195            ffi::GST_VIDEO_ANCILLARY_DID_HANC_3G_AUDIO_DATA_FIRST => Self::Hanc3gAudioDataFirst,
1196            ffi::GST_VIDEO_ANCILLARY_DID_HANC_3G_AUDIO_DATA_LAST => Self::Hanc3gAudioDataLast,
1197            ffi::GST_VIDEO_ANCILLARY_DID_HANC_HDTV_AUDIO_DATA_FIRST => Self::HancHdtvAudioDataFirst,
1198            ffi::GST_VIDEO_ANCILLARY_DID_HANC_HDTV_AUDIO_DATA_LAST => Self::HancHdtvAudioDataLast,
1199            ffi::GST_VIDEO_ANCILLARY_DID_HANC_SDTV_AUDIO_DATA_1_FIRST => {
1200                Self::HancSdtvAudioData1First
1201            }
1202            ffi::GST_VIDEO_ANCILLARY_DID_HANC_SDTV_AUDIO_DATA_1_LAST => {
1203                Self::HancSdtvAudioData1Last
1204            }
1205            ffi::GST_VIDEO_ANCILLARY_DID_CAMERA_POSITION => Self::CameraPosition,
1206            ffi::GST_VIDEO_ANCILLARY_DID_HANC_ERROR_DETECTION => Self::HancErrorDetection,
1207            ffi::GST_VIDEO_ANCILLARY_DID_HANC_SDTV_AUDIO_DATA_2_FIRST => {
1208                Self::HancSdtvAudioData2First
1209            }
1210            ffi::GST_VIDEO_ANCILLARY_DID_HANC_SDTV_AUDIO_DATA_2_LAST => {
1211                Self::HancSdtvAudioData2Last
1212            }
1213            value => Self::__Unknown(value),
1214        }
1215    }
1216}
1217
1218#[cfg(feature = "v1_16")]
1219#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1220impl StaticType for VideoAncillaryDID {
1221    #[inline]
1222    #[doc(alias = "gst_video_ancillary_did_get_type")]
1223    fn static_type() -> glib::Type {
1224        unsafe { from_glib(ffi::gst_video_ancillary_did_get_type()) }
1225    }
1226}
1227
1228#[cfg(feature = "v1_16")]
1229#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1230impl glib::HasParamSpec for VideoAncillaryDID {
1231    type ParamSpec = glib::ParamSpecEnum;
1232    type SetValue = Self;
1233    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1234
1235    fn param_spec_builder() -> Self::BuilderFn {
1236        Self::ParamSpec::builder_with_default
1237    }
1238}
1239
1240#[cfg(feature = "v1_16")]
1241#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1242impl glib::value::ValueType for VideoAncillaryDID {
1243    type Type = Self;
1244}
1245
1246#[cfg(feature = "v1_16")]
1247#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1248unsafe impl<'a> glib::value::FromValue<'a> for VideoAncillaryDID {
1249    type Checker = glib::value::GenericValueTypeChecker<Self>;
1250
1251    #[inline]
1252    unsafe fn from_value(value: &'a glib::Value) -> Self {
1253        skip_assert_initialized!();
1254        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1255    }
1256}
1257
1258#[cfg(feature = "v1_16")]
1259#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1260impl ToValue for VideoAncillaryDID {
1261    #[inline]
1262    fn to_value(&self) -> glib::Value {
1263        let mut value = glib::Value::for_value_type::<Self>();
1264        unsafe {
1265            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1266        }
1267        value
1268    }
1269
1270    #[inline]
1271    fn value_type(&self) -> glib::Type {
1272        Self::static_type()
1273    }
1274}
1275
1276#[cfg(feature = "v1_16")]
1277#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1278impl From<VideoAncillaryDID> for glib::Value {
1279    #[inline]
1280    fn from(v: VideoAncillaryDID) -> Self {
1281        skip_assert_initialized!();
1282        ToValue::to_value(&v)
1283    }
1284}
1285
1286#[cfg(feature = "v1_16")]
1287#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1288#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1289#[non_exhaustive]
1290#[doc(alias = "GstVideoAncillaryDID16")]
1291pub enum VideoAncillaryDID16 {
1292    #[doc(alias = "GST_VIDEO_ANCILLARY_DID16_S334_EIA_708")]
1293    S334Eia708,
1294    #[doc(alias = "GST_VIDEO_ANCILLARY_DID16_S334_EIA_608")]
1295    S334Eia608,
1296    #[doc(alias = "GST_VIDEO_ANCILLARY_DID16_S2016_3_AFD_BAR")]
1297    S20163AfdBar,
1298    #[doc(hidden)]
1299    __Unknown(i32),
1300}
1301
1302#[cfg(feature = "v1_16")]
1303#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1304#[doc(hidden)]
1305impl IntoGlib for VideoAncillaryDID16 {
1306    type GlibType = ffi::GstVideoAncillaryDID16;
1307
1308    #[inline]
1309    fn into_glib(self) -> ffi::GstVideoAncillaryDID16 {
1310        match self {
1311            Self::S334Eia708 => ffi::GST_VIDEO_ANCILLARY_DID16_S334_EIA_708,
1312            Self::S334Eia608 => ffi::GST_VIDEO_ANCILLARY_DID16_S334_EIA_608,
1313            Self::S20163AfdBar => ffi::GST_VIDEO_ANCILLARY_DID16_S2016_3_AFD_BAR,
1314            Self::__Unknown(value) => value,
1315        }
1316    }
1317}
1318
1319#[cfg(feature = "v1_16")]
1320#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1321#[doc(hidden)]
1322impl FromGlib<ffi::GstVideoAncillaryDID16> for VideoAncillaryDID16 {
1323    #[inline]
1324    unsafe fn from_glib(value: ffi::GstVideoAncillaryDID16) -> Self {
1325        skip_assert_initialized!();
1326
1327        match value {
1328            ffi::GST_VIDEO_ANCILLARY_DID16_S334_EIA_708 => Self::S334Eia708,
1329            ffi::GST_VIDEO_ANCILLARY_DID16_S334_EIA_608 => Self::S334Eia608,
1330            ffi::GST_VIDEO_ANCILLARY_DID16_S2016_3_AFD_BAR => Self::S20163AfdBar,
1331            value => Self::__Unknown(value),
1332        }
1333    }
1334}
1335
1336#[cfg(feature = "v1_16")]
1337#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1338impl StaticType for VideoAncillaryDID16 {
1339    #[inline]
1340    #[doc(alias = "gst_video_ancillary_di_d16_get_type")]
1341    fn static_type() -> glib::Type {
1342        unsafe { from_glib(ffi::gst_video_ancillary_di_d16_get_type()) }
1343    }
1344}
1345
1346#[cfg(feature = "v1_16")]
1347#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1348impl glib::HasParamSpec for VideoAncillaryDID16 {
1349    type ParamSpec = glib::ParamSpecEnum;
1350    type SetValue = Self;
1351    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1352
1353    fn param_spec_builder() -> Self::BuilderFn {
1354        Self::ParamSpec::builder_with_default
1355    }
1356}
1357
1358#[cfg(feature = "v1_16")]
1359#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1360impl glib::value::ValueType for VideoAncillaryDID16 {
1361    type Type = Self;
1362}
1363
1364#[cfg(feature = "v1_16")]
1365#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1366unsafe impl<'a> glib::value::FromValue<'a> for VideoAncillaryDID16 {
1367    type Checker = glib::value::GenericValueTypeChecker<Self>;
1368
1369    #[inline]
1370    unsafe fn from_value(value: &'a glib::Value) -> Self {
1371        skip_assert_initialized!();
1372        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1373    }
1374}
1375
1376#[cfg(feature = "v1_16")]
1377#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1378impl ToValue for VideoAncillaryDID16 {
1379    #[inline]
1380    fn to_value(&self) -> glib::Value {
1381        let mut value = glib::Value::for_value_type::<Self>();
1382        unsafe {
1383            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1384        }
1385        value
1386    }
1387
1388    #[inline]
1389    fn value_type(&self) -> glib::Type {
1390        Self::static_type()
1391    }
1392}
1393
1394#[cfg(feature = "v1_16")]
1395#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1396impl From<VideoAncillaryDID16> for glib::Value {
1397    #[inline]
1398    fn from(v: VideoAncillaryDID16) -> Self {
1399        skip_assert_initialized!();
1400        ToValue::to_value(&v)
1401    }
1402}
1403
1404#[cfg(feature = "v1_16")]
1405#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1406#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1407#[non_exhaustive]
1408#[doc(alias = "GstVideoCaptionType")]
1409pub enum VideoCaptionType {
1410    #[doc(alias = "GST_VIDEO_CAPTION_TYPE_UNKNOWN")]
1411    Unknown,
1412    #[doc(alias = "GST_VIDEO_CAPTION_TYPE_CEA608_RAW")]
1413    Cea608Raw,
1414    #[doc(alias = "GST_VIDEO_CAPTION_TYPE_CEA608_S334_1A")]
1415    Cea608S3341a,
1416    #[doc(alias = "GST_VIDEO_CAPTION_TYPE_CEA708_RAW")]
1417    Cea708Raw,
1418    #[doc(alias = "GST_VIDEO_CAPTION_TYPE_CEA708_CDP")]
1419    Cea708Cdp,
1420    #[doc(hidden)]
1421    __Unknown(i32),
1422}
1423
1424#[cfg(feature = "v1_16")]
1425#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1426impl VideoCaptionType {
1427    #[doc(alias = "gst_video_caption_type_to_caps")]
1428    pub fn to_caps(self) -> gst::Caps {
1429        assert_initialized_main_thread!();
1430        unsafe { from_glib_full(ffi::gst_video_caption_type_to_caps(self.into_glib())) }
1431    }
1432}
1433
1434#[cfg(feature = "v1_16")]
1435#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1436#[doc(hidden)]
1437impl IntoGlib for VideoCaptionType {
1438    type GlibType = ffi::GstVideoCaptionType;
1439
1440    #[inline]
1441    fn into_glib(self) -> ffi::GstVideoCaptionType {
1442        match self {
1443            Self::Unknown => ffi::GST_VIDEO_CAPTION_TYPE_UNKNOWN,
1444            Self::Cea608Raw => ffi::GST_VIDEO_CAPTION_TYPE_CEA608_RAW,
1445            Self::Cea608S3341a => ffi::GST_VIDEO_CAPTION_TYPE_CEA608_S334_1A,
1446            Self::Cea708Raw => ffi::GST_VIDEO_CAPTION_TYPE_CEA708_RAW,
1447            Self::Cea708Cdp => ffi::GST_VIDEO_CAPTION_TYPE_CEA708_CDP,
1448            Self::__Unknown(value) => value,
1449        }
1450    }
1451}
1452
1453#[cfg(feature = "v1_16")]
1454#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1455#[doc(hidden)]
1456impl FromGlib<ffi::GstVideoCaptionType> for VideoCaptionType {
1457    #[inline]
1458    unsafe fn from_glib(value: ffi::GstVideoCaptionType) -> Self {
1459        skip_assert_initialized!();
1460
1461        match value {
1462            ffi::GST_VIDEO_CAPTION_TYPE_UNKNOWN => Self::Unknown,
1463            ffi::GST_VIDEO_CAPTION_TYPE_CEA608_RAW => Self::Cea608Raw,
1464            ffi::GST_VIDEO_CAPTION_TYPE_CEA608_S334_1A => Self::Cea608S3341a,
1465            ffi::GST_VIDEO_CAPTION_TYPE_CEA708_RAW => Self::Cea708Raw,
1466            ffi::GST_VIDEO_CAPTION_TYPE_CEA708_CDP => Self::Cea708Cdp,
1467            value => Self::__Unknown(value),
1468        }
1469    }
1470}
1471
1472#[cfg(feature = "v1_16")]
1473#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1474impl StaticType for VideoCaptionType {
1475    #[inline]
1476    #[doc(alias = "gst_video_caption_type_get_type")]
1477    fn static_type() -> glib::Type {
1478        unsafe { from_glib(ffi::gst_video_caption_type_get_type()) }
1479    }
1480}
1481
1482#[cfg(feature = "v1_16")]
1483#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1484impl glib::HasParamSpec for VideoCaptionType {
1485    type ParamSpec = glib::ParamSpecEnum;
1486    type SetValue = Self;
1487    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1488
1489    fn param_spec_builder() -> Self::BuilderFn {
1490        Self::ParamSpec::builder_with_default
1491    }
1492}
1493
1494#[cfg(feature = "v1_16")]
1495#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1496impl glib::value::ValueType for VideoCaptionType {
1497    type Type = Self;
1498}
1499
1500#[cfg(feature = "v1_16")]
1501#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1502unsafe impl<'a> glib::value::FromValue<'a> for VideoCaptionType {
1503    type Checker = glib::value::GenericValueTypeChecker<Self>;
1504
1505    #[inline]
1506    unsafe fn from_value(value: &'a glib::Value) -> Self {
1507        skip_assert_initialized!();
1508        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1509    }
1510}
1511
1512#[cfg(feature = "v1_16")]
1513#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1514impl ToValue for VideoCaptionType {
1515    #[inline]
1516    fn to_value(&self) -> glib::Value {
1517        let mut value = glib::Value::for_value_type::<Self>();
1518        unsafe {
1519            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1520        }
1521        value
1522    }
1523
1524    #[inline]
1525    fn value_type(&self) -> glib::Type {
1526        Self::static_type()
1527    }
1528}
1529
1530#[cfg(feature = "v1_16")]
1531#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1532impl From<VideoCaptionType> for glib::Value {
1533    #[inline]
1534    fn from(v: VideoCaptionType) -> Self {
1535        skip_assert_initialized!();
1536        ToValue::to_value(&v)
1537    }
1538}
1539
1540#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1541#[non_exhaustive]
1542#[doc(alias = "GstVideoChromaMode")]
1543pub enum VideoChromaMode {
1544    #[doc(alias = "GST_VIDEO_CHROMA_MODE_FULL")]
1545    Full,
1546    #[doc(alias = "GST_VIDEO_CHROMA_MODE_UPSAMPLE_ONLY")]
1547    UpsampleOnly,
1548    #[doc(alias = "GST_VIDEO_CHROMA_MODE_DOWNSAMPLE_ONLY")]
1549    DownsampleOnly,
1550    #[doc(alias = "GST_VIDEO_CHROMA_MODE_NONE")]
1551    None,
1552    #[doc(hidden)]
1553    __Unknown(i32),
1554}
1555
1556#[doc(hidden)]
1557impl IntoGlib for VideoChromaMode {
1558    type GlibType = ffi::GstVideoChromaMode;
1559
1560    #[inline]
1561    fn into_glib(self) -> ffi::GstVideoChromaMode {
1562        match self {
1563            Self::Full => ffi::GST_VIDEO_CHROMA_MODE_FULL,
1564            Self::UpsampleOnly => ffi::GST_VIDEO_CHROMA_MODE_UPSAMPLE_ONLY,
1565            Self::DownsampleOnly => ffi::GST_VIDEO_CHROMA_MODE_DOWNSAMPLE_ONLY,
1566            Self::None => ffi::GST_VIDEO_CHROMA_MODE_NONE,
1567            Self::__Unknown(value) => value,
1568        }
1569    }
1570}
1571
1572#[doc(hidden)]
1573impl FromGlib<ffi::GstVideoChromaMode> for VideoChromaMode {
1574    #[inline]
1575    unsafe fn from_glib(value: ffi::GstVideoChromaMode) -> Self {
1576        skip_assert_initialized!();
1577
1578        match value {
1579            ffi::GST_VIDEO_CHROMA_MODE_FULL => Self::Full,
1580            ffi::GST_VIDEO_CHROMA_MODE_UPSAMPLE_ONLY => Self::UpsampleOnly,
1581            ffi::GST_VIDEO_CHROMA_MODE_DOWNSAMPLE_ONLY => Self::DownsampleOnly,
1582            ffi::GST_VIDEO_CHROMA_MODE_NONE => Self::None,
1583            value => Self::__Unknown(value),
1584        }
1585    }
1586}
1587
1588impl StaticType for VideoChromaMode {
1589    #[inline]
1590    #[doc(alias = "gst_video_chroma_mode_get_type")]
1591    fn static_type() -> glib::Type {
1592        unsafe { from_glib(ffi::gst_video_chroma_mode_get_type()) }
1593    }
1594}
1595
1596impl glib::HasParamSpec for VideoChromaMode {
1597    type ParamSpec = glib::ParamSpecEnum;
1598    type SetValue = Self;
1599    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1600
1601    fn param_spec_builder() -> Self::BuilderFn {
1602        Self::ParamSpec::builder_with_default
1603    }
1604}
1605
1606impl glib::value::ValueType for VideoChromaMode {
1607    type Type = Self;
1608}
1609
1610unsafe impl<'a> glib::value::FromValue<'a> for VideoChromaMode {
1611    type Checker = glib::value::GenericValueTypeChecker<Self>;
1612
1613    #[inline]
1614    unsafe fn from_value(value: &'a glib::Value) -> Self {
1615        skip_assert_initialized!();
1616        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1617    }
1618}
1619
1620impl ToValue for VideoChromaMode {
1621    #[inline]
1622    fn to_value(&self) -> glib::Value {
1623        let mut value = glib::Value::for_value_type::<Self>();
1624        unsafe {
1625            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1626        }
1627        value
1628    }
1629
1630    #[inline]
1631    fn value_type(&self) -> glib::Type {
1632        Self::static_type()
1633    }
1634}
1635
1636impl From<VideoChromaMode> for glib::Value {
1637    #[inline]
1638    fn from(v: VideoChromaMode) -> Self {
1639        skip_assert_initialized!();
1640        ToValue::to_value(&v)
1641    }
1642}
1643
1644#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1645#[non_exhaustive]
1646#[doc(alias = "GstVideoColorMatrix")]
1647pub enum VideoColorMatrix {
1648    #[doc(alias = "GST_VIDEO_COLOR_MATRIX_UNKNOWN")]
1649    Unknown,
1650    #[doc(alias = "GST_VIDEO_COLOR_MATRIX_RGB")]
1651    Rgb,
1652    #[doc(alias = "GST_VIDEO_COLOR_MATRIX_FCC")]
1653    Fcc,
1654    #[doc(alias = "GST_VIDEO_COLOR_MATRIX_BT709")]
1655    Bt709,
1656    #[doc(alias = "GST_VIDEO_COLOR_MATRIX_BT601")]
1657    Bt601,
1658    #[doc(alias = "GST_VIDEO_COLOR_MATRIX_SMPTE240M")]
1659    Smpte240m,
1660    #[doc(alias = "GST_VIDEO_COLOR_MATRIX_BT2020")]
1661    Bt2020,
1662    #[doc(hidden)]
1663    __Unknown(i32),
1664}
1665
1666impl VideoColorMatrix {
1667    #[cfg(feature = "v1_18")]
1668    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
1669    #[doc(alias = "gst_video_color_matrix_from_iso")]
1670    pub fn from_iso(value: u32) -> VideoColorMatrix {
1671        assert_initialized_main_thread!();
1672        unsafe { from_glib(ffi::gst_video_color_matrix_from_iso(value)) }
1673    }
1674
1675    #[cfg(feature = "v1_18")]
1676    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
1677    #[doc(alias = "gst_video_color_matrix_to_iso")]
1678    pub fn to_iso(self) -> u32 {
1679        assert_initialized_main_thread!();
1680        unsafe { ffi::gst_video_color_matrix_to_iso(self.into_glib()) }
1681    }
1682}
1683
1684#[doc(hidden)]
1685impl IntoGlib for VideoColorMatrix {
1686    type GlibType = ffi::GstVideoColorMatrix;
1687
1688    #[inline]
1689    fn into_glib(self) -> ffi::GstVideoColorMatrix {
1690        match self {
1691            Self::Unknown => ffi::GST_VIDEO_COLOR_MATRIX_UNKNOWN,
1692            Self::Rgb => ffi::GST_VIDEO_COLOR_MATRIX_RGB,
1693            Self::Fcc => ffi::GST_VIDEO_COLOR_MATRIX_FCC,
1694            Self::Bt709 => ffi::GST_VIDEO_COLOR_MATRIX_BT709,
1695            Self::Bt601 => ffi::GST_VIDEO_COLOR_MATRIX_BT601,
1696            Self::Smpte240m => ffi::GST_VIDEO_COLOR_MATRIX_SMPTE240M,
1697            Self::Bt2020 => ffi::GST_VIDEO_COLOR_MATRIX_BT2020,
1698            Self::__Unknown(value) => value,
1699        }
1700    }
1701}
1702
1703#[doc(hidden)]
1704impl FromGlib<ffi::GstVideoColorMatrix> for VideoColorMatrix {
1705    #[inline]
1706    unsafe fn from_glib(value: ffi::GstVideoColorMatrix) -> Self {
1707        skip_assert_initialized!();
1708
1709        match value {
1710            ffi::GST_VIDEO_COLOR_MATRIX_UNKNOWN => Self::Unknown,
1711            ffi::GST_VIDEO_COLOR_MATRIX_RGB => Self::Rgb,
1712            ffi::GST_VIDEO_COLOR_MATRIX_FCC => Self::Fcc,
1713            ffi::GST_VIDEO_COLOR_MATRIX_BT709 => Self::Bt709,
1714            ffi::GST_VIDEO_COLOR_MATRIX_BT601 => Self::Bt601,
1715            ffi::GST_VIDEO_COLOR_MATRIX_SMPTE240M => Self::Smpte240m,
1716            ffi::GST_VIDEO_COLOR_MATRIX_BT2020 => Self::Bt2020,
1717            value => Self::__Unknown(value),
1718        }
1719    }
1720}
1721
1722impl StaticType for VideoColorMatrix {
1723    #[inline]
1724    #[doc(alias = "gst_video_color_matrix_get_type")]
1725    fn static_type() -> glib::Type {
1726        unsafe { from_glib(ffi::gst_video_color_matrix_get_type()) }
1727    }
1728}
1729
1730impl glib::HasParamSpec for VideoColorMatrix {
1731    type ParamSpec = glib::ParamSpecEnum;
1732    type SetValue = Self;
1733    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1734
1735    fn param_spec_builder() -> Self::BuilderFn {
1736        Self::ParamSpec::builder_with_default
1737    }
1738}
1739
1740impl glib::value::ValueType for VideoColorMatrix {
1741    type Type = Self;
1742}
1743
1744unsafe impl<'a> glib::value::FromValue<'a> for VideoColorMatrix {
1745    type Checker = glib::value::GenericValueTypeChecker<Self>;
1746
1747    #[inline]
1748    unsafe fn from_value(value: &'a glib::Value) -> Self {
1749        skip_assert_initialized!();
1750        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1751    }
1752}
1753
1754impl ToValue for VideoColorMatrix {
1755    #[inline]
1756    fn to_value(&self) -> glib::Value {
1757        let mut value = glib::Value::for_value_type::<Self>();
1758        unsafe {
1759            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1760        }
1761        value
1762    }
1763
1764    #[inline]
1765    fn value_type(&self) -> glib::Type {
1766        Self::static_type()
1767    }
1768}
1769
1770impl From<VideoColorMatrix> for glib::Value {
1771    #[inline]
1772    fn from(v: VideoColorMatrix) -> Self {
1773        skip_assert_initialized!();
1774        ToValue::to_value(&v)
1775    }
1776}
1777
1778#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1779#[non_exhaustive]
1780#[doc(alias = "GstVideoColorPrimaries")]
1781pub enum VideoColorPrimaries {
1782    #[doc(alias = "GST_VIDEO_COLOR_PRIMARIES_UNKNOWN")]
1783    Unknown,
1784    #[doc(alias = "GST_VIDEO_COLOR_PRIMARIES_BT709")]
1785    Bt709,
1786    #[doc(alias = "GST_VIDEO_COLOR_PRIMARIES_BT470M")]
1787    Bt470m,
1788    #[doc(alias = "GST_VIDEO_COLOR_PRIMARIES_BT470BG")]
1789    Bt470bg,
1790    #[doc(alias = "GST_VIDEO_COLOR_PRIMARIES_SMPTE170M")]
1791    Smpte170m,
1792    #[doc(alias = "GST_VIDEO_COLOR_PRIMARIES_SMPTE240M")]
1793    Smpte240m,
1794    #[doc(alias = "GST_VIDEO_COLOR_PRIMARIES_FILM")]
1795    Film,
1796    #[doc(alias = "GST_VIDEO_COLOR_PRIMARIES_BT2020")]
1797    Bt2020,
1798    #[doc(alias = "GST_VIDEO_COLOR_PRIMARIES_ADOBERGB")]
1799    Adobergb,
1800    #[cfg(feature = "v1_16")]
1801    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1802    #[doc(alias = "GST_VIDEO_COLOR_PRIMARIES_SMPTEST428")]
1803    Smptest428,
1804    #[cfg(feature = "v1_16")]
1805    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1806    #[doc(alias = "GST_VIDEO_COLOR_PRIMARIES_SMPTERP431")]
1807    Smpterp431,
1808    #[cfg(feature = "v1_16")]
1809    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1810    #[doc(alias = "GST_VIDEO_COLOR_PRIMARIES_SMPTEEG432")]
1811    Smpteeg432,
1812    #[cfg(feature = "v1_16")]
1813    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1814    #[doc(alias = "GST_VIDEO_COLOR_PRIMARIES_EBU3213")]
1815    Ebu3213,
1816    #[doc(hidden)]
1817    __Unknown(i32),
1818}
1819
1820impl VideoColorPrimaries {
1821    #[cfg(feature = "v1_18")]
1822    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
1823    #[doc(alias = "gst_video_color_primaries_from_iso")]
1824    pub fn from_iso(value: u32) -> VideoColorPrimaries {
1825        assert_initialized_main_thread!();
1826        unsafe { from_glib(ffi::gst_video_color_primaries_from_iso(value)) }
1827    }
1828
1829    //#[doc(alias = "gst_video_color_primaries_get_info")]
1830    //#[doc(alias = "get_info")]
1831    //pub fn info(self) -> /*Ignored*/VideoColorPrimariesInfo {
1832    //    unsafe { TODO: call ffi:gst_video_color_primaries_get_info() }
1833    //}
1834
1835    #[cfg(feature = "v1_22")]
1836    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
1837    #[doc(alias = "gst_video_color_primaries_is_equivalent")]
1838    pub fn is_equivalent(self, other: VideoColorPrimaries) -> bool {
1839        assert_initialized_main_thread!();
1840        unsafe {
1841            from_glib(ffi::gst_video_color_primaries_is_equivalent(
1842                self.into_glib(),
1843                other.into_glib(),
1844            ))
1845        }
1846    }
1847
1848    #[cfg(feature = "v1_18")]
1849    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
1850    #[doc(alias = "gst_video_color_primaries_to_iso")]
1851    pub fn to_iso(self) -> u32 {
1852        assert_initialized_main_thread!();
1853        unsafe { ffi::gst_video_color_primaries_to_iso(self.into_glib()) }
1854    }
1855}
1856
1857#[doc(hidden)]
1858impl IntoGlib for VideoColorPrimaries {
1859    type GlibType = ffi::GstVideoColorPrimaries;
1860
1861    fn into_glib(self) -> ffi::GstVideoColorPrimaries {
1862        match self {
1863            Self::Unknown => ffi::GST_VIDEO_COLOR_PRIMARIES_UNKNOWN,
1864            Self::Bt709 => ffi::GST_VIDEO_COLOR_PRIMARIES_BT709,
1865            Self::Bt470m => ffi::GST_VIDEO_COLOR_PRIMARIES_BT470M,
1866            Self::Bt470bg => ffi::GST_VIDEO_COLOR_PRIMARIES_BT470BG,
1867            Self::Smpte170m => ffi::GST_VIDEO_COLOR_PRIMARIES_SMPTE170M,
1868            Self::Smpte240m => ffi::GST_VIDEO_COLOR_PRIMARIES_SMPTE240M,
1869            Self::Film => ffi::GST_VIDEO_COLOR_PRIMARIES_FILM,
1870            Self::Bt2020 => ffi::GST_VIDEO_COLOR_PRIMARIES_BT2020,
1871            Self::Adobergb => ffi::GST_VIDEO_COLOR_PRIMARIES_ADOBERGB,
1872            #[cfg(feature = "v1_16")]
1873            Self::Smptest428 => ffi::GST_VIDEO_COLOR_PRIMARIES_SMPTEST428,
1874            #[cfg(feature = "v1_16")]
1875            Self::Smpterp431 => ffi::GST_VIDEO_COLOR_PRIMARIES_SMPTERP431,
1876            #[cfg(feature = "v1_16")]
1877            Self::Smpteeg432 => ffi::GST_VIDEO_COLOR_PRIMARIES_SMPTEEG432,
1878            #[cfg(feature = "v1_16")]
1879            Self::Ebu3213 => ffi::GST_VIDEO_COLOR_PRIMARIES_EBU3213,
1880            Self::__Unknown(value) => value,
1881        }
1882    }
1883}
1884
1885#[doc(hidden)]
1886impl FromGlib<ffi::GstVideoColorPrimaries> for VideoColorPrimaries {
1887    unsafe fn from_glib(value: ffi::GstVideoColorPrimaries) -> Self {
1888        skip_assert_initialized!();
1889
1890        match value {
1891            ffi::GST_VIDEO_COLOR_PRIMARIES_UNKNOWN => Self::Unknown,
1892            ffi::GST_VIDEO_COLOR_PRIMARIES_BT709 => Self::Bt709,
1893            ffi::GST_VIDEO_COLOR_PRIMARIES_BT470M => Self::Bt470m,
1894            ffi::GST_VIDEO_COLOR_PRIMARIES_BT470BG => Self::Bt470bg,
1895            ffi::GST_VIDEO_COLOR_PRIMARIES_SMPTE170M => Self::Smpte170m,
1896            ffi::GST_VIDEO_COLOR_PRIMARIES_SMPTE240M => Self::Smpte240m,
1897            ffi::GST_VIDEO_COLOR_PRIMARIES_FILM => Self::Film,
1898            ffi::GST_VIDEO_COLOR_PRIMARIES_BT2020 => Self::Bt2020,
1899            ffi::GST_VIDEO_COLOR_PRIMARIES_ADOBERGB => Self::Adobergb,
1900            #[cfg(feature = "v1_16")]
1901            ffi::GST_VIDEO_COLOR_PRIMARIES_SMPTEST428 => Self::Smptest428,
1902            #[cfg(feature = "v1_16")]
1903            ffi::GST_VIDEO_COLOR_PRIMARIES_SMPTERP431 => Self::Smpterp431,
1904            #[cfg(feature = "v1_16")]
1905            ffi::GST_VIDEO_COLOR_PRIMARIES_SMPTEEG432 => Self::Smpteeg432,
1906            #[cfg(feature = "v1_16")]
1907            ffi::GST_VIDEO_COLOR_PRIMARIES_EBU3213 => Self::Ebu3213,
1908            value => Self::__Unknown(value),
1909        }
1910    }
1911}
1912
1913impl StaticType for VideoColorPrimaries {
1914    #[inline]
1915    #[doc(alias = "gst_video_color_primaries_get_type")]
1916    fn static_type() -> glib::Type {
1917        unsafe { from_glib(ffi::gst_video_color_primaries_get_type()) }
1918    }
1919}
1920
1921impl glib::HasParamSpec for VideoColorPrimaries {
1922    type ParamSpec = glib::ParamSpecEnum;
1923    type SetValue = Self;
1924    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1925
1926    fn param_spec_builder() -> Self::BuilderFn {
1927        Self::ParamSpec::builder_with_default
1928    }
1929}
1930
1931impl glib::value::ValueType for VideoColorPrimaries {
1932    type Type = Self;
1933}
1934
1935unsafe impl<'a> glib::value::FromValue<'a> for VideoColorPrimaries {
1936    type Checker = glib::value::GenericValueTypeChecker<Self>;
1937
1938    #[inline]
1939    unsafe fn from_value(value: &'a glib::Value) -> Self {
1940        skip_assert_initialized!();
1941        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1942    }
1943}
1944
1945impl ToValue for VideoColorPrimaries {
1946    #[inline]
1947    fn to_value(&self) -> glib::Value {
1948        let mut value = glib::Value::for_value_type::<Self>();
1949        unsafe {
1950            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1951        }
1952        value
1953    }
1954
1955    #[inline]
1956    fn value_type(&self) -> glib::Type {
1957        Self::static_type()
1958    }
1959}
1960
1961impl From<VideoColorPrimaries> for glib::Value {
1962    #[inline]
1963    fn from(v: VideoColorPrimaries) -> Self {
1964        skip_assert_initialized!();
1965        ToValue::to_value(&v)
1966    }
1967}
1968
1969#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1970#[non_exhaustive]
1971#[doc(alias = "GstVideoDitherMethod")]
1972pub enum VideoDitherMethod {
1973    #[doc(alias = "GST_VIDEO_DITHER_NONE")]
1974    None,
1975    #[doc(alias = "GST_VIDEO_DITHER_VERTERR")]
1976    Verterr,
1977    #[doc(alias = "GST_VIDEO_DITHER_FLOYD_STEINBERG")]
1978    FloydSteinberg,
1979    #[doc(alias = "GST_VIDEO_DITHER_SIERRA_LITE")]
1980    SierraLite,
1981    #[doc(alias = "GST_VIDEO_DITHER_BAYER")]
1982    Bayer,
1983    #[doc(hidden)]
1984    __Unknown(i32),
1985}
1986
1987#[doc(hidden)]
1988impl IntoGlib for VideoDitherMethod {
1989    type GlibType = ffi::GstVideoDitherMethod;
1990
1991    #[inline]
1992    fn into_glib(self) -> ffi::GstVideoDitherMethod {
1993        match self {
1994            Self::None => ffi::GST_VIDEO_DITHER_NONE,
1995            Self::Verterr => ffi::GST_VIDEO_DITHER_VERTERR,
1996            Self::FloydSteinberg => ffi::GST_VIDEO_DITHER_FLOYD_STEINBERG,
1997            Self::SierraLite => ffi::GST_VIDEO_DITHER_SIERRA_LITE,
1998            Self::Bayer => ffi::GST_VIDEO_DITHER_BAYER,
1999            Self::__Unknown(value) => value,
2000        }
2001    }
2002}
2003
2004#[doc(hidden)]
2005impl FromGlib<ffi::GstVideoDitherMethod> for VideoDitherMethod {
2006    #[inline]
2007    unsafe fn from_glib(value: ffi::GstVideoDitherMethod) -> Self {
2008        skip_assert_initialized!();
2009
2010        match value {
2011            ffi::GST_VIDEO_DITHER_NONE => Self::None,
2012            ffi::GST_VIDEO_DITHER_VERTERR => Self::Verterr,
2013            ffi::GST_VIDEO_DITHER_FLOYD_STEINBERG => Self::FloydSteinberg,
2014            ffi::GST_VIDEO_DITHER_SIERRA_LITE => Self::SierraLite,
2015            ffi::GST_VIDEO_DITHER_BAYER => Self::Bayer,
2016            value => Self::__Unknown(value),
2017        }
2018    }
2019}
2020
2021impl StaticType for VideoDitherMethod {
2022    #[inline]
2023    #[doc(alias = "gst_video_dither_method_get_type")]
2024    fn static_type() -> glib::Type {
2025        unsafe { from_glib(ffi::gst_video_dither_method_get_type()) }
2026    }
2027}
2028
2029impl glib::HasParamSpec for VideoDitherMethod {
2030    type ParamSpec = glib::ParamSpecEnum;
2031    type SetValue = Self;
2032    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2033
2034    fn param_spec_builder() -> Self::BuilderFn {
2035        Self::ParamSpec::builder_with_default
2036    }
2037}
2038
2039impl glib::value::ValueType for VideoDitherMethod {
2040    type Type = Self;
2041}
2042
2043unsafe impl<'a> glib::value::FromValue<'a> for VideoDitherMethod {
2044    type Checker = glib::value::GenericValueTypeChecker<Self>;
2045
2046    #[inline]
2047    unsafe fn from_value(value: &'a glib::Value) -> Self {
2048        skip_assert_initialized!();
2049        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2050    }
2051}
2052
2053impl ToValue for VideoDitherMethod {
2054    #[inline]
2055    fn to_value(&self) -> glib::Value {
2056        let mut value = glib::Value::for_value_type::<Self>();
2057        unsafe {
2058            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2059        }
2060        value
2061    }
2062
2063    #[inline]
2064    fn value_type(&self) -> glib::Type {
2065        Self::static_type()
2066    }
2067}
2068
2069impl From<VideoDitherMethod> for glib::Value {
2070    #[inline]
2071    fn from(v: VideoDitherMethod) -> Self {
2072        skip_assert_initialized!();
2073        ToValue::to_value(&v)
2074    }
2075}
2076
2077#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
2078#[non_exhaustive]
2079#[doc(alias = "GstVideoFieldOrder")]
2080pub enum VideoFieldOrder {
2081    #[doc(alias = "GST_VIDEO_FIELD_ORDER_UNKNOWN")]
2082    Unknown,
2083    #[doc(alias = "GST_VIDEO_FIELD_ORDER_TOP_FIELD_FIRST")]
2084    TopFieldFirst,
2085    #[doc(alias = "GST_VIDEO_FIELD_ORDER_BOTTOM_FIELD_FIRST")]
2086    BottomFieldFirst,
2087    #[doc(hidden)]
2088    __Unknown(i32),
2089}
2090
2091impl VideoFieldOrder {
2092    #[doc(alias = "gst_video_field_order_from_string")]
2093    pub fn from_string(order: &str) -> VideoFieldOrder {
2094        assert_initialized_main_thread!();
2095        unsafe {
2096            from_glib(ffi::gst_video_field_order_from_string(
2097                order.to_glib_none().0,
2098            ))
2099        }
2100    }
2101}
2102
2103impl std::fmt::Display for VideoFieldOrder {
2104    #[inline]
2105    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
2106        f.write_str(&self.to_str())
2107    }
2108}
2109
2110#[doc(hidden)]
2111impl IntoGlib for VideoFieldOrder {
2112    type GlibType = ffi::GstVideoFieldOrder;
2113
2114    #[inline]
2115    fn into_glib(self) -> ffi::GstVideoFieldOrder {
2116        match self {
2117            Self::Unknown => ffi::GST_VIDEO_FIELD_ORDER_UNKNOWN,
2118            Self::TopFieldFirst => ffi::GST_VIDEO_FIELD_ORDER_TOP_FIELD_FIRST,
2119            Self::BottomFieldFirst => ffi::GST_VIDEO_FIELD_ORDER_BOTTOM_FIELD_FIRST,
2120            Self::__Unknown(value) => value,
2121        }
2122    }
2123}
2124
2125#[doc(hidden)]
2126impl FromGlib<ffi::GstVideoFieldOrder> for VideoFieldOrder {
2127    #[inline]
2128    unsafe fn from_glib(value: ffi::GstVideoFieldOrder) -> Self {
2129        skip_assert_initialized!();
2130
2131        match value {
2132            ffi::GST_VIDEO_FIELD_ORDER_UNKNOWN => Self::Unknown,
2133            ffi::GST_VIDEO_FIELD_ORDER_TOP_FIELD_FIRST => Self::TopFieldFirst,
2134            ffi::GST_VIDEO_FIELD_ORDER_BOTTOM_FIELD_FIRST => Self::BottomFieldFirst,
2135            value => Self::__Unknown(value),
2136        }
2137    }
2138}
2139
2140impl StaticType for VideoFieldOrder {
2141    #[inline]
2142    #[doc(alias = "gst_video_field_order_get_type")]
2143    fn static_type() -> glib::Type {
2144        unsafe { from_glib(ffi::gst_video_field_order_get_type()) }
2145    }
2146}
2147
2148impl glib::HasParamSpec for VideoFieldOrder {
2149    type ParamSpec = glib::ParamSpecEnum;
2150    type SetValue = Self;
2151    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
2152
2153    fn param_spec_builder() -> Self::BuilderFn {
2154        Self::ParamSpec::builder_with_default
2155    }
2156}
2157
2158impl glib::value::ValueType for VideoFieldOrder {
2159    type Type = Self;
2160}
2161
2162unsafe impl<'a> glib::value::FromValue<'a> for VideoFieldOrder {
2163    type Checker = glib::value::GenericValueTypeChecker<Self>;
2164
2165    #[inline]
2166    unsafe fn from_value(value: &'a glib::Value) -> Self {
2167        skip_assert_initialized!();
2168        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
2169    }
2170}
2171
2172impl ToValue for VideoFieldOrder {
2173    #[inline]
2174    fn to_value(&self) -> glib::Value {
2175        let mut value = glib::Value::for_value_type::<Self>();
2176        unsafe {
2177            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
2178        }
2179        value
2180    }
2181
2182    #[inline]
2183    fn value_type(&self) -> glib::Type {
2184        Self::static_type()
2185    }
2186}
2187
2188impl From<VideoFieldOrder> for glib::Value {
2189    #[inline]
2190    fn from(v: VideoFieldOrder) -> Self {
2191        skip_assert_initialized!();
2192        ToValue::to_value(&v)
2193    }
2194}
2195
2196#[derive(Debug, Eq, PartialEq, Hash, Clone, Copy)]
2197#[non_exhaustive]
2198#[doc(alias = "GstVideoFormat")]
2199pub enum VideoFormat {
2200    #[doc(alias = "GST_VIDEO_FORMAT_UNKNOWN")]
2201    Unknown,
2202    #[doc(alias = "GST_VIDEO_FORMAT_ENCODED")]
2203    Encoded,
2204    #[doc(alias = "GST_VIDEO_FORMAT_I420")]
2205    I420,
2206    #[doc(alias = "GST_VIDEO_FORMAT_YV12")]
2207    Yv12,
2208    #[doc(alias = "GST_VIDEO_FORMAT_YUY2")]
2209    Yuy2,
2210    #[doc(alias = "GST_VIDEO_FORMAT_UYVY")]
2211    Uyvy,
2212    #[doc(alias = "GST_VIDEO_FORMAT_AYUV")]
2213    Ayuv,
2214    #[doc(alias = "GST_VIDEO_FORMAT_RGBx")]
2215    Rgbx,
2216    #[doc(alias = "GST_VIDEO_FORMAT_BGRx")]
2217    Bgrx,
2218    #[doc(alias = "GST_VIDEO_FORMAT_xRGB")]
2219    Xrgb,
2220    #[doc(alias = "GST_VIDEO_FORMAT_xBGR")]
2221    Xbgr,
2222    #[doc(alias = "GST_VIDEO_FORMAT_RGBA")]
2223    Rgba,
2224    #[doc(alias = "GST_VIDEO_FORMAT_BGRA")]
2225    Bgra,
2226    #[doc(alias = "GST_VIDEO_FORMAT_ARGB")]
2227    Argb,
2228    #[doc(alias = "GST_VIDEO_FORMAT_ABGR")]
2229    Abgr,
2230    #[doc(alias = "GST_VIDEO_FORMAT_RGB")]
2231    Rgb,
2232    #[doc(alias = "GST_VIDEO_FORMAT_BGR")]
2233    Bgr,
2234    #[doc(alias = "GST_VIDEO_FORMAT_Y41B")]
2235    Y41b,
2236    #[doc(alias = "GST_VIDEO_FORMAT_Y42B")]
2237    Y42b,
2238    #[doc(alias = "GST_VIDEO_FORMAT_YVYU")]
2239    Yvyu,
2240    #[doc(alias = "GST_VIDEO_FORMAT_Y444")]
2241    Y444,
2242    #[doc(alias = "GST_VIDEO_FORMAT_v210")]
2243    V210,
2244    #[doc(alias = "GST_VIDEO_FORMAT_v216")]
2245    V216,
2246    #[doc(alias = "GST_VIDEO_FORMAT_NV12")]
2247    Nv12,
2248    #[doc(alias = "GST_VIDEO_FORMAT_NV21")]
2249    Nv21,
2250    #[doc(alias = "GST_VIDEO_FORMAT_GRAY8")]
2251    Gray8,
2252    #[doc(alias = "GST_VIDEO_FORMAT_GRAY16_BE")]
2253    Gray16Be,
2254    #[doc(alias = "GST_VIDEO_FORMAT_GRAY16_LE")]
2255    Gray16Le,
2256    #[doc(alias = "GST_VIDEO_FORMAT_v308")]
2257    V308,
2258    #[doc(alias = "GST_VIDEO_FORMAT_RGB16")]
2259    Rgb16,
2260    #[doc(alias = "GST_VIDEO_FORMAT_BGR16")]
2261    Bgr16,
2262    #[doc(alias = "GST_VIDEO_FORMAT_RGB15")]
2263    Rgb15,
2264    #[doc(alias = "GST_VIDEO_FORMAT_BGR15")]
2265    Bgr15,
2266    #[doc(alias = "GST_VIDEO_FORMAT_UYVP")]
2267    Uyvp,
2268    #[doc(alias = "GST_VIDEO_FORMAT_A420")]
2269    A420,
2270    #[doc(alias = "GST_VIDEO_FORMAT_RGB8P")]
2271    Rgb8p,
2272    #[doc(alias = "GST_VIDEO_FORMAT_YUV9")]
2273    Yuv9,
2274    #[doc(alias = "GST_VIDEO_FORMAT_YVU9")]
2275    Yvu9,
2276    #[doc(alias = "GST_VIDEO_FORMAT_IYU1")]
2277    Iyu1,
2278    #[doc(alias = "GST_VIDEO_FORMAT_ARGB64")]
2279    Argb64,
2280    #[doc(alias = "GST_VIDEO_FORMAT_AYUV64")]
2281    Ayuv64,
2282    #[doc(alias = "GST_VIDEO_FORMAT_r210")]
2283    R210,
2284    #[doc(alias = "GST_VIDEO_FORMAT_I420_10BE")]
2285    I42010be,
2286    #[doc(alias = "GST_VIDEO_FORMAT_I420_10LE")]
2287    I42010le,
2288    #[doc(alias = "GST_VIDEO_FORMAT_I422_10BE")]
2289    I42210be,
2290    #[doc(alias = "GST_VIDEO_FORMAT_I422_10LE")]
2291    I42210le,
2292    #[doc(alias = "GST_VIDEO_FORMAT_Y444_10BE")]
2293    Y44410be,
2294    #[doc(alias = "GST_VIDEO_FORMAT_Y444_10LE")]
2295    Y44410le,
2296    #[doc(alias = "GST_VIDEO_FORMAT_GBR")]
2297    Gbr,
2298    #[doc(alias = "GST_VIDEO_FORMAT_GBR_10BE")]
2299    Gbr10be,
2300    #[doc(alias = "GST_VIDEO_FORMAT_GBR_10LE")]
2301    Gbr10le,
2302    #[doc(alias = "GST_VIDEO_FORMAT_NV16")]
2303    Nv16,
2304    #[doc(alias = "GST_VIDEO_FORMAT_NV24")]
2305    Nv24,
2306    #[doc(alias = "GST_VIDEO_FORMAT_NV12_64Z32")]
2307    Nv1264z32,
2308    #[doc(alias = "GST_VIDEO_FORMAT_A420_10BE")]
2309    A42010be,
2310    #[doc(alias = "GST_VIDEO_FORMAT_A420_10LE")]
2311    A42010le,
2312    #[doc(alias = "GST_VIDEO_FORMAT_A422_10BE")]
2313    A42210be,
2314    #[doc(alias = "GST_VIDEO_FORMAT_A422_10LE")]
2315    A42210le,
2316    #[doc(alias = "GST_VIDEO_FORMAT_A444_10BE")]
2317    A44410be,
2318    #[doc(alias = "GST_VIDEO_FORMAT_A444_10LE")]
2319    A44410le,
2320    #[doc(alias = "GST_VIDEO_FORMAT_NV61")]
2321    Nv61,
2322    #[doc(alias = "GST_VIDEO_FORMAT_P010_10BE")]
2323    P01010be,
2324    #[doc(alias = "GST_VIDEO_FORMAT_P010_10LE")]
2325    P01010le,
2326    #[doc(alias = "GST_VIDEO_FORMAT_IYU2")]
2327    Iyu2,
2328    #[doc(alias = "GST_VIDEO_FORMAT_VYUY")]
2329    Vyuy,
2330    #[doc(alias = "GST_VIDEO_FORMAT_GBRA")]
2331    Gbra,
2332    #[doc(alias = "GST_VIDEO_FORMAT_GBRA_10BE")]
2333    Gbra10be,
2334    #[doc(alias = "GST_VIDEO_FORMAT_GBRA_10LE")]
2335    Gbra10le,
2336    #[doc(alias = "GST_VIDEO_FORMAT_GBR_12BE")]
2337    Gbr12be,
2338    #[doc(alias = "GST_VIDEO_FORMAT_GBR_12LE")]
2339    Gbr12le,
2340    #[doc(alias = "GST_VIDEO_FORMAT_GBRA_12BE")]
2341    Gbra12be,
2342    #[doc(alias = "GST_VIDEO_FORMAT_GBRA_12LE")]
2343    Gbra12le,
2344    #[doc(alias = "GST_VIDEO_FORMAT_I420_12BE")]
2345    I42012be,
2346    #[doc(alias = "GST_VIDEO_FORMAT_I420_12LE")]
2347    I42012le,
2348    #[doc(alias = "GST_VIDEO_FORMAT_I422_12BE")]
2349    I42212be,
2350    #[doc(alias = "GST_VIDEO_FORMAT_I422_12LE")]
2351    I42212le,
2352    #[doc(alias = "GST_VIDEO_FORMAT_Y444_12BE")]
2353    Y44412be,
2354    #[doc(alias = "GST_VIDEO_FORMAT_Y444_12LE")]
2355    Y44412le,
2356    #[doc(alias = "GST_VIDEO_FORMAT_GRAY10_LE32")]
2357    Gray10Le32,
2358    #[doc(alias = "GST_VIDEO_FORMAT_NV12_10LE32")]
2359    Nv1210le32,
2360    #[doc(alias = "GST_VIDEO_FORMAT_NV16_10LE32")]
2361    Nv1610le32,
2362    #[cfg(feature = "v1_16")]
2363    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
2364    #[doc(alias = "GST_VIDEO_FORMAT_NV12_10LE40")]
2365    Nv1210le40,
2366    #[cfg(feature = "v1_16")]
2367    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
2368    #[doc(alias = "GST_VIDEO_FORMAT_Y210")]
2369    Y210,
2370    #[cfg(feature = "v1_16")]
2371    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
2372    #[doc(alias = "GST_VIDEO_FORMAT_Y410")]
2373    Y410,
2374    #[cfg(feature = "v1_16")]
2375    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
2376    #[doc(alias = "GST_VIDEO_FORMAT_VUYA")]
2377    Vuya,
2378    #[cfg(feature = "v1_16")]
2379    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
2380    #[doc(alias = "GST_VIDEO_FORMAT_BGR10A2_LE")]
2381    Bgr10a2Le,
2382    #[cfg(feature = "v1_18")]
2383    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
2384    #[doc(alias = "GST_VIDEO_FORMAT_RGB10A2_LE")]
2385    Rgb10a2Le,
2386    #[cfg(feature = "v1_18")]
2387    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
2388    #[doc(alias = "GST_VIDEO_FORMAT_Y444_16BE")]
2389    Y44416be,
2390    #[cfg(feature = "v1_18")]
2391    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
2392    #[doc(alias = "GST_VIDEO_FORMAT_Y444_16LE")]
2393    Y44416le,
2394    #[cfg(feature = "v1_18")]
2395    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
2396    #[doc(alias = "GST_VIDEO_FORMAT_P016_BE")]
2397    P016Be,
2398    #[cfg(feature = "v1_18")]
2399    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
2400    #[doc(alias = "GST_VIDEO_FORMAT_P016_LE")]
2401    P016Le,
2402    #[cfg(feature = "v1_18")]
2403    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
2404    #[doc(alias = "GST_VIDEO_FORMAT_P012_BE")]
2405    P012Be,
2406    #[cfg(feature = "v1_18")]
2407    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
2408    #[doc(alias = "GST_VIDEO_FORMAT_P012_LE")]
2409    P012Le,
2410    #[cfg(feature = "v1_18")]
2411    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
2412    #[doc(alias = "GST_VIDEO_FORMAT_Y212_BE")]
2413    Y212Be,
2414    #[cfg(feature = "v1_18")]
2415    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
2416    #[doc(alias = "GST_VIDEO_FORMAT_Y212_LE")]
2417    Y212Le,
2418    #[cfg(feature = "v1_18")]
2419    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
2420    #[doc(alias = "GST_VIDEO_FORMAT_Y412_BE")]
2421    Y412Be,
2422    #[cfg(feature = "v1_18")]
2423    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
2424    #[doc(alias = "GST_VIDEO_FORMAT_Y412_LE")]
2425    Y412Le,
2426    #[cfg(feature = "v1_18")]
2427    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
2428    #[doc(alias = "GST_VIDEO_FORMAT_NV12_4L4")]
2429    Nv124l4,
2430    #[cfg(feature = "v1_18")]
2431    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
2432    #[doc(alias = "GST_VIDEO_FORMAT_NV12_32L32")]
2433    Nv1232l32,
2434    #[cfg(feature = "v1_20")]
2435    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
2436    #[doc(alias = "GST_VIDEO_FORMAT_RGBP")]
2437    Rgbp,
2438    #[cfg(feature = "v1_20")]
2439    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
2440    #[doc(alias = "GST_VIDEO_FORMAT_BGRP")]
2441    Bgrp,
2442    #[cfg(feature = "v1_20")]
2443    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
2444    #[doc(alias = "GST_VIDEO_FORMAT_AV12")]
2445    Av12,
2446    #[cfg(feature = "v1_20")]
2447    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
2448    #[doc(alias = "GST_VIDEO_FORMAT_ARGB64_LE")]
2449    Argb64Le,
2450    #[cfg(feature = "v1_20")]
2451    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
2452    #[doc(alias = "GST_VIDEO_FORMAT_ARGB64_BE")]
2453    Argb64Be,
2454    #[cfg(feature = "v1_20")]
2455    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
2456    #[doc(alias = "GST_VIDEO_FORMAT_RGBA64_LE")]
2457    Rgba64Le,
2458    #[cfg(feature = "v1_20")]
2459    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
2460    #[doc(alias = "GST_VIDEO_FORMAT_RGBA64_BE")]
2461    Rgba64Be,
2462    #[cfg(feature = "v1_20")]
2463    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
2464    #[doc(alias = "GST_VIDEO_FORMAT_BGRA64_LE")]
2465    Bgra64Le,
2466    #[cfg(feature = "v1_20")]
2467    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
2468    #[doc(alias = "GST_VIDEO_FORMAT_BGRA64_BE")]
2469    Bgra64Be,
2470    #[cfg(feature = "v1_20")]
2471    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
2472    #[doc(alias = "GST_VIDEO_FORMAT_ABGR64_LE")]
2473    Abgr64Le,
2474    #[cfg(feature = "v1_20")]
2475    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
2476    #[doc(alias = "GST_VIDEO_FORMAT_ABGR64_BE")]
2477    Abgr64Be,
2478    #[cfg(feature = "v1_22")]
2479    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
2480    #[doc(alias = "GST_VIDEO_FORMAT_NV12_16L32S")]
2481    Nv1216l32s,
2482    #[cfg(feature = "v1_22")]
2483    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
2484    #[doc(alias = "GST_VIDEO_FORMAT_NV12_8L128")]
2485    Nv128l128,
2486    #[cfg(feature = "v1_22")]
2487    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
2488    #[doc(alias = "GST_VIDEO_FORMAT_NV12_10BE_8L128")]
2489    Nv1210be8l128,
2490    #[cfg(feature = "v1_24")]
2491    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2492    #[doc(alias = "GST_VIDEO_FORMAT_NV12_10LE40_4L4")]
2493    Nv1210le404l4,
2494    #[cfg(feature = "v1_24")]
2495    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2496    #[doc(alias = "GST_VIDEO_FORMAT_DMA_DRM")]
2497    DmaDrm,
2498    #[cfg(feature = "v1_24")]
2499    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2500    #[doc(alias = "GST_VIDEO_FORMAT_MT2110T")]
2501    Mt2110t,
2502    #[cfg(feature = "v1_24")]
2503    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2504    #[doc(alias = "GST_VIDEO_FORMAT_MT2110R")]
2505    Mt2110r,
2506    #[cfg(feature = "v1_24")]
2507    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2508    #[doc(alias = "GST_VIDEO_FORMAT_A422")]
2509    A422,
2510    #[cfg(feature = "v1_24")]
2511    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2512    #[doc(alias = "GST_VIDEO_FORMAT_A444")]
2513    A444,
2514    #[cfg(feature = "v1_24")]
2515    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2516    #[doc(alias = "GST_VIDEO_FORMAT_A444_12LE")]
2517    A44412le,
2518    #[cfg(feature = "v1_24")]
2519    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2520    #[doc(alias = "GST_VIDEO_FORMAT_A444_12BE")]
2521    A44412be,
2522    #[cfg(feature = "v1_24")]
2523    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2524    #[doc(alias = "GST_VIDEO_FORMAT_A422_12LE")]
2525    A42212le,
2526    #[cfg(feature = "v1_24")]
2527    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2528    #[doc(alias = "GST_VIDEO_FORMAT_A422_12BE")]
2529    A42212be,
2530    #[cfg(feature = "v1_24")]
2531    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2532    #[doc(alias = "GST_VIDEO_FORMAT_A420_12LE")]
2533    A42012le,
2534    #[cfg(feature = "v1_24")]
2535    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2536    #[doc(alias = "GST_VIDEO_FORMAT_A420_12BE")]
2537    A42012be,
2538    #[cfg(feature = "v1_24")]
2539    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2540    #[doc(alias = "GST_VIDEO_FORMAT_A444_16LE")]
2541    A44416le,
2542    #[cfg(feature = "v1_24")]
2543    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2544    #[doc(alias = "GST_VIDEO_FORMAT_A444_16BE")]
2545    A44416be,
2546    #[cfg(feature = "v1_24")]
2547    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2548    #[doc(alias = "GST_VIDEO_FORMAT_A422_16LE")]
2549    A42216le,
2550    #[cfg(feature = "v1_24")]
2551    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2552    #[doc(alias = "GST_VIDEO_FORMAT_A422_16BE")]
2553    A42216be,
2554    #[cfg(feature = "v1_24")]
2555    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2556    #[doc(alias = "GST_VIDEO_FORMAT_A420_16LE")]
2557    A42016le,
2558    #[cfg(feature = "v1_24")]
2559    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2560    #[doc(alias = "GST_VIDEO_FORMAT_A420_16BE")]
2561    A42016be,
2562    #[cfg(feature = "v1_24")]
2563    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2564    #[doc(alias = "GST_VIDEO_FORMAT_GBR_16LE")]
2565    Gbr16le,
2566    #[cfg(feature = "v1_24")]
2567    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2568    #[doc(alias = "GST_VIDEO_FORMAT_GBR_16BE")]
2569    Gbr16be,
2570    #[cfg(feature = "v1_24")]
2571    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2572    #[doc(alias = "GST_VIDEO_FORMAT_RBGA")]
2573    Rbga,
2574    #[cfg(feature = "v1_26")]
2575    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
2576    #[doc(alias = "GST_VIDEO_FORMAT_Y216_LE")]
2577    Y216Le,
2578    #[cfg(feature = "v1_26")]
2579    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
2580    #[doc(alias = "GST_VIDEO_FORMAT_Y216_BE")]
2581    Y216Be,
2582    #[cfg(feature = "v1_26")]
2583    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
2584    #[doc(alias = "GST_VIDEO_FORMAT_Y416_LE")]
2585    Y416Le,
2586    #[cfg(feature = "v1_26")]
2587    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
2588    #[doc(alias = "GST_VIDEO_FORMAT_Y416_BE")]
2589    Y416Be,
2590    #[cfg(feature = "v1_26")]
2591    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
2592    #[doc(alias = "GST_VIDEO_FORMAT_GRAY10_LE16")]
2593    Gray10Le16,
2594    #[doc(hidden)]
2595    __Unknown(i32),
2596}
2597
2598impl VideoFormat {
2599    #[doc(alias = "gst_video_format_from_fourcc")]
2600    pub fn from_fourcc(fourcc: u32) -> VideoFormat {
2601        assert_initialized_main_thread!();
2602        unsafe { from_glib(ffi::gst_video_format_from_fourcc(fourcc)) }
2603    }
2604
2605    #[doc(alias = "gst_video_format_from_string")]
2606    pub fn from_string(format: &str) -> VideoFormat {
2607        assert_initialized_main_thread!();
2608        unsafe { from_glib(ffi::gst_video_format_from_string(format.to_glib_none().0)) }
2609    }
2610
2611    //#[doc(alias = "gst_video_format_get_palette")]
2612    //#[doc(alias = "get_palette")]
2613    //pub fn palette(self) -> (/*Unimplemented*/Option<Basic: Pointer>, usize) {
2614    //    unsafe { TODO: call ffi:gst_video_format_get_palette() }
2615    //}
2616
2617    #[doc(alias = "gst_video_format_to_fourcc")]
2618    pub fn to_fourcc(self) -> u32 {
2619        assert_initialized_main_thread!();
2620        unsafe { ffi::gst_video_format_to_fourcc(self.into_glib()) }
2621    }
2622}
2623
2624impl std::fmt::Display for VideoFormat {
2625    #[inline]
2626    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
2627        f.write_str(&self.to_str())
2628    }
2629}
2630
2631#[doc(hidden)]
2632impl IntoGlib for VideoFormat {
2633    type GlibType = ffi::GstVideoFormat;
2634
2635    fn into_glib(self) -> ffi::GstVideoFormat {
2636        match self {
2637            Self::Unknown => ffi::GST_VIDEO_FORMAT_UNKNOWN,
2638            Self::Encoded => ffi::GST_VIDEO_FORMAT_ENCODED,
2639            Self::I420 => ffi::GST_VIDEO_FORMAT_I420,
2640            Self::Yv12 => ffi::GST_VIDEO_FORMAT_YV12,
2641            Self::Yuy2 => ffi::GST_VIDEO_FORMAT_YUY2,
2642            Self::Uyvy => ffi::GST_VIDEO_FORMAT_UYVY,
2643            Self::Ayuv => ffi::GST_VIDEO_FORMAT_AYUV,
2644            Self::Rgbx => ffi::GST_VIDEO_FORMAT_RGBx,
2645            Self::Bgrx => ffi::GST_VIDEO_FORMAT_BGRx,
2646            Self::Xrgb => ffi::GST_VIDEO_FORMAT_xRGB,
2647            Self::Xbgr => ffi::GST_VIDEO_FORMAT_xBGR,
2648            Self::Rgba => ffi::GST_VIDEO_FORMAT_RGBA,
2649            Self::Bgra => ffi::GST_VIDEO_FORMAT_BGRA,
2650            Self::Argb => ffi::GST_VIDEO_FORMAT_ARGB,
2651            Self::Abgr => ffi::GST_VIDEO_FORMAT_ABGR,
2652            Self::Rgb => ffi::GST_VIDEO_FORMAT_RGB,
2653            Self::Bgr => ffi::GST_VIDEO_FORMAT_BGR,
2654            Self::Y41b => ffi::GST_VIDEO_FORMAT_Y41B,
2655            Self::Y42b => ffi::GST_VIDEO_FORMAT_Y42B,
2656            Self::Yvyu => ffi::GST_VIDEO_FORMAT_YVYU,
2657            Self::Y444 => ffi::GST_VIDEO_FORMAT_Y444,
2658            Self::V210 => ffi::GST_VIDEO_FORMAT_v210,
2659            Self::V216 => ffi::GST_VIDEO_FORMAT_v216,
2660            Self::Nv12 => ffi::GST_VIDEO_FORMAT_NV12,
2661            Self::Nv21 => ffi::GST_VIDEO_FORMAT_NV21,
2662            Self::Gray8 => ffi::GST_VIDEO_FORMAT_GRAY8,
2663            Self::Gray16Be => ffi::GST_VIDEO_FORMAT_GRAY16_BE,
2664            Self::Gray16Le => ffi::GST_VIDEO_FORMAT_GRAY16_LE,
2665            Self::V308 => ffi::GST_VIDEO_FORMAT_v308,
2666            Self::Rgb16 => ffi::GST_VIDEO_FORMAT_RGB16,
2667            Self::Bgr16 => ffi::GST_VIDEO_FORMAT_BGR16,
2668            Self::Rgb15 => ffi::GST_VIDEO_FORMAT_RGB15,
2669            Self::Bgr15 => ffi::GST_VIDEO_FORMAT_BGR15,
2670            Self::Uyvp => ffi::GST_VIDEO_FORMAT_UYVP,
2671            Self::A420 => ffi::GST_VIDEO_FORMAT_A420,
2672            Self::Rgb8p => ffi::GST_VIDEO_FORMAT_RGB8P,
2673            Self::Yuv9 => ffi::GST_VIDEO_FORMAT_YUV9,
2674            Self::Yvu9 => ffi::GST_VIDEO_FORMAT_YVU9,
2675            Self::Iyu1 => ffi::GST_VIDEO_FORMAT_IYU1,
2676            Self::Argb64 => ffi::GST_VIDEO_FORMAT_ARGB64,
2677            Self::Ayuv64 => ffi::GST_VIDEO_FORMAT_AYUV64,
2678            Self::R210 => ffi::GST_VIDEO_FORMAT_r210,
2679            Self::I42010be => ffi::GST_VIDEO_FORMAT_I420_10BE,
2680            Self::I42010le => ffi::GST_VIDEO_FORMAT_I420_10LE,
2681            Self::I42210be => ffi::GST_VIDEO_FORMAT_I422_10BE,
2682            Self::I42210le => ffi::GST_VIDEO_FORMAT_I422_10LE,
2683            Self::Y44410be => ffi::GST_VIDEO_FORMAT_Y444_10BE,
2684            Self::Y44410le => ffi::GST_VIDEO_FORMAT_Y444_10LE,
2685            Self::Gbr => ffi::GST_VIDEO_FORMAT_GBR,
2686            Self::Gbr10be => ffi::GST_VIDEO_FORMAT_GBR_10BE,
2687            Self::Gbr10le => ffi::GST_VIDEO_FORMAT_GBR_10LE,
2688            Self::Nv16 => ffi::GST_VIDEO_FORMAT_NV16,
2689            Self::Nv24 => ffi::GST_VIDEO_FORMAT_NV24,
2690            Self::Nv1264z32 => ffi::GST_VIDEO_FORMAT_NV12_64Z32,
2691            Self::A42010be => ffi::GST_VIDEO_FORMAT_A420_10BE,
2692            Self::A42010le => ffi::GST_VIDEO_FORMAT_A420_10LE,
2693            Self::A42210be => ffi::GST_VIDEO_FORMAT_A422_10BE,
2694            Self::A42210le => ffi::GST_VIDEO_FORMAT_A422_10LE,
2695            Self::A44410be => ffi::GST_VIDEO_FORMAT_A444_10BE,
2696            Self::A44410le => ffi::GST_VIDEO_FORMAT_A444_10LE,
2697            Self::Nv61 => ffi::GST_VIDEO_FORMAT_NV61,
2698            Self::P01010be => ffi::GST_VIDEO_FORMAT_P010_10BE,
2699            Self::P01010le => ffi::GST_VIDEO_FORMAT_P010_10LE,
2700            Self::Iyu2 => ffi::GST_VIDEO_FORMAT_IYU2,
2701            Self::Vyuy => ffi::GST_VIDEO_FORMAT_VYUY,
2702            Self::Gbra => ffi::GST_VIDEO_FORMAT_GBRA,
2703            Self::Gbra10be => ffi::GST_VIDEO_FORMAT_GBRA_10BE,
2704            Self::Gbra10le => ffi::GST_VIDEO_FORMAT_GBRA_10LE,
2705            Self::Gbr12be => ffi::GST_VIDEO_FORMAT_GBR_12BE,
2706            Self::Gbr12le => ffi::GST_VIDEO_FORMAT_GBR_12LE,
2707            Self::Gbra12be => ffi::GST_VIDEO_FORMAT_GBRA_12BE,
2708            Self::Gbra12le => ffi::GST_VIDEO_FORMAT_GBRA_12LE,
2709            Self::I42012be => ffi::GST_VIDEO_FORMAT_I420_12BE,
2710            Self::I42012le => ffi::GST_VIDEO_FORMAT_I420_12LE,
2711            Self::I42212be => ffi::GST_VIDEO_FORMAT_I422_12BE,
2712            Self::I42212le => ffi::GST_VIDEO_FORMAT_I422_12LE,
2713            Self::Y44412be => ffi::GST_VIDEO_FORMAT_Y444_12BE,
2714            Self::Y44412le => ffi::GST_VIDEO_FORMAT_Y444_12LE,
2715            Self::Gray10Le32 => ffi::GST_VIDEO_FORMAT_GRAY10_LE32,
2716            Self::Nv1210le32 => ffi::GST_VIDEO_FORMAT_NV12_10LE32,
2717            Self::Nv1610le32 => ffi::GST_VIDEO_FORMAT_NV16_10LE32,
2718            #[cfg(feature = "v1_16")]
2719            Self::Nv1210le40 => ffi::GST_VIDEO_FORMAT_NV12_10LE40,
2720            #[cfg(feature = "v1_16")]
2721            Self::Y210 => ffi::GST_VIDEO_FORMAT_Y210,
2722            #[cfg(feature = "v1_16")]
2723            Self::Y410 => ffi::GST_VIDEO_FORMAT_Y410,
2724            #[cfg(feature = "v1_16")]
2725            Self::Vuya => ffi::GST_VIDEO_FORMAT_VUYA,
2726            #[cfg(feature = "v1_16")]
2727            Self::Bgr10a2Le => ffi::GST_VIDEO_FORMAT_BGR10A2_LE,
2728            #[cfg(feature = "v1_18")]
2729            Self::Rgb10a2Le => ffi::GST_VIDEO_FORMAT_RGB10A2_LE,
2730            #[cfg(feature = "v1_18")]
2731            Self::Y44416be => ffi::GST_VIDEO_FORMAT_Y444_16BE,
2732            #[cfg(feature = "v1_18")]
2733            Self::Y44416le => ffi::GST_VIDEO_FORMAT_Y444_16LE,
2734            #[cfg(feature = "v1_18")]
2735            Self::P016Be => ffi::GST_VIDEO_FORMAT_P016_BE,
2736            #[cfg(feature = "v1_18")]
2737            Self::P016Le => ffi::GST_VIDEO_FORMAT_P016_LE,
2738            #[cfg(feature = "v1_18")]
2739            Self::P012Be => ffi::GST_VIDEO_FORMAT_P012_BE,
2740            #[cfg(feature = "v1_18")]
2741            Self::P012Le => ffi::GST_VIDEO_FORMAT_P012_LE,
2742            #[cfg(feature = "v1_18")]
2743            Self::Y212Be => ffi::GST_VIDEO_FORMAT_Y212_BE,
2744            #[cfg(feature = "v1_18")]
2745            Self::Y212Le => ffi::GST_VIDEO_FORMAT_Y212_LE,
2746            #[cfg(feature = "v1_18")]
2747            Self::Y412Be => ffi::GST_VIDEO_FORMAT_Y412_BE,
2748            #[cfg(feature = "v1_18")]
2749            Self::Y412Le => ffi::GST_VIDEO_FORMAT_Y412_LE,
2750            #[cfg(feature = "v1_18")]
2751            Self::Nv124l4 => ffi::GST_VIDEO_FORMAT_NV12_4L4,
2752            #[cfg(feature = "v1_18")]
2753            Self::Nv1232l32 => ffi::GST_VIDEO_FORMAT_NV12_32L32,
2754            #[cfg(feature = "v1_20")]
2755            Self::Rgbp => ffi::GST_VIDEO_FORMAT_RGBP,
2756            #[cfg(feature = "v1_20")]
2757            Self::Bgrp => ffi::GST_VIDEO_FORMAT_BGRP,
2758            #[cfg(feature = "v1_20")]
2759            Self::Av12 => ffi::GST_VIDEO_FORMAT_AV12,
2760            #[cfg(feature = "v1_20")]
2761            Self::Argb64Le => ffi::GST_VIDEO_FORMAT_ARGB64_LE,
2762            #[cfg(feature = "v1_20")]
2763            Self::Argb64Be => ffi::GST_VIDEO_FORMAT_ARGB64_BE,
2764            #[cfg(feature = "v1_20")]
2765            Self::Rgba64Le => ffi::GST_VIDEO_FORMAT_RGBA64_LE,
2766            #[cfg(feature = "v1_20")]
2767            Self::Rgba64Be => ffi::GST_VIDEO_FORMAT_RGBA64_BE,
2768            #[cfg(feature = "v1_20")]
2769            Self::Bgra64Le => ffi::GST_VIDEO_FORMAT_BGRA64_LE,
2770            #[cfg(feature = "v1_20")]
2771            Self::Bgra64Be => ffi::GST_VIDEO_FORMAT_BGRA64_BE,
2772            #[cfg(feature = "v1_20")]
2773            Self::Abgr64Le => ffi::GST_VIDEO_FORMAT_ABGR64_LE,
2774            #[cfg(feature = "v1_20")]
2775            Self::Abgr64Be => ffi::GST_VIDEO_FORMAT_ABGR64_BE,
2776            #[cfg(feature = "v1_22")]
2777            Self::Nv1216l32s => ffi::GST_VIDEO_FORMAT_NV12_16L32S,
2778            #[cfg(feature = "v1_22")]
2779            Self::Nv128l128 => ffi::GST_VIDEO_FORMAT_NV12_8L128,
2780            #[cfg(feature = "v1_22")]
2781            Self::Nv1210be8l128 => ffi::GST_VIDEO_FORMAT_NV12_10BE_8L128,
2782            #[cfg(feature = "v1_24")]
2783            Self::Nv1210le404l4 => ffi::GST_VIDEO_FORMAT_NV12_10LE40_4L4,
2784            #[cfg(feature = "v1_24")]
2785            Self::DmaDrm => ffi::GST_VIDEO_FORMAT_DMA_DRM,
2786            #[cfg(feature = "v1_24")]
2787            Self::Mt2110t => ffi::GST_VIDEO_FORMAT_MT2110T,
2788            #[cfg(feature = "v1_24")]
2789            Self::Mt2110r => ffi::GST_VIDEO_FORMAT_MT2110R,
2790            #[cfg(feature = "v1_24")]
2791            Self::A422 => ffi::GST_VIDEO_FORMAT_A422,
2792            #[cfg(feature = "v1_24")]
2793            Self::A444 => ffi::GST_VIDEO_FORMAT_A444,
2794            #[cfg(feature = "v1_24")]
2795            Self::A44412le => ffi::GST_VIDEO_FORMAT_A444_12LE,
2796            #[cfg(feature = "v1_24")]
2797            Self::A44412be => ffi::GST_VIDEO_FORMAT_A444_12BE,
2798            #[cfg(feature = "v1_24")]
2799            Self::A42212le => ffi::GST_VIDEO_FORMAT_A422_12LE,
2800            #[cfg(feature = "v1_24")]
2801            Self::A42212be => ffi::GST_VIDEO_FORMAT_A422_12BE,
2802            #[cfg(feature = "v1_24")]
2803            Self::A42012le => ffi::GST_VIDEO_FORMAT_A420_12LE,
2804            #[cfg(feature = "v1_24")]
2805            Self::A42012be => ffi::GST_VIDEO_FORMAT_A420_12BE,
2806            #[cfg(feature = "v1_24")]
2807            Self::A44416le => ffi::GST_VIDEO_FORMAT_A444_16LE,
2808            #[cfg(feature = "v1_24")]
2809            Self::A44416be => ffi::GST_VIDEO_FORMAT_A444_16BE,
2810            #[cfg(feature = "v1_24")]
2811            Self::A42216le => ffi::GST_VIDEO_FORMAT_A422_16LE,
2812            #[cfg(feature = "v1_24")]
2813            Self::A42216be => ffi::GST_VIDEO_FORMAT_A422_16BE,
2814            #[cfg(feature = "v1_24")]
2815            Self::A42016le => ffi::GST_VIDEO_FORMAT_A420_16LE,
2816            #[cfg(feature = "v1_24")]
2817            Self::A42016be => ffi::GST_VIDEO_FORMAT_A420_16BE,
2818            #[cfg(feature = "v1_24")]
2819            Self::Gbr16le => ffi::GST_VIDEO_FORMAT_GBR_16LE,
2820            #[cfg(feature = "v1_24")]
2821            Self::Gbr16be => ffi::GST_VIDEO_FORMAT_GBR_16BE,
2822            #[cfg(feature = "v1_24")]
2823            Self::Rbga => ffi::GST_VIDEO_FORMAT_RBGA,
2824            #[cfg(feature = "v1_26")]
2825            Self::Y216Le => ffi::GST_VIDEO_FORMAT_Y216_LE,
2826            #[cfg(feature = "v1_26")]
2827            Self::Y216Be => ffi::GST_VIDEO_FORMAT_Y216_BE,
2828            #[cfg(feature = "v1_26")]
2829            Self::Y416Le => ffi::GST_VIDEO_FORMAT_Y416_LE,
2830            #[cfg(feature = "v1_26")]
2831            Self::Y416Be => ffi::GST_VIDEO_FORMAT_Y416_BE,
2832            #[cfg(feature = "v1_26")]
2833            Self::Gray10Le16 => ffi::GST_VIDEO_FORMAT_GRAY10_LE16,
2834            Self::__Unknown(value) => value,
2835        }
2836    }
2837}
2838
2839#[doc(hidden)]
2840impl FromGlib<ffi::GstVideoFormat> for VideoFormat {
2841    unsafe fn from_glib(value: ffi::GstVideoFormat) -> Self {
2842        skip_assert_initialized!();
2843
2844        match value {
2845            ffi::GST_VIDEO_FORMAT_UNKNOWN => Self::Unknown,
2846            ffi::GST_VIDEO_FORMAT_ENCODED => Self::Encoded,
2847            ffi::GST_VIDEO_FORMAT_I420 => Self::I420,
2848            ffi::GST_VIDEO_FORMAT_YV12 => Self::Yv12,
2849            ffi::GST_VIDEO_FORMAT_YUY2 => Self::Yuy2,
2850            ffi::GST_VIDEO_FORMAT_UYVY => Self::Uyvy,
2851            ffi::GST_VIDEO_FORMAT_AYUV => Self::Ayuv,
2852            ffi::GST_VIDEO_FORMAT_RGBx => Self::Rgbx,
2853            ffi::GST_VIDEO_FORMAT_BGRx => Self::Bgrx,
2854            ffi::GST_VIDEO_FORMAT_xRGB => Self::Xrgb,
2855            ffi::GST_VIDEO_FORMAT_xBGR => Self::Xbgr,
2856            ffi::GST_VIDEO_FORMAT_RGBA => Self::Rgba,
2857            ffi::GST_VIDEO_FORMAT_BGRA => Self::Bgra,
2858            ffi::GST_VIDEO_FORMAT_ARGB => Self::Argb,
2859            ffi::GST_VIDEO_FORMAT_ABGR => Self::Abgr,
2860            ffi::GST_VIDEO_FORMAT_RGB => Self::Rgb,
2861            ffi::GST_VIDEO_FORMAT_BGR => Self::Bgr,
2862            ffi::GST_VIDEO_FORMAT_Y41B => Self::Y41b,
2863            ffi::GST_VIDEO_FORMAT_Y42B => Self::Y42b,
2864            ffi::GST_VIDEO_FORMAT_YVYU => Self::Yvyu,
2865            ffi::GST_VIDEO_FORMAT_Y444 => Self::Y444,
2866            ffi::GST_VIDEO_FORMAT_v210 => Self::V210,
2867            ffi::GST_VIDEO_FORMAT_v216 => Self::V216,
2868            ffi::GST_VIDEO_FORMAT_NV12 => Self::Nv12,
2869            ffi::GST_VIDEO_FORMAT_NV21 => Self::Nv21,
2870            ffi::GST_VIDEO_FORMAT_GRAY8 => Self::Gray8,
2871            ffi::GST_VIDEO_FORMAT_GRAY16_BE => Self::Gray16Be,
2872            ffi::GST_VIDEO_FORMAT_GRAY16_LE => Self::Gray16Le,
2873            ffi::GST_VIDEO_FORMAT_v308 => Self::V308,
2874            ffi::GST_VIDEO_FORMAT_RGB16 => Self::Rgb16,
2875            ffi::GST_VIDEO_FORMAT_BGR16 => Self::Bgr16,
2876            ffi::GST_VIDEO_FORMAT_RGB15 => Self::Rgb15,
2877            ffi::GST_VIDEO_FORMAT_BGR15 => Self::Bgr15,
2878            ffi::GST_VIDEO_FORMAT_UYVP => Self::Uyvp,
2879            ffi::GST_VIDEO_FORMAT_A420 => Self::A420,
2880            ffi::GST_VIDEO_FORMAT_RGB8P => Self::Rgb8p,
2881            ffi::GST_VIDEO_FORMAT_YUV9 => Self::Yuv9,
2882            ffi::GST_VIDEO_FORMAT_YVU9 => Self::Yvu9,
2883            ffi::GST_VIDEO_FORMAT_IYU1 => Self::Iyu1,
2884            ffi::GST_VIDEO_FORMAT_ARGB64 => Self::Argb64,
2885            ffi::GST_VIDEO_FORMAT_AYUV64 => Self::Ayuv64,
2886            ffi::GST_VIDEO_FORMAT_r210 => Self::R210,
2887            ffi::GST_VIDEO_FORMAT_I420_10BE => Self::I42010be,
2888            ffi::GST_VIDEO_FORMAT_I420_10LE => Self::I42010le,
2889            ffi::GST_VIDEO_FORMAT_I422_10BE => Self::I42210be,
2890            ffi::GST_VIDEO_FORMAT_I422_10LE => Self::I42210le,
2891            ffi::GST_VIDEO_FORMAT_Y444_10BE => Self::Y44410be,
2892            ffi::GST_VIDEO_FORMAT_Y444_10LE => Self::Y44410le,
2893            ffi::GST_VIDEO_FORMAT_GBR => Self::Gbr,
2894            ffi::GST_VIDEO_FORMAT_GBR_10BE => Self::Gbr10be,
2895            ffi::GST_VIDEO_FORMAT_GBR_10LE => Self::Gbr10le,
2896            ffi::GST_VIDEO_FORMAT_NV16 => Self::Nv16,
2897            ffi::GST_VIDEO_FORMAT_NV24 => Self::Nv24,
2898            ffi::GST_VIDEO_FORMAT_NV12_64Z32 => Self::Nv1264z32,
2899            ffi::GST_VIDEO_FORMAT_A420_10BE => Self::A42010be,
2900            ffi::GST_VIDEO_FORMAT_A420_10LE => Self::A42010le,
2901            ffi::GST_VIDEO_FORMAT_A422_10BE => Self::A42210be,
2902            ffi::GST_VIDEO_FORMAT_A422_10LE => Self::A42210le,
2903            ffi::GST_VIDEO_FORMAT_A444_10BE => Self::A44410be,
2904            ffi::GST_VIDEO_FORMAT_A444_10LE => Self::A44410le,
2905            ffi::GST_VIDEO_FORMAT_NV61 => Self::Nv61,
2906            ffi::GST_VIDEO_FORMAT_P010_10BE => Self::P01010be,
2907            ffi::GST_VIDEO_FORMAT_P010_10LE => Self::P01010le,
2908            ffi::GST_VIDEO_FORMAT_IYU2 => Self::Iyu2,
2909            ffi::GST_VIDEO_FORMAT_VYUY => Self::Vyuy,
2910            ffi::GST_VIDEO_FORMAT_GBRA => Self::Gbra,
2911            ffi::GST_VIDEO_FORMAT_GBRA_10BE => Self::Gbra10be,
2912            ffi::GST_VIDEO_FORMAT_GBRA_10LE => Self::Gbra10le,
2913            ffi::GST_VIDEO_FORMAT_GBR_12BE => Self::Gbr12be,
2914            ffi::GST_VIDEO_FORMAT_GBR_12LE => Self::Gbr12le,
2915            ffi::GST_VIDEO_FORMAT_GBRA_12BE => Self::Gbra12be,
2916            ffi::GST_VIDEO_FORMAT_GBRA_12LE => Self::Gbra12le,
2917            ffi::GST_VIDEO_FORMAT_I420_12BE => Self::I42012be,
2918            ffi::GST_VIDEO_FORMAT_I420_12LE => Self::I42012le,
2919            ffi::GST_VIDEO_FORMAT_I422_12BE => Self::I42212be,
2920            ffi::GST_VIDEO_FORMAT_I422_12LE => Self::I42212le,
2921            ffi::GST_VIDEO_FORMAT_Y444_12BE => Self::Y44412be,
2922            ffi::GST_VIDEO_FORMAT_Y444_12LE => Self::Y44412le,
2923            ffi::GST_VIDEO_FORMAT_GRAY10_LE32 => Self::Gray10Le32,
2924            ffi::GST_VIDEO_FORMAT_NV12_10LE32 => Self::Nv1210le32,
2925            ffi::GST_VIDEO_FORMAT_NV16_10LE32 => Self::Nv1610le32,
2926            #[cfg(feature = "v1_16")]
2927            ffi::GST_VIDEO_FORMAT_NV12_10LE40 => Self::Nv1210le40,
2928            #[cfg(feature = "v1_16")]
2929            ffi::GST_VIDEO_FORMAT_Y210 => Self::Y210,
2930            #[cfg(feature = "v1_16")]
2931            ffi::GST_VIDEO_FORMAT_Y410 => Self::Y410,
2932            #[cfg(feature = "v1_16")]
2933            ffi::GST_VIDEO_FORMAT_VUYA => Self::Vuya,
2934            #[cfg(feature = "v1_16")]
2935            ffi::GST_VIDEO_FORMAT_BGR10A2_LE => Self::Bgr10a2Le,
2936            #[cfg(feature = "v1_18")]
2937            ffi::GST_VIDEO_FORMAT_RGB10A2_LE => Self::Rgb10a2Le,
2938            #[cfg(feature = "v1_18")]
2939            ffi::GST_VIDEO_FORMAT_Y444_16BE => Self::Y44416be,
2940            #[cfg(feature = "v1_18")]
2941            ffi::GST_VIDEO_FORMAT_Y444_16LE => Self::Y44416le,
2942            #[cfg(feature = "v1_18")]
2943            ffi::GST_VIDEO_FORMAT_P016_BE => Self::P016Be,
2944            #[cfg(feature = "v1_18")]
2945            ffi::GST_VIDEO_FORMAT_P016_LE => Self::P016Le,
2946            #[cfg(feature = "v1_18")]
2947            ffi::GST_VIDEO_FORMAT_P012_BE => Self::P012Be,
2948            #[cfg(feature = "v1_18")]
2949            ffi::GST_VIDEO_FORMAT_P012_LE => Self::P012Le,
2950            #[cfg(feature = "v1_18")]
2951            ffi::GST_VIDEO_FORMAT_Y212_BE => Self::Y212Be,
2952            #[cfg(feature = "v1_18")]
2953            ffi::GST_VIDEO_FORMAT_Y212_LE => Self::Y212Le,
2954            #[cfg(feature = "v1_18")]
2955            ffi::GST_VIDEO_FORMAT_Y412_BE => Self::Y412Be,
2956            #[cfg(feature = "v1_18")]
2957            ffi::GST_VIDEO_FORMAT_Y412_LE => Self::Y412Le,
2958            #[cfg(feature = "v1_18")]
2959            ffi::GST_VIDEO_FORMAT_NV12_4L4 => Self::Nv124l4,
2960            #[cfg(feature = "v1_18")]
2961            ffi::GST_VIDEO_FORMAT_NV12_32L32 => Self::Nv1232l32,
2962            #[cfg(feature = "v1_20")]
2963            ffi::GST_VIDEO_FORMAT_RGBP => Self::Rgbp,
2964            #[cfg(feature = "v1_20")]
2965            ffi::GST_VIDEO_FORMAT_BGRP => Self::Bgrp,
2966            #[cfg(feature = "v1_20")]
2967            ffi::GST_VIDEO_FORMAT_AV12 => Self::Av12,
2968            #[cfg(feature = "v1_20")]
2969            ffi::GST_VIDEO_FORMAT_ARGB64_LE => Self::Argb64Le,
2970            #[cfg(feature = "v1_20")]
2971            ffi::GST_VIDEO_FORMAT_ARGB64_BE => Self::Argb64Be,
2972            #[cfg(feature = "v1_20")]
2973            ffi::GST_VIDEO_FORMAT_RGBA64_LE => Self::Rgba64Le,
2974            #[cfg(feature = "v1_20")]
2975            ffi::GST_VIDEO_FORMAT_RGBA64_BE => Self::Rgba64Be,
2976            #[cfg(feature = "v1_20")]
2977            ffi::GST_VIDEO_FORMAT_BGRA64_LE => Self::Bgra64Le,
2978            #[cfg(feature = "v1_20")]
2979            ffi::GST_VIDEO_FORMAT_BGRA64_BE => Self::Bgra64Be,
2980            #[cfg(feature = "v1_20")]
2981            ffi::GST_VIDEO_FORMAT_ABGR64_LE => Self::Abgr64Le,
2982            #[cfg(feature = "v1_20")]
2983            ffi::GST_VIDEO_FORMAT_ABGR64_BE => Self::Abgr64Be,
2984            #[cfg(feature = "v1_22")]
2985            ffi::GST_VIDEO_FORMAT_NV12_16L32S => Self::Nv1216l32s,
2986            #[cfg(feature = "v1_22")]
2987            ffi::GST_VIDEO_FORMAT_NV12_8L128 => Self::Nv128l128,
2988            #[cfg(feature = "v1_22")]
2989            ffi::GST_VIDEO_FORMAT_NV12_10BE_8L128 => Self::Nv1210be8l128,
2990            #[cfg(feature = "v1_24")]
2991            ffi::GST_VIDEO_FORMAT_NV12_10LE40_4L4 => Self::Nv1210le404l4,
2992            #[cfg(feature = "v1_24")]
2993            ffi::GST_VIDEO_FORMAT_DMA_DRM => Self::DmaDrm,
2994            #[cfg(feature = "v1_24")]
2995            ffi::GST_VIDEO_FORMAT_MT2110T => Self::Mt2110t,
2996            #[cfg(feature = "v1_24")]
2997            ffi::GST_VIDEO_FORMAT_MT2110R => Self::Mt2110r,
2998            #[cfg(feature = "v1_24")]
2999            ffi::GST_VIDEO_FORMAT_A422 => Self::A422,
3000            #[cfg(feature = "v1_24")]
3001            ffi::GST_VIDEO_FORMAT_A444 => Self::A444,
3002            #[cfg(feature = "v1_24")]
3003            ffi::GST_VIDEO_FORMAT_A444_12LE => Self::A44412le,
3004            #[cfg(feature = "v1_24")]
3005            ffi::GST_VIDEO_FORMAT_A444_12BE => Self::A44412be,
3006            #[cfg(feature = "v1_24")]
3007            ffi::GST_VIDEO_FORMAT_A422_12LE => Self::A42212le,
3008            #[cfg(feature = "v1_24")]
3009            ffi::GST_VIDEO_FORMAT_A422_12BE => Self::A42212be,
3010            #[cfg(feature = "v1_24")]
3011            ffi::GST_VIDEO_FORMAT_A420_12LE => Self::A42012le,
3012            #[cfg(feature = "v1_24")]
3013            ffi::GST_VIDEO_FORMAT_A420_12BE => Self::A42012be,
3014            #[cfg(feature = "v1_24")]
3015            ffi::GST_VIDEO_FORMAT_A444_16LE => Self::A44416le,
3016            #[cfg(feature = "v1_24")]
3017            ffi::GST_VIDEO_FORMAT_A444_16BE => Self::A44416be,
3018            #[cfg(feature = "v1_24")]
3019            ffi::GST_VIDEO_FORMAT_A422_16LE => Self::A42216le,
3020            #[cfg(feature = "v1_24")]
3021            ffi::GST_VIDEO_FORMAT_A422_16BE => Self::A42216be,
3022            #[cfg(feature = "v1_24")]
3023            ffi::GST_VIDEO_FORMAT_A420_16LE => Self::A42016le,
3024            #[cfg(feature = "v1_24")]
3025            ffi::GST_VIDEO_FORMAT_A420_16BE => Self::A42016be,
3026            #[cfg(feature = "v1_24")]
3027            ffi::GST_VIDEO_FORMAT_GBR_16LE => Self::Gbr16le,
3028            #[cfg(feature = "v1_24")]
3029            ffi::GST_VIDEO_FORMAT_GBR_16BE => Self::Gbr16be,
3030            #[cfg(feature = "v1_24")]
3031            ffi::GST_VIDEO_FORMAT_RBGA => Self::Rbga,
3032            #[cfg(feature = "v1_26")]
3033            ffi::GST_VIDEO_FORMAT_Y216_LE => Self::Y216Le,
3034            #[cfg(feature = "v1_26")]
3035            ffi::GST_VIDEO_FORMAT_Y216_BE => Self::Y216Be,
3036            #[cfg(feature = "v1_26")]
3037            ffi::GST_VIDEO_FORMAT_Y416_LE => Self::Y416Le,
3038            #[cfg(feature = "v1_26")]
3039            ffi::GST_VIDEO_FORMAT_Y416_BE => Self::Y416Be,
3040            #[cfg(feature = "v1_26")]
3041            ffi::GST_VIDEO_FORMAT_GRAY10_LE16 => Self::Gray10Le16,
3042            value => Self::__Unknown(value),
3043        }
3044    }
3045}
3046
3047impl StaticType for VideoFormat {
3048    #[inline]
3049    #[doc(alias = "gst_video_format_get_type")]
3050    fn static_type() -> glib::Type {
3051        unsafe { from_glib(ffi::gst_video_format_get_type()) }
3052    }
3053}
3054
3055impl glib::HasParamSpec for VideoFormat {
3056    type ParamSpec = glib::ParamSpecEnum;
3057    type SetValue = Self;
3058    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3059
3060    fn param_spec_builder() -> Self::BuilderFn {
3061        Self::ParamSpec::builder_with_default
3062    }
3063}
3064
3065impl glib::value::ValueType for VideoFormat {
3066    type Type = Self;
3067}
3068
3069unsafe impl<'a> glib::value::FromValue<'a> for VideoFormat {
3070    type Checker = glib::value::GenericValueTypeChecker<Self>;
3071
3072    #[inline]
3073    unsafe fn from_value(value: &'a glib::Value) -> Self {
3074        skip_assert_initialized!();
3075        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3076    }
3077}
3078
3079impl ToValue for VideoFormat {
3080    #[inline]
3081    fn to_value(&self) -> glib::Value {
3082        let mut value = glib::Value::for_value_type::<Self>();
3083        unsafe {
3084            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3085        }
3086        value
3087    }
3088
3089    #[inline]
3090    fn value_type(&self) -> glib::Type {
3091        Self::static_type()
3092    }
3093}
3094
3095impl From<VideoFormat> for glib::Value {
3096    #[inline]
3097    fn from(v: VideoFormat) -> Self {
3098        skip_assert_initialized!();
3099        ToValue::to_value(&v)
3100    }
3101}
3102
3103#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3104#[non_exhaustive]
3105#[doc(alias = "GstVideoGammaMode")]
3106pub enum VideoGammaMode {
3107    #[doc(alias = "GST_VIDEO_GAMMA_MODE_NONE")]
3108    None,
3109    #[doc(alias = "GST_VIDEO_GAMMA_MODE_REMAP")]
3110    Remap,
3111    #[doc(hidden)]
3112    __Unknown(i32),
3113}
3114
3115#[doc(hidden)]
3116impl IntoGlib for VideoGammaMode {
3117    type GlibType = ffi::GstVideoGammaMode;
3118
3119    #[inline]
3120    fn into_glib(self) -> ffi::GstVideoGammaMode {
3121        match self {
3122            Self::None => ffi::GST_VIDEO_GAMMA_MODE_NONE,
3123            Self::Remap => ffi::GST_VIDEO_GAMMA_MODE_REMAP,
3124            Self::__Unknown(value) => value,
3125        }
3126    }
3127}
3128
3129#[doc(hidden)]
3130impl FromGlib<ffi::GstVideoGammaMode> for VideoGammaMode {
3131    #[inline]
3132    unsafe fn from_glib(value: ffi::GstVideoGammaMode) -> Self {
3133        skip_assert_initialized!();
3134
3135        match value {
3136            ffi::GST_VIDEO_GAMMA_MODE_NONE => Self::None,
3137            ffi::GST_VIDEO_GAMMA_MODE_REMAP => Self::Remap,
3138            value => Self::__Unknown(value),
3139        }
3140    }
3141}
3142
3143impl StaticType for VideoGammaMode {
3144    #[inline]
3145    #[doc(alias = "gst_video_gamma_mode_get_type")]
3146    fn static_type() -> glib::Type {
3147        unsafe { from_glib(ffi::gst_video_gamma_mode_get_type()) }
3148    }
3149}
3150
3151impl glib::HasParamSpec for VideoGammaMode {
3152    type ParamSpec = glib::ParamSpecEnum;
3153    type SetValue = Self;
3154    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3155
3156    fn param_spec_builder() -> Self::BuilderFn {
3157        Self::ParamSpec::builder_with_default
3158    }
3159}
3160
3161impl glib::value::ValueType for VideoGammaMode {
3162    type Type = Self;
3163}
3164
3165unsafe impl<'a> glib::value::FromValue<'a> for VideoGammaMode {
3166    type Checker = glib::value::GenericValueTypeChecker<Self>;
3167
3168    #[inline]
3169    unsafe fn from_value(value: &'a glib::Value) -> Self {
3170        skip_assert_initialized!();
3171        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3172    }
3173}
3174
3175impl ToValue for VideoGammaMode {
3176    #[inline]
3177    fn to_value(&self) -> glib::Value {
3178        let mut value = glib::Value::for_value_type::<Self>();
3179        unsafe {
3180            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3181        }
3182        value
3183    }
3184
3185    #[inline]
3186    fn value_type(&self) -> glib::Type {
3187        Self::static_type()
3188    }
3189}
3190
3191impl From<VideoGammaMode> for glib::Value {
3192    #[inline]
3193    fn from(v: VideoGammaMode) -> Self {
3194        skip_assert_initialized!();
3195        ToValue::to_value(&v)
3196    }
3197}
3198
3199#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3200#[non_exhaustive]
3201#[doc(alias = "GstVideoInterlaceMode")]
3202pub enum VideoInterlaceMode {
3203    #[doc(alias = "GST_VIDEO_INTERLACE_MODE_PROGRESSIVE")]
3204    Progressive,
3205    #[doc(alias = "GST_VIDEO_INTERLACE_MODE_INTERLEAVED")]
3206    Interleaved,
3207    #[doc(alias = "GST_VIDEO_INTERLACE_MODE_MIXED")]
3208    Mixed,
3209    #[doc(alias = "GST_VIDEO_INTERLACE_MODE_FIELDS")]
3210    Fields,
3211    #[cfg(feature = "v1_16")]
3212    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
3213    #[doc(alias = "GST_VIDEO_INTERLACE_MODE_ALTERNATE")]
3214    Alternate,
3215    #[doc(hidden)]
3216    __Unknown(i32),
3217}
3218
3219impl VideoInterlaceMode {
3220    #[doc(alias = "gst_video_interlace_mode_from_string")]
3221    pub fn from_string(mode: &str) -> VideoInterlaceMode {
3222        assert_initialized_main_thread!();
3223        unsafe {
3224            from_glib(ffi::gst_video_interlace_mode_from_string(
3225                mode.to_glib_none().0,
3226            ))
3227        }
3228    }
3229
3230    pub fn to_str<'a>(self) -> &'a GStr {
3231        unsafe {
3232            GStr::from_ptr(
3233                ffi::gst_video_interlace_mode_to_string(self.into_glib())
3234                    .as_ref()
3235                    .expect("gst_video_interlace_mode_to_string returned NULL"),
3236            )
3237        }
3238    }
3239}
3240
3241impl std::fmt::Display for VideoInterlaceMode {
3242    #[inline]
3243    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
3244        f.write_str(&self.to_str())
3245    }
3246}
3247
3248#[doc(hidden)]
3249impl IntoGlib for VideoInterlaceMode {
3250    type GlibType = ffi::GstVideoInterlaceMode;
3251
3252    #[inline]
3253    fn into_glib(self) -> ffi::GstVideoInterlaceMode {
3254        match self {
3255            Self::Progressive => ffi::GST_VIDEO_INTERLACE_MODE_PROGRESSIVE,
3256            Self::Interleaved => ffi::GST_VIDEO_INTERLACE_MODE_INTERLEAVED,
3257            Self::Mixed => ffi::GST_VIDEO_INTERLACE_MODE_MIXED,
3258            Self::Fields => ffi::GST_VIDEO_INTERLACE_MODE_FIELDS,
3259            #[cfg(feature = "v1_16")]
3260            Self::Alternate => ffi::GST_VIDEO_INTERLACE_MODE_ALTERNATE,
3261            Self::__Unknown(value) => value,
3262        }
3263    }
3264}
3265
3266#[doc(hidden)]
3267impl FromGlib<ffi::GstVideoInterlaceMode> for VideoInterlaceMode {
3268    #[inline]
3269    unsafe fn from_glib(value: ffi::GstVideoInterlaceMode) -> Self {
3270        skip_assert_initialized!();
3271
3272        match value {
3273            ffi::GST_VIDEO_INTERLACE_MODE_PROGRESSIVE => Self::Progressive,
3274            ffi::GST_VIDEO_INTERLACE_MODE_INTERLEAVED => Self::Interleaved,
3275            ffi::GST_VIDEO_INTERLACE_MODE_MIXED => Self::Mixed,
3276            ffi::GST_VIDEO_INTERLACE_MODE_FIELDS => Self::Fields,
3277            #[cfg(feature = "v1_16")]
3278            ffi::GST_VIDEO_INTERLACE_MODE_ALTERNATE => Self::Alternate,
3279            value => Self::__Unknown(value),
3280        }
3281    }
3282}
3283
3284impl StaticType for VideoInterlaceMode {
3285    #[inline]
3286    #[doc(alias = "gst_video_interlace_mode_get_type")]
3287    fn static_type() -> glib::Type {
3288        unsafe { from_glib(ffi::gst_video_interlace_mode_get_type()) }
3289    }
3290}
3291
3292impl glib::HasParamSpec for VideoInterlaceMode {
3293    type ParamSpec = glib::ParamSpecEnum;
3294    type SetValue = Self;
3295    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3296
3297    fn param_spec_builder() -> Self::BuilderFn {
3298        Self::ParamSpec::builder_with_default
3299    }
3300}
3301
3302impl glib::value::ValueType for VideoInterlaceMode {
3303    type Type = Self;
3304}
3305
3306unsafe impl<'a> glib::value::FromValue<'a> for VideoInterlaceMode {
3307    type Checker = glib::value::GenericValueTypeChecker<Self>;
3308
3309    #[inline]
3310    unsafe fn from_value(value: &'a glib::Value) -> Self {
3311        skip_assert_initialized!();
3312        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3313    }
3314}
3315
3316impl ToValue for VideoInterlaceMode {
3317    #[inline]
3318    fn to_value(&self) -> glib::Value {
3319        let mut value = glib::Value::for_value_type::<Self>();
3320        unsafe {
3321            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3322        }
3323        value
3324    }
3325
3326    #[inline]
3327    fn value_type(&self) -> glib::Type {
3328        Self::static_type()
3329    }
3330}
3331
3332impl From<VideoInterlaceMode> for glib::Value {
3333    #[inline]
3334    fn from(v: VideoInterlaceMode) -> Self {
3335        skip_assert_initialized!();
3336        ToValue::to_value(&v)
3337    }
3338}
3339
3340#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3341#[non_exhaustive]
3342#[doc(alias = "GstVideoMatrixMode")]
3343pub enum VideoMatrixMode {
3344    #[doc(alias = "GST_VIDEO_MATRIX_MODE_FULL")]
3345    Full,
3346    #[doc(alias = "GST_VIDEO_MATRIX_MODE_INPUT_ONLY")]
3347    InputOnly,
3348    #[doc(alias = "GST_VIDEO_MATRIX_MODE_OUTPUT_ONLY")]
3349    OutputOnly,
3350    #[doc(alias = "GST_VIDEO_MATRIX_MODE_NONE")]
3351    None,
3352    #[doc(hidden)]
3353    __Unknown(i32),
3354}
3355
3356#[doc(hidden)]
3357impl IntoGlib for VideoMatrixMode {
3358    type GlibType = ffi::GstVideoMatrixMode;
3359
3360    #[inline]
3361    fn into_glib(self) -> ffi::GstVideoMatrixMode {
3362        match self {
3363            Self::Full => ffi::GST_VIDEO_MATRIX_MODE_FULL,
3364            Self::InputOnly => ffi::GST_VIDEO_MATRIX_MODE_INPUT_ONLY,
3365            Self::OutputOnly => ffi::GST_VIDEO_MATRIX_MODE_OUTPUT_ONLY,
3366            Self::None => ffi::GST_VIDEO_MATRIX_MODE_NONE,
3367            Self::__Unknown(value) => value,
3368        }
3369    }
3370}
3371
3372#[doc(hidden)]
3373impl FromGlib<ffi::GstVideoMatrixMode> for VideoMatrixMode {
3374    #[inline]
3375    unsafe fn from_glib(value: ffi::GstVideoMatrixMode) -> Self {
3376        skip_assert_initialized!();
3377
3378        match value {
3379            ffi::GST_VIDEO_MATRIX_MODE_FULL => Self::Full,
3380            ffi::GST_VIDEO_MATRIX_MODE_INPUT_ONLY => Self::InputOnly,
3381            ffi::GST_VIDEO_MATRIX_MODE_OUTPUT_ONLY => Self::OutputOnly,
3382            ffi::GST_VIDEO_MATRIX_MODE_NONE => Self::None,
3383            value => Self::__Unknown(value),
3384        }
3385    }
3386}
3387
3388impl StaticType for VideoMatrixMode {
3389    #[inline]
3390    #[doc(alias = "gst_video_matrix_mode_get_type")]
3391    fn static_type() -> glib::Type {
3392        unsafe { from_glib(ffi::gst_video_matrix_mode_get_type()) }
3393    }
3394}
3395
3396impl glib::HasParamSpec for VideoMatrixMode {
3397    type ParamSpec = glib::ParamSpecEnum;
3398    type SetValue = Self;
3399    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3400
3401    fn param_spec_builder() -> Self::BuilderFn {
3402        Self::ParamSpec::builder_with_default
3403    }
3404}
3405
3406impl glib::value::ValueType for VideoMatrixMode {
3407    type Type = Self;
3408}
3409
3410unsafe impl<'a> glib::value::FromValue<'a> for VideoMatrixMode {
3411    type Checker = glib::value::GenericValueTypeChecker<Self>;
3412
3413    #[inline]
3414    unsafe fn from_value(value: &'a glib::Value) -> Self {
3415        skip_assert_initialized!();
3416        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3417    }
3418}
3419
3420impl ToValue for VideoMatrixMode {
3421    #[inline]
3422    fn to_value(&self) -> glib::Value {
3423        let mut value = glib::Value::for_value_type::<Self>();
3424        unsafe {
3425            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3426        }
3427        value
3428    }
3429
3430    #[inline]
3431    fn value_type(&self) -> glib::Type {
3432        Self::static_type()
3433    }
3434}
3435
3436impl From<VideoMatrixMode> for glib::Value {
3437    #[inline]
3438    fn from(v: VideoMatrixMode) -> Self {
3439        skip_assert_initialized!();
3440        ToValue::to_value(&v)
3441    }
3442}
3443
3444#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3445#[non_exhaustive]
3446#[doc(alias = "GstVideoMultiviewFramePacking")]
3447pub enum VideoMultiviewFramePacking {
3448    #[doc(alias = "GST_VIDEO_MULTIVIEW_FRAME_PACKING_NONE")]
3449    None,
3450    #[doc(alias = "GST_VIDEO_MULTIVIEW_FRAME_PACKING_MONO")]
3451    Mono,
3452    #[doc(alias = "GST_VIDEO_MULTIVIEW_FRAME_PACKING_LEFT")]
3453    Left,
3454    #[doc(alias = "GST_VIDEO_MULTIVIEW_FRAME_PACKING_RIGHT")]
3455    Right,
3456    #[doc(alias = "GST_VIDEO_MULTIVIEW_FRAME_PACKING_SIDE_BY_SIDE")]
3457    SideBySide,
3458    #[doc(alias = "GST_VIDEO_MULTIVIEW_FRAME_PACKING_SIDE_BY_SIDE_QUINCUNX")]
3459    SideBySideQuincunx,
3460    #[doc(alias = "GST_VIDEO_MULTIVIEW_FRAME_PACKING_COLUMN_INTERLEAVED")]
3461    ColumnInterleaved,
3462    #[doc(alias = "GST_VIDEO_MULTIVIEW_FRAME_PACKING_ROW_INTERLEAVED")]
3463    RowInterleaved,
3464    #[doc(alias = "GST_VIDEO_MULTIVIEW_FRAME_PACKING_TOP_BOTTOM")]
3465    TopBottom,
3466    #[doc(alias = "GST_VIDEO_MULTIVIEW_FRAME_PACKING_CHECKERBOARD")]
3467    Checkerboard,
3468    #[doc(hidden)]
3469    __Unknown(i32),
3470}
3471
3472#[doc(hidden)]
3473impl IntoGlib for VideoMultiviewFramePacking {
3474    type GlibType = ffi::GstVideoMultiviewFramePacking;
3475
3476    #[inline]
3477    fn into_glib(self) -> ffi::GstVideoMultiviewFramePacking {
3478        match self {
3479            Self::None => ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_NONE,
3480            Self::Mono => ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_MONO,
3481            Self::Left => ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_LEFT,
3482            Self::Right => ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_RIGHT,
3483            Self::SideBySide => ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_SIDE_BY_SIDE,
3484            Self::SideBySideQuincunx => {
3485                ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_SIDE_BY_SIDE_QUINCUNX
3486            }
3487            Self::ColumnInterleaved => ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_COLUMN_INTERLEAVED,
3488            Self::RowInterleaved => ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_ROW_INTERLEAVED,
3489            Self::TopBottom => ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_TOP_BOTTOM,
3490            Self::Checkerboard => ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_CHECKERBOARD,
3491            Self::__Unknown(value) => value,
3492        }
3493    }
3494}
3495
3496#[doc(hidden)]
3497impl FromGlib<ffi::GstVideoMultiviewFramePacking> for VideoMultiviewFramePacking {
3498    #[inline]
3499    unsafe fn from_glib(value: ffi::GstVideoMultiviewFramePacking) -> Self {
3500        skip_assert_initialized!();
3501
3502        match value {
3503            ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_NONE => Self::None,
3504            ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_MONO => Self::Mono,
3505            ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_LEFT => Self::Left,
3506            ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_RIGHT => Self::Right,
3507            ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_SIDE_BY_SIDE => Self::SideBySide,
3508            ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_SIDE_BY_SIDE_QUINCUNX => {
3509                Self::SideBySideQuincunx
3510            }
3511            ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_COLUMN_INTERLEAVED => Self::ColumnInterleaved,
3512            ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_ROW_INTERLEAVED => Self::RowInterleaved,
3513            ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_TOP_BOTTOM => Self::TopBottom,
3514            ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_CHECKERBOARD => Self::Checkerboard,
3515            value => Self::__Unknown(value),
3516        }
3517    }
3518}
3519
3520impl StaticType for VideoMultiviewFramePacking {
3521    #[inline]
3522    #[doc(alias = "gst_video_multiview_frame_packing_get_type")]
3523    fn static_type() -> glib::Type {
3524        unsafe { from_glib(ffi::gst_video_multiview_frame_packing_get_type()) }
3525    }
3526}
3527
3528impl glib::HasParamSpec for VideoMultiviewFramePacking {
3529    type ParamSpec = glib::ParamSpecEnum;
3530    type SetValue = Self;
3531    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3532
3533    fn param_spec_builder() -> Self::BuilderFn {
3534        Self::ParamSpec::builder_with_default
3535    }
3536}
3537
3538impl glib::value::ValueType for VideoMultiviewFramePacking {
3539    type Type = Self;
3540}
3541
3542unsafe impl<'a> glib::value::FromValue<'a> for VideoMultiviewFramePacking {
3543    type Checker = glib::value::GenericValueTypeChecker<Self>;
3544
3545    #[inline]
3546    unsafe fn from_value(value: &'a glib::Value) -> Self {
3547        skip_assert_initialized!();
3548        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3549    }
3550}
3551
3552impl ToValue for VideoMultiviewFramePacking {
3553    #[inline]
3554    fn to_value(&self) -> glib::Value {
3555        let mut value = glib::Value::for_value_type::<Self>();
3556        unsafe {
3557            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3558        }
3559        value
3560    }
3561
3562    #[inline]
3563    fn value_type(&self) -> glib::Type {
3564        Self::static_type()
3565    }
3566}
3567
3568impl From<VideoMultiviewFramePacking> for glib::Value {
3569    #[inline]
3570    fn from(v: VideoMultiviewFramePacking) -> Self {
3571        skip_assert_initialized!();
3572        ToValue::to_value(&v)
3573    }
3574}
3575
3576#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3577#[non_exhaustive]
3578#[doc(alias = "GstVideoMultiviewMode")]
3579pub enum VideoMultiviewMode {
3580    #[doc(alias = "GST_VIDEO_MULTIVIEW_MODE_NONE")]
3581    None,
3582    #[doc(alias = "GST_VIDEO_MULTIVIEW_MODE_MONO")]
3583    Mono,
3584    #[doc(alias = "GST_VIDEO_MULTIVIEW_MODE_LEFT")]
3585    Left,
3586    #[doc(alias = "GST_VIDEO_MULTIVIEW_MODE_RIGHT")]
3587    Right,
3588    #[doc(alias = "GST_VIDEO_MULTIVIEW_MODE_SIDE_BY_SIDE")]
3589    SideBySide,
3590    #[doc(alias = "GST_VIDEO_MULTIVIEW_MODE_SIDE_BY_SIDE_QUINCUNX")]
3591    SideBySideQuincunx,
3592    #[doc(alias = "GST_VIDEO_MULTIVIEW_MODE_COLUMN_INTERLEAVED")]
3593    ColumnInterleaved,
3594    #[doc(alias = "GST_VIDEO_MULTIVIEW_MODE_ROW_INTERLEAVED")]
3595    RowInterleaved,
3596    #[doc(alias = "GST_VIDEO_MULTIVIEW_MODE_TOP_BOTTOM")]
3597    TopBottom,
3598    #[doc(alias = "GST_VIDEO_MULTIVIEW_MODE_CHECKERBOARD")]
3599    Checkerboard,
3600    #[doc(alias = "GST_VIDEO_MULTIVIEW_MODE_FRAME_BY_FRAME")]
3601    FrameByFrame,
3602    #[doc(alias = "GST_VIDEO_MULTIVIEW_MODE_MULTIVIEW_FRAME_BY_FRAME")]
3603    MultiviewFrameByFrame,
3604    #[doc(alias = "GST_VIDEO_MULTIVIEW_MODE_SEPARATED")]
3605    Separated,
3606    #[doc(hidden)]
3607    __Unknown(i32),
3608}
3609
3610impl VideoMultiviewMode {
3611    #[doc(alias = "gst_video_multiview_mode_from_caps_string")]
3612    pub fn from_caps_string(caps_mview_mode: &str) -> VideoMultiviewMode {
3613        assert_initialized_main_thread!();
3614        unsafe {
3615            from_glib(ffi::gst_video_multiview_mode_from_caps_string(
3616                caps_mview_mode.to_glib_none().0,
3617            ))
3618        }
3619    }
3620
3621    #[doc(alias = "gst_video_multiview_mode_to_caps_string")]
3622    pub fn to_caps_string(self) -> Option<glib::GString> {
3623        assert_initialized_main_thread!();
3624        unsafe {
3625            from_glib_none(ffi::gst_video_multiview_mode_to_caps_string(
3626                self.into_glib(),
3627            ))
3628        }
3629    }
3630}
3631
3632#[doc(hidden)]
3633impl IntoGlib for VideoMultiviewMode {
3634    type GlibType = ffi::GstVideoMultiviewMode;
3635
3636    fn into_glib(self) -> ffi::GstVideoMultiviewMode {
3637        match self {
3638            Self::None => ffi::GST_VIDEO_MULTIVIEW_MODE_NONE,
3639            Self::Mono => ffi::GST_VIDEO_MULTIVIEW_MODE_MONO,
3640            Self::Left => ffi::GST_VIDEO_MULTIVIEW_MODE_LEFT,
3641            Self::Right => ffi::GST_VIDEO_MULTIVIEW_MODE_RIGHT,
3642            Self::SideBySide => ffi::GST_VIDEO_MULTIVIEW_MODE_SIDE_BY_SIDE,
3643            Self::SideBySideQuincunx => ffi::GST_VIDEO_MULTIVIEW_MODE_SIDE_BY_SIDE_QUINCUNX,
3644            Self::ColumnInterleaved => ffi::GST_VIDEO_MULTIVIEW_MODE_COLUMN_INTERLEAVED,
3645            Self::RowInterleaved => ffi::GST_VIDEO_MULTIVIEW_MODE_ROW_INTERLEAVED,
3646            Self::TopBottom => ffi::GST_VIDEO_MULTIVIEW_MODE_TOP_BOTTOM,
3647            Self::Checkerboard => ffi::GST_VIDEO_MULTIVIEW_MODE_CHECKERBOARD,
3648            Self::FrameByFrame => ffi::GST_VIDEO_MULTIVIEW_MODE_FRAME_BY_FRAME,
3649            Self::MultiviewFrameByFrame => ffi::GST_VIDEO_MULTIVIEW_MODE_MULTIVIEW_FRAME_BY_FRAME,
3650            Self::Separated => ffi::GST_VIDEO_MULTIVIEW_MODE_SEPARATED,
3651            Self::__Unknown(value) => value,
3652        }
3653    }
3654}
3655
3656#[doc(hidden)]
3657impl FromGlib<ffi::GstVideoMultiviewMode> for VideoMultiviewMode {
3658    unsafe fn from_glib(value: ffi::GstVideoMultiviewMode) -> Self {
3659        skip_assert_initialized!();
3660
3661        match value {
3662            ffi::GST_VIDEO_MULTIVIEW_MODE_NONE => Self::None,
3663            ffi::GST_VIDEO_MULTIVIEW_MODE_MONO => Self::Mono,
3664            ffi::GST_VIDEO_MULTIVIEW_MODE_LEFT => Self::Left,
3665            ffi::GST_VIDEO_MULTIVIEW_MODE_RIGHT => Self::Right,
3666            ffi::GST_VIDEO_MULTIVIEW_MODE_SIDE_BY_SIDE => Self::SideBySide,
3667            ffi::GST_VIDEO_MULTIVIEW_MODE_SIDE_BY_SIDE_QUINCUNX => Self::SideBySideQuincunx,
3668            ffi::GST_VIDEO_MULTIVIEW_MODE_COLUMN_INTERLEAVED => Self::ColumnInterleaved,
3669            ffi::GST_VIDEO_MULTIVIEW_MODE_ROW_INTERLEAVED => Self::RowInterleaved,
3670            ffi::GST_VIDEO_MULTIVIEW_MODE_TOP_BOTTOM => Self::TopBottom,
3671            ffi::GST_VIDEO_MULTIVIEW_MODE_CHECKERBOARD => Self::Checkerboard,
3672            ffi::GST_VIDEO_MULTIVIEW_MODE_FRAME_BY_FRAME => Self::FrameByFrame,
3673            ffi::GST_VIDEO_MULTIVIEW_MODE_MULTIVIEW_FRAME_BY_FRAME => Self::MultiviewFrameByFrame,
3674            ffi::GST_VIDEO_MULTIVIEW_MODE_SEPARATED => Self::Separated,
3675            value => Self::__Unknown(value),
3676        }
3677    }
3678}
3679
3680impl StaticType for VideoMultiviewMode {
3681    #[inline]
3682    #[doc(alias = "gst_video_multiview_mode_get_type")]
3683    fn static_type() -> glib::Type {
3684        unsafe { from_glib(ffi::gst_video_multiview_mode_get_type()) }
3685    }
3686}
3687
3688impl glib::HasParamSpec for VideoMultiviewMode {
3689    type ParamSpec = glib::ParamSpecEnum;
3690    type SetValue = Self;
3691    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3692
3693    fn param_spec_builder() -> Self::BuilderFn {
3694        Self::ParamSpec::builder_with_default
3695    }
3696}
3697
3698impl glib::value::ValueType for VideoMultiviewMode {
3699    type Type = Self;
3700}
3701
3702unsafe impl<'a> glib::value::FromValue<'a> for VideoMultiviewMode {
3703    type Checker = glib::value::GenericValueTypeChecker<Self>;
3704
3705    #[inline]
3706    unsafe fn from_value(value: &'a glib::Value) -> Self {
3707        skip_assert_initialized!();
3708        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3709    }
3710}
3711
3712impl ToValue for VideoMultiviewMode {
3713    #[inline]
3714    fn to_value(&self) -> glib::Value {
3715        let mut value = glib::Value::for_value_type::<Self>();
3716        unsafe {
3717            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3718        }
3719        value
3720    }
3721
3722    #[inline]
3723    fn value_type(&self) -> glib::Type {
3724        Self::static_type()
3725    }
3726}
3727
3728impl From<VideoMultiviewMode> for glib::Value {
3729    #[inline]
3730    fn from(v: VideoMultiviewMode) -> Self {
3731        skip_assert_initialized!();
3732        ToValue::to_value(&v)
3733    }
3734}
3735
3736#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3737#[non_exhaustive]
3738#[doc(alias = "GstVideoOrientationMethod")]
3739pub enum VideoOrientationMethod {
3740    #[doc(alias = "GST_VIDEO_ORIENTATION_IDENTITY")]
3741    Identity,
3742    #[doc(alias = "GST_VIDEO_ORIENTATION_90R")]
3743    _90r,
3744    #[doc(alias = "GST_VIDEO_ORIENTATION_180")]
3745    _180,
3746    #[doc(alias = "GST_VIDEO_ORIENTATION_90L")]
3747    _90l,
3748    #[doc(alias = "GST_VIDEO_ORIENTATION_HORIZ")]
3749    Horiz,
3750    #[doc(alias = "GST_VIDEO_ORIENTATION_VERT")]
3751    Vert,
3752    #[doc(alias = "GST_VIDEO_ORIENTATION_UL_LR")]
3753    UlLr,
3754    #[doc(alias = "GST_VIDEO_ORIENTATION_UR_LL")]
3755    UrLl,
3756    #[doc(alias = "GST_VIDEO_ORIENTATION_AUTO")]
3757    Auto,
3758    #[doc(alias = "GST_VIDEO_ORIENTATION_CUSTOM")]
3759    Custom,
3760    #[doc(hidden)]
3761    __Unknown(i32),
3762}
3763
3764#[doc(hidden)]
3765impl IntoGlib for VideoOrientationMethod {
3766    type GlibType = ffi::GstVideoOrientationMethod;
3767
3768    #[inline]
3769    fn into_glib(self) -> ffi::GstVideoOrientationMethod {
3770        match self {
3771            Self::Identity => ffi::GST_VIDEO_ORIENTATION_IDENTITY,
3772            Self::_90r => ffi::GST_VIDEO_ORIENTATION_90R,
3773            Self::_180 => ffi::GST_VIDEO_ORIENTATION_180,
3774            Self::_90l => ffi::GST_VIDEO_ORIENTATION_90L,
3775            Self::Horiz => ffi::GST_VIDEO_ORIENTATION_HORIZ,
3776            Self::Vert => ffi::GST_VIDEO_ORIENTATION_VERT,
3777            Self::UlLr => ffi::GST_VIDEO_ORIENTATION_UL_LR,
3778            Self::UrLl => ffi::GST_VIDEO_ORIENTATION_UR_LL,
3779            Self::Auto => ffi::GST_VIDEO_ORIENTATION_AUTO,
3780            Self::Custom => ffi::GST_VIDEO_ORIENTATION_CUSTOM,
3781            Self::__Unknown(value) => value,
3782        }
3783    }
3784}
3785
3786#[doc(hidden)]
3787impl FromGlib<ffi::GstVideoOrientationMethod> for VideoOrientationMethod {
3788    #[inline]
3789    unsafe fn from_glib(value: ffi::GstVideoOrientationMethod) -> Self {
3790        skip_assert_initialized!();
3791
3792        match value {
3793            ffi::GST_VIDEO_ORIENTATION_IDENTITY => Self::Identity,
3794            ffi::GST_VIDEO_ORIENTATION_90R => Self::_90r,
3795            ffi::GST_VIDEO_ORIENTATION_180 => Self::_180,
3796            ffi::GST_VIDEO_ORIENTATION_90L => Self::_90l,
3797            ffi::GST_VIDEO_ORIENTATION_HORIZ => Self::Horiz,
3798            ffi::GST_VIDEO_ORIENTATION_VERT => Self::Vert,
3799            ffi::GST_VIDEO_ORIENTATION_UL_LR => Self::UlLr,
3800            ffi::GST_VIDEO_ORIENTATION_UR_LL => Self::UrLl,
3801            ffi::GST_VIDEO_ORIENTATION_AUTO => Self::Auto,
3802            ffi::GST_VIDEO_ORIENTATION_CUSTOM => Self::Custom,
3803            value => Self::__Unknown(value),
3804        }
3805    }
3806}
3807
3808impl StaticType for VideoOrientationMethod {
3809    #[inline]
3810    #[doc(alias = "gst_video_orientation_method_get_type")]
3811    fn static_type() -> glib::Type {
3812        unsafe { from_glib(ffi::gst_video_orientation_method_get_type()) }
3813    }
3814}
3815
3816impl glib::HasParamSpec for VideoOrientationMethod {
3817    type ParamSpec = glib::ParamSpecEnum;
3818    type SetValue = Self;
3819    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3820
3821    fn param_spec_builder() -> Self::BuilderFn {
3822        Self::ParamSpec::builder_with_default
3823    }
3824}
3825
3826impl glib::value::ValueType for VideoOrientationMethod {
3827    type Type = Self;
3828}
3829
3830unsafe impl<'a> glib::value::FromValue<'a> for VideoOrientationMethod {
3831    type Checker = glib::value::GenericValueTypeChecker<Self>;
3832
3833    #[inline]
3834    unsafe fn from_value(value: &'a glib::Value) -> Self {
3835        skip_assert_initialized!();
3836        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3837    }
3838}
3839
3840impl ToValue for VideoOrientationMethod {
3841    #[inline]
3842    fn to_value(&self) -> glib::Value {
3843        let mut value = glib::Value::for_value_type::<Self>();
3844        unsafe {
3845            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3846        }
3847        value
3848    }
3849
3850    #[inline]
3851    fn value_type(&self) -> glib::Type {
3852        Self::static_type()
3853    }
3854}
3855
3856impl From<VideoOrientationMethod> for glib::Value {
3857    #[inline]
3858    fn from(v: VideoOrientationMethod) -> Self {
3859        skip_assert_initialized!();
3860        ToValue::to_value(&v)
3861    }
3862}
3863
3864#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3865#[non_exhaustive]
3866#[doc(alias = "GstVideoPrimariesMode")]
3867pub enum VideoPrimariesMode {
3868    #[doc(alias = "GST_VIDEO_PRIMARIES_MODE_NONE")]
3869    None,
3870    #[doc(alias = "GST_VIDEO_PRIMARIES_MODE_MERGE_ONLY")]
3871    MergeOnly,
3872    #[doc(alias = "GST_VIDEO_PRIMARIES_MODE_FAST")]
3873    Fast,
3874    #[doc(hidden)]
3875    __Unknown(i32),
3876}
3877
3878#[doc(hidden)]
3879impl IntoGlib for VideoPrimariesMode {
3880    type GlibType = ffi::GstVideoPrimariesMode;
3881
3882    #[inline]
3883    fn into_glib(self) -> ffi::GstVideoPrimariesMode {
3884        match self {
3885            Self::None => ffi::GST_VIDEO_PRIMARIES_MODE_NONE,
3886            Self::MergeOnly => ffi::GST_VIDEO_PRIMARIES_MODE_MERGE_ONLY,
3887            Self::Fast => ffi::GST_VIDEO_PRIMARIES_MODE_FAST,
3888            Self::__Unknown(value) => value,
3889        }
3890    }
3891}
3892
3893#[doc(hidden)]
3894impl FromGlib<ffi::GstVideoPrimariesMode> for VideoPrimariesMode {
3895    #[inline]
3896    unsafe fn from_glib(value: ffi::GstVideoPrimariesMode) -> Self {
3897        skip_assert_initialized!();
3898
3899        match value {
3900            ffi::GST_VIDEO_PRIMARIES_MODE_NONE => Self::None,
3901            ffi::GST_VIDEO_PRIMARIES_MODE_MERGE_ONLY => Self::MergeOnly,
3902            ffi::GST_VIDEO_PRIMARIES_MODE_FAST => Self::Fast,
3903            value => Self::__Unknown(value),
3904        }
3905    }
3906}
3907
3908impl StaticType for VideoPrimariesMode {
3909    #[inline]
3910    #[doc(alias = "gst_video_primaries_mode_get_type")]
3911    fn static_type() -> glib::Type {
3912        unsafe { from_glib(ffi::gst_video_primaries_mode_get_type()) }
3913    }
3914}
3915
3916impl glib::HasParamSpec for VideoPrimariesMode {
3917    type ParamSpec = glib::ParamSpecEnum;
3918    type SetValue = Self;
3919    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3920
3921    fn param_spec_builder() -> Self::BuilderFn {
3922        Self::ParamSpec::builder_with_default
3923    }
3924}
3925
3926impl glib::value::ValueType for VideoPrimariesMode {
3927    type Type = Self;
3928}
3929
3930unsafe impl<'a> glib::value::FromValue<'a> for VideoPrimariesMode {
3931    type Checker = glib::value::GenericValueTypeChecker<Self>;
3932
3933    #[inline]
3934    unsafe fn from_value(value: &'a glib::Value) -> Self {
3935        skip_assert_initialized!();
3936        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
3937    }
3938}
3939
3940impl ToValue for VideoPrimariesMode {
3941    #[inline]
3942    fn to_value(&self) -> glib::Value {
3943        let mut value = glib::Value::for_value_type::<Self>();
3944        unsafe {
3945            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3946        }
3947        value
3948    }
3949
3950    #[inline]
3951    fn value_type(&self) -> glib::Type {
3952        Self::static_type()
3953    }
3954}
3955
3956impl From<VideoPrimariesMode> for glib::Value {
3957    #[inline]
3958    fn from(v: VideoPrimariesMode) -> Self {
3959        skip_assert_initialized!();
3960        ToValue::to_value(&v)
3961    }
3962}
3963
3964#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3965#[non_exhaustive]
3966#[doc(alias = "GstVideoResamplerMethod")]
3967pub enum VideoResamplerMethod {
3968    #[doc(alias = "GST_VIDEO_RESAMPLER_METHOD_NEAREST")]
3969    Nearest,
3970    #[doc(alias = "GST_VIDEO_RESAMPLER_METHOD_LINEAR")]
3971    Linear,
3972    #[doc(alias = "GST_VIDEO_RESAMPLER_METHOD_CUBIC")]
3973    Cubic,
3974    #[doc(alias = "GST_VIDEO_RESAMPLER_METHOD_SINC")]
3975    Sinc,
3976    #[doc(alias = "GST_VIDEO_RESAMPLER_METHOD_LANCZOS")]
3977    Lanczos,
3978    #[doc(hidden)]
3979    __Unknown(i32),
3980}
3981
3982#[doc(hidden)]
3983impl IntoGlib for VideoResamplerMethod {
3984    type GlibType = ffi::GstVideoResamplerMethod;
3985
3986    #[inline]
3987    fn into_glib(self) -> ffi::GstVideoResamplerMethod {
3988        match self {
3989            Self::Nearest => ffi::GST_VIDEO_RESAMPLER_METHOD_NEAREST,
3990            Self::Linear => ffi::GST_VIDEO_RESAMPLER_METHOD_LINEAR,
3991            Self::Cubic => ffi::GST_VIDEO_RESAMPLER_METHOD_CUBIC,
3992            Self::Sinc => ffi::GST_VIDEO_RESAMPLER_METHOD_SINC,
3993            Self::Lanczos => ffi::GST_VIDEO_RESAMPLER_METHOD_LANCZOS,
3994            Self::__Unknown(value) => value,
3995        }
3996    }
3997}
3998
3999#[doc(hidden)]
4000impl FromGlib<ffi::GstVideoResamplerMethod> for VideoResamplerMethod {
4001    #[inline]
4002    unsafe fn from_glib(value: ffi::GstVideoResamplerMethod) -> Self {
4003        skip_assert_initialized!();
4004
4005        match value {
4006            ffi::GST_VIDEO_RESAMPLER_METHOD_NEAREST => Self::Nearest,
4007            ffi::GST_VIDEO_RESAMPLER_METHOD_LINEAR => Self::Linear,
4008            ffi::GST_VIDEO_RESAMPLER_METHOD_CUBIC => Self::Cubic,
4009            ffi::GST_VIDEO_RESAMPLER_METHOD_SINC => Self::Sinc,
4010            ffi::GST_VIDEO_RESAMPLER_METHOD_LANCZOS => Self::Lanczos,
4011            value => Self::__Unknown(value),
4012        }
4013    }
4014}
4015
4016impl StaticType for VideoResamplerMethod {
4017    #[inline]
4018    #[doc(alias = "gst_video_resampler_method_get_type")]
4019    fn static_type() -> glib::Type {
4020        unsafe { from_glib(ffi::gst_video_resampler_method_get_type()) }
4021    }
4022}
4023
4024impl glib::HasParamSpec for VideoResamplerMethod {
4025    type ParamSpec = glib::ParamSpecEnum;
4026    type SetValue = Self;
4027    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4028
4029    fn param_spec_builder() -> Self::BuilderFn {
4030        Self::ParamSpec::builder_with_default
4031    }
4032}
4033
4034impl glib::value::ValueType for VideoResamplerMethod {
4035    type Type = Self;
4036}
4037
4038unsafe impl<'a> glib::value::FromValue<'a> for VideoResamplerMethod {
4039    type Checker = glib::value::GenericValueTypeChecker<Self>;
4040
4041    #[inline]
4042    unsafe fn from_value(value: &'a glib::Value) -> Self {
4043        skip_assert_initialized!();
4044        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
4045    }
4046}
4047
4048impl ToValue for VideoResamplerMethod {
4049    #[inline]
4050    fn to_value(&self) -> glib::Value {
4051        let mut value = glib::Value::for_value_type::<Self>();
4052        unsafe {
4053            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4054        }
4055        value
4056    }
4057
4058    #[inline]
4059    fn value_type(&self) -> glib::Type {
4060        Self::static_type()
4061    }
4062}
4063
4064impl From<VideoResamplerMethod> for glib::Value {
4065    #[inline]
4066    fn from(v: VideoResamplerMethod) -> Self {
4067        skip_assert_initialized!();
4068        ToValue::to_value(&v)
4069    }
4070}
4071
4072#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4073#[non_exhaustive]
4074#[doc(alias = "GstVideoTileMode")]
4075pub enum VideoTileMode {
4076    #[doc(alias = "GST_VIDEO_TILE_MODE_UNKNOWN")]
4077    Unknown,
4078    #[doc(alias = "GST_VIDEO_TILE_MODE_ZFLIPZ_2X2")]
4079    Zflipz2x2,
4080    #[cfg(feature = "v1_18")]
4081    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
4082    #[doc(alias = "GST_VIDEO_TILE_MODE_LINEAR")]
4083    Linear,
4084    #[doc(hidden)]
4085    __Unknown(i32),
4086}
4087
4088#[doc(hidden)]
4089impl IntoGlib for VideoTileMode {
4090    type GlibType = ffi::GstVideoTileMode;
4091
4092    #[inline]
4093    fn into_glib(self) -> ffi::GstVideoTileMode {
4094        match self {
4095            Self::Unknown => ffi::GST_VIDEO_TILE_MODE_UNKNOWN,
4096            Self::Zflipz2x2 => ffi::GST_VIDEO_TILE_MODE_ZFLIPZ_2X2,
4097            #[cfg(feature = "v1_18")]
4098            Self::Linear => ffi::GST_VIDEO_TILE_MODE_LINEAR,
4099            Self::__Unknown(value) => value,
4100        }
4101    }
4102}
4103
4104#[doc(hidden)]
4105impl FromGlib<ffi::GstVideoTileMode> for VideoTileMode {
4106    #[inline]
4107    unsafe fn from_glib(value: ffi::GstVideoTileMode) -> Self {
4108        skip_assert_initialized!();
4109
4110        match value {
4111            ffi::GST_VIDEO_TILE_MODE_UNKNOWN => Self::Unknown,
4112            ffi::GST_VIDEO_TILE_MODE_ZFLIPZ_2X2 => Self::Zflipz2x2,
4113            #[cfg(feature = "v1_18")]
4114            ffi::GST_VIDEO_TILE_MODE_LINEAR => Self::Linear,
4115            value => Self::__Unknown(value),
4116        }
4117    }
4118}
4119
4120impl StaticType for VideoTileMode {
4121    #[inline]
4122    #[doc(alias = "gst_video_tile_mode_get_type")]
4123    fn static_type() -> glib::Type {
4124        unsafe { from_glib(ffi::gst_video_tile_mode_get_type()) }
4125    }
4126}
4127
4128impl glib::HasParamSpec for VideoTileMode {
4129    type ParamSpec = glib::ParamSpecEnum;
4130    type SetValue = Self;
4131    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4132
4133    fn param_spec_builder() -> Self::BuilderFn {
4134        Self::ParamSpec::builder_with_default
4135    }
4136}
4137
4138impl glib::value::ValueType for VideoTileMode {
4139    type Type = Self;
4140}
4141
4142unsafe impl<'a> glib::value::FromValue<'a> for VideoTileMode {
4143    type Checker = glib::value::GenericValueTypeChecker<Self>;
4144
4145    #[inline]
4146    unsafe fn from_value(value: &'a glib::Value) -> Self {
4147        skip_assert_initialized!();
4148        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
4149    }
4150}
4151
4152impl ToValue for VideoTileMode {
4153    #[inline]
4154    fn to_value(&self) -> glib::Value {
4155        let mut value = glib::Value::for_value_type::<Self>();
4156        unsafe {
4157            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4158        }
4159        value
4160    }
4161
4162    #[inline]
4163    fn value_type(&self) -> glib::Type {
4164        Self::static_type()
4165    }
4166}
4167
4168impl From<VideoTileMode> for glib::Value {
4169    #[inline]
4170    fn from(v: VideoTileMode) -> Self {
4171        skip_assert_initialized!();
4172        ToValue::to_value(&v)
4173    }
4174}
4175
4176#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4177#[non_exhaustive]
4178#[doc(alias = "GstVideoTransferFunction")]
4179pub enum VideoTransferFunction {
4180    #[doc(alias = "GST_VIDEO_TRANSFER_UNKNOWN")]
4181    Unknown,
4182    #[doc(alias = "GST_VIDEO_TRANSFER_GAMMA10")]
4183    Gamma10,
4184    #[doc(alias = "GST_VIDEO_TRANSFER_GAMMA18")]
4185    Gamma18,
4186    #[doc(alias = "GST_VIDEO_TRANSFER_GAMMA20")]
4187    Gamma20,
4188    #[doc(alias = "GST_VIDEO_TRANSFER_GAMMA22")]
4189    Gamma22,
4190    #[doc(alias = "GST_VIDEO_TRANSFER_BT709")]
4191    Bt709,
4192    #[doc(alias = "GST_VIDEO_TRANSFER_SMPTE240M")]
4193    Smpte240m,
4194    #[doc(alias = "GST_VIDEO_TRANSFER_SRGB")]
4195    Srgb,
4196    #[doc(alias = "GST_VIDEO_TRANSFER_GAMMA28")]
4197    Gamma28,
4198    #[doc(alias = "GST_VIDEO_TRANSFER_LOG100")]
4199    Log100,
4200    #[doc(alias = "GST_VIDEO_TRANSFER_LOG316")]
4201    Log316,
4202    #[doc(alias = "GST_VIDEO_TRANSFER_BT2020_12")]
4203    Bt202012,
4204    #[doc(alias = "GST_VIDEO_TRANSFER_ADOBERGB")]
4205    Adobergb,
4206    #[cfg(feature = "v1_18")]
4207    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
4208    #[doc(alias = "GST_VIDEO_TRANSFER_BT2020_10")]
4209    Bt202010,
4210    #[cfg(feature = "v1_18")]
4211    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
4212    #[doc(alias = "GST_VIDEO_TRANSFER_SMPTE2084")]
4213    Smpte2084,
4214    #[cfg(feature = "v1_18")]
4215    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
4216    #[doc(alias = "GST_VIDEO_TRANSFER_ARIB_STD_B67")]
4217    AribStdB67,
4218    #[cfg(feature = "v1_18")]
4219    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
4220    #[doc(alias = "GST_VIDEO_TRANSFER_BT601")]
4221    Bt601,
4222    #[doc(hidden)]
4223    __Unknown(i32),
4224}
4225
4226impl VideoTransferFunction {
4227    #[cfg(feature = "v1_20")]
4228    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4229    #[doc(alias = "gst_video_transfer_function_decode")]
4230    pub fn decode(self, val: f64) -> f64 {
4231        assert_initialized_main_thread!();
4232        unsafe { ffi::gst_video_transfer_function_decode(self.into_glib(), val) }
4233    }
4234
4235    #[cfg(feature = "v1_20")]
4236    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4237    #[doc(alias = "gst_video_transfer_function_encode")]
4238    pub fn encode(self, val: f64) -> f64 {
4239        assert_initialized_main_thread!();
4240        unsafe { ffi::gst_video_transfer_function_encode(self.into_glib(), val) }
4241    }
4242
4243    #[cfg(feature = "v1_18")]
4244    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
4245    #[doc(alias = "gst_video_transfer_function_from_iso")]
4246    pub fn from_iso(value: u32) -> VideoTransferFunction {
4247        assert_initialized_main_thread!();
4248        unsafe { from_glib(ffi::gst_video_transfer_function_from_iso(value)) }
4249    }
4250
4251    #[cfg(feature = "v1_18")]
4252    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
4253    #[doc(alias = "gst_video_transfer_function_is_equivalent")]
4254    pub fn is_equivalent(self, from_bpp: u32, to_func: VideoTransferFunction, to_bpp: u32) -> bool {
4255        assert_initialized_main_thread!();
4256        unsafe {
4257            from_glib(ffi::gst_video_transfer_function_is_equivalent(
4258                self.into_glib(),
4259                from_bpp,
4260                to_func.into_glib(),
4261                to_bpp,
4262            ))
4263        }
4264    }
4265
4266    #[cfg(feature = "v1_18")]
4267    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
4268    #[doc(alias = "gst_video_transfer_function_to_iso")]
4269    pub fn to_iso(self) -> u32 {
4270        assert_initialized_main_thread!();
4271        unsafe { ffi::gst_video_transfer_function_to_iso(self.into_glib()) }
4272    }
4273}
4274
4275#[doc(hidden)]
4276impl IntoGlib for VideoTransferFunction {
4277    type GlibType = ffi::GstVideoTransferFunction;
4278
4279    fn into_glib(self) -> ffi::GstVideoTransferFunction {
4280        match self {
4281            Self::Unknown => ffi::GST_VIDEO_TRANSFER_UNKNOWN,
4282            Self::Gamma10 => ffi::GST_VIDEO_TRANSFER_GAMMA10,
4283            Self::Gamma18 => ffi::GST_VIDEO_TRANSFER_GAMMA18,
4284            Self::Gamma20 => ffi::GST_VIDEO_TRANSFER_GAMMA20,
4285            Self::Gamma22 => ffi::GST_VIDEO_TRANSFER_GAMMA22,
4286            Self::Bt709 => ffi::GST_VIDEO_TRANSFER_BT709,
4287            Self::Smpte240m => ffi::GST_VIDEO_TRANSFER_SMPTE240M,
4288            Self::Srgb => ffi::GST_VIDEO_TRANSFER_SRGB,
4289            Self::Gamma28 => ffi::GST_VIDEO_TRANSFER_GAMMA28,
4290            Self::Log100 => ffi::GST_VIDEO_TRANSFER_LOG100,
4291            Self::Log316 => ffi::GST_VIDEO_TRANSFER_LOG316,
4292            Self::Bt202012 => ffi::GST_VIDEO_TRANSFER_BT2020_12,
4293            Self::Adobergb => ffi::GST_VIDEO_TRANSFER_ADOBERGB,
4294            #[cfg(feature = "v1_18")]
4295            Self::Bt202010 => ffi::GST_VIDEO_TRANSFER_BT2020_10,
4296            #[cfg(feature = "v1_18")]
4297            Self::Smpte2084 => ffi::GST_VIDEO_TRANSFER_SMPTE2084,
4298            #[cfg(feature = "v1_18")]
4299            Self::AribStdB67 => ffi::GST_VIDEO_TRANSFER_ARIB_STD_B67,
4300            #[cfg(feature = "v1_18")]
4301            Self::Bt601 => ffi::GST_VIDEO_TRANSFER_BT601,
4302            Self::__Unknown(value) => value,
4303        }
4304    }
4305}
4306
4307#[doc(hidden)]
4308impl FromGlib<ffi::GstVideoTransferFunction> for VideoTransferFunction {
4309    unsafe fn from_glib(value: ffi::GstVideoTransferFunction) -> Self {
4310        skip_assert_initialized!();
4311
4312        match value {
4313            ffi::GST_VIDEO_TRANSFER_UNKNOWN => Self::Unknown,
4314            ffi::GST_VIDEO_TRANSFER_GAMMA10 => Self::Gamma10,
4315            ffi::GST_VIDEO_TRANSFER_GAMMA18 => Self::Gamma18,
4316            ffi::GST_VIDEO_TRANSFER_GAMMA20 => Self::Gamma20,
4317            ffi::GST_VIDEO_TRANSFER_GAMMA22 => Self::Gamma22,
4318            ffi::GST_VIDEO_TRANSFER_BT709 => Self::Bt709,
4319            ffi::GST_VIDEO_TRANSFER_SMPTE240M => Self::Smpte240m,
4320            ffi::GST_VIDEO_TRANSFER_SRGB => Self::Srgb,
4321            ffi::GST_VIDEO_TRANSFER_GAMMA28 => Self::Gamma28,
4322            ffi::GST_VIDEO_TRANSFER_LOG100 => Self::Log100,
4323            ffi::GST_VIDEO_TRANSFER_LOG316 => Self::Log316,
4324            ffi::GST_VIDEO_TRANSFER_BT2020_12 => Self::Bt202012,
4325            ffi::GST_VIDEO_TRANSFER_ADOBERGB => Self::Adobergb,
4326            #[cfg(feature = "v1_18")]
4327            ffi::GST_VIDEO_TRANSFER_BT2020_10 => Self::Bt202010,
4328            #[cfg(feature = "v1_18")]
4329            ffi::GST_VIDEO_TRANSFER_SMPTE2084 => Self::Smpte2084,
4330            #[cfg(feature = "v1_18")]
4331            ffi::GST_VIDEO_TRANSFER_ARIB_STD_B67 => Self::AribStdB67,
4332            #[cfg(feature = "v1_18")]
4333            ffi::GST_VIDEO_TRANSFER_BT601 => Self::Bt601,
4334            value => Self::__Unknown(value),
4335        }
4336    }
4337}
4338
4339impl StaticType for VideoTransferFunction {
4340    #[inline]
4341    #[doc(alias = "gst_video_transfer_function_get_type")]
4342    fn static_type() -> glib::Type {
4343        unsafe { from_glib(ffi::gst_video_transfer_function_get_type()) }
4344    }
4345}
4346
4347impl glib::HasParamSpec for VideoTransferFunction {
4348    type ParamSpec = glib::ParamSpecEnum;
4349    type SetValue = Self;
4350    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4351
4352    fn param_spec_builder() -> Self::BuilderFn {
4353        Self::ParamSpec::builder_with_default
4354    }
4355}
4356
4357impl glib::value::ValueType for VideoTransferFunction {
4358    type Type = Self;
4359}
4360
4361unsafe impl<'a> glib::value::FromValue<'a> for VideoTransferFunction {
4362    type Checker = glib::value::GenericValueTypeChecker<Self>;
4363
4364    #[inline]
4365    unsafe fn from_value(value: &'a glib::Value) -> Self {
4366        skip_assert_initialized!();
4367        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
4368    }
4369}
4370
4371impl ToValue for VideoTransferFunction {
4372    #[inline]
4373    fn to_value(&self) -> glib::Value {
4374        let mut value = glib::Value::for_value_type::<Self>();
4375        unsafe {
4376            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4377        }
4378        value
4379    }
4380
4381    #[inline]
4382    fn value_type(&self) -> glib::Type {
4383        Self::static_type()
4384    }
4385}
4386
4387impl From<VideoTransferFunction> for glib::Value {
4388    #[inline]
4389    fn from(v: VideoTransferFunction) -> Self {
4390        skip_assert_initialized!();
4391        ToValue::to_value(&v)
4392    }
4393}