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