Skip to main content

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::{GStr, prelude::*, translate::*};
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        unsafe { 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        unsafe { 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        unsafe { 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        unsafe { 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        unsafe { 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        unsafe { 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        unsafe { 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        unsafe { 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        unsafe { 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        unsafe { 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        unsafe { 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        unsafe { 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        unsafe { 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        unsafe { 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        unsafe { 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        unsafe { 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        unsafe { 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    #[cfg(feature = "v1_28")]
2595    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
2596    #[doc(alias = "GST_VIDEO_FORMAT_NV16_10LE40")]
2597    Nv1610le40,
2598    #[cfg(feature = "v1_28")]
2599    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
2600    #[doc(alias = "GST_VIDEO_FORMAT_BGR10x2_LE")]
2601    Bgr10x2Le,
2602    #[cfg(feature = "v1_28")]
2603    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
2604    #[doc(alias = "GST_VIDEO_FORMAT_RGB10x2_LE")]
2605    Rgb10x2Le,
2606    #[cfg(feature = "v1_30")]
2607    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
2608    #[doc(alias = "GST_VIDEO_FORMAT_AHARDWARE_BUFFER")]
2609    AhardwareBuffer,
2610    #[cfg(feature = "v1_30")]
2611    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
2612    #[doc(alias = "GST_VIDEO_FORMAT_RGBA_F16LE")]
2613    RgbaF16le,
2614    #[cfg(feature = "v1_30")]
2615    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
2616    #[doc(alias = "GST_VIDEO_FORMAT_RGBA_F16BE")]
2617    RgbaF16be,
2618    #[cfg(feature = "v1_30")]
2619    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
2620    #[doc(alias = "GST_VIDEO_FORMAT_RGBA_F32LE")]
2621    RgbaF32le,
2622    #[cfg(feature = "v1_30")]
2623    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
2624    #[doc(alias = "GST_VIDEO_FORMAT_RGBA_F32BE")]
2625    RgbaF32be,
2626    #[cfg(feature = "v1_30")]
2627    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
2628    #[doc(alias = "GST_VIDEO_FORMAT_ARGB_F32")]
2629    ArgbF32,
2630    #[cfg(feature = "v1_30")]
2631    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
2632    #[doc(alias = "GST_VIDEO_FORMAT_RGBP_F16LE")]
2633    RgbpF16le,
2634    #[cfg(feature = "v1_30")]
2635    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
2636    #[doc(alias = "GST_VIDEO_FORMAT_RGBP_F16BE")]
2637    RgbpF16be,
2638    #[cfg(feature = "v1_30")]
2639    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
2640    #[doc(alias = "GST_VIDEO_FORMAT_RGBP_F32LE")]
2641    RgbpF32le,
2642    #[cfg(feature = "v1_30")]
2643    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
2644    #[doc(alias = "GST_VIDEO_FORMAT_RGBP_F32BE")]
2645    RgbpF32be,
2646    #[cfg(feature = "v1_30")]
2647    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
2648    #[doc(alias = "GST_VIDEO_FORMAT_RGB_F16LE")]
2649    RgbF16le,
2650    #[cfg(feature = "v1_30")]
2651    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
2652    #[doc(alias = "GST_VIDEO_FORMAT_RGB_F16BE")]
2653    RgbF16be,
2654    #[cfg(feature = "v1_30")]
2655    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
2656    #[doc(alias = "GST_VIDEO_FORMAT_RGB_F32LE")]
2657    RgbF32le,
2658    #[cfg(feature = "v1_30")]
2659    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
2660    #[doc(alias = "GST_VIDEO_FORMAT_RGB_F32BE")]
2661    RgbF32be,
2662    #[cfg(feature = "v1_30")]
2663    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
2664    #[doc(alias = "GST_VIDEO_FORMAT_AYUV_F32")]
2665    AyuvF32,
2666    #[cfg(feature = "v1_30")]
2667    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
2668    #[doc(alias = "GST_VIDEO_FORMAT_GRAY_F16LE")]
2669    GrayF16le,
2670    #[cfg(feature = "v1_30")]
2671    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
2672    #[doc(alias = "GST_VIDEO_FORMAT_GRAY_F16BE")]
2673    GrayF16be,
2674    #[cfg(feature = "v1_30")]
2675    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
2676    #[doc(alias = "GST_VIDEO_FORMAT_GRAY_F32LE")]
2677    GrayF32le,
2678    #[cfg(feature = "v1_30")]
2679    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
2680    #[doc(alias = "GST_VIDEO_FORMAT_GRAY_F32BE")]
2681    GrayF32be,
2682    #[doc(hidden)]
2683    __Unknown(i32),
2684}
2685
2686impl VideoFormat {
2687    #[doc(alias = "gst_video_format_from_fourcc")]
2688    pub fn from_fourcc(fourcc: u32) -> VideoFormat {
2689        assert_initialized_main_thread!();
2690        unsafe { from_glib(ffi::gst_video_format_from_fourcc(fourcc)) }
2691    }
2692
2693    #[doc(alias = "gst_video_format_from_string")]
2694    pub fn from_string(format: &str) -> VideoFormat {
2695        assert_initialized_main_thread!();
2696        unsafe { from_glib(ffi::gst_video_format_from_string(format.to_glib_none().0)) }
2697    }
2698
2699    //#[doc(alias = "gst_video_format_get_palette")]
2700    //#[doc(alias = "get_palette")]
2701    //pub fn palette(self) -> (/*Unimplemented*/Option<Basic: Pointer>, usize) {
2702    //    unsafe { TODO: call ffi:gst_video_format_get_palette() }
2703    //}
2704
2705    #[doc(alias = "gst_video_format_to_fourcc")]
2706    pub fn to_fourcc(self) -> u32 {
2707        assert_initialized_main_thread!();
2708        unsafe { ffi::gst_video_format_to_fourcc(self.into_glib()) }
2709    }
2710}
2711
2712impl std::fmt::Display for VideoFormat {
2713    #[inline]
2714    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
2715        f.write_str(&self.to_str())
2716    }
2717}
2718
2719#[doc(hidden)]
2720impl IntoGlib for VideoFormat {
2721    type GlibType = ffi::GstVideoFormat;
2722
2723    fn into_glib(self) -> ffi::GstVideoFormat {
2724        match self {
2725            Self::Unknown => ffi::GST_VIDEO_FORMAT_UNKNOWN,
2726            Self::Encoded => ffi::GST_VIDEO_FORMAT_ENCODED,
2727            Self::I420 => ffi::GST_VIDEO_FORMAT_I420,
2728            Self::Yv12 => ffi::GST_VIDEO_FORMAT_YV12,
2729            Self::Yuy2 => ffi::GST_VIDEO_FORMAT_YUY2,
2730            Self::Uyvy => ffi::GST_VIDEO_FORMAT_UYVY,
2731            Self::Ayuv => ffi::GST_VIDEO_FORMAT_AYUV,
2732            Self::Rgbx => ffi::GST_VIDEO_FORMAT_RGBx,
2733            Self::Bgrx => ffi::GST_VIDEO_FORMAT_BGRx,
2734            Self::Xrgb => ffi::GST_VIDEO_FORMAT_xRGB,
2735            Self::Xbgr => ffi::GST_VIDEO_FORMAT_xBGR,
2736            Self::Rgba => ffi::GST_VIDEO_FORMAT_RGBA,
2737            Self::Bgra => ffi::GST_VIDEO_FORMAT_BGRA,
2738            Self::Argb => ffi::GST_VIDEO_FORMAT_ARGB,
2739            Self::Abgr => ffi::GST_VIDEO_FORMAT_ABGR,
2740            Self::Rgb => ffi::GST_VIDEO_FORMAT_RGB,
2741            Self::Bgr => ffi::GST_VIDEO_FORMAT_BGR,
2742            Self::Y41b => ffi::GST_VIDEO_FORMAT_Y41B,
2743            Self::Y42b => ffi::GST_VIDEO_FORMAT_Y42B,
2744            Self::Yvyu => ffi::GST_VIDEO_FORMAT_YVYU,
2745            Self::Y444 => ffi::GST_VIDEO_FORMAT_Y444,
2746            Self::V210 => ffi::GST_VIDEO_FORMAT_v210,
2747            Self::V216 => ffi::GST_VIDEO_FORMAT_v216,
2748            Self::Nv12 => ffi::GST_VIDEO_FORMAT_NV12,
2749            Self::Nv21 => ffi::GST_VIDEO_FORMAT_NV21,
2750            Self::Gray8 => ffi::GST_VIDEO_FORMAT_GRAY8,
2751            Self::Gray16Be => ffi::GST_VIDEO_FORMAT_GRAY16_BE,
2752            Self::Gray16Le => ffi::GST_VIDEO_FORMAT_GRAY16_LE,
2753            Self::V308 => ffi::GST_VIDEO_FORMAT_v308,
2754            Self::Rgb16 => ffi::GST_VIDEO_FORMAT_RGB16,
2755            Self::Bgr16 => ffi::GST_VIDEO_FORMAT_BGR16,
2756            Self::Rgb15 => ffi::GST_VIDEO_FORMAT_RGB15,
2757            Self::Bgr15 => ffi::GST_VIDEO_FORMAT_BGR15,
2758            Self::Uyvp => ffi::GST_VIDEO_FORMAT_UYVP,
2759            Self::A420 => ffi::GST_VIDEO_FORMAT_A420,
2760            Self::Rgb8p => ffi::GST_VIDEO_FORMAT_RGB8P,
2761            Self::Yuv9 => ffi::GST_VIDEO_FORMAT_YUV9,
2762            Self::Yvu9 => ffi::GST_VIDEO_FORMAT_YVU9,
2763            Self::Iyu1 => ffi::GST_VIDEO_FORMAT_IYU1,
2764            Self::Argb64 => ffi::GST_VIDEO_FORMAT_ARGB64,
2765            Self::Ayuv64 => ffi::GST_VIDEO_FORMAT_AYUV64,
2766            Self::R210 => ffi::GST_VIDEO_FORMAT_r210,
2767            Self::I42010be => ffi::GST_VIDEO_FORMAT_I420_10BE,
2768            Self::I42010le => ffi::GST_VIDEO_FORMAT_I420_10LE,
2769            Self::I42210be => ffi::GST_VIDEO_FORMAT_I422_10BE,
2770            Self::I42210le => ffi::GST_VIDEO_FORMAT_I422_10LE,
2771            Self::Y44410be => ffi::GST_VIDEO_FORMAT_Y444_10BE,
2772            Self::Y44410le => ffi::GST_VIDEO_FORMAT_Y444_10LE,
2773            Self::Gbr => ffi::GST_VIDEO_FORMAT_GBR,
2774            Self::Gbr10be => ffi::GST_VIDEO_FORMAT_GBR_10BE,
2775            Self::Gbr10le => ffi::GST_VIDEO_FORMAT_GBR_10LE,
2776            Self::Nv16 => ffi::GST_VIDEO_FORMAT_NV16,
2777            Self::Nv24 => ffi::GST_VIDEO_FORMAT_NV24,
2778            Self::Nv1264z32 => ffi::GST_VIDEO_FORMAT_NV12_64Z32,
2779            Self::A42010be => ffi::GST_VIDEO_FORMAT_A420_10BE,
2780            Self::A42010le => ffi::GST_VIDEO_FORMAT_A420_10LE,
2781            Self::A42210be => ffi::GST_VIDEO_FORMAT_A422_10BE,
2782            Self::A42210le => ffi::GST_VIDEO_FORMAT_A422_10LE,
2783            Self::A44410be => ffi::GST_VIDEO_FORMAT_A444_10BE,
2784            Self::A44410le => ffi::GST_VIDEO_FORMAT_A444_10LE,
2785            Self::Nv61 => ffi::GST_VIDEO_FORMAT_NV61,
2786            Self::P01010be => ffi::GST_VIDEO_FORMAT_P010_10BE,
2787            Self::P01010le => ffi::GST_VIDEO_FORMAT_P010_10LE,
2788            Self::Iyu2 => ffi::GST_VIDEO_FORMAT_IYU2,
2789            Self::Vyuy => ffi::GST_VIDEO_FORMAT_VYUY,
2790            Self::Gbra => ffi::GST_VIDEO_FORMAT_GBRA,
2791            Self::Gbra10be => ffi::GST_VIDEO_FORMAT_GBRA_10BE,
2792            Self::Gbra10le => ffi::GST_VIDEO_FORMAT_GBRA_10LE,
2793            Self::Gbr12be => ffi::GST_VIDEO_FORMAT_GBR_12BE,
2794            Self::Gbr12le => ffi::GST_VIDEO_FORMAT_GBR_12LE,
2795            Self::Gbra12be => ffi::GST_VIDEO_FORMAT_GBRA_12BE,
2796            Self::Gbra12le => ffi::GST_VIDEO_FORMAT_GBRA_12LE,
2797            Self::I42012be => ffi::GST_VIDEO_FORMAT_I420_12BE,
2798            Self::I42012le => ffi::GST_VIDEO_FORMAT_I420_12LE,
2799            Self::I42212be => ffi::GST_VIDEO_FORMAT_I422_12BE,
2800            Self::I42212le => ffi::GST_VIDEO_FORMAT_I422_12LE,
2801            Self::Y44412be => ffi::GST_VIDEO_FORMAT_Y444_12BE,
2802            Self::Y44412le => ffi::GST_VIDEO_FORMAT_Y444_12LE,
2803            Self::Gray10Le32 => ffi::GST_VIDEO_FORMAT_GRAY10_LE32,
2804            Self::Nv1210le32 => ffi::GST_VIDEO_FORMAT_NV12_10LE32,
2805            Self::Nv1610le32 => ffi::GST_VIDEO_FORMAT_NV16_10LE32,
2806            #[cfg(feature = "v1_16")]
2807            Self::Nv1210le40 => ffi::GST_VIDEO_FORMAT_NV12_10LE40,
2808            #[cfg(feature = "v1_16")]
2809            Self::Y210 => ffi::GST_VIDEO_FORMAT_Y210,
2810            #[cfg(feature = "v1_16")]
2811            Self::Y410 => ffi::GST_VIDEO_FORMAT_Y410,
2812            #[cfg(feature = "v1_16")]
2813            Self::Vuya => ffi::GST_VIDEO_FORMAT_VUYA,
2814            #[cfg(feature = "v1_16")]
2815            Self::Bgr10a2Le => ffi::GST_VIDEO_FORMAT_BGR10A2_LE,
2816            #[cfg(feature = "v1_18")]
2817            Self::Rgb10a2Le => ffi::GST_VIDEO_FORMAT_RGB10A2_LE,
2818            #[cfg(feature = "v1_18")]
2819            Self::Y44416be => ffi::GST_VIDEO_FORMAT_Y444_16BE,
2820            #[cfg(feature = "v1_18")]
2821            Self::Y44416le => ffi::GST_VIDEO_FORMAT_Y444_16LE,
2822            #[cfg(feature = "v1_18")]
2823            Self::P016Be => ffi::GST_VIDEO_FORMAT_P016_BE,
2824            #[cfg(feature = "v1_18")]
2825            Self::P016Le => ffi::GST_VIDEO_FORMAT_P016_LE,
2826            #[cfg(feature = "v1_18")]
2827            Self::P012Be => ffi::GST_VIDEO_FORMAT_P012_BE,
2828            #[cfg(feature = "v1_18")]
2829            Self::P012Le => ffi::GST_VIDEO_FORMAT_P012_LE,
2830            #[cfg(feature = "v1_18")]
2831            Self::Y212Be => ffi::GST_VIDEO_FORMAT_Y212_BE,
2832            #[cfg(feature = "v1_18")]
2833            Self::Y212Le => ffi::GST_VIDEO_FORMAT_Y212_LE,
2834            #[cfg(feature = "v1_18")]
2835            Self::Y412Be => ffi::GST_VIDEO_FORMAT_Y412_BE,
2836            #[cfg(feature = "v1_18")]
2837            Self::Y412Le => ffi::GST_VIDEO_FORMAT_Y412_LE,
2838            #[cfg(feature = "v1_18")]
2839            Self::Nv124l4 => ffi::GST_VIDEO_FORMAT_NV12_4L4,
2840            #[cfg(feature = "v1_18")]
2841            Self::Nv1232l32 => ffi::GST_VIDEO_FORMAT_NV12_32L32,
2842            #[cfg(feature = "v1_20")]
2843            Self::Rgbp => ffi::GST_VIDEO_FORMAT_RGBP,
2844            #[cfg(feature = "v1_20")]
2845            Self::Bgrp => ffi::GST_VIDEO_FORMAT_BGRP,
2846            #[cfg(feature = "v1_20")]
2847            Self::Av12 => ffi::GST_VIDEO_FORMAT_AV12,
2848            #[cfg(feature = "v1_20")]
2849            Self::Argb64Le => ffi::GST_VIDEO_FORMAT_ARGB64_LE,
2850            #[cfg(feature = "v1_20")]
2851            Self::Argb64Be => ffi::GST_VIDEO_FORMAT_ARGB64_BE,
2852            #[cfg(feature = "v1_20")]
2853            Self::Rgba64Le => ffi::GST_VIDEO_FORMAT_RGBA64_LE,
2854            #[cfg(feature = "v1_20")]
2855            Self::Rgba64Be => ffi::GST_VIDEO_FORMAT_RGBA64_BE,
2856            #[cfg(feature = "v1_20")]
2857            Self::Bgra64Le => ffi::GST_VIDEO_FORMAT_BGRA64_LE,
2858            #[cfg(feature = "v1_20")]
2859            Self::Bgra64Be => ffi::GST_VIDEO_FORMAT_BGRA64_BE,
2860            #[cfg(feature = "v1_20")]
2861            Self::Abgr64Le => ffi::GST_VIDEO_FORMAT_ABGR64_LE,
2862            #[cfg(feature = "v1_20")]
2863            Self::Abgr64Be => ffi::GST_VIDEO_FORMAT_ABGR64_BE,
2864            #[cfg(feature = "v1_22")]
2865            Self::Nv1216l32s => ffi::GST_VIDEO_FORMAT_NV12_16L32S,
2866            #[cfg(feature = "v1_22")]
2867            Self::Nv128l128 => ffi::GST_VIDEO_FORMAT_NV12_8L128,
2868            #[cfg(feature = "v1_22")]
2869            Self::Nv1210be8l128 => ffi::GST_VIDEO_FORMAT_NV12_10BE_8L128,
2870            #[cfg(feature = "v1_24")]
2871            Self::Nv1210le404l4 => ffi::GST_VIDEO_FORMAT_NV12_10LE40_4L4,
2872            #[cfg(feature = "v1_24")]
2873            Self::DmaDrm => ffi::GST_VIDEO_FORMAT_DMA_DRM,
2874            #[cfg(feature = "v1_24")]
2875            Self::Mt2110t => ffi::GST_VIDEO_FORMAT_MT2110T,
2876            #[cfg(feature = "v1_24")]
2877            Self::Mt2110r => ffi::GST_VIDEO_FORMAT_MT2110R,
2878            #[cfg(feature = "v1_24")]
2879            Self::A422 => ffi::GST_VIDEO_FORMAT_A422,
2880            #[cfg(feature = "v1_24")]
2881            Self::A444 => ffi::GST_VIDEO_FORMAT_A444,
2882            #[cfg(feature = "v1_24")]
2883            Self::A44412le => ffi::GST_VIDEO_FORMAT_A444_12LE,
2884            #[cfg(feature = "v1_24")]
2885            Self::A44412be => ffi::GST_VIDEO_FORMAT_A444_12BE,
2886            #[cfg(feature = "v1_24")]
2887            Self::A42212le => ffi::GST_VIDEO_FORMAT_A422_12LE,
2888            #[cfg(feature = "v1_24")]
2889            Self::A42212be => ffi::GST_VIDEO_FORMAT_A422_12BE,
2890            #[cfg(feature = "v1_24")]
2891            Self::A42012le => ffi::GST_VIDEO_FORMAT_A420_12LE,
2892            #[cfg(feature = "v1_24")]
2893            Self::A42012be => ffi::GST_VIDEO_FORMAT_A420_12BE,
2894            #[cfg(feature = "v1_24")]
2895            Self::A44416le => ffi::GST_VIDEO_FORMAT_A444_16LE,
2896            #[cfg(feature = "v1_24")]
2897            Self::A44416be => ffi::GST_VIDEO_FORMAT_A444_16BE,
2898            #[cfg(feature = "v1_24")]
2899            Self::A42216le => ffi::GST_VIDEO_FORMAT_A422_16LE,
2900            #[cfg(feature = "v1_24")]
2901            Self::A42216be => ffi::GST_VIDEO_FORMAT_A422_16BE,
2902            #[cfg(feature = "v1_24")]
2903            Self::A42016le => ffi::GST_VIDEO_FORMAT_A420_16LE,
2904            #[cfg(feature = "v1_24")]
2905            Self::A42016be => ffi::GST_VIDEO_FORMAT_A420_16BE,
2906            #[cfg(feature = "v1_24")]
2907            Self::Gbr16le => ffi::GST_VIDEO_FORMAT_GBR_16LE,
2908            #[cfg(feature = "v1_24")]
2909            Self::Gbr16be => ffi::GST_VIDEO_FORMAT_GBR_16BE,
2910            #[cfg(feature = "v1_24")]
2911            Self::Rbga => ffi::GST_VIDEO_FORMAT_RBGA,
2912            #[cfg(feature = "v1_26")]
2913            Self::Y216Le => ffi::GST_VIDEO_FORMAT_Y216_LE,
2914            #[cfg(feature = "v1_26")]
2915            Self::Y216Be => ffi::GST_VIDEO_FORMAT_Y216_BE,
2916            #[cfg(feature = "v1_26")]
2917            Self::Y416Le => ffi::GST_VIDEO_FORMAT_Y416_LE,
2918            #[cfg(feature = "v1_26")]
2919            Self::Y416Be => ffi::GST_VIDEO_FORMAT_Y416_BE,
2920            #[cfg(feature = "v1_26")]
2921            Self::Gray10Le16 => ffi::GST_VIDEO_FORMAT_GRAY10_LE16,
2922            #[cfg(feature = "v1_28")]
2923            Self::Nv1610le40 => ffi::GST_VIDEO_FORMAT_NV16_10LE40,
2924            #[cfg(feature = "v1_28")]
2925            Self::Bgr10x2Le => ffi::GST_VIDEO_FORMAT_BGR10x2_LE,
2926            #[cfg(feature = "v1_28")]
2927            Self::Rgb10x2Le => ffi::GST_VIDEO_FORMAT_RGB10x2_LE,
2928            #[cfg(feature = "v1_30")]
2929            Self::AhardwareBuffer => ffi::GST_VIDEO_FORMAT_AHARDWARE_BUFFER,
2930            #[cfg(feature = "v1_30")]
2931            Self::RgbaF16le => ffi::GST_VIDEO_FORMAT_RGBA_F16LE,
2932            #[cfg(feature = "v1_30")]
2933            Self::RgbaF16be => ffi::GST_VIDEO_FORMAT_RGBA_F16BE,
2934            #[cfg(feature = "v1_30")]
2935            Self::RgbaF32le => ffi::GST_VIDEO_FORMAT_RGBA_F32LE,
2936            #[cfg(feature = "v1_30")]
2937            Self::RgbaF32be => ffi::GST_VIDEO_FORMAT_RGBA_F32BE,
2938            #[cfg(feature = "v1_30")]
2939            Self::ArgbF32 => ffi::GST_VIDEO_FORMAT_ARGB_F32,
2940            #[cfg(feature = "v1_30")]
2941            Self::RgbpF16le => ffi::GST_VIDEO_FORMAT_RGBP_F16LE,
2942            #[cfg(feature = "v1_30")]
2943            Self::RgbpF16be => ffi::GST_VIDEO_FORMAT_RGBP_F16BE,
2944            #[cfg(feature = "v1_30")]
2945            Self::RgbpF32le => ffi::GST_VIDEO_FORMAT_RGBP_F32LE,
2946            #[cfg(feature = "v1_30")]
2947            Self::RgbpF32be => ffi::GST_VIDEO_FORMAT_RGBP_F32BE,
2948            #[cfg(feature = "v1_30")]
2949            Self::RgbF16le => ffi::GST_VIDEO_FORMAT_RGB_F16LE,
2950            #[cfg(feature = "v1_30")]
2951            Self::RgbF16be => ffi::GST_VIDEO_FORMAT_RGB_F16BE,
2952            #[cfg(feature = "v1_30")]
2953            Self::RgbF32le => ffi::GST_VIDEO_FORMAT_RGB_F32LE,
2954            #[cfg(feature = "v1_30")]
2955            Self::RgbF32be => ffi::GST_VIDEO_FORMAT_RGB_F32BE,
2956            #[cfg(feature = "v1_30")]
2957            Self::AyuvF32 => ffi::GST_VIDEO_FORMAT_AYUV_F32,
2958            #[cfg(feature = "v1_30")]
2959            Self::GrayF16le => ffi::GST_VIDEO_FORMAT_GRAY_F16LE,
2960            #[cfg(feature = "v1_30")]
2961            Self::GrayF16be => ffi::GST_VIDEO_FORMAT_GRAY_F16BE,
2962            #[cfg(feature = "v1_30")]
2963            Self::GrayF32le => ffi::GST_VIDEO_FORMAT_GRAY_F32LE,
2964            #[cfg(feature = "v1_30")]
2965            Self::GrayF32be => ffi::GST_VIDEO_FORMAT_GRAY_F32BE,
2966            Self::__Unknown(value) => value,
2967        }
2968    }
2969}
2970
2971#[doc(hidden)]
2972impl FromGlib<ffi::GstVideoFormat> for VideoFormat {
2973    unsafe fn from_glib(value: ffi::GstVideoFormat) -> Self {
2974        skip_assert_initialized!();
2975
2976        match value {
2977            ffi::GST_VIDEO_FORMAT_UNKNOWN => Self::Unknown,
2978            ffi::GST_VIDEO_FORMAT_ENCODED => Self::Encoded,
2979            ffi::GST_VIDEO_FORMAT_I420 => Self::I420,
2980            ffi::GST_VIDEO_FORMAT_YV12 => Self::Yv12,
2981            ffi::GST_VIDEO_FORMAT_YUY2 => Self::Yuy2,
2982            ffi::GST_VIDEO_FORMAT_UYVY => Self::Uyvy,
2983            ffi::GST_VIDEO_FORMAT_AYUV => Self::Ayuv,
2984            ffi::GST_VIDEO_FORMAT_RGBx => Self::Rgbx,
2985            ffi::GST_VIDEO_FORMAT_BGRx => Self::Bgrx,
2986            ffi::GST_VIDEO_FORMAT_xRGB => Self::Xrgb,
2987            ffi::GST_VIDEO_FORMAT_xBGR => Self::Xbgr,
2988            ffi::GST_VIDEO_FORMAT_RGBA => Self::Rgba,
2989            ffi::GST_VIDEO_FORMAT_BGRA => Self::Bgra,
2990            ffi::GST_VIDEO_FORMAT_ARGB => Self::Argb,
2991            ffi::GST_VIDEO_FORMAT_ABGR => Self::Abgr,
2992            ffi::GST_VIDEO_FORMAT_RGB => Self::Rgb,
2993            ffi::GST_VIDEO_FORMAT_BGR => Self::Bgr,
2994            ffi::GST_VIDEO_FORMAT_Y41B => Self::Y41b,
2995            ffi::GST_VIDEO_FORMAT_Y42B => Self::Y42b,
2996            ffi::GST_VIDEO_FORMAT_YVYU => Self::Yvyu,
2997            ffi::GST_VIDEO_FORMAT_Y444 => Self::Y444,
2998            ffi::GST_VIDEO_FORMAT_v210 => Self::V210,
2999            ffi::GST_VIDEO_FORMAT_v216 => Self::V216,
3000            ffi::GST_VIDEO_FORMAT_NV12 => Self::Nv12,
3001            ffi::GST_VIDEO_FORMAT_NV21 => Self::Nv21,
3002            ffi::GST_VIDEO_FORMAT_GRAY8 => Self::Gray8,
3003            ffi::GST_VIDEO_FORMAT_GRAY16_BE => Self::Gray16Be,
3004            ffi::GST_VIDEO_FORMAT_GRAY16_LE => Self::Gray16Le,
3005            ffi::GST_VIDEO_FORMAT_v308 => Self::V308,
3006            ffi::GST_VIDEO_FORMAT_RGB16 => Self::Rgb16,
3007            ffi::GST_VIDEO_FORMAT_BGR16 => Self::Bgr16,
3008            ffi::GST_VIDEO_FORMAT_RGB15 => Self::Rgb15,
3009            ffi::GST_VIDEO_FORMAT_BGR15 => Self::Bgr15,
3010            ffi::GST_VIDEO_FORMAT_UYVP => Self::Uyvp,
3011            ffi::GST_VIDEO_FORMAT_A420 => Self::A420,
3012            ffi::GST_VIDEO_FORMAT_RGB8P => Self::Rgb8p,
3013            ffi::GST_VIDEO_FORMAT_YUV9 => Self::Yuv9,
3014            ffi::GST_VIDEO_FORMAT_YVU9 => Self::Yvu9,
3015            ffi::GST_VIDEO_FORMAT_IYU1 => Self::Iyu1,
3016            ffi::GST_VIDEO_FORMAT_ARGB64 => Self::Argb64,
3017            ffi::GST_VIDEO_FORMAT_AYUV64 => Self::Ayuv64,
3018            ffi::GST_VIDEO_FORMAT_r210 => Self::R210,
3019            ffi::GST_VIDEO_FORMAT_I420_10BE => Self::I42010be,
3020            ffi::GST_VIDEO_FORMAT_I420_10LE => Self::I42010le,
3021            ffi::GST_VIDEO_FORMAT_I422_10BE => Self::I42210be,
3022            ffi::GST_VIDEO_FORMAT_I422_10LE => Self::I42210le,
3023            ffi::GST_VIDEO_FORMAT_Y444_10BE => Self::Y44410be,
3024            ffi::GST_VIDEO_FORMAT_Y444_10LE => Self::Y44410le,
3025            ffi::GST_VIDEO_FORMAT_GBR => Self::Gbr,
3026            ffi::GST_VIDEO_FORMAT_GBR_10BE => Self::Gbr10be,
3027            ffi::GST_VIDEO_FORMAT_GBR_10LE => Self::Gbr10le,
3028            ffi::GST_VIDEO_FORMAT_NV16 => Self::Nv16,
3029            ffi::GST_VIDEO_FORMAT_NV24 => Self::Nv24,
3030            ffi::GST_VIDEO_FORMAT_NV12_64Z32 => Self::Nv1264z32,
3031            ffi::GST_VIDEO_FORMAT_A420_10BE => Self::A42010be,
3032            ffi::GST_VIDEO_FORMAT_A420_10LE => Self::A42010le,
3033            ffi::GST_VIDEO_FORMAT_A422_10BE => Self::A42210be,
3034            ffi::GST_VIDEO_FORMAT_A422_10LE => Self::A42210le,
3035            ffi::GST_VIDEO_FORMAT_A444_10BE => Self::A44410be,
3036            ffi::GST_VIDEO_FORMAT_A444_10LE => Self::A44410le,
3037            ffi::GST_VIDEO_FORMAT_NV61 => Self::Nv61,
3038            ffi::GST_VIDEO_FORMAT_P010_10BE => Self::P01010be,
3039            ffi::GST_VIDEO_FORMAT_P010_10LE => Self::P01010le,
3040            ffi::GST_VIDEO_FORMAT_IYU2 => Self::Iyu2,
3041            ffi::GST_VIDEO_FORMAT_VYUY => Self::Vyuy,
3042            ffi::GST_VIDEO_FORMAT_GBRA => Self::Gbra,
3043            ffi::GST_VIDEO_FORMAT_GBRA_10BE => Self::Gbra10be,
3044            ffi::GST_VIDEO_FORMAT_GBRA_10LE => Self::Gbra10le,
3045            ffi::GST_VIDEO_FORMAT_GBR_12BE => Self::Gbr12be,
3046            ffi::GST_VIDEO_FORMAT_GBR_12LE => Self::Gbr12le,
3047            ffi::GST_VIDEO_FORMAT_GBRA_12BE => Self::Gbra12be,
3048            ffi::GST_VIDEO_FORMAT_GBRA_12LE => Self::Gbra12le,
3049            ffi::GST_VIDEO_FORMAT_I420_12BE => Self::I42012be,
3050            ffi::GST_VIDEO_FORMAT_I420_12LE => Self::I42012le,
3051            ffi::GST_VIDEO_FORMAT_I422_12BE => Self::I42212be,
3052            ffi::GST_VIDEO_FORMAT_I422_12LE => Self::I42212le,
3053            ffi::GST_VIDEO_FORMAT_Y444_12BE => Self::Y44412be,
3054            ffi::GST_VIDEO_FORMAT_Y444_12LE => Self::Y44412le,
3055            ffi::GST_VIDEO_FORMAT_GRAY10_LE32 => Self::Gray10Le32,
3056            ffi::GST_VIDEO_FORMAT_NV12_10LE32 => Self::Nv1210le32,
3057            ffi::GST_VIDEO_FORMAT_NV16_10LE32 => Self::Nv1610le32,
3058            #[cfg(feature = "v1_16")]
3059            ffi::GST_VIDEO_FORMAT_NV12_10LE40 => Self::Nv1210le40,
3060            #[cfg(feature = "v1_16")]
3061            ffi::GST_VIDEO_FORMAT_Y210 => Self::Y210,
3062            #[cfg(feature = "v1_16")]
3063            ffi::GST_VIDEO_FORMAT_Y410 => Self::Y410,
3064            #[cfg(feature = "v1_16")]
3065            ffi::GST_VIDEO_FORMAT_VUYA => Self::Vuya,
3066            #[cfg(feature = "v1_16")]
3067            ffi::GST_VIDEO_FORMAT_BGR10A2_LE => Self::Bgr10a2Le,
3068            #[cfg(feature = "v1_18")]
3069            ffi::GST_VIDEO_FORMAT_RGB10A2_LE => Self::Rgb10a2Le,
3070            #[cfg(feature = "v1_18")]
3071            ffi::GST_VIDEO_FORMAT_Y444_16BE => Self::Y44416be,
3072            #[cfg(feature = "v1_18")]
3073            ffi::GST_VIDEO_FORMAT_Y444_16LE => Self::Y44416le,
3074            #[cfg(feature = "v1_18")]
3075            ffi::GST_VIDEO_FORMAT_P016_BE => Self::P016Be,
3076            #[cfg(feature = "v1_18")]
3077            ffi::GST_VIDEO_FORMAT_P016_LE => Self::P016Le,
3078            #[cfg(feature = "v1_18")]
3079            ffi::GST_VIDEO_FORMAT_P012_BE => Self::P012Be,
3080            #[cfg(feature = "v1_18")]
3081            ffi::GST_VIDEO_FORMAT_P012_LE => Self::P012Le,
3082            #[cfg(feature = "v1_18")]
3083            ffi::GST_VIDEO_FORMAT_Y212_BE => Self::Y212Be,
3084            #[cfg(feature = "v1_18")]
3085            ffi::GST_VIDEO_FORMAT_Y212_LE => Self::Y212Le,
3086            #[cfg(feature = "v1_18")]
3087            ffi::GST_VIDEO_FORMAT_Y412_BE => Self::Y412Be,
3088            #[cfg(feature = "v1_18")]
3089            ffi::GST_VIDEO_FORMAT_Y412_LE => Self::Y412Le,
3090            #[cfg(feature = "v1_18")]
3091            ffi::GST_VIDEO_FORMAT_NV12_4L4 => Self::Nv124l4,
3092            #[cfg(feature = "v1_18")]
3093            ffi::GST_VIDEO_FORMAT_NV12_32L32 => Self::Nv1232l32,
3094            #[cfg(feature = "v1_20")]
3095            ffi::GST_VIDEO_FORMAT_RGBP => Self::Rgbp,
3096            #[cfg(feature = "v1_20")]
3097            ffi::GST_VIDEO_FORMAT_BGRP => Self::Bgrp,
3098            #[cfg(feature = "v1_20")]
3099            ffi::GST_VIDEO_FORMAT_AV12 => Self::Av12,
3100            #[cfg(feature = "v1_20")]
3101            ffi::GST_VIDEO_FORMAT_ARGB64_LE => Self::Argb64Le,
3102            #[cfg(feature = "v1_20")]
3103            ffi::GST_VIDEO_FORMAT_ARGB64_BE => Self::Argb64Be,
3104            #[cfg(feature = "v1_20")]
3105            ffi::GST_VIDEO_FORMAT_RGBA64_LE => Self::Rgba64Le,
3106            #[cfg(feature = "v1_20")]
3107            ffi::GST_VIDEO_FORMAT_RGBA64_BE => Self::Rgba64Be,
3108            #[cfg(feature = "v1_20")]
3109            ffi::GST_VIDEO_FORMAT_BGRA64_LE => Self::Bgra64Le,
3110            #[cfg(feature = "v1_20")]
3111            ffi::GST_VIDEO_FORMAT_BGRA64_BE => Self::Bgra64Be,
3112            #[cfg(feature = "v1_20")]
3113            ffi::GST_VIDEO_FORMAT_ABGR64_LE => Self::Abgr64Le,
3114            #[cfg(feature = "v1_20")]
3115            ffi::GST_VIDEO_FORMAT_ABGR64_BE => Self::Abgr64Be,
3116            #[cfg(feature = "v1_22")]
3117            ffi::GST_VIDEO_FORMAT_NV12_16L32S => Self::Nv1216l32s,
3118            #[cfg(feature = "v1_22")]
3119            ffi::GST_VIDEO_FORMAT_NV12_8L128 => Self::Nv128l128,
3120            #[cfg(feature = "v1_22")]
3121            ffi::GST_VIDEO_FORMAT_NV12_10BE_8L128 => Self::Nv1210be8l128,
3122            #[cfg(feature = "v1_24")]
3123            ffi::GST_VIDEO_FORMAT_NV12_10LE40_4L4 => Self::Nv1210le404l4,
3124            #[cfg(feature = "v1_24")]
3125            ffi::GST_VIDEO_FORMAT_DMA_DRM => Self::DmaDrm,
3126            #[cfg(feature = "v1_24")]
3127            ffi::GST_VIDEO_FORMAT_MT2110T => Self::Mt2110t,
3128            #[cfg(feature = "v1_24")]
3129            ffi::GST_VIDEO_FORMAT_MT2110R => Self::Mt2110r,
3130            #[cfg(feature = "v1_24")]
3131            ffi::GST_VIDEO_FORMAT_A422 => Self::A422,
3132            #[cfg(feature = "v1_24")]
3133            ffi::GST_VIDEO_FORMAT_A444 => Self::A444,
3134            #[cfg(feature = "v1_24")]
3135            ffi::GST_VIDEO_FORMAT_A444_12LE => Self::A44412le,
3136            #[cfg(feature = "v1_24")]
3137            ffi::GST_VIDEO_FORMAT_A444_12BE => Self::A44412be,
3138            #[cfg(feature = "v1_24")]
3139            ffi::GST_VIDEO_FORMAT_A422_12LE => Self::A42212le,
3140            #[cfg(feature = "v1_24")]
3141            ffi::GST_VIDEO_FORMAT_A422_12BE => Self::A42212be,
3142            #[cfg(feature = "v1_24")]
3143            ffi::GST_VIDEO_FORMAT_A420_12LE => Self::A42012le,
3144            #[cfg(feature = "v1_24")]
3145            ffi::GST_VIDEO_FORMAT_A420_12BE => Self::A42012be,
3146            #[cfg(feature = "v1_24")]
3147            ffi::GST_VIDEO_FORMAT_A444_16LE => Self::A44416le,
3148            #[cfg(feature = "v1_24")]
3149            ffi::GST_VIDEO_FORMAT_A444_16BE => Self::A44416be,
3150            #[cfg(feature = "v1_24")]
3151            ffi::GST_VIDEO_FORMAT_A422_16LE => Self::A42216le,
3152            #[cfg(feature = "v1_24")]
3153            ffi::GST_VIDEO_FORMAT_A422_16BE => Self::A42216be,
3154            #[cfg(feature = "v1_24")]
3155            ffi::GST_VIDEO_FORMAT_A420_16LE => Self::A42016le,
3156            #[cfg(feature = "v1_24")]
3157            ffi::GST_VIDEO_FORMAT_A420_16BE => Self::A42016be,
3158            #[cfg(feature = "v1_24")]
3159            ffi::GST_VIDEO_FORMAT_GBR_16LE => Self::Gbr16le,
3160            #[cfg(feature = "v1_24")]
3161            ffi::GST_VIDEO_FORMAT_GBR_16BE => Self::Gbr16be,
3162            #[cfg(feature = "v1_24")]
3163            ffi::GST_VIDEO_FORMAT_RBGA => Self::Rbga,
3164            #[cfg(feature = "v1_26")]
3165            ffi::GST_VIDEO_FORMAT_Y216_LE => Self::Y216Le,
3166            #[cfg(feature = "v1_26")]
3167            ffi::GST_VIDEO_FORMAT_Y216_BE => Self::Y216Be,
3168            #[cfg(feature = "v1_26")]
3169            ffi::GST_VIDEO_FORMAT_Y416_LE => Self::Y416Le,
3170            #[cfg(feature = "v1_26")]
3171            ffi::GST_VIDEO_FORMAT_Y416_BE => Self::Y416Be,
3172            #[cfg(feature = "v1_26")]
3173            ffi::GST_VIDEO_FORMAT_GRAY10_LE16 => Self::Gray10Le16,
3174            #[cfg(feature = "v1_28")]
3175            ffi::GST_VIDEO_FORMAT_NV16_10LE40 => Self::Nv1610le40,
3176            #[cfg(feature = "v1_28")]
3177            ffi::GST_VIDEO_FORMAT_BGR10x2_LE => Self::Bgr10x2Le,
3178            #[cfg(feature = "v1_28")]
3179            ffi::GST_VIDEO_FORMAT_RGB10x2_LE => Self::Rgb10x2Le,
3180            #[cfg(feature = "v1_30")]
3181            ffi::GST_VIDEO_FORMAT_AHARDWARE_BUFFER => Self::AhardwareBuffer,
3182            #[cfg(feature = "v1_30")]
3183            ffi::GST_VIDEO_FORMAT_RGBA_F16LE => Self::RgbaF16le,
3184            #[cfg(feature = "v1_30")]
3185            ffi::GST_VIDEO_FORMAT_RGBA_F16BE => Self::RgbaF16be,
3186            #[cfg(feature = "v1_30")]
3187            ffi::GST_VIDEO_FORMAT_RGBA_F32LE => Self::RgbaF32le,
3188            #[cfg(feature = "v1_30")]
3189            ffi::GST_VIDEO_FORMAT_RGBA_F32BE => Self::RgbaF32be,
3190            #[cfg(feature = "v1_30")]
3191            ffi::GST_VIDEO_FORMAT_ARGB_F32 => Self::ArgbF32,
3192            #[cfg(feature = "v1_30")]
3193            ffi::GST_VIDEO_FORMAT_RGBP_F16LE => Self::RgbpF16le,
3194            #[cfg(feature = "v1_30")]
3195            ffi::GST_VIDEO_FORMAT_RGBP_F16BE => Self::RgbpF16be,
3196            #[cfg(feature = "v1_30")]
3197            ffi::GST_VIDEO_FORMAT_RGBP_F32LE => Self::RgbpF32le,
3198            #[cfg(feature = "v1_30")]
3199            ffi::GST_VIDEO_FORMAT_RGBP_F32BE => Self::RgbpF32be,
3200            #[cfg(feature = "v1_30")]
3201            ffi::GST_VIDEO_FORMAT_RGB_F16LE => Self::RgbF16le,
3202            #[cfg(feature = "v1_30")]
3203            ffi::GST_VIDEO_FORMAT_RGB_F16BE => Self::RgbF16be,
3204            #[cfg(feature = "v1_30")]
3205            ffi::GST_VIDEO_FORMAT_RGB_F32LE => Self::RgbF32le,
3206            #[cfg(feature = "v1_30")]
3207            ffi::GST_VIDEO_FORMAT_RGB_F32BE => Self::RgbF32be,
3208            #[cfg(feature = "v1_30")]
3209            ffi::GST_VIDEO_FORMAT_AYUV_F32 => Self::AyuvF32,
3210            #[cfg(feature = "v1_30")]
3211            ffi::GST_VIDEO_FORMAT_GRAY_F16LE => Self::GrayF16le,
3212            #[cfg(feature = "v1_30")]
3213            ffi::GST_VIDEO_FORMAT_GRAY_F16BE => Self::GrayF16be,
3214            #[cfg(feature = "v1_30")]
3215            ffi::GST_VIDEO_FORMAT_GRAY_F32LE => Self::GrayF32le,
3216            #[cfg(feature = "v1_30")]
3217            ffi::GST_VIDEO_FORMAT_GRAY_F32BE => Self::GrayF32be,
3218            value => Self::__Unknown(value),
3219        }
3220    }
3221}
3222
3223impl StaticType for VideoFormat {
3224    #[inline]
3225    #[doc(alias = "gst_video_format_get_type")]
3226    fn static_type() -> glib::Type {
3227        unsafe { from_glib(ffi::gst_video_format_get_type()) }
3228    }
3229}
3230
3231impl glib::HasParamSpec for VideoFormat {
3232    type ParamSpec = glib::ParamSpecEnum;
3233    type SetValue = Self;
3234    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3235
3236    fn param_spec_builder() -> Self::BuilderFn {
3237        Self::ParamSpec::builder_with_default
3238    }
3239}
3240
3241impl glib::value::ValueType for VideoFormat {
3242    type Type = Self;
3243}
3244
3245unsafe impl<'a> glib::value::FromValue<'a> for VideoFormat {
3246    type Checker = glib::value::GenericValueTypeChecker<Self>;
3247
3248    #[inline]
3249    unsafe fn from_value(value: &'a glib::Value) -> Self {
3250        skip_assert_initialized!();
3251        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
3252    }
3253}
3254
3255impl ToValue for VideoFormat {
3256    #[inline]
3257    fn to_value(&self) -> glib::Value {
3258        let mut value = glib::Value::for_value_type::<Self>();
3259        unsafe {
3260            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3261        }
3262        value
3263    }
3264
3265    #[inline]
3266    fn value_type(&self) -> glib::Type {
3267        Self::static_type()
3268    }
3269}
3270
3271impl From<VideoFormat> for glib::Value {
3272    #[inline]
3273    fn from(v: VideoFormat) -> Self {
3274        skip_assert_initialized!();
3275        ToValue::to_value(&v)
3276    }
3277}
3278
3279#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3280#[non_exhaustive]
3281#[doc(alias = "GstVideoGammaMode")]
3282pub enum VideoGammaMode {
3283    #[doc(alias = "GST_VIDEO_GAMMA_MODE_NONE")]
3284    None,
3285    #[doc(alias = "GST_VIDEO_GAMMA_MODE_REMAP")]
3286    Remap,
3287    #[doc(hidden)]
3288    __Unknown(i32),
3289}
3290
3291#[doc(hidden)]
3292impl IntoGlib for VideoGammaMode {
3293    type GlibType = ffi::GstVideoGammaMode;
3294
3295    #[inline]
3296    fn into_glib(self) -> ffi::GstVideoGammaMode {
3297        match self {
3298            Self::None => ffi::GST_VIDEO_GAMMA_MODE_NONE,
3299            Self::Remap => ffi::GST_VIDEO_GAMMA_MODE_REMAP,
3300            Self::__Unknown(value) => value,
3301        }
3302    }
3303}
3304
3305#[doc(hidden)]
3306impl FromGlib<ffi::GstVideoGammaMode> for VideoGammaMode {
3307    #[inline]
3308    unsafe fn from_glib(value: ffi::GstVideoGammaMode) -> Self {
3309        skip_assert_initialized!();
3310
3311        match value {
3312            ffi::GST_VIDEO_GAMMA_MODE_NONE => Self::None,
3313            ffi::GST_VIDEO_GAMMA_MODE_REMAP => Self::Remap,
3314            value => Self::__Unknown(value),
3315        }
3316    }
3317}
3318
3319impl StaticType for VideoGammaMode {
3320    #[inline]
3321    #[doc(alias = "gst_video_gamma_mode_get_type")]
3322    fn static_type() -> glib::Type {
3323        unsafe { from_glib(ffi::gst_video_gamma_mode_get_type()) }
3324    }
3325}
3326
3327impl glib::HasParamSpec for VideoGammaMode {
3328    type ParamSpec = glib::ParamSpecEnum;
3329    type SetValue = Self;
3330    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3331
3332    fn param_spec_builder() -> Self::BuilderFn {
3333        Self::ParamSpec::builder_with_default
3334    }
3335}
3336
3337impl glib::value::ValueType for VideoGammaMode {
3338    type Type = Self;
3339}
3340
3341unsafe impl<'a> glib::value::FromValue<'a> for VideoGammaMode {
3342    type Checker = glib::value::GenericValueTypeChecker<Self>;
3343
3344    #[inline]
3345    unsafe fn from_value(value: &'a glib::Value) -> Self {
3346        skip_assert_initialized!();
3347        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
3348    }
3349}
3350
3351impl ToValue for VideoGammaMode {
3352    #[inline]
3353    fn to_value(&self) -> glib::Value {
3354        let mut value = glib::Value::for_value_type::<Self>();
3355        unsafe {
3356            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3357        }
3358        value
3359    }
3360
3361    #[inline]
3362    fn value_type(&self) -> glib::Type {
3363        Self::static_type()
3364    }
3365}
3366
3367impl From<VideoGammaMode> for glib::Value {
3368    #[inline]
3369    fn from(v: VideoGammaMode) -> Self {
3370        skip_assert_initialized!();
3371        ToValue::to_value(&v)
3372    }
3373}
3374
3375#[cfg(feature = "v1_30")]
3376#[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
3377#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3378#[non_exhaustive]
3379#[doc(alias = "GstVideoHDRFormat")]
3380pub enum VideoHDRFormat {
3381    #[doc(alias = "GST_VIDEO_HDR_FORMAT_NONE")]
3382    None,
3383    #[doc(alias = "GST_VIDEO_HDR_FORMAT_HDR10")]
3384    Hdr10,
3385    #[doc(alias = "GST_VIDEO_HDR_FORMAT_HDR10_PLUS")]
3386    Hdr10Plus,
3387    #[doc(hidden)]
3388    __Unknown(i32),
3389}
3390
3391#[cfg(feature = "v1_30")]
3392#[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
3393#[doc(hidden)]
3394impl IntoGlib for VideoHDRFormat {
3395    type GlibType = ffi::GstVideoHDRFormat;
3396
3397    #[inline]
3398    fn into_glib(self) -> ffi::GstVideoHDRFormat {
3399        match self {
3400            Self::None => ffi::GST_VIDEO_HDR_FORMAT_NONE,
3401            Self::Hdr10 => ffi::GST_VIDEO_HDR_FORMAT_HDR10,
3402            Self::Hdr10Plus => ffi::GST_VIDEO_HDR_FORMAT_HDR10_PLUS,
3403            Self::__Unknown(value) => value,
3404        }
3405    }
3406}
3407
3408#[cfg(feature = "v1_30")]
3409#[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
3410#[doc(hidden)]
3411impl FromGlib<ffi::GstVideoHDRFormat> for VideoHDRFormat {
3412    #[inline]
3413    unsafe fn from_glib(value: ffi::GstVideoHDRFormat) -> Self {
3414        skip_assert_initialized!();
3415
3416        match value {
3417            ffi::GST_VIDEO_HDR_FORMAT_NONE => Self::None,
3418            ffi::GST_VIDEO_HDR_FORMAT_HDR10 => Self::Hdr10,
3419            ffi::GST_VIDEO_HDR_FORMAT_HDR10_PLUS => Self::Hdr10Plus,
3420            value => Self::__Unknown(value),
3421        }
3422    }
3423}
3424
3425#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3426#[non_exhaustive]
3427#[doc(alias = "GstVideoInterlaceMode")]
3428pub enum VideoInterlaceMode {
3429    #[doc(alias = "GST_VIDEO_INTERLACE_MODE_PROGRESSIVE")]
3430    Progressive,
3431    #[doc(alias = "GST_VIDEO_INTERLACE_MODE_INTERLEAVED")]
3432    Interleaved,
3433    #[doc(alias = "GST_VIDEO_INTERLACE_MODE_MIXED")]
3434    Mixed,
3435    #[doc(alias = "GST_VIDEO_INTERLACE_MODE_FIELDS")]
3436    Fields,
3437    #[cfg(feature = "v1_16")]
3438    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
3439    #[doc(alias = "GST_VIDEO_INTERLACE_MODE_ALTERNATE")]
3440    Alternate,
3441    #[doc(hidden)]
3442    __Unknown(i32),
3443}
3444
3445impl VideoInterlaceMode {
3446    #[doc(alias = "gst_video_interlace_mode_from_string")]
3447    pub fn from_string(mode: &str) -> VideoInterlaceMode {
3448        assert_initialized_main_thread!();
3449        unsafe {
3450            from_glib(ffi::gst_video_interlace_mode_from_string(
3451                mode.to_glib_none().0,
3452            ))
3453        }
3454    }
3455
3456    pub fn to_str<'a>(self) -> &'a GStr {
3457        unsafe {
3458            GStr::from_ptr(
3459                ffi::gst_video_interlace_mode_to_string(self.into_glib())
3460                    .as_ref()
3461                    .expect("gst_video_interlace_mode_to_string returned NULL"),
3462            )
3463        }
3464    }
3465}
3466
3467impl std::fmt::Display for VideoInterlaceMode {
3468    #[inline]
3469    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
3470        f.write_str(&self.to_str())
3471    }
3472}
3473
3474#[doc(hidden)]
3475impl IntoGlib for VideoInterlaceMode {
3476    type GlibType = ffi::GstVideoInterlaceMode;
3477
3478    #[inline]
3479    fn into_glib(self) -> ffi::GstVideoInterlaceMode {
3480        match self {
3481            Self::Progressive => ffi::GST_VIDEO_INTERLACE_MODE_PROGRESSIVE,
3482            Self::Interleaved => ffi::GST_VIDEO_INTERLACE_MODE_INTERLEAVED,
3483            Self::Mixed => ffi::GST_VIDEO_INTERLACE_MODE_MIXED,
3484            Self::Fields => ffi::GST_VIDEO_INTERLACE_MODE_FIELDS,
3485            #[cfg(feature = "v1_16")]
3486            Self::Alternate => ffi::GST_VIDEO_INTERLACE_MODE_ALTERNATE,
3487            Self::__Unknown(value) => value,
3488        }
3489    }
3490}
3491
3492#[doc(hidden)]
3493impl FromGlib<ffi::GstVideoInterlaceMode> for VideoInterlaceMode {
3494    #[inline]
3495    unsafe fn from_glib(value: ffi::GstVideoInterlaceMode) -> Self {
3496        skip_assert_initialized!();
3497
3498        match value {
3499            ffi::GST_VIDEO_INTERLACE_MODE_PROGRESSIVE => Self::Progressive,
3500            ffi::GST_VIDEO_INTERLACE_MODE_INTERLEAVED => Self::Interleaved,
3501            ffi::GST_VIDEO_INTERLACE_MODE_MIXED => Self::Mixed,
3502            ffi::GST_VIDEO_INTERLACE_MODE_FIELDS => Self::Fields,
3503            #[cfg(feature = "v1_16")]
3504            ffi::GST_VIDEO_INTERLACE_MODE_ALTERNATE => Self::Alternate,
3505            value => Self::__Unknown(value),
3506        }
3507    }
3508}
3509
3510impl StaticType for VideoInterlaceMode {
3511    #[inline]
3512    #[doc(alias = "gst_video_interlace_mode_get_type")]
3513    fn static_type() -> glib::Type {
3514        unsafe { from_glib(ffi::gst_video_interlace_mode_get_type()) }
3515    }
3516}
3517
3518impl glib::HasParamSpec for VideoInterlaceMode {
3519    type ParamSpec = glib::ParamSpecEnum;
3520    type SetValue = Self;
3521    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3522
3523    fn param_spec_builder() -> Self::BuilderFn {
3524        Self::ParamSpec::builder_with_default
3525    }
3526}
3527
3528impl glib::value::ValueType for VideoInterlaceMode {
3529    type Type = Self;
3530}
3531
3532unsafe impl<'a> glib::value::FromValue<'a> for VideoInterlaceMode {
3533    type Checker = glib::value::GenericValueTypeChecker<Self>;
3534
3535    #[inline]
3536    unsafe fn from_value(value: &'a glib::Value) -> Self {
3537        skip_assert_initialized!();
3538        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
3539    }
3540}
3541
3542impl ToValue for VideoInterlaceMode {
3543    #[inline]
3544    fn to_value(&self) -> glib::Value {
3545        let mut value = glib::Value::for_value_type::<Self>();
3546        unsafe {
3547            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3548        }
3549        value
3550    }
3551
3552    #[inline]
3553    fn value_type(&self) -> glib::Type {
3554        Self::static_type()
3555    }
3556}
3557
3558impl From<VideoInterlaceMode> for glib::Value {
3559    #[inline]
3560    fn from(v: VideoInterlaceMode) -> Self {
3561        skip_assert_initialized!();
3562        ToValue::to_value(&v)
3563    }
3564}
3565
3566#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3567#[non_exhaustive]
3568#[doc(alias = "GstVideoMatrixMode")]
3569pub enum VideoMatrixMode {
3570    #[doc(alias = "GST_VIDEO_MATRIX_MODE_FULL")]
3571    Full,
3572    #[doc(alias = "GST_VIDEO_MATRIX_MODE_INPUT_ONLY")]
3573    InputOnly,
3574    #[doc(alias = "GST_VIDEO_MATRIX_MODE_OUTPUT_ONLY")]
3575    OutputOnly,
3576    #[doc(alias = "GST_VIDEO_MATRIX_MODE_NONE")]
3577    None,
3578    #[doc(hidden)]
3579    __Unknown(i32),
3580}
3581
3582#[doc(hidden)]
3583impl IntoGlib for VideoMatrixMode {
3584    type GlibType = ffi::GstVideoMatrixMode;
3585
3586    #[inline]
3587    fn into_glib(self) -> ffi::GstVideoMatrixMode {
3588        match self {
3589            Self::Full => ffi::GST_VIDEO_MATRIX_MODE_FULL,
3590            Self::InputOnly => ffi::GST_VIDEO_MATRIX_MODE_INPUT_ONLY,
3591            Self::OutputOnly => ffi::GST_VIDEO_MATRIX_MODE_OUTPUT_ONLY,
3592            Self::None => ffi::GST_VIDEO_MATRIX_MODE_NONE,
3593            Self::__Unknown(value) => value,
3594        }
3595    }
3596}
3597
3598#[doc(hidden)]
3599impl FromGlib<ffi::GstVideoMatrixMode> for VideoMatrixMode {
3600    #[inline]
3601    unsafe fn from_glib(value: ffi::GstVideoMatrixMode) -> Self {
3602        skip_assert_initialized!();
3603
3604        match value {
3605            ffi::GST_VIDEO_MATRIX_MODE_FULL => Self::Full,
3606            ffi::GST_VIDEO_MATRIX_MODE_INPUT_ONLY => Self::InputOnly,
3607            ffi::GST_VIDEO_MATRIX_MODE_OUTPUT_ONLY => Self::OutputOnly,
3608            ffi::GST_VIDEO_MATRIX_MODE_NONE => Self::None,
3609            value => Self::__Unknown(value),
3610        }
3611    }
3612}
3613
3614impl StaticType for VideoMatrixMode {
3615    #[inline]
3616    #[doc(alias = "gst_video_matrix_mode_get_type")]
3617    fn static_type() -> glib::Type {
3618        unsafe { from_glib(ffi::gst_video_matrix_mode_get_type()) }
3619    }
3620}
3621
3622impl glib::HasParamSpec for VideoMatrixMode {
3623    type ParamSpec = glib::ParamSpecEnum;
3624    type SetValue = Self;
3625    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3626
3627    fn param_spec_builder() -> Self::BuilderFn {
3628        Self::ParamSpec::builder_with_default
3629    }
3630}
3631
3632impl glib::value::ValueType for VideoMatrixMode {
3633    type Type = Self;
3634}
3635
3636unsafe impl<'a> glib::value::FromValue<'a> for VideoMatrixMode {
3637    type Checker = glib::value::GenericValueTypeChecker<Self>;
3638
3639    #[inline]
3640    unsafe fn from_value(value: &'a glib::Value) -> Self {
3641        skip_assert_initialized!();
3642        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
3643    }
3644}
3645
3646impl ToValue for VideoMatrixMode {
3647    #[inline]
3648    fn to_value(&self) -> glib::Value {
3649        let mut value = glib::Value::for_value_type::<Self>();
3650        unsafe {
3651            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3652        }
3653        value
3654    }
3655
3656    #[inline]
3657    fn value_type(&self) -> glib::Type {
3658        Self::static_type()
3659    }
3660}
3661
3662impl From<VideoMatrixMode> for glib::Value {
3663    #[inline]
3664    fn from(v: VideoMatrixMode) -> Self {
3665        skip_assert_initialized!();
3666        ToValue::to_value(&v)
3667    }
3668}
3669
3670#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3671#[non_exhaustive]
3672#[doc(alias = "GstVideoMultiviewFramePacking")]
3673pub enum VideoMultiviewFramePacking {
3674    #[doc(alias = "GST_VIDEO_MULTIVIEW_FRAME_PACKING_NONE")]
3675    None,
3676    #[doc(alias = "GST_VIDEO_MULTIVIEW_FRAME_PACKING_MONO")]
3677    Mono,
3678    #[doc(alias = "GST_VIDEO_MULTIVIEW_FRAME_PACKING_LEFT")]
3679    Left,
3680    #[doc(alias = "GST_VIDEO_MULTIVIEW_FRAME_PACKING_RIGHT")]
3681    Right,
3682    #[doc(alias = "GST_VIDEO_MULTIVIEW_FRAME_PACKING_SIDE_BY_SIDE")]
3683    SideBySide,
3684    #[doc(alias = "GST_VIDEO_MULTIVIEW_FRAME_PACKING_SIDE_BY_SIDE_QUINCUNX")]
3685    SideBySideQuincunx,
3686    #[doc(alias = "GST_VIDEO_MULTIVIEW_FRAME_PACKING_COLUMN_INTERLEAVED")]
3687    ColumnInterleaved,
3688    #[doc(alias = "GST_VIDEO_MULTIVIEW_FRAME_PACKING_ROW_INTERLEAVED")]
3689    RowInterleaved,
3690    #[doc(alias = "GST_VIDEO_MULTIVIEW_FRAME_PACKING_TOP_BOTTOM")]
3691    TopBottom,
3692    #[doc(alias = "GST_VIDEO_MULTIVIEW_FRAME_PACKING_CHECKERBOARD")]
3693    Checkerboard,
3694    #[doc(hidden)]
3695    __Unknown(i32),
3696}
3697
3698#[doc(hidden)]
3699impl IntoGlib for VideoMultiviewFramePacking {
3700    type GlibType = ffi::GstVideoMultiviewFramePacking;
3701
3702    #[inline]
3703    fn into_glib(self) -> ffi::GstVideoMultiviewFramePacking {
3704        match self {
3705            Self::None => ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_NONE,
3706            Self::Mono => ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_MONO,
3707            Self::Left => ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_LEFT,
3708            Self::Right => ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_RIGHT,
3709            Self::SideBySide => ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_SIDE_BY_SIDE,
3710            Self::SideBySideQuincunx => {
3711                ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_SIDE_BY_SIDE_QUINCUNX
3712            }
3713            Self::ColumnInterleaved => ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_COLUMN_INTERLEAVED,
3714            Self::RowInterleaved => ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_ROW_INTERLEAVED,
3715            Self::TopBottom => ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_TOP_BOTTOM,
3716            Self::Checkerboard => ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_CHECKERBOARD,
3717            Self::__Unknown(value) => value,
3718        }
3719    }
3720}
3721
3722#[doc(hidden)]
3723impl FromGlib<ffi::GstVideoMultiviewFramePacking> for VideoMultiviewFramePacking {
3724    #[inline]
3725    unsafe fn from_glib(value: ffi::GstVideoMultiviewFramePacking) -> Self {
3726        skip_assert_initialized!();
3727
3728        match value {
3729            ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_NONE => Self::None,
3730            ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_MONO => Self::Mono,
3731            ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_LEFT => Self::Left,
3732            ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_RIGHT => Self::Right,
3733            ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_SIDE_BY_SIDE => Self::SideBySide,
3734            ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_SIDE_BY_SIDE_QUINCUNX => {
3735                Self::SideBySideQuincunx
3736            }
3737            ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_COLUMN_INTERLEAVED => Self::ColumnInterleaved,
3738            ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_ROW_INTERLEAVED => Self::RowInterleaved,
3739            ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_TOP_BOTTOM => Self::TopBottom,
3740            ffi::GST_VIDEO_MULTIVIEW_FRAME_PACKING_CHECKERBOARD => Self::Checkerboard,
3741            value => Self::__Unknown(value),
3742        }
3743    }
3744}
3745
3746impl StaticType for VideoMultiviewFramePacking {
3747    #[inline]
3748    #[doc(alias = "gst_video_multiview_frame_packing_get_type")]
3749    fn static_type() -> glib::Type {
3750        unsafe { from_glib(ffi::gst_video_multiview_frame_packing_get_type()) }
3751    }
3752}
3753
3754impl glib::HasParamSpec for VideoMultiviewFramePacking {
3755    type ParamSpec = glib::ParamSpecEnum;
3756    type SetValue = Self;
3757    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3758
3759    fn param_spec_builder() -> Self::BuilderFn {
3760        Self::ParamSpec::builder_with_default
3761    }
3762}
3763
3764impl glib::value::ValueType for VideoMultiviewFramePacking {
3765    type Type = Self;
3766}
3767
3768unsafe impl<'a> glib::value::FromValue<'a> for VideoMultiviewFramePacking {
3769    type Checker = glib::value::GenericValueTypeChecker<Self>;
3770
3771    #[inline]
3772    unsafe fn from_value(value: &'a glib::Value) -> Self {
3773        skip_assert_initialized!();
3774        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
3775    }
3776}
3777
3778impl ToValue for VideoMultiviewFramePacking {
3779    #[inline]
3780    fn to_value(&self) -> glib::Value {
3781        let mut value = glib::Value::for_value_type::<Self>();
3782        unsafe {
3783            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3784        }
3785        value
3786    }
3787
3788    #[inline]
3789    fn value_type(&self) -> glib::Type {
3790        Self::static_type()
3791    }
3792}
3793
3794impl From<VideoMultiviewFramePacking> for glib::Value {
3795    #[inline]
3796    fn from(v: VideoMultiviewFramePacking) -> Self {
3797        skip_assert_initialized!();
3798        ToValue::to_value(&v)
3799    }
3800}
3801
3802#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3803#[non_exhaustive]
3804#[doc(alias = "GstVideoMultiviewMode")]
3805pub enum VideoMultiviewMode {
3806    #[doc(alias = "GST_VIDEO_MULTIVIEW_MODE_NONE")]
3807    None,
3808    #[doc(alias = "GST_VIDEO_MULTIVIEW_MODE_MONO")]
3809    Mono,
3810    #[doc(alias = "GST_VIDEO_MULTIVIEW_MODE_LEFT")]
3811    Left,
3812    #[doc(alias = "GST_VIDEO_MULTIVIEW_MODE_RIGHT")]
3813    Right,
3814    #[doc(alias = "GST_VIDEO_MULTIVIEW_MODE_SIDE_BY_SIDE")]
3815    SideBySide,
3816    #[doc(alias = "GST_VIDEO_MULTIVIEW_MODE_SIDE_BY_SIDE_QUINCUNX")]
3817    SideBySideQuincunx,
3818    #[doc(alias = "GST_VIDEO_MULTIVIEW_MODE_COLUMN_INTERLEAVED")]
3819    ColumnInterleaved,
3820    #[doc(alias = "GST_VIDEO_MULTIVIEW_MODE_ROW_INTERLEAVED")]
3821    RowInterleaved,
3822    #[doc(alias = "GST_VIDEO_MULTIVIEW_MODE_TOP_BOTTOM")]
3823    TopBottom,
3824    #[doc(alias = "GST_VIDEO_MULTIVIEW_MODE_CHECKERBOARD")]
3825    Checkerboard,
3826    #[doc(alias = "GST_VIDEO_MULTIVIEW_MODE_FRAME_BY_FRAME")]
3827    FrameByFrame,
3828    #[doc(alias = "GST_VIDEO_MULTIVIEW_MODE_MULTIVIEW_FRAME_BY_FRAME")]
3829    MultiviewFrameByFrame,
3830    #[doc(alias = "GST_VIDEO_MULTIVIEW_MODE_SEPARATED")]
3831    Separated,
3832    #[doc(hidden)]
3833    __Unknown(i32),
3834}
3835
3836impl VideoMultiviewMode {
3837    #[doc(alias = "gst_video_multiview_mode_from_caps_string")]
3838    pub fn from_caps_string(caps_mview_mode: &str) -> VideoMultiviewMode {
3839        assert_initialized_main_thread!();
3840        unsafe {
3841            from_glib(ffi::gst_video_multiview_mode_from_caps_string(
3842                caps_mview_mode.to_glib_none().0,
3843            ))
3844        }
3845    }
3846
3847    #[doc(alias = "gst_video_multiview_mode_to_caps_string")]
3848    pub fn to_caps_string(self) -> Option<glib::GString> {
3849        assert_initialized_main_thread!();
3850        unsafe {
3851            from_glib_none(ffi::gst_video_multiview_mode_to_caps_string(
3852                self.into_glib(),
3853            ))
3854        }
3855    }
3856}
3857
3858#[doc(hidden)]
3859impl IntoGlib for VideoMultiviewMode {
3860    type GlibType = ffi::GstVideoMultiviewMode;
3861
3862    fn into_glib(self) -> ffi::GstVideoMultiviewMode {
3863        match self {
3864            Self::None => ffi::GST_VIDEO_MULTIVIEW_MODE_NONE,
3865            Self::Mono => ffi::GST_VIDEO_MULTIVIEW_MODE_MONO,
3866            Self::Left => ffi::GST_VIDEO_MULTIVIEW_MODE_LEFT,
3867            Self::Right => ffi::GST_VIDEO_MULTIVIEW_MODE_RIGHT,
3868            Self::SideBySide => ffi::GST_VIDEO_MULTIVIEW_MODE_SIDE_BY_SIDE,
3869            Self::SideBySideQuincunx => ffi::GST_VIDEO_MULTIVIEW_MODE_SIDE_BY_SIDE_QUINCUNX,
3870            Self::ColumnInterleaved => ffi::GST_VIDEO_MULTIVIEW_MODE_COLUMN_INTERLEAVED,
3871            Self::RowInterleaved => ffi::GST_VIDEO_MULTIVIEW_MODE_ROW_INTERLEAVED,
3872            Self::TopBottom => ffi::GST_VIDEO_MULTIVIEW_MODE_TOP_BOTTOM,
3873            Self::Checkerboard => ffi::GST_VIDEO_MULTIVIEW_MODE_CHECKERBOARD,
3874            Self::FrameByFrame => ffi::GST_VIDEO_MULTIVIEW_MODE_FRAME_BY_FRAME,
3875            Self::MultiviewFrameByFrame => ffi::GST_VIDEO_MULTIVIEW_MODE_MULTIVIEW_FRAME_BY_FRAME,
3876            Self::Separated => ffi::GST_VIDEO_MULTIVIEW_MODE_SEPARATED,
3877            Self::__Unknown(value) => value,
3878        }
3879    }
3880}
3881
3882#[doc(hidden)]
3883impl FromGlib<ffi::GstVideoMultiviewMode> for VideoMultiviewMode {
3884    unsafe fn from_glib(value: ffi::GstVideoMultiviewMode) -> Self {
3885        skip_assert_initialized!();
3886
3887        match value {
3888            ffi::GST_VIDEO_MULTIVIEW_MODE_NONE => Self::None,
3889            ffi::GST_VIDEO_MULTIVIEW_MODE_MONO => Self::Mono,
3890            ffi::GST_VIDEO_MULTIVIEW_MODE_LEFT => Self::Left,
3891            ffi::GST_VIDEO_MULTIVIEW_MODE_RIGHT => Self::Right,
3892            ffi::GST_VIDEO_MULTIVIEW_MODE_SIDE_BY_SIDE => Self::SideBySide,
3893            ffi::GST_VIDEO_MULTIVIEW_MODE_SIDE_BY_SIDE_QUINCUNX => Self::SideBySideQuincunx,
3894            ffi::GST_VIDEO_MULTIVIEW_MODE_COLUMN_INTERLEAVED => Self::ColumnInterleaved,
3895            ffi::GST_VIDEO_MULTIVIEW_MODE_ROW_INTERLEAVED => Self::RowInterleaved,
3896            ffi::GST_VIDEO_MULTIVIEW_MODE_TOP_BOTTOM => Self::TopBottom,
3897            ffi::GST_VIDEO_MULTIVIEW_MODE_CHECKERBOARD => Self::Checkerboard,
3898            ffi::GST_VIDEO_MULTIVIEW_MODE_FRAME_BY_FRAME => Self::FrameByFrame,
3899            ffi::GST_VIDEO_MULTIVIEW_MODE_MULTIVIEW_FRAME_BY_FRAME => Self::MultiviewFrameByFrame,
3900            ffi::GST_VIDEO_MULTIVIEW_MODE_SEPARATED => Self::Separated,
3901            value => Self::__Unknown(value),
3902        }
3903    }
3904}
3905
3906impl StaticType for VideoMultiviewMode {
3907    #[inline]
3908    #[doc(alias = "gst_video_multiview_mode_get_type")]
3909    fn static_type() -> glib::Type {
3910        unsafe { from_glib(ffi::gst_video_multiview_mode_get_type()) }
3911    }
3912}
3913
3914impl glib::HasParamSpec for VideoMultiviewMode {
3915    type ParamSpec = glib::ParamSpecEnum;
3916    type SetValue = Self;
3917    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
3918
3919    fn param_spec_builder() -> Self::BuilderFn {
3920        Self::ParamSpec::builder_with_default
3921    }
3922}
3923
3924impl glib::value::ValueType for VideoMultiviewMode {
3925    type Type = Self;
3926}
3927
3928unsafe impl<'a> glib::value::FromValue<'a> for VideoMultiviewMode {
3929    type Checker = glib::value::GenericValueTypeChecker<Self>;
3930
3931    #[inline]
3932    unsafe fn from_value(value: &'a glib::Value) -> Self {
3933        skip_assert_initialized!();
3934        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
3935    }
3936}
3937
3938impl ToValue for VideoMultiviewMode {
3939    #[inline]
3940    fn to_value(&self) -> glib::Value {
3941        let mut value = glib::Value::for_value_type::<Self>();
3942        unsafe {
3943            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
3944        }
3945        value
3946    }
3947
3948    #[inline]
3949    fn value_type(&self) -> glib::Type {
3950        Self::static_type()
3951    }
3952}
3953
3954impl From<VideoMultiviewMode> for glib::Value {
3955    #[inline]
3956    fn from(v: VideoMultiviewMode) -> Self {
3957        skip_assert_initialized!();
3958        ToValue::to_value(&v)
3959    }
3960}
3961
3962#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
3963#[non_exhaustive]
3964#[doc(alias = "GstVideoOrientationMethod")]
3965pub enum VideoOrientationMethod {
3966    #[doc(alias = "GST_VIDEO_ORIENTATION_IDENTITY")]
3967    Identity,
3968    #[doc(alias = "GST_VIDEO_ORIENTATION_90R")]
3969    _90r,
3970    #[doc(alias = "GST_VIDEO_ORIENTATION_180")]
3971    _180,
3972    #[doc(alias = "GST_VIDEO_ORIENTATION_90L")]
3973    _90l,
3974    #[doc(alias = "GST_VIDEO_ORIENTATION_HORIZ")]
3975    Horiz,
3976    #[doc(alias = "GST_VIDEO_ORIENTATION_VERT")]
3977    Vert,
3978    #[doc(alias = "GST_VIDEO_ORIENTATION_UL_LR")]
3979    UlLr,
3980    #[doc(alias = "GST_VIDEO_ORIENTATION_UR_LL")]
3981    UrLl,
3982    #[doc(alias = "GST_VIDEO_ORIENTATION_AUTO")]
3983    Auto,
3984    #[doc(alias = "GST_VIDEO_ORIENTATION_CUSTOM")]
3985    Custom,
3986    #[doc(hidden)]
3987    __Unknown(i32),
3988}
3989
3990#[doc(hidden)]
3991impl IntoGlib for VideoOrientationMethod {
3992    type GlibType = ffi::GstVideoOrientationMethod;
3993
3994    #[inline]
3995    fn into_glib(self) -> ffi::GstVideoOrientationMethod {
3996        match self {
3997            Self::Identity => ffi::GST_VIDEO_ORIENTATION_IDENTITY,
3998            Self::_90r => ffi::GST_VIDEO_ORIENTATION_90R,
3999            Self::_180 => ffi::GST_VIDEO_ORIENTATION_180,
4000            Self::_90l => ffi::GST_VIDEO_ORIENTATION_90L,
4001            Self::Horiz => ffi::GST_VIDEO_ORIENTATION_HORIZ,
4002            Self::Vert => ffi::GST_VIDEO_ORIENTATION_VERT,
4003            Self::UlLr => ffi::GST_VIDEO_ORIENTATION_UL_LR,
4004            Self::UrLl => ffi::GST_VIDEO_ORIENTATION_UR_LL,
4005            Self::Auto => ffi::GST_VIDEO_ORIENTATION_AUTO,
4006            Self::Custom => ffi::GST_VIDEO_ORIENTATION_CUSTOM,
4007            Self::__Unknown(value) => value,
4008        }
4009    }
4010}
4011
4012#[doc(hidden)]
4013impl FromGlib<ffi::GstVideoOrientationMethod> for VideoOrientationMethod {
4014    #[inline]
4015    unsafe fn from_glib(value: ffi::GstVideoOrientationMethod) -> Self {
4016        skip_assert_initialized!();
4017
4018        match value {
4019            ffi::GST_VIDEO_ORIENTATION_IDENTITY => Self::Identity,
4020            ffi::GST_VIDEO_ORIENTATION_90R => Self::_90r,
4021            ffi::GST_VIDEO_ORIENTATION_180 => Self::_180,
4022            ffi::GST_VIDEO_ORIENTATION_90L => Self::_90l,
4023            ffi::GST_VIDEO_ORIENTATION_HORIZ => Self::Horiz,
4024            ffi::GST_VIDEO_ORIENTATION_VERT => Self::Vert,
4025            ffi::GST_VIDEO_ORIENTATION_UL_LR => Self::UlLr,
4026            ffi::GST_VIDEO_ORIENTATION_UR_LL => Self::UrLl,
4027            ffi::GST_VIDEO_ORIENTATION_AUTO => Self::Auto,
4028            ffi::GST_VIDEO_ORIENTATION_CUSTOM => Self::Custom,
4029            value => Self::__Unknown(value),
4030        }
4031    }
4032}
4033
4034impl StaticType for VideoOrientationMethod {
4035    #[inline]
4036    #[doc(alias = "gst_video_orientation_method_get_type")]
4037    fn static_type() -> glib::Type {
4038        unsafe { from_glib(ffi::gst_video_orientation_method_get_type()) }
4039    }
4040}
4041
4042impl glib::HasParamSpec for VideoOrientationMethod {
4043    type ParamSpec = glib::ParamSpecEnum;
4044    type SetValue = Self;
4045    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4046
4047    fn param_spec_builder() -> Self::BuilderFn {
4048        Self::ParamSpec::builder_with_default
4049    }
4050}
4051
4052impl glib::value::ValueType for VideoOrientationMethod {
4053    type Type = Self;
4054}
4055
4056unsafe impl<'a> glib::value::FromValue<'a> for VideoOrientationMethod {
4057    type Checker = glib::value::GenericValueTypeChecker<Self>;
4058
4059    #[inline]
4060    unsafe fn from_value(value: &'a glib::Value) -> Self {
4061        skip_assert_initialized!();
4062        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
4063    }
4064}
4065
4066impl ToValue for VideoOrientationMethod {
4067    #[inline]
4068    fn to_value(&self) -> glib::Value {
4069        let mut value = glib::Value::for_value_type::<Self>();
4070        unsafe {
4071            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4072        }
4073        value
4074    }
4075
4076    #[inline]
4077    fn value_type(&self) -> glib::Type {
4078        Self::static_type()
4079    }
4080}
4081
4082impl From<VideoOrientationMethod> for glib::Value {
4083    #[inline]
4084    fn from(v: VideoOrientationMethod) -> Self {
4085        skip_assert_initialized!();
4086        ToValue::to_value(&v)
4087    }
4088}
4089
4090#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4091#[non_exhaustive]
4092#[doc(alias = "GstVideoPrimariesMode")]
4093pub enum VideoPrimariesMode {
4094    #[doc(alias = "GST_VIDEO_PRIMARIES_MODE_NONE")]
4095    None,
4096    #[doc(alias = "GST_VIDEO_PRIMARIES_MODE_MERGE_ONLY")]
4097    MergeOnly,
4098    #[doc(alias = "GST_VIDEO_PRIMARIES_MODE_FAST")]
4099    Fast,
4100    #[doc(hidden)]
4101    __Unknown(i32),
4102}
4103
4104#[doc(hidden)]
4105impl IntoGlib for VideoPrimariesMode {
4106    type GlibType = ffi::GstVideoPrimariesMode;
4107
4108    #[inline]
4109    fn into_glib(self) -> ffi::GstVideoPrimariesMode {
4110        match self {
4111            Self::None => ffi::GST_VIDEO_PRIMARIES_MODE_NONE,
4112            Self::MergeOnly => ffi::GST_VIDEO_PRIMARIES_MODE_MERGE_ONLY,
4113            Self::Fast => ffi::GST_VIDEO_PRIMARIES_MODE_FAST,
4114            Self::__Unknown(value) => value,
4115        }
4116    }
4117}
4118
4119#[doc(hidden)]
4120impl FromGlib<ffi::GstVideoPrimariesMode> for VideoPrimariesMode {
4121    #[inline]
4122    unsafe fn from_glib(value: ffi::GstVideoPrimariesMode) -> Self {
4123        skip_assert_initialized!();
4124
4125        match value {
4126            ffi::GST_VIDEO_PRIMARIES_MODE_NONE => Self::None,
4127            ffi::GST_VIDEO_PRIMARIES_MODE_MERGE_ONLY => Self::MergeOnly,
4128            ffi::GST_VIDEO_PRIMARIES_MODE_FAST => Self::Fast,
4129            value => Self::__Unknown(value),
4130        }
4131    }
4132}
4133
4134impl StaticType for VideoPrimariesMode {
4135    #[inline]
4136    #[doc(alias = "gst_video_primaries_mode_get_type")]
4137    fn static_type() -> glib::Type {
4138        unsafe { from_glib(ffi::gst_video_primaries_mode_get_type()) }
4139    }
4140}
4141
4142impl glib::HasParamSpec for VideoPrimariesMode {
4143    type ParamSpec = glib::ParamSpecEnum;
4144    type SetValue = Self;
4145    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4146
4147    fn param_spec_builder() -> Self::BuilderFn {
4148        Self::ParamSpec::builder_with_default
4149    }
4150}
4151
4152impl glib::value::ValueType for VideoPrimariesMode {
4153    type Type = Self;
4154}
4155
4156unsafe impl<'a> glib::value::FromValue<'a> for VideoPrimariesMode {
4157    type Checker = glib::value::GenericValueTypeChecker<Self>;
4158
4159    #[inline]
4160    unsafe fn from_value(value: &'a glib::Value) -> Self {
4161        skip_assert_initialized!();
4162        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
4163    }
4164}
4165
4166impl ToValue for VideoPrimariesMode {
4167    #[inline]
4168    fn to_value(&self) -> glib::Value {
4169        let mut value = glib::Value::for_value_type::<Self>();
4170        unsafe {
4171            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4172        }
4173        value
4174    }
4175
4176    #[inline]
4177    fn value_type(&self) -> glib::Type {
4178        Self::static_type()
4179    }
4180}
4181
4182impl From<VideoPrimariesMode> for glib::Value {
4183    #[inline]
4184    fn from(v: VideoPrimariesMode) -> Self {
4185        skip_assert_initialized!();
4186        ToValue::to_value(&v)
4187    }
4188}
4189
4190#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4191#[non_exhaustive]
4192#[doc(alias = "GstVideoResamplerMethod")]
4193pub enum VideoResamplerMethod {
4194    #[doc(alias = "GST_VIDEO_RESAMPLER_METHOD_NEAREST")]
4195    Nearest,
4196    #[doc(alias = "GST_VIDEO_RESAMPLER_METHOD_LINEAR")]
4197    Linear,
4198    #[doc(alias = "GST_VIDEO_RESAMPLER_METHOD_CUBIC")]
4199    Cubic,
4200    #[doc(alias = "GST_VIDEO_RESAMPLER_METHOD_SINC")]
4201    Sinc,
4202    #[doc(alias = "GST_VIDEO_RESAMPLER_METHOD_LANCZOS")]
4203    Lanczos,
4204    #[doc(hidden)]
4205    __Unknown(i32),
4206}
4207
4208#[doc(hidden)]
4209impl IntoGlib for VideoResamplerMethod {
4210    type GlibType = ffi::GstVideoResamplerMethod;
4211
4212    #[inline]
4213    fn into_glib(self) -> ffi::GstVideoResamplerMethod {
4214        match self {
4215            Self::Nearest => ffi::GST_VIDEO_RESAMPLER_METHOD_NEAREST,
4216            Self::Linear => ffi::GST_VIDEO_RESAMPLER_METHOD_LINEAR,
4217            Self::Cubic => ffi::GST_VIDEO_RESAMPLER_METHOD_CUBIC,
4218            Self::Sinc => ffi::GST_VIDEO_RESAMPLER_METHOD_SINC,
4219            Self::Lanczos => ffi::GST_VIDEO_RESAMPLER_METHOD_LANCZOS,
4220            Self::__Unknown(value) => value,
4221        }
4222    }
4223}
4224
4225#[doc(hidden)]
4226impl FromGlib<ffi::GstVideoResamplerMethod> for VideoResamplerMethod {
4227    #[inline]
4228    unsafe fn from_glib(value: ffi::GstVideoResamplerMethod) -> Self {
4229        skip_assert_initialized!();
4230
4231        match value {
4232            ffi::GST_VIDEO_RESAMPLER_METHOD_NEAREST => Self::Nearest,
4233            ffi::GST_VIDEO_RESAMPLER_METHOD_LINEAR => Self::Linear,
4234            ffi::GST_VIDEO_RESAMPLER_METHOD_CUBIC => Self::Cubic,
4235            ffi::GST_VIDEO_RESAMPLER_METHOD_SINC => Self::Sinc,
4236            ffi::GST_VIDEO_RESAMPLER_METHOD_LANCZOS => Self::Lanczos,
4237            value => Self::__Unknown(value),
4238        }
4239    }
4240}
4241
4242impl StaticType for VideoResamplerMethod {
4243    #[inline]
4244    #[doc(alias = "gst_video_resampler_method_get_type")]
4245    fn static_type() -> glib::Type {
4246        unsafe { from_glib(ffi::gst_video_resampler_method_get_type()) }
4247    }
4248}
4249
4250impl glib::HasParamSpec for VideoResamplerMethod {
4251    type ParamSpec = glib::ParamSpecEnum;
4252    type SetValue = Self;
4253    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4254
4255    fn param_spec_builder() -> Self::BuilderFn {
4256        Self::ParamSpec::builder_with_default
4257    }
4258}
4259
4260impl glib::value::ValueType for VideoResamplerMethod {
4261    type Type = Self;
4262}
4263
4264unsafe impl<'a> glib::value::FromValue<'a> for VideoResamplerMethod {
4265    type Checker = glib::value::GenericValueTypeChecker<Self>;
4266
4267    #[inline]
4268    unsafe fn from_value(value: &'a glib::Value) -> Self {
4269        skip_assert_initialized!();
4270        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
4271    }
4272}
4273
4274impl ToValue for VideoResamplerMethod {
4275    #[inline]
4276    fn to_value(&self) -> glib::Value {
4277        let mut value = glib::Value::for_value_type::<Self>();
4278        unsafe {
4279            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4280        }
4281        value
4282    }
4283
4284    #[inline]
4285    fn value_type(&self) -> glib::Type {
4286        Self::static_type()
4287    }
4288}
4289
4290impl From<VideoResamplerMethod> for glib::Value {
4291    #[inline]
4292    fn from(v: VideoResamplerMethod) -> Self {
4293        skip_assert_initialized!();
4294        ToValue::to_value(&v)
4295    }
4296}
4297
4298#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4299#[non_exhaustive]
4300#[doc(alias = "GstVideoTileMode")]
4301pub enum VideoTileMode {
4302    #[doc(alias = "GST_VIDEO_TILE_MODE_UNKNOWN")]
4303    Unknown,
4304    #[doc(alias = "GST_VIDEO_TILE_MODE_ZFLIPZ_2X2")]
4305    Zflipz2x2,
4306    #[cfg(feature = "v1_18")]
4307    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
4308    #[doc(alias = "GST_VIDEO_TILE_MODE_LINEAR")]
4309    Linear,
4310    #[doc(hidden)]
4311    __Unknown(i32),
4312}
4313
4314#[doc(hidden)]
4315impl IntoGlib for VideoTileMode {
4316    type GlibType = ffi::GstVideoTileMode;
4317
4318    #[inline]
4319    fn into_glib(self) -> ffi::GstVideoTileMode {
4320        match self {
4321            Self::Unknown => ffi::GST_VIDEO_TILE_MODE_UNKNOWN,
4322            Self::Zflipz2x2 => ffi::GST_VIDEO_TILE_MODE_ZFLIPZ_2X2,
4323            #[cfg(feature = "v1_18")]
4324            Self::Linear => ffi::GST_VIDEO_TILE_MODE_LINEAR,
4325            Self::__Unknown(value) => value,
4326        }
4327    }
4328}
4329
4330#[doc(hidden)]
4331impl FromGlib<ffi::GstVideoTileMode> for VideoTileMode {
4332    #[inline]
4333    unsafe fn from_glib(value: ffi::GstVideoTileMode) -> Self {
4334        skip_assert_initialized!();
4335
4336        match value {
4337            ffi::GST_VIDEO_TILE_MODE_UNKNOWN => Self::Unknown,
4338            ffi::GST_VIDEO_TILE_MODE_ZFLIPZ_2X2 => Self::Zflipz2x2,
4339            #[cfg(feature = "v1_18")]
4340            ffi::GST_VIDEO_TILE_MODE_LINEAR => Self::Linear,
4341            value => Self::__Unknown(value),
4342        }
4343    }
4344}
4345
4346impl StaticType for VideoTileMode {
4347    #[inline]
4348    #[doc(alias = "gst_video_tile_mode_get_type")]
4349    fn static_type() -> glib::Type {
4350        unsafe { from_glib(ffi::gst_video_tile_mode_get_type()) }
4351    }
4352}
4353
4354impl glib::HasParamSpec for VideoTileMode {
4355    type ParamSpec = glib::ParamSpecEnum;
4356    type SetValue = Self;
4357    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4358
4359    fn param_spec_builder() -> Self::BuilderFn {
4360        Self::ParamSpec::builder_with_default
4361    }
4362}
4363
4364impl glib::value::ValueType for VideoTileMode {
4365    type Type = Self;
4366}
4367
4368unsafe impl<'a> glib::value::FromValue<'a> for VideoTileMode {
4369    type Checker = glib::value::GenericValueTypeChecker<Self>;
4370
4371    #[inline]
4372    unsafe fn from_value(value: &'a glib::Value) -> Self {
4373        skip_assert_initialized!();
4374        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
4375    }
4376}
4377
4378impl ToValue for VideoTileMode {
4379    #[inline]
4380    fn to_value(&self) -> glib::Value {
4381        let mut value = glib::Value::for_value_type::<Self>();
4382        unsafe {
4383            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4384        }
4385        value
4386    }
4387
4388    #[inline]
4389    fn value_type(&self) -> glib::Type {
4390        Self::static_type()
4391    }
4392}
4393
4394impl From<VideoTileMode> for glib::Value {
4395    #[inline]
4396    fn from(v: VideoTileMode) -> Self {
4397        skip_assert_initialized!();
4398        ToValue::to_value(&v)
4399    }
4400}
4401
4402#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
4403#[non_exhaustive]
4404#[doc(alias = "GstVideoTransferFunction")]
4405pub enum VideoTransferFunction {
4406    #[doc(alias = "GST_VIDEO_TRANSFER_UNKNOWN")]
4407    Unknown,
4408    #[doc(alias = "GST_VIDEO_TRANSFER_GAMMA10")]
4409    Gamma10,
4410    #[doc(alias = "GST_VIDEO_TRANSFER_GAMMA18")]
4411    Gamma18,
4412    #[doc(alias = "GST_VIDEO_TRANSFER_GAMMA20")]
4413    Gamma20,
4414    #[doc(alias = "GST_VIDEO_TRANSFER_GAMMA22")]
4415    Gamma22,
4416    #[doc(alias = "GST_VIDEO_TRANSFER_BT709")]
4417    Bt709,
4418    #[doc(alias = "GST_VIDEO_TRANSFER_SMPTE240M")]
4419    Smpte240m,
4420    #[doc(alias = "GST_VIDEO_TRANSFER_SRGB")]
4421    Srgb,
4422    #[doc(alias = "GST_VIDEO_TRANSFER_GAMMA28")]
4423    Gamma28,
4424    #[doc(alias = "GST_VIDEO_TRANSFER_LOG100")]
4425    Log100,
4426    #[doc(alias = "GST_VIDEO_TRANSFER_LOG316")]
4427    Log316,
4428    #[doc(alias = "GST_VIDEO_TRANSFER_BT2020_12")]
4429    Bt202012,
4430    #[doc(alias = "GST_VIDEO_TRANSFER_ADOBERGB")]
4431    Adobergb,
4432    #[cfg(feature = "v1_18")]
4433    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
4434    #[doc(alias = "GST_VIDEO_TRANSFER_BT2020_10")]
4435    Bt202010,
4436    #[cfg(feature = "v1_18")]
4437    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
4438    #[doc(alias = "GST_VIDEO_TRANSFER_SMPTE2084")]
4439    Smpte2084,
4440    #[cfg(feature = "v1_18")]
4441    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
4442    #[doc(alias = "GST_VIDEO_TRANSFER_ARIB_STD_B67")]
4443    AribStdB67,
4444    #[cfg(feature = "v1_18")]
4445    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
4446    #[doc(alias = "GST_VIDEO_TRANSFER_BT601")]
4447    Bt601,
4448    #[doc(hidden)]
4449    __Unknown(i32),
4450}
4451
4452impl VideoTransferFunction {
4453    #[cfg(feature = "v1_20")]
4454    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4455    #[doc(alias = "gst_video_transfer_function_decode")]
4456    pub fn decode(self, val: f64) -> f64 {
4457        assert_initialized_main_thread!();
4458        unsafe { ffi::gst_video_transfer_function_decode(self.into_glib(), val) }
4459    }
4460
4461    #[cfg(feature = "v1_20")]
4462    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4463    #[doc(alias = "gst_video_transfer_function_encode")]
4464    pub fn encode(self, val: f64) -> f64 {
4465        assert_initialized_main_thread!();
4466        unsafe { ffi::gst_video_transfer_function_encode(self.into_glib(), val) }
4467    }
4468
4469    #[cfg(feature = "v1_18")]
4470    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
4471    #[doc(alias = "gst_video_transfer_function_from_iso")]
4472    pub fn from_iso(value: u32) -> VideoTransferFunction {
4473        assert_initialized_main_thread!();
4474        unsafe { from_glib(ffi::gst_video_transfer_function_from_iso(value)) }
4475    }
4476
4477    #[cfg(feature = "v1_18")]
4478    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
4479    #[doc(alias = "gst_video_transfer_function_is_equivalent")]
4480    pub fn is_equivalent(self, from_bpp: u32, to_func: VideoTransferFunction, to_bpp: u32) -> bool {
4481        assert_initialized_main_thread!();
4482        unsafe {
4483            from_glib(ffi::gst_video_transfer_function_is_equivalent(
4484                self.into_glib(),
4485                from_bpp,
4486                to_func.into_glib(),
4487                to_bpp,
4488            ))
4489        }
4490    }
4491
4492    #[cfg(feature = "v1_18")]
4493    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
4494    #[doc(alias = "gst_video_transfer_function_to_iso")]
4495    pub fn to_iso(self) -> u32 {
4496        assert_initialized_main_thread!();
4497        unsafe { ffi::gst_video_transfer_function_to_iso(self.into_glib()) }
4498    }
4499}
4500
4501#[doc(hidden)]
4502impl IntoGlib for VideoTransferFunction {
4503    type GlibType = ffi::GstVideoTransferFunction;
4504
4505    fn into_glib(self) -> ffi::GstVideoTransferFunction {
4506        match self {
4507            Self::Unknown => ffi::GST_VIDEO_TRANSFER_UNKNOWN,
4508            Self::Gamma10 => ffi::GST_VIDEO_TRANSFER_GAMMA10,
4509            Self::Gamma18 => ffi::GST_VIDEO_TRANSFER_GAMMA18,
4510            Self::Gamma20 => ffi::GST_VIDEO_TRANSFER_GAMMA20,
4511            Self::Gamma22 => ffi::GST_VIDEO_TRANSFER_GAMMA22,
4512            Self::Bt709 => ffi::GST_VIDEO_TRANSFER_BT709,
4513            Self::Smpte240m => ffi::GST_VIDEO_TRANSFER_SMPTE240M,
4514            Self::Srgb => ffi::GST_VIDEO_TRANSFER_SRGB,
4515            Self::Gamma28 => ffi::GST_VIDEO_TRANSFER_GAMMA28,
4516            Self::Log100 => ffi::GST_VIDEO_TRANSFER_LOG100,
4517            Self::Log316 => ffi::GST_VIDEO_TRANSFER_LOG316,
4518            Self::Bt202012 => ffi::GST_VIDEO_TRANSFER_BT2020_12,
4519            Self::Adobergb => ffi::GST_VIDEO_TRANSFER_ADOBERGB,
4520            #[cfg(feature = "v1_18")]
4521            Self::Bt202010 => ffi::GST_VIDEO_TRANSFER_BT2020_10,
4522            #[cfg(feature = "v1_18")]
4523            Self::Smpte2084 => ffi::GST_VIDEO_TRANSFER_SMPTE2084,
4524            #[cfg(feature = "v1_18")]
4525            Self::AribStdB67 => ffi::GST_VIDEO_TRANSFER_ARIB_STD_B67,
4526            #[cfg(feature = "v1_18")]
4527            Self::Bt601 => ffi::GST_VIDEO_TRANSFER_BT601,
4528            Self::__Unknown(value) => value,
4529        }
4530    }
4531}
4532
4533#[doc(hidden)]
4534impl FromGlib<ffi::GstVideoTransferFunction> for VideoTransferFunction {
4535    unsafe fn from_glib(value: ffi::GstVideoTransferFunction) -> Self {
4536        skip_assert_initialized!();
4537
4538        match value {
4539            ffi::GST_VIDEO_TRANSFER_UNKNOWN => Self::Unknown,
4540            ffi::GST_VIDEO_TRANSFER_GAMMA10 => Self::Gamma10,
4541            ffi::GST_VIDEO_TRANSFER_GAMMA18 => Self::Gamma18,
4542            ffi::GST_VIDEO_TRANSFER_GAMMA20 => Self::Gamma20,
4543            ffi::GST_VIDEO_TRANSFER_GAMMA22 => Self::Gamma22,
4544            ffi::GST_VIDEO_TRANSFER_BT709 => Self::Bt709,
4545            ffi::GST_VIDEO_TRANSFER_SMPTE240M => Self::Smpte240m,
4546            ffi::GST_VIDEO_TRANSFER_SRGB => Self::Srgb,
4547            ffi::GST_VIDEO_TRANSFER_GAMMA28 => Self::Gamma28,
4548            ffi::GST_VIDEO_TRANSFER_LOG100 => Self::Log100,
4549            ffi::GST_VIDEO_TRANSFER_LOG316 => Self::Log316,
4550            ffi::GST_VIDEO_TRANSFER_BT2020_12 => Self::Bt202012,
4551            ffi::GST_VIDEO_TRANSFER_ADOBERGB => Self::Adobergb,
4552            #[cfg(feature = "v1_18")]
4553            ffi::GST_VIDEO_TRANSFER_BT2020_10 => Self::Bt202010,
4554            #[cfg(feature = "v1_18")]
4555            ffi::GST_VIDEO_TRANSFER_SMPTE2084 => Self::Smpte2084,
4556            #[cfg(feature = "v1_18")]
4557            ffi::GST_VIDEO_TRANSFER_ARIB_STD_B67 => Self::AribStdB67,
4558            #[cfg(feature = "v1_18")]
4559            ffi::GST_VIDEO_TRANSFER_BT601 => Self::Bt601,
4560            value => Self::__Unknown(value),
4561        }
4562    }
4563}
4564
4565impl StaticType for VideoTransferFunction {
4566    #[inline]
4567    #[doc(alias = "gst_video_transfer_function_get_type")]
4568    fn static_type() -> glib::Type {
4569        unsafe { from_glib(ffi::gst_video_transfer_function_get_type()) }
4570    }
4571}
4572
4573impl glib::HasParamSpec for VideoTransferFunction {
4574    type ParamSpec = glib::ParamSpecEnum;
4575    type SetValue = Self;
4576    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
4577
4578    fn param_spec_builder() -> Self::BuilderFn {
4579        Self::ParamSpec::builder_with_default
4580    }
4581}
4582
4583impl glib::value::ValueType for VideoTransferFunction {
4584    type Type = Self;
4585}
4586
4587unsafe impl<'a> glib::value::FromValue<'a> for VideoTransferFunction {
4588    type Checker = glib::value::GenericValueTypeChecker<Self>;
4589
4590    #[inline]
4591    unsafe fn from_value(value: &'a glib::Value) -> Self {
4592        skip_assert_initialized!();
4593        unsafe { from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0)) }
4594    }
4595}
4596
4597impl ToValue for VideoTransferFunction {
4598    #[inline]
4599    fn to_value(&self) -> glib::Value {
4600        let mut value = glib::Value::for_value_type::<Self>();
4601        unsafe {
4602            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
4603        }
4604        value
4605    }
4606
4607    #[inline]
4608    fn value_type(&self) -> glib::Type {
4609        Self::static_type()
4610    }
4611}
4612
4613impl From<VideoTransferFunction> for glib::Value {
4614    #[inline]
4615    fn from(v: VideoTransferFunction) -> Self {
4616        skip_assert_initialized!();
4617        ToValue::to_value(&v)
4618    }
4619}