gstreamer_gl/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, GLContext, GLSLProfile};
7use glib::{prelude::*, translate::*};
8
9#[cfg(feature = "v1_20")]
10#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
11#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
12#[non_exhaustive]
13#[doc(alias = "GstGLConfigCaveat")]
14pub enum GLConfigCaveat {
15    #[doc(alias = "GST_GL_CONFIG_CAVEAT_NONE")]
16    None,
17    #[doc(alias = "GST_GL_CONFIG_CAVEAT_SLOW")]
18    Slow,
19    #[doc(alias = "GST_GL_CONFIG_CAVEAT_NON_CONFORMANT")]
20    NonConformant,
21    #[doc(hidden)]
22    __Unknown(i32),
23}
24
25#[cfg(feature = "v1_20")]
26#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
27impl GLConfigCaveat {
28    #[doc(alias = "gst_gl_config_caveat_to_string")]
29    #[doc(alias = "to_string")]
30    pub fn to_str(self) -> Option<glib::GString> {
31        assert_initialized_main_thread!();
32        unsafe { from_glib_none(ffi::gst_gl_config_caveat_to_string(self.into_glib())) }
33    }
34}
35
36#[cfg(feature = "v1_20")]
37#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
38#[doc(hidden)]
39impl IntoGlib for GLConfigCaveat {
40    type GlibType = ffi::GstGLConfigCaveat;
41
42    #[inline]
43    fn into_glib(self) -> ffi::GstGLConfigCaveat {
44        match self {
45            Self::None => ffi::GST_GL_CONFIG_CAVEAT_NONE,
46            Self::Slow => ffi::GST_GL_CONFIG_CAVEAT_SLOW,
47            Self::NonConformant => ffi::GST_GL_CONFIG_CAVEAT_NON_CONFORMANT,
48            Self::__Unknown(value) => value,
49        }
50    }
51}
52
53#[cfg(feature = "v1_20")]
54#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
55#[doc(hidden)]
56impl FromGlib<ffi::GstGLConfigCaveat> for GLConfigCaveat {
57    #[inline]
58    unsafe fn from_glib(value: ffi::GstGLConfigCaveat) -> Self {
59        skip_assert_initialized!();
60
61        match value {
62            ffi::GST_GL_CONFIG_CAVEAT_NONE => Self::None,
63            ffi::GST_GL_CONFIG_CAVEAT_SLOW => Self::Slow,
64            ffi::GST_GL_CONFIG_CAVEAT_NON_CONFORMANT => Self::NonConformant,
65            value => Self::__Unknown(value),
66        }
67    }
68}
69
70#[cfg(feature = "v1_20")]
71#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
72impl StaticType for GLConfigCaveat {
73    #[inline]
74    #[doc(alias = "gst_gl_config_caveat_get_type")]
75    fn static_type() -> glib::Type {
76        unsafe { from_glib(ffi::gst_gl_config_caveat_get_type()) }
77    }
78}
79
80#[cfg(feature = "v1_20")]
81#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
82impl glib::HasParamSpec for GLConfigCaveat {
83    type ParamSpec = glib::ParamSpecEnum;
84    type SetValue = Self;
85    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
86
87    fn param_spec_builder() -> Self::BuilderFn {
88        Self::ParamSpec::builder_with_default
89    }
90}
91
92#[cfg(feature = "v1_20")]
93#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
94impl glib::value::ValueType for GLConfigCaveat {
95    type Type = Self;
96}
97
98#[cfg(feature = "v1_20")]
99#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
100unsafe impl<'a> glib::value::FromValue<'a> for GLConfigCaveat {
101    type Checker = glib::value::GenericValueTypeChecker<Self>;
102
103    #[inline]
104    unsafe fn from_value(value: &'a glib::Value) -> Self {
105        skip_assert_initialized!();
106        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
107    }
108}
109
110#[cfg(feature = "v1_20")]
111#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
112impl ToValue for GLConfigCaveat {
113    #[inline]
114    fn to_value(&self) -> glib::Value {
115        let mut value = glib::Value::for_value_type::<Self>();
116        unsafe {
117            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
118        }
119        value
120    }
121
122    #[inline]
123    fn value_type(&self) -> glib::Type {
124        Self::static_type()
125    }
126}
127
128#[cfg(feature = "v1_20")]
129#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
130impl From<GLConfigCaveat> for glib::Value {
131    #[inline]
132    fn from(v: GLConfigCaveat) -> Self {
133        skip_assert_initialized!();
134        ToValue::to_value(&v)
135    }
136}
137
138#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
139#[non_exhaustive]
140#[doc(alias = "GstGLContextError")]
141pub enum GLContextError {
142    #[doc(alias = "GST_GL_CONTEXT_ERROR_FAILED")]
143    Failed,
144    #[doc(alias = "GST_GL_CONTEXT_ERROR_WRONG_CONFIG")]
145    WrongConfig,
146    #[doc(alias = "GST_GL_CONTEXT_ERROR_WRONG_API")]
147    WrongApi,
148    #[doc(alias = "GST_GL_CONTEXT_ERROR_OLD_LIBS")]
149    OldLibs,
150    #[doc(alias = "GST_GL_CONTEXT_ERROR_CREATE_CONTEXT")]
151    CreateContext,
152    #[doc(alias = "GST_GL_CONTEXT_ERROR_RESOURCE_UNAVAILABLE")]
153    ResourceUnavailable,
154    #[doc(hidden)]
155    __Unknown(i32),
156}
157
158#[doc(hidden)]
159impl IntoGlib for GLContextError {
160    type GlibType = ffi::GstGLContextError;
161
162    #[inline]
163    fn into_glib(self) -> ffi::GstGLContextError {
164        match self {
165            Self::Failed => ffi::GST_GL_CONTEXT_ERROR_FAILED,
166            Self::WrongConfig => ffi::GST_GL_CONTEXT_ERROR_WRONG_CONFIG,
167            Self::WrongApi => ffi::GST_GL_CONTEXT_ERROR_WRONG_API,
168            Self::OldLibs => ffi::GST_GL_CONTEXT_ERROR_OLD_LIBS,
169            Self::CreateContext => ffi::GST_GL_CONTEXT_ERROR_CREATE_CONTEXT,
170            Self::ResourceUnavailable => ffi::GST_GL_CONTEXT_ERROR_RESOURCE_UNAVAILABLE,
171            Self::__Unknown(value) => value,
172        }
173    }
174}
175
176#[doc(hidden)]
177impl FromGlib<ffi::GstGLContextError> for GLContextError {
178    #[inline]
179    unsafe fn from_glib(value: ffi::GstGLContextError) -> Self {
180        skip_assert_initialized!();
181
182        match value {
183            ffi::GST_GL_CONTEXT_ERROR_FAILED => Self::Failed,
184            ffi::GST_GL_CONTEXT_ERROR_WRONG_CONFIG => Self::WrongConfig,
185            ffi::GST_GL_CONTEXT_ERROR_WRONG_API => Self::WrongApi,
186            ffi::GST_GL_CONTEXT_ERROR_OLD_LIBS => Self::OldLibs,
187            ffi::GST_GL_CONTEXT_ERROR_CREATE_CONTEXT => Self::CreateContext,
188            ffi::GST_GL_CONTEXT_ERROR_RESOURCE_UNAVAILABLE => Self::ResourceUnavailable,
189            value => Self::__Unknown(value),
190        }
191    }
192}
193
194impl glib::error::ErrorDomain for GLContextError {
195    #[inline]
196    fn domain() -> glib::Quark {
197        skip_assert_initialized!();
198
199        unsafe { from_glib(ffi::gst_gl_context_error_quark()) }
200    }
201
202    #[inline]
203    fn code(self) -> i32 {
204        self.into_glib()
205    }
206
207    #[inline]
208    #[allow(clippy::match_single_binding)]
209    fn from(code: i32) -> Option<Self> {
210        skip_assert_initialized!();
211        match unsafe { from_glib(code) } {
212            Self::__Unknown(_) => Some(Self::Failed),
213            value => Some(value),
214        }
215    }
216}
217
218impl StaticType for GLContextError {
219    #[inline]
220    #[doc(alias = "gst_gl_context_error_get_type")]
221    fn static_type() -> glib::Type {
222        unsafe { from_glib(ffi::gst_gl_context_error_get_type()) }
223    }
224}
225
226impl glib::HasParamSpec for GLContextError {
227    type ParamSpec = glib::ParamSpecEnum;
228    type SetValue = Self;
229    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
230
231    fn param_spec_builder() -> Self::BuilderFn {
232        Self::ParamSpec::builder_with_default
233    }
234}
235
236impl glib::value::ValueType for GLContextError {
237    type Type = Self;
238}
239
240unsafe impl<'a> glib::value::FromValue<'a> for GLContextError {
241    type Checker = glib::value::GenericValueTypeChecker<Self>;
242
243    #[inline]
244    unsafe fn from_value(value: &'a glib::Value) -> Self {
245        skip_assert_initialized!();
246        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
247    }
248}
249
250impl ToValue for GLContextError {
251    #[inline]
252    fn to_value(&self) -> glib::Value {
253        let mut value = glib::Value::for_value_type::<Self>();
254        unsafe {
255            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
256        }
257        value
258    }
259
260    #[inline]
261    fn value_type(&self) -> glib::Type {
262        Self::static_type()
263    }
264}
265
266impl From<GLContextError> for glib::Value {
267    #[inline]
268    fn from(v: GLContextError) -> Self {
269        skip_assert_initialized!();
270        ToValue::to_value(&v)
271    }
272}
273
274#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
275#[non_exhaustive]
276#[doc(alias = "GstGLFormat")]
277pub enum GLFormat {
278    #[doc(alias = "GST_GL_LUMINANCE")]
279    Luminance,
280    #[doc(alias = "GST_GL_ALPHA")]
281    Alpha,
282    #[doc(alias = "GST_GL_LUMINANCE_ALPHA")]
283    LuminanceAlpha,
284    #[doc(alias = "GST_GL_RED")]
285    Red,
286    #[doc(alias = "GST_GL_R8")]
287    R8,
288    #[doc(alias = "GST_GL_RG")]
289    Rg,
290    #[doc(alias = "GST_GL_RG8")]
291    Rg8,
292    #[doc(alias = "GST_GL_RGB")]
293    Rgb,
294    #[doc(alias = "GST_GL_RGB8")]
295    Rgb8,
296    #[doc(alias = "GST_GL_RGB565")]
297    Rgb565,
298    #[doc(alias = "GST_GL_RGB16")]
299    Rgb16,
300    #[doc(alias = "GST_GL_RGBA")]
301    Rgba,
302    #[doc(alias = "GST_GL_RGBA8")]
303    Rgba8,
304    #[doc(alias = "GST_GL_RGBA16")]
305    Rgba16,
306    #[doc(alias = "GST_GL_DEPTH_COMPONENT16")]
307    DepthComponent16,
308    #[doc(alias = "GST_GL_DEPTH24_STENCIL8")]
309    Depth24Stencil8,
310    #[doc(alias = "GST_GL_RGB10_A2")]
311    Rgb10A2,
312    #[doc(alias = "GST_GL_R16")]
313    R16,
314    #[doc(alias = "GST_GL_RG16")]
315    Rg16,
316    #[doc(hidden)]
317    __Unknown(i32),
318}
319
320impl GLFormat {
321    #[doc(alias = "gst_gl_format_from_video_info")]
322    pub fn from_video_info(
323        context: &impl IsA<GLContext>,
324        vinfo: &gst_video::VideoInfo,
325        plane: u32,
326    ) -> GLFormat {
327        skip_assert_initialized!();
328        unsafe {
329            from_glib(ffi::gst_gl_format_from_video_info(
330                context.as_ref().to_glib_none().0,
331                vinfo.to_glib_none().0,
332                plane,
333            ))
334        }
335    }
336
337    #[cfg(feature = "v1_16")]
338    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
339    #[doc(alias = "gst_gl_format_is_supported")]
340    pub fn is_supported(context: &impl IsA<GLContext>, format: GLFormat) -> bool {
341        skip_assert_initialized!();
342        unsafe {
343            from_glib(ffi::gst_gl_format_is_supported(
344                context.as_ref().to_glib_none().0,
345                format.into_glib(),
346            ))
347        }
348    }
349
350    #[cfg(feature = "v1_24")]
351    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
352    #[doc(alias = "gst_gl_format_n_components")]
353    pub fn n_components(self) -> u32 {
354        assert_initialized_main_thread!();
355        unsafe { ffi::gst_gl_format_n_components(self.into_glib()) }
356    }
357
358    #[cfg(feature = "v1_16")]
359    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
360    #[doc(alias = "gst_gl_format_type_from_sized_gl_format")]
361    pub fn type_from_sized_gl_format(self) -> (GLFormat, u32) {
362        assert_initialized_main_thread!();
363        unsafe {
364            let mut unsized_format = std::mem::MaybeUninit::uninit();
365            let mut gl_type = std::mem::MaybeUninit::uninit();
366            ffi::gst_gl_format_type_from_sized_gl_format(
367                self.into_glib(),
368                unsized_format.as_mut_ptr(),
369                gl_type.as_mut_ptr(),
370            );
371            (
372                from_glib(unsized_format.assume_init()),
373                gl_type.assume_init(),
374            )
375        }
376    }
377
378    #[doc(alias = "gst_gl_format_type_n_bytes")]
379    pub fn type_n_bytes(format: u32, type_: u32) -> u32 {
380        assert_initialized_main_thread!();
381        unsafe { ffi::gst_gl_format_type_n_bytes(format, type_) }
382    }
383}
384
385#[doc(hidden)]
386impl IntoGlib for GLFormat {
387    type GlibType = ffi::GstGLFormat;
388
389    fn into_glib(self) -> ffi::GstGLFormat {
390        match self {
391            Self::Luminance => ffi::GST_GL_LUMINANCE,
392            Self::Alpha => ffi::GST_GL_ALPHA,
393            Self::LuminanceAlpha => ffi::GST_GL_LUMINANCE_ALPHA,
394            Self::Red => ffi::GST_GL_RED,
395            Self::R8 => ffi::GST_GL_R8,
396            Self::Rg => ffi::GST_GL_RG,
397            Self::Rg8 => ffi::GST_GL_RG8,
398            Self::Rgb => ffi::GST_GL_RGB,
399            Self::Rgb8 => ffi::GST_GL_RGB8,
400            Self::Rgb565 => ffi::GST_GL_RGB565,
401            Self::Rgb16 => ffi::GST_GL_RGB16,
402            Self::Rgba => ffi::GST_GL_RGBA,
403            Self::Rgba8 => ffi::GST_GL_RGBA8,
404            Self::Rgba16 => ffi::GST_GL_RGBA16,
405            Self::DepthComponent16 => ffi::GST_GL_DEPTH_COMPONENT16,
406            Self::Depth24Stencil8 => ffi::GST_GL_DEPTH24_STENCIL8,
407            Self::Rgb10A2 => ffi::GST_GL_RGB10_A2,
408            Self::R16 => ffi::GST_GL_R16,
409            Self::Rg16 => ffi::GST_GL_RG16,
410            Self::__Unknown(value) => value,
411        }
412    }
413}
414
415#[doc(hidden)]
416impl FromGlib<ffi::GstGLFormat> for GLFormat {
417    unsafe fn from_glib(value: ffi::GstGLFormat) -> Self {
418        skip_assert_initialized!();
419
420        match value {
421            ffi::GST_GL_LUMINANCE => Self::Luminance,
422            ffi::GST_GL_ALPHA => Self::Alpha,
423            ffi::GST_GL_LUMINANCE_ALPHA => Self::LuminanceAlpha,
424            ffi::GST_GL_RED => Self::Red,
425            ffi::GST_GL_R8 => Self::R8,
426            ffi::GST_GL_RG => Self::Rg,
427            ffi::GST_GL_RG8 => Self::Rg8,
428            ffi::GST_GL_RGB => Self::Rgb,
429            ffi::GST_GL_RGB8 => Self::Rgb8,
430            ffi::GST_GL_RGB565 => Self::Rgb565,
431            ffi::GST_GL_RGB16 => Self::Rgb16,
432            ffi::GST_GL_RGBA => Self::Rgba,
433            ffi::GST_GL_RGBA8 => Self::Rgba8,
434            ffi::GST_GL_RGBA16 => Self::Rgba16,
435            ffi::GST_GL_DEPTH_COMPONENT16 => Self::DepthComponent16,
436            ffi::GST_GL_DEPTH24_STENCIL8 => Self::Depth24Stencil8,
437            ffi::GST_GL_RGB10_A2 => Self::Rgb10A2,
438            ffi::GST_GL_R16 => Self::R16,
439            ffi::GST_GL_RG16 => Self::Rg16,
440            value => Self::__Unknown(value),
441        }
442    }
443}
444
445impl StaticType for GLFormat {
446    #[inline]
447    #[doc(alias = "gst_gl_format_get_type")]
448    fn static_type() -> glib::Type {
449        unsafe { from_glib(ffi::gst_gl_format_get_type()) }
450    }
451}
452
453impl glib::HasParamSpec for GLFormat {
454    type ParamSpec = glib::ParamSpecEnum;
455    type SetValue = Self;
456    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
457
458    fn param_spec_builder() -> Self::BuilderFn {
459        Self::ParamSpec::builder_with_default
460    }
461}
462
463impl glib::value::ValueType for GLFormat {
464    type Type = Self;
465}
466
467unsafe impl<'a> glib::value::FromValue<'a> for GLFormat {
468    type Checker = glib::value::GenericValueTypeChecker<Self>;
469
470    #[inline]
471    unsafe fn from_value(value: &'a glib::Value) -> Self {
472        skip_assert_initialized!();
473        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
474    }
475}
476
477impl ToValue for GLFormat {
478    #[inline]
479    fn to_value(&self) -> glib::Value {
480        let mut value = glib::Value::for_value_type::<Self>();
481        unsafe {
482            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
483        }
484        value
485    }
486
487    #[inline]
488    fn value_type(&self) -> glib::Type {
489        Self::static_type()
490    }
491}
492
493impl From<GLFormat> for glib::Value {
494    #[inline]
495    fn from(v: GLFormat) -> Self {
496        skip_assert_initialized!();
497        ToValue::to_value(&v)
498    }
499}
500
501#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
502#[non_exhaustive]
503#[doc(alias = "GstGLQueryType")]
504pub enum GLQueryType {
505    #[doc(alias = "GST_GL_QUERY_NONE")]
506    None,
507    #[doc(alias = "GST_GL_QUERY_TIME_ELAPSED")]
508    TimeElapsed,
509    #[doc(alias = "GST_GL_QUERY_TIMESTAMP")]
510    Timestamp,
511    #[doc(hidden)]
512    __Unknown(i32),
513}
514
515#[doc(hidden)]
516impl IntoGlib for GLQueryType {
517    type GlibType = ffi::GstGLQueryType;
518
519    #[inline]
520    fn into_glib(self) -> ffi::GstGLQueryType {
521        match self {
522            Self::None => ffi::GST_GL_QUERY_NONE,
523            Self::TimeElapsed => ffi::GST_GL_QUERY_TIME_ELAPSED,
524            Self::Timestamp => ffi::GST_GL_QUERY_TIMESTAMP,
525            Self::__Unknown(value) => value,
526        }
527    }
528}
529
530#[doc(hidden)]
531impl FromGlib<ffi::GstGLQueryType> for GLQueryType {
532    #[inline]
533    unsafe fn from_glib(value: ffi::GstGLQueryType) -> Self {
534        skip_assert_initialized!();
535
536        match value {
537            ffi::GST_GL_QUERY_NONE => Self::None,
538            ffi::GST_GL_QUERY_TIME_ELAPSED => Self::TimeElapsed,
539            ffi::GST_GL_QUERY_TIMESTAMP => Self::Timestamp,
540            value => Self::__Unknown(value),
541        }
542    }
543}
544
545impl StaticType for GLQueryType {
546    #[inline]
547    #[doc(alias = "gst_gl_query_type_get_type")]
548    fn static_type() -> glib::Type {
549        unsafe { from_glib(ffi::gst_gl_query_type_get_type()) }
550    }
551}
552
553impl glib::HasParamSpec for GLQueryType {
554    type ParamSpec = glib::ParamSpecEnum;
555    type SetValue = Self;
556    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
557
558    fn param_spec_builder() -> Self::BuilderFn {
559        Self::ParamSpec::builder_with_default
560    }
561}
562
563impl glib::value::ValueType for GLQueryType {
564    type Type = Self;
565}
566
567unsafe impl<'a> glib::value::FromValue<'a> for GLQueryType {
568    type Checker = glib::value::GenericValueTypeChecker<Self>;
569
570    #[inline]
571    unsafe fn from_value(value: &'a glib::Value) -> Self {
572        skip_assert_initialized!();
573        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
574    }
575}
576
577impl ToValue for GLQueryType {
578    #[inline]
579    fn to_value(&self) -> glib::Value {
580        let mut value = glib::Value::for_value_type::<Self>();
581        unsafe {
582            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
583        }
584        value
585    }
586
587    #[inline]
588    fn value_type(&self) -> glib::Type {
589        Self::static_type()
590    }
591}
592
593impl From<GLQueryType> for glib::Value {
594    #[inline]
595    fn from(v: GLQueryType) -> Self {
596        skip_assert_initialized!();
597        ToValue::to_value(&v)
598    }
599}
600
601#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
602#[non_exhaustive]
603#[doc(alias = "GstGLSLError")]
604pub enum GLSLError {
605    #[doc(alias = "GST_GLSL_ERROR_COMPILE")]
606    Compile,
607    #[doc(alias = "GST_GLSL_ERROR_LINK")]
608    Link,
609    #[doc(alias = "GST_GLSL_ERROR_PROGRAM")]
610    Program,
611    #[doc(hidden)]
612    __Unknown(i32),
613}
614
615#[doc(hidden)]
616impl IntoGlib for GLSLError {
617    type GlibType = ffi::GstGLSLError;
618
619    #[inline]
620    fn into_glib(self) -> ffi::GstGLSLError {
621        match self {
622            Self::Compile => ffi::GST_GLSL_ERROR_COMPILE,
623            Self::Link => ffi::GST_GLSL_ERROR_LINK,
624            Self::Program => ffi::GST_GLSL_ERROR_PROGRAM,
625            Self::__Unknown(value) => value,
626        }
627    }
628}
629
630#[doc(hidden)]
631impl FromGlib<ffi::GstGLSLError> for GLSLError {
632    #[inline]
633    unsafe fn from_glib(value: ffi::GstGLSLError) -> Self {
634        skip_assert_initialized!();
635
636        match value {
637            ffi::GST_GLSL_ERROR_COMPILE => Self::Compile,
638            ffi::GST_GLSL_ERROR_LINK => Self::Link,
639            ffi::GST_GLSL_ERROR_PROGRAM => Self::Program,
640            value => Self::__Unknown(value),
641        }
642    }
643}
644
645impl glib::error::ErrorDomain for GLSLError {
646    #[inline]
647    fn domain() -> glib::Quark {
648        skip_assert_initialized!();
649
650        unsafe { from_glib(ffi::gst_glsl_error_quark()) }
651    }
652
653    #[inline]
654    fn code(self) -> i32 {
655        self.into_glib()
656    }
657
658    #[inline]
659    #[allow(clippy::match_single_binding)]
660    fn from(code: i32) -> Option<Self> {
661        skip_assert_initialized!();
662        match unsafe { from_glib(code) } {
663            value => Some(value),
664        }
665    }
666}
667
668impl StaticType for GLSLError {
669    #[inline]
670    #[doc(alias = "gst_glsl_error_get_type")]
671    fn static_type() -> glib::Type {
672        unsafe { from_glib(ffi::gst_glsl_error_get_type()) }
673    }
674}
675
676impl glib::HasParamSpec for GLSLError {
677    type ParamSpec = glib::ParamSpecEnum;
678    type SetValue = Self;
679    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
680
681    fn param_spec_builder() -> Self::BuilderFn {
682        Self::ParamSpec::builder_with_default
683    }
684}
685
686impl glib::value::ValueType for GLSLError {
687    type Type = Self;
688}
689
690unsafe impl<'a> glib::value::FromValue<'a> for GLSLError {
691    type Checker = glib::value::GenericValueTypeChecker<Self>;
692
693    #[inline]
694    unsafe fn from_value(value: &'a glib::Value) -> Self {
695        skip_assert_initialized!();
696        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
697    }
698}
699
700impl ToValue for GLSLError {
701    #[inline]
702    fn to_value(&self) -> glib::Value {
703        let mut value = glib::Value::for_value_type::<Self>();
704        unsafe {
705            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
706        }
707        value
708    }
709
710    #[inline]
711    fn value_type(&self) -> glib::Type {
712        Self::static_type()
713    }
714}
715
716impl From<GLSLError> for glib::Value {
717    #[inline]
718    fn from(v: GLSLError) -> Self {
719        skip_assert_initialized!();
720        ToValue::to_value(&v)
721    }
722}
723
724#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
725#[non_exhaustive]
726#[doc(alias = "GstGLSLVersion")]
727pub enum GLSLVersion {
728    #[doc(alias = "GST_GLSL_VERSION_NONE")]
729    None,
730    #[doc(alias = "GST_GLSL_VERSION_100")]
731    _100,
732    #[doc(alias = "GST_GLSL_VERSION_110")]
733    _110,
734    #[doc(alias = "GST_GLSL_VERSION_120")]
735    _120,
736    #[doc(alias = "GST_GLSL_VERSION_130")]
737    _130,
738    #[doc(alias = "GST_GLSL_VERSION_140")]
739    _140,
740    #[doc(alias = "GST_GLSL_VERSION_150")]
741    _150,
742    #[doc(alias = "GST_GLSL_VERSION_300")]
743    _300,
744    #[doc(alias = "GST_GLSL_VERSION_310")]
745    _310,
746    #[doc(alias = "GST_GLSL_VERSION_320")]
747    _320,
748    #[doc(alias = "GST_GLSL_VERSION_330")]
749    _330,
750    #[doc(alias = "GST_GLSL_VERSION_400")]
751    _400,
752    #[doc(alias = "GST_GLSL_VERSION_410")]
753    _410,
754    #[doc(alias = "GST_GLSL_VERSION_420")]
755    _420,
756    #[doc(alias = "GST_GLSL_VERSION_430")]
757    _430,
758    #[doc(alias = "GST_GLSL_VERSION_440")]
759    _440,
760    #[doc(alias = "GST_GLSL_VERSION_450")]
761    _450,
762    #[doc(hidden)]
763    __Unknown(i32),
764}
765
766impl GLSLVersion {
767    #[doc(alias = "gst_glsl_version_from_string")]
768    pub fn from_string(string: &str) -> GLSLVersion {
769        assert_initialized_main_thread!();
770        unsafe { from_glib(ffi::gst_glsl_version_from_string(string.to_glib_none().0)) }
771    }
772
773    #[doc(alias = "gst_glsl_version_profile_from_string")]
774    pub fn profile_from_string(string: &str) -> Option<(GLSLVersion, GLSLProfile)> {
775        assert_initialized_main_thread!();
776        unsafe {
777            let mut version_ret = std::mem::MaybeUninit::uninit();
778            let mut profile_ret = std::mem::MaybeUninit::uninit();
779            let ret = from_glib(ffi::gst_glsl_version_profile_from_string(
780                string.to_glib_none().0,
781                version_ret.as_mut_ptr(),
782                profile_ret.as_mut_ptr(),
783            ));
784            if ret {
785                Some((
786                    from_glib(version_ret.assume_init()),
787                    from_glib(profile_ret.assume_init()),
788                ))
789            } else {
790                None
791            }
792        }
793    }
794
795    #[doc(alias = "gst_glsl_version_profile_to_string")]
796    pub fn profile_to_string(self, profile: GLSLProfile) -> Option<glib::GString> {
797        assert_initialized_main_thread!();
798        unsafe {
799            from_glib_full(ffi::gst_glsl_version_profile_to_string(
800                self.into_glib(),
801                profile.into_glib(),
802            ))
803        }
804    }
805
806    #[doc(alias = "gst_glsl_version_to_string")]
807    #[doc(alias = "to_string")]
808    pub fn to_str(self) -> Option<glib::GString> {
809        assert_initialized_main_thread!();
810        unsafe { from_glib_none(ffi::gst_glsl_version_to_string(self.into_glib())) }
811    }
812}
813
814#[doc(hidden)]
815impl IntoGlib for GLSLVersion {
816    type GlibType = ffi::GstGLSLVersion;
817
818    fn into_glib(self) -> ffi::GstGLSLVersion {
819        match self {
820            Self::None => ffi::GST_GLSL_VERSION_NONE,
821            Self::_100 => ffi::GST_GLSL_VERSION_100,
822            Self::_110 => ffi::GST_GLSL_VERSION_110,
823            Self::_120 => ffi::GST_GLSL_VERSION_120,
824            Self::_130 => ffi::GST_GLSL_VERSION_130,
825            Self::_140 => ffi::GST_GLSL_VERSION_140,
826            Self::_150 => ffi::GST_GLSL_VERSION_150,
827            Self::_300 => ffi::GST_GLSL_VERSION_300,
828            Self::_310 => ffi::GST_GLSL_VERSION_310,
829            Self::_320 => ffi::GST_GLSL_VERSION_320,
830            Self::_330 => ffi::GST_GLSL_VERSION_330,
831            Self::_400 => ffi::GST_GLSL_VERSION_400,
832            Self::_410 => ffi::GST_GLSL_VERSION_410,
833            Self::_420 => ffi::GST_GLSL_VERSION_420,
834            Self::_430 => ffi::GST_GLSL_VERSION_430,
835            Self::_440 => ffi::GST_GLSL_VERSION_440,
836            Self::_450 => ffi::GST_GLSL_VERSION_450,
837            Self::__Unknown(value) => value,
838        }
839    }
840}
841
842#[doc(hidden)]
843impl FromGlib<ffi::GstGLSLVersion> for GLSLVersion {
844    unsafe fn from_glib(value: ffi::GstGLSLVersion) -> Self {
845        skip_assert_initialized!();
846
847        match value {
848            ffi::GST_GLSL_VERSION_NONE => Self::None,
849            ffi::GST_GLSL_VERSION_100 => Self::_100,
850            ffi::GST_GLSL_VERSION_110 => Self::_110,
851            ffi::GST_GLSL_VERSION_120 => Self::_120,
852            ffi::GST_GLSL_VERSION_130 => Self::_130,
853            ffi::GST_GLSL_VERSION_140 => Self::_140,
854            ffi::GST_GLSL_VERSION_150 => Self::_150,
855            ffi::GST_GLSL_VERSION_300 => Self::_300,
856            ffi::GST_GLSL_VERSION_310 => Self::_310,
857            ffi::GST_GLSL_VERSION_320 => Self::_320,
858            ffi::GST_GLSL_VERSION_330 => Self::_330,
859            ffi::GST_GLSL_VERSION_400 => Self::_400,
860            ffi::GST_GLSL_VERSION_410 => Self::_410,
861            ffi::GST_GLSL_VERSION_420 => Self::_420,
862            ffi::GST_GLSL_VERSION_430 => Self::_430,
863            ffi::GST_GLSL_VERSION_440 => Self::_440,
864            ffi::GST_GLSL_VERSION_450 => Self::_450,
865            value => Self::__Unknown(value),
866        }
867    }
868}
869
870impl StaticType for GLSLVersion {
871    #[inline]
872    #[doc(alias = "gst_glsl_version_get_type")]
873    fn static_type() -> glib::Type {
874        unsafe { from_glib(ffi::gst_glsl_version_get_type()) }
875    }
876}
877
878impl glib::HasParamSpec for GLSLVersion {
879    type ParamSpec = glib::ParamSpecEnum;
880    type SetValue = Self;
881    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
882
883    fn param_spec_builder() -> Self::BuilderFn {
884        Self::ParamSpec::builder_with_default
885    }
886}
887
888impl glib::value::ValueType for GLSLVersion {
889    type Type = Self;
890}
891
892unsafe impl<'a> glib::value::FromValue<'a> for GLSLVersion {
893    type Checker = glib::value::GenericValueTypeChecker<Self>;
894
895    #[inline]
896    unsafe fn from_value(value: &'a glib::Value) -> Self {
897        skip_assert_initialized!();
898        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
899    }
900}
901
902impl ToValue for GLSLVersion {
903    #[inline]
904    fn to_value(&self) -> glib::Value {
905        let mut value = glib::Value::for_value_type::<Self>();
906        unsafe {
907            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
908        }
909        value
910    }
911
912    #[inline]
913    fn value_type(&self) -> glib::Type {
914        Self::static_type()
915    }
916}
917
918impl From<GLSLVersion> for glib::Value {
919    #[inline]
920    fn from(v: GLSLVersion) -> Self {
921        skip_assert_initialized!();
922        ToValue::to_value(&v)
923    }
924}
925
926#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
927#[non_exhaustive]
928#[doc(alias = "GstGLStereoDownmix")]
929pub enum GLStereoDownmix {
930    #[doc(alias = "GST_GL_STEREO_DOWNMIX_ANAGLYPH_GREEN_MAGENTA_DUBOIS")]
931    GreenMagentaDubois,
932    #[doc(alias = "GST_GL_STEREO_DOWNMIX_ANAGLYPH_RED_CYAN_DUBOIS")]
933    RedCyanDubois,
934    #[doc(alias = "GST_GL_STEREO_DOWNMIX_ANAGLYPH_AMBER_BLUE_DUBOIS")]
935    AmberBlueDubois,
936    #[doc(hidden)]
937    __Unknown(i32),
938}
939
940#[doc(hidden)]
941impl IntoGlib for GLStereoDownmix {
942    type GlibType = ffi::GstGLStereoDownmix;
943
944    #[inline]
945    fn into_glib(self) -> ffi::GstGLStereoDownmix {
946        match self {
947            Self::GreenMagentaDubois => ffi::GST_GL_STEREO_DOWNMIX_ANAGLYPH_GREEN_MAGENTA_DUBOIS,
948            Self::RedCyanDubois => ffi::GST_GL_STEREO_DOWNMIX_ANAGLYPH_RED_CYAN_DUBOIS,
949            Self::AmberBlueDubois => ffi::GST_GL_STEREO_DOWNMIX_ANAGLYPH_AMBER_BLUE_DUBOIS,
950            Self::__Unknown(value) => value,
951        }
952    }
953}
954
955#[doc(hidden)]
956impl FromGlib<ffi::GstGLStereoDownmix> for GLStereoDownmix {
957    #[inline]
958    unsafe fn from_glib(value: ffi::GstGLStereoDownmix) -> Self {
959        skip_assert_initialized!();
960
961        match value {
962            ffi::GST_GL_STEREO_DOWNMIX_ANAGLYPH_GREEN_MAGENTA_DUBOIS => Self::GreenMagentaDubois,
963            ffi::GST_GL_STEREO_DOWNMIX_ANAGLYPH_RED_CYAN_DUBOIS => Self::RedCyanDubois,
964            ffi::GST_GL_STEREO_DOWNMIX_ANAGLYPH_AMBER_BLUE_DUBOIS => Self::AmberBlueDubois,
965            value => Self::__Unknown(value),
966        }
967    }
968}
969
970impl StaticType for GLStereoDownmix {
971    #[inline]
972    #[doc(alias = "gst_gl_stereo_downmix_get_type")]
973    fn static_type() -> glib::Type {
974        unsafe { from_glib(ffi::gst_gl_stereo_downmix_get_type()) }
975    }
976}
977
978impl glib::HasParamSpec for GLStereoDownmix {
979    type ParamSpec = glib::ParamSpecEnum;
980    type SetValue = Self;
981    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
982
983    fn param_spec_builder() -> Self::BuilderFn {
984        Self::ParamSpec::builder_with_default
985    }
986}
987
988impl glib::value::ValueType for GLStereoDownmix {
989    type Type = Self;
990}
991
992unsafe impl<'a> glib::value::FromValue<'a> for GLStereoDownmix {
993    type Checker = glib::value::GenericValueTypeChecker<Self>;
994
995    #[inline]
996    unsafe fn from_value(value: &'a glib::Value) -> Self {
997        skip_assert_initialized!();
998        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
999    }
1000}
1001
1002impl ToValue for GLStereoDownmix {
1003    #[inline]
1004    fn to_value(&self) -> glib::Value {
1005        let mut value = glib::Value::for_value_type::<Self>();
1006        unsafe {
1007            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1008        }
1009        value
1010    }
1011
1012    #[inline]
1013    fn value_type(&self) -> glib::Type {
1014        Self::static_type()
1015    }
1016}
1017
1018impl From<GLStereoDownmix> for glib::Value {
1019    #[inline]
1020    fn from(v: GLStereoDownmix) -> Self {
1021        skip_assert_initialized!();
1022        ToValue::to_value(&v)
1023    }
1024}
1025
1026#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1027#[non_exhaustive]
1028#[doc(alias = "GstGLTextureTarget")]
1029pub enum GLTextureTarget {
1030    #[doc(alias = "GST_GL_TEXTURE_TARGET_NONE")]
1031    None,
1032    #[doc(alias = "GST_GL_TEXTURE_TARGET_2D")]
1033    _2d,
1034    #[doc(alias = "GST_GL_TEXTURE_TARGET_RECTANGLE")]
1035    Rectangle,
1036    #[doc(alias = "GST_GL_TEXTURE_TARGET_EXTERNAL_OES")]
1037    ExternalOes,
1038    #[doc(hidden)]
1039    __Unknown(i32),
1040}
1041
1042impl GLTextureTarget {
1043    #[doc(alias = "gst_gl_texture_target_from_gl")]
1044    pub fn from_gl(target: u32) -> GLTextureTarget {
1045        assert_initialized_main_thread!();
1046        unsafe { from_glib(ffi::gst_gl_texture_target_from_gl(target)) }
1047    }
1048
1049    #[doc(alias = "gst_gl_texture_target_from_string")]
1050    pub fn from_string(str: &str) -> GLTextureTarget {
1051        assert_initialized_main_thread!();
1052        unsafe { from_glib(ffi::gst_gl_texture_target_from_string(str.to_glib_none().0)) }
1053    }
1054
1055    #[doc(alias = "gst_gl_texture_target_to_buffer_pool_option")]
1056    pub fn to_buffer_pool_option(self) -> Option<glib::GString> {
1057        assert_initialized_main_thread!();
1058        unsafe {
1059            from_glib_none(ffi::gst_gl_texture_target_to_buffer_pool_option(
1060                self.into_glib(),
1061            ))
1062        }
1063    }
1064
1065    #[doc(alias = "gst_gl_texture_target_to_gl")]
1066    pub fn to_gl(self) -> u32 {
1067        assert_initialized_main_thread!();
1068        unsafe { ffi::gst_gl_texture_target_to_gl(self.into_glib()) }
1069    }
1070
1071    #[doc(alias = "gst_gl_texture_target_to_string")]
1072    #[doc(alias = "to_string")]
1073    pub fn to_str(self) -> Option<glib::GString> {
1074        assert_initialized_main_thread!();
1075        unsafe { from_glib_none(ffi::gst_gl_texture_target_to_string(self.into_glib())) }
1076    }
1077}
1078
1079#[doc(hidden)]
1080impl IntoGlib for GLTextureTarget {
1081    type GlibType = ffi::GstGLTextureTarget;
1082
1083    #[inline]
1084    fn into_glib(self) -> ffi::GstGLTextureTarget {
1085        match self {
1086            Self::None => ffi::GST_GL_TEXTURE_TARGET_NONE,
1087            Self::_2d => ffi::GST_GL_TEXTURE_TARGET_2D,
1088            Self::Rectangle => ffi::GST_GL_TEXTURE_TARGET_RECTANGLE,
1089            Self::ExternalOes => ffi::GST_GL_TEXTURE_TARGET_EXTERNAL_OES,
1090            Self::__Unknown(value) => value,
1091        }
1092    }
1093}
1094
1095#[doc(hidden)]
1096impl FromGlib<ffi::GstGLTextureTarget> for GLTextureTarget {
1097    #[inline]
1098    unsafe fn from_glib(value: ffi::GstGLTextureTarget) -> Self {
1099        skip_assert_initialized!();
1100
1101        match value {
1102            ffi::GST_GL_TEXTURE_TARGET_NONE => Self::None,
1103            ffi::GST_GL_TEXTURE_TARGET_2D => Self::_2d,
1104            ffi::GST_GL_TEXTURE_TARGET_RECTANGLE => Self::Rectangle,
1105            ffi::GST_GL_TEXTURE_TARGET_EXTERNAL_OES => Self::ExternalOes,
1106            value => Self::__Unknown(value),
1107        }
1108    }
1109}
1110
1111impl StaticType for GLTextureTarget {
1112    #[inline]
1113    #[doc(alias = "gst_gl_texture_target_get_type")]
1114    fn static_type() -> glib::Type {
1115        unsafe { from_glib(ffi::gst_gl_texture_target_get_type()) }
1116    }
1117}
1118
1119impl glib::HasParamSpec for GLTextureTarget {
1120    type ParamSpec = glib::ParamSpecEnum;
1121    type SetValue = Self;
1122    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1123
1124    fn param_spec_builder() -> Self::BuilderFn {
1125        Self::ParamSpec::builder_with_default
1126    }
1127}
1128
1129impl glib::value::ValueType for GLTextureTarget {
1130    type Type = Self;
1131}
1132
1133unsafe impl<'a> glib::value::FromValue<'a> for GLTextureTarget {
1134    type Checker = glib::value::GenericValueTypeChecker<Self>;
1135
1136    #[inline]
1137    unsafe fn from_value(value: &'a glib::Value) -> Self {
1138        skip_assert_initialized!();
1139        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1140    }
1141}
1142
1143impl ToValue for GLTextureTarget {
1144    #[inline]
1145    fn to_value(&self) -> glib::Value {
1146        let mut value = glib::Value::for_value_type::<Self>();
1147        unsafe {
1148            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1149        }
1150        value
1151    }
1152
1153    #[inline]
1154    fn value_type(&self) -> glib::Type {
1155        Self::static_type()
1156    }
1157}
1158
1159impl From<GLTextureTarget> for glib::Value {
1160    #[inline]
1161    fn from(v: GLTextureTarget) -> Self {
1162        skip_assert_initialized!();
1163        ToValue::to_value(&v)
1164    }
1165}
1166
1167#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1168#[non_exhaustive]
1169#[doc(alias = "GstGLUploadReturn")]
1170pub enum GLUploadReturn {
1171    #[doc(alias = "GST_GL_UPLOAD_DONE")]
1172    Done,
1173    #[doc(alias = "GST_GL_UPLOAD_ERROR")]
1174    Error,
1175    #[doc(alias = "GST_GL_UPLOAD_UNSUPPORTED")]
1176    Unsupported,
1177    #[doc(alias = "GST_GL_UPLOAD_RECONFIGURE")]
1178    Reconfigure,
1179    #[doc(alias = "GST_GL_UPLOAD_UNSHARED_GL_CONTEXT")]
1180    UnsharedGlContext,
1181    #[doc(hidden)]
1182    __Unknown(i32),
1183}
1184
1185#[doc(hidden)]
1186impl IntoGlib for GLUploadReturn {
1187    type GlibType = ffi::GstGLUploadReturn;
1188
1189    #[inline]
1190    fn into_glib(self) -> ffi::GstGLUploadReturn {
1191        match self {
1192            Self::Done => ffi::GST_GL_UPLOAD_DONE,
1193            Self::Error => ffi::GST_GL_UPLOAD_ERROR,
1194            Self::Unsupported => ffi::GST_GL_UPLOAD_UNSUPPORTED,
1195            Self::Reconfigure => ffi::GST_GL_UPLOAD_RECONFIGURE,
1196            Self::UnsharedGlContext => ffi::GST_GL_UPLOAD_UNSHARED_GL_CONTEXT,
1197            Self::__Unknown(value) => value,
1198        }
1199    }
1200}
1201
1202#[doc(hidden)]
1203impl FromGlib<ffi::GstGLUploadReturn> for GLUploadReturn {
1204    #[inline]
1205    unsafe fn from_glib(value: ffi::GstGLUploadReturn) -> Self {
1206        skip_assert_initialized!();
1207
1208        match value {
1209            ffi::GST_GL_UPLOAD_DONE => Self::Done,
1210            ffi::GST_GL_UPLOAD_ERROR => Self::Error,
1211            ffi::GST_GL_UPLOAD_UNSUPPORTED => Self::Unsupported,
1212            ffi::GST_GL_UPLOAD_RECONFIGURE => Self::Reconfigure,
1213            ffi::GST_GL_UPLOAD_UNSHARED_GL_CONTEXT => Self::UnsharedGlContext,
1214            value => Self::__Unknown(value),
1215        }
1216    }
1217}
1218
1219impl StaticType for GLUploadReturn {
1220    #[inline]
1221    #[doc(alias = "gst_gl_upload_return_get_type")]
1222    fn static_type() -> glib::Type {
1223        unsafe { from_glib(ffi::gst_gl_upload_return_get_type()) }
1224    }
1225}
1226
1227impl glib::HasParamSpec for GLUploadReturn {
1228    type ParamSpec = glib::ParamSpecEnum;
1229    type SetValue = Self;
1230    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1231
1232    fn param_spec_builder() -> Self::BuilderFn {
1233        Self::ParamSpec::builder_with_default
1234    }
1235}
1236
1237impl glib::value::ValueType for GLUploadReturn {
1238    type Type = Self;
1239}
1240
1241unsafe impl<'a> glib::value::FromValue<'a> for GLUploadReturn {
1242    type Checker = glib::value::GenericValueTypeChecker<Self>;
1243
1244    #[inline]
1245    unsafe fn from_value(value: &'a glib::Value) -> Self {
1246        skip_assert_initialized!();
1247        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1248    }
1249}
1250
1251impl ToValue for GLUploadReturn {
1252    #[inline]
1253    fn to_value(&self) -> glib::Value {
1254        let mut value = glib::Value::for_value_type::<Self>();
1255        unsafe {
1256            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1257        }
1258        value
1259    }
1260
1261    #[inline]
1262    fn value_type(&self) -> glib::Type {
1263        Self::static_type()
1264    }
1265}
1266
1267impl From<GLUploadReturn> for glib::Value {
1268    #[inline]
1269    fn from(v: GLUploadReturn) -> Self {
1270        skip_assert_initialized!();
1271        ToValue::to_value(&v)
1272    }
1273}
1274
1275#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1276#[non_exhaustive]
1277#[doc(alias = "GstGLWindowError")]
1278pub enum GLWindowError {
1279    #[doc(alias = "GST_GL_WINDOW_ERROR_FAILED")]
1280    Failed,
1281    #[doc(alias = "GST_GL_WINDOW_ERROR_OLD_LIBS")]
1282    OldLibs,
1283    #[doc(alias = "GST_GL_WINDOW_ERROR_RESOURCE_UNAVAILABLE")]
1284    ResourceUnavailable,
1285    #[doc(hidden)]
1286    __Unknown(i32),
1287}
1288
1289#[doc(hidden)]
1290impl IntoGlib for GLWindowError {
1291    type GlibType = ffi::GstGLWindowError;
1292
1293    #[inline]
1294    fn into_glib(self) -> ffi::GstGLWindowError {
1295        match self {
1296            Self::Failed => ffi::GST_GL_WINDOW_ERROR_FAILED,
1297            Self::OldLibs => ffi::GST_GL_WINDOW_ERROR_OLD_LIBS,
1298            Self::ResourceUnavailable => ffi::GST_GL_WINDOW_ERROR_RESOURCE_UNAVAILABLE,
1299            Self::__Unknown(value) => value,
1300        }
1301    }
1302}
1303
1304#[doc(hidden)]
1305impl FromGlib<ffi::GstGLWindowError> for GLWindowError {
1306    #[inline]
1307    unsafe fn from_glib(value: ffi::GstGLWindowError) -> Self {
1308        skip_assert_initialized!();
1309
1310        match value {
1311            ffi::GST_GL_WINDOW_ERROR_FAILED => Self::Failed,
1312            ffi::GST_GL_WINDOW_ERROR_OLD_LIBS => Self::OldLibs,
1313            ffi::GST_GL_WINDOW_ERROR_RESOURCE_UNAVAILABLE => Self::ResourceUnavailable,
1314            value => Self::__Unknown(value),
1315        }
1316    }
1317}
1318
1319impl glib::error::ErrorDomain for GLWindowError {
1320    #[inline]
1321    fn domain() -> glib::Quark {
1322        skip_assert_initialized!();
1323
1324        unsafe { from_glib(ffi::gst_gl_window_error_quark()) }
1325    }
1326
1327    #[inline]
1328    fn code(self) -> i32 {
1329        self.into_glib()
1330    }
1331
1332    #[inline]
1333    #[allow(clippy::match_single_binding)]
1334    fn from(code: i32) -> Option<Self> {
1335        skip_assert_initialized!();
1336        match unsafe { from_glib(code) } {
1337            Self::__Unknown(_) => Some(Self::Failed),
1338            value => Some(value),
1339        }
1340    }
1341}
1342
1343impl StaticType for GLWindowError {
1344    #[inline]
1345    #[doc(alias = "gst_gl_window_error_get_type")]
1346    fn static_type() -> glib::Type {
1347        unsafe { from_glib(ffi::gst_gl_window_error_get_type()) }
1348    }
1349}
1350
1351impl glib::HasParamSpec for GLWindowError {
1352    type ParamSpec = glib::ParamSpecEnum;
1353    type SetValue = Self;
1354    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1355
1356    fn param_spec_builder() -> Self::BuilderFn {
1357        Self::ParamSpec::builder_with_default
1358    }
1359}
1360
1361impl glib::value::ValueType for GLWindowError {
1362    type Type = Self;
1363}
1364
1365unsafe impl<'a> glib::value::FromValue<'a> for GLWindowError {
1366    type Checker = glib::value::GenericValueTypeChecker<Self>;
1367
1368    #[inline]
1369    unsafe fn from_value(value: &'a glib::Value) -> Self {
1370        skip_assert_initialized!();
1371        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1372    }
1373}
1374
1375impl ToValue for GLWindowError {
1376    #[inline]
1377    fn to_value(&self) -> glib::Value {
1378        let mut value = glib::Value::for_value_type::<Self>();
1379        unsafe {
1380            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1381        }
1382        value
1383    }
1384
1385    #[inline]
1386    fn value_type(&self) -> glib::Type {
1387        Self::static_type()
1388    }
1389}
1390
1391impl From<GLWindowError> for glib::Value {
1392    #[inline]
1393    fn from(v: GLWindowError) -> Self {
1394        skip_assert_initialized!();
1395        ToValue::to_value(&v)
1396    }
1397}