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