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