gstreamer_rtp/auto/
enums.rs

1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from gir-files (https://github.com/gtk-rs/gir-files)
3// from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git)
4// DO NOT EDIT
5
6use crate::ffi;
7use glib::{prelude::*, translate::*};
8
9/// Different types of feedback messages.
10#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
11#[non_exhaustive]
12#[doc(alias = "GstRTCPFBType")]
13pub enum RTCPFBType {
14    /// Invalid type
15    #[doc(alias = "GST_RTCP_FB_TYPE_INVALID")]
16    FbTypeInvalid,
17    /// Generic NACK
18    #[doc(alias = "GST_RTCP_RTPFB_TYPE_NACK")]
19    RtpfbTypeNack,
20    /// Temporary Maximum Media Stream Bit Rate Request
21    #[doc(alias = "GST_RTCP_RTPFB_TYPE_TMMBR")]
22    RtpfbTypeTmmbr,
23    /// Temporary Maximum Media Stream Bit Rate
24    ///  Notification
25    #[doc(alias = "GST_RTCP_RTPFB_TYPE_TMMBN")]
26    RtpfbTypeTmmbn,
27    /// Request an SR packet for early
28    ///  synchronization
29    #[doc(alias = "GST_RTCP_RTPFB_TYPE_RTCP_SR_REQ")]
30    RtpfbTypeRtcpSrReq,
31    #[doc(alias = "GST_RTCP_RTPFB_TYPE_TWCC")]
32    RtpfbTypeTwcc,
33    /// Slice Loss Indication
34    #[doc(alias = "GST_RTCP_PSFB_TYPE_SLI")]
35    PsfbTypeSli,
36    /// Temporal-Spatial Trade-off Notification
37    #[doc(alias = "GST_RTCP_PSFB_TYPE_TSTN")]
38    PsfbTypeTstn,
39    /// Video Back Channel Message
40    #[doc(alias = "GST_RTCP_PSFB_TYPE_VBCN")]
41    PsfbTypeVbcn,
42    #[doc(hidden)]
43    __Unknown(i32),
44}
45
46#[doc(hidden)]
47impl IntoGlib for RTCPFBType {
48    type GlibType = ffi::GstRTCPFBType;
49
50    #[inline]
51    fn into_glib(self) -> ffi::GstRTCPFBType {
52        match self {
53            Self::FbTypeInvalid => ffi::GST_RTCP_FB_TYPE_INVALID,
54            Self::RtpfbTypeNack => ffi::GST_RTCP_RTPFB_TYPE_NACK,
55            Self::RtpfbTypeTmmbr => ffi::GST_RTCP_RTPFB_TYPE_TMMBR,
56            Self::RtpfbTypeTmmbn => ffi::GST_RTCP_RTPFB_TYPE_TMMBN,
57            Self::RtpfbTypeRtcpSrReq => ffi::GST_RTCP_RTPFB_TYPE_RTCP_SR_REQ,
58            Self::RtpfbTypeTwcc => ffi::GST_RTCP_RTPFB_TYPE_TWCC,
59            Self::PsfbTypeSli => ffi::GST_RTCP_PSFB_TYPE_SLI,
60            Self::PsfbTypeTstn => ffi::GST_RTCP_PSFB_TYPE_TSTN,
61            Self::PsfbTypeVbcn => ffi::GST_RTCP_PSFB_TYPE_VBCN,
62            Self::__Unknown(value) => value,
63        }
64    }
65}
66
67#[doc(hidden)]
68impl FromGlib<ffi::GstRTCPFBType> for RTCPFBType {
69    #[inline]
70    unsafe fn from_glib(value: ffi::GstRTCPFBType) -> Self {
71        skip_assert_initialized!();
72
73        match value {
74            ffi::GST_RTCP_FB_TYPE_INVALID => Self::FbTypeInvalid,
75            ffi::GST_RTCP_RTPFB_TYPE_NACK => Self::RtpfbTypeNack,
76            ffi::GST_RTCP_RTPFB_TYPE_TMMBR => Self::RtpfbTypeTmmbr,
77            ffi::GST_RTCP_RTPFB_TYPE_TMMBN => Self::RtpfbTypeTmmbn,
78            ffi::GST_RTCP_RTPFB_TYPE_RTCP_SR_REQ => Self::RtpfbTypeRtcpSrReq,
79            ffi::GST_RTCP_RTPFB_TYPE_TWCC => Self::RtpfbTypeTwcc,
80            ffi::GST_RTCP_PSFB_TYPE_SLI => Self::PsfbTypeSli,
81            ffi::GST_RTCP_PSFB_TYPE_TSTN => Self::PsfbTypeTstn,
82            ffi::GST_RTCP_PSFB_TYPE_VBCN => Self::PsfbTypeVbcn,
83            value => Self::__Unknown(value),
84        }
85    }
86}
87
88impl StaticType for RTCPFBType {
89    #[inline]
90    #[doc(alias = "gst_rtcpfb_type_get_type")]
91    fn static_type() -> glib::Type {
92        unsafe { from_glib(ffi::gst_rtcpfb_type_get_type()) }
93    }
94}
95
96impl glib::HasParamSpec for RTCPFBType {
97    type ParamSpec = glib::ParamSpecEnum;
98    type SetValue = Self;
99    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
100
101    fn param_spec_builder() -> Self::BuilderFn {
102        Self::ParamSpec::builder_with_default
103    }
104}
105
106impl glib::value::ValueType for RTCPFBType {
107    type Type = Self;
108}
109
110unsafe impl<'a> glib::value::FromValue<'a> for RTCPFBType {
111    type Checker = glib::value::GenericValueTypeChecker<Self>;
112
113    #[inline]
114    unsafe fn from_value(value: &'a glib::Value) -> Self {
115        skip_assert_initialized!();
116        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
117    }
118}
119
120impl ToValue for RTCPFBType {
121    #[inline]
122    fn to_value(&self) -> glib::Value {
123        let mut value = glib::Value::for_value_type::<Self>();
124        unsafe {
125            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
126        }
127        value
128    }
129
130    #[inline]
131    fn value_type(&self) -> glib::Type {
132        Self::static_type()
133    }
134}
135
136impl From<RTCPFBType> for glib::Value {
137    #[inline]
138    fn from(v: RTCPFBType) -> Self {
139        skip_assert_initialized!();
140        ToValue::to_value(&v)
141    }
142}
143
144/// Different types of SDES content.
145#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
146#[non_exhaustive]
147#[doc(alias = "GstRTCPSDESType")]
148pub enum RTCPSDESType {
149    /// Invalid SDES entry
150    #[doc(alias = "GST_RTCP_SDES_INVALID")]
151    Invalid,
152    /// End of SDES list
153    #[doc(alias = "GST_RTCP_SDES_END")]
154    End,
155    /// Canonical name
156    #[doc(alias = "GST_RTCP_SDES_CNAME")]
157    Cname,
158    /// User name
159    #[doc(alias = "GST_RTCP_SDES_NAME")]
160    Name,
161    /// User's electronic mail address
162    #[doc(alias = "GST_RTCP_SDES_EMAIL")]
163    Email,
164    /// User's phone number
165    #[doc(alias = "GST_RTCP_SDES_PHONE")]
166    Phone,
167    /// Geographic user location
168    #[doc(alias = "GST_RTCP_SDES_LOC")]
169    Loc,
170    /// Name of application or tool
171    #[doc(alias = "GST_RTCP_SDES_TOOL")]
172    Tool,
173    /// Notice about the source
174    #[doc(alias = "GST_RTCP_SDES_NOTE")]
175    Note,
176    /// Private extensions
177    #[doc(alias = "GST_RTCP_SDES_PRIV")]
178    Priv,
179    /// H.323 callable address
180    #[cfg(feature = "v1_20")]
181    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
182    #[doc(alias = "GST_RTCP_SDES_H323_CADDR")]
183    H323Caddr,
184    /// Application Specific Identifier (RFC6776)
185    #[cfg(feature = "v1_20")]
186    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
187    #[doc(alias = "GST_RTCP_SDES_APSI")]
188    Apsi,
189    /// Reporting Group Identifier (RFC8861)
190    #[cfg(feature = "v1_20")]
191    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
192    #[doc(alias = "GST_RTCP_SDES_RGRP")]
193    Rgrp,
194    /// RtpStreamId SDES item (RFC8852).
195    #[cfg(feature = "v1_20")]
196    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
197    #[doc(alias = "GST_RTCP_SDES_RTP_STREAM_ID")]
198    RtpStreamId,
199    /// RepairedRtpStreamId SDES item (RFC8852).
200    #[cfg(feature = "v1_20")]
201    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
202    #[doc(alias = "GST_RTCP_SDES_REPAIRED_RTP_STREAM_ID")]
203    RepairedRtpStreamId,
204    /// CLUE CaptId (RFC8849)
205    #[cfg(feature = "v1_20")]
206    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
207    #[doc(alias = "GST_RTCP_SDES_CCID")]
208    Ccid,
209    /// MID SDES item (RFC8843).
210    #[cfg(feature = "v1_20")]
211    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
212    #[doc(alias = "GST_RTCP_SDES_MID")]
213    Mid,
214    #[doc(hidden)]
215    __Unknown(i32),
216}
217
218#[doc(hidden)]
219impl IntoGlib for RTCPSDESType {
220    type GlibType = ffi::GstRTCPSDESType;
221
222    fn into_glib(self) -> ffi::GstRTCPSDESType {
223        match self {
224            Self::Invalid => ffi::GST_RTCP_SDES_INVALID,
225            Self::End => ffi::GST_RTCP_SDES_END,
226            Self::Cname => ffi::GST_RTCP_SDES_CNAME,
227            Self::Name => ffi::GST_RTCP_SDES_NAME,
228            Self::Email => ffi::GST_RTCP_SDES_EMAIL,
229            Self::Phone => ffi::GST_RTCP_SDES_PHONE,
230            Self::Loc => ffi::GST_RTCP_SDES_LOC,
231            Self::Tool => ffi::GST_RTCP_SDES_TOOL,
232            Self::Note => ffi::GST_RTCP_SDES_NOTE,
233            Self::Priv => ffi::GST_RTCP_SDES_PRIV,
234            #[cfg(feature = "v1_20")]
235            Self::H323Caddr => ffi::GST_RTCP_SDES_H323_CADDR,
236            #[cfg(feature = "v1_20")]
237            Self::Apsi => ffi::GST_RTCP_SDES_APSI,
238            #[cfg(feature = "v1_20")]
239            Self::Rgrp => ffi::GST_RTCP_SDES_RGRP,
240            #[cfg(feature = "v1_20")]
241            Self::RtpStreamId => ffi::GST_RTCP_SDES_RTP_STREAM_ID,
242            #[cfg(feature = "v1_20")]
243            Self::RepairedRtpStreamId => ffi::GST_RTCP_SDES_REPAIRED_RTP_STREAM_ID,
244            #[cfg(feature = "v1_20")]
245            Self::Ccid => ffi::GST_RTCP_SDES_CCID,
246            #[cfg(feature = "v1_20")]
247            Self::Mid => ffi::GST_RTCP_SDES_MID,
248            Self::__Unknown(value) => value,
249        }
250    }
251}
252
253#[doc(hidden)]
254impl FromGlib<ffi::GstRTCPSDESType> for RTCPSDESType {
255    unsafe fn from_glib(value: ffi::GstRTCPSDESType) -> Self {
256        skip_assert_initialized!();
257
258        match value {
259            ffi::GST_RTCP_SDES_INVALID => Self::Invalid,
260            ffi::GST_RTCP_SDES_END => Self::End,
261            ffi::GST_RTCP_SDES_CNAME => Self::Cname,
262            ffi::GST_RTCP_SDES_NAME => Self::Name,
263            ffi::GST_RTCP_SDES_EMAIL => Self::Email,
264            ffi::GST_RTCP_SDES_PHONE => Self::Phone,
265            ffi::GST_RTCP_SDES_LOC => Self::Loc,
266            ffi::GST_RTCP_SDES_TOOL => Self::Tool,
267            ffi::GST_RTCP_SDES_NOTE => Self::Note,
268            ffi::GST_RTCP_SDES_PRIV => Self::Priv,
269            #[cfg(feature = "v1_20")]
270            ffi::GST_RTCP_SDES_H323_CADDR => Self::H323Caddr,
271            #[cfg(feature = "v1_20")]
272            ffi::GST_RTCP_SDES_APSI => Self::Apsi,
273            #[cfg(feature = "v1_20")]
274            ffi::GST_RTCP_SDES_RGRP => Self::Rgrp,
275            #[cfg(feature = "v1_20")]
276            ffi::GST_RTCP_SDES_RTP_STREAM_ID => Self::RtpStreamId,
277            #[cfg(feature = "v1_20")]
278            ffi::GST_RTCP_SDES_REPAIRED_RTP_STREAM_ID => Self::RepairedRtpStreamId,
279            #[cfg(feature = "v1_20")]
280            ffi::GST_RTCP_SDES_CCID => Self::Ccid,
281            #[cfg(feature = "v1_20")]
282            ffi::GST_RTCP_SDES_MID => Self::Mid,
283            value => Self::__Unknown(value),
284        }
285    }
286}
287
288impl StaticType for RTCPSDESType {
289    #[inline]
290    #[doc(alias = "gst_rtcpsdes_type_get_type")]
291    fn static_type() -> glib::Type {
292        unsafe { from_glib(ffi::gst_rtcpsdes_type_get_type()) }
293    }
294}
295
296impl glib::HasParamSpec for RTCPSDESType {
297    type ParamSpec = glib::ParamSpecEnum;
298    type SetValue = Self;
299    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
300
301    fn param_spec_builder() -> Self::BuilderFn {
302        Self::ParamSpec::builder_with_default
303    }
304}
305
306impl glib::value::ValueType for RTCPSDESType {
307    type Type = Self;
308}
309
310unsafe impl<'a> glib::value::FromValue<'a> for RTCPSDESType {
311    type Checker = glib::value::GenericValueTypeChecker<Self>;
312
313    #[inline]
314    unsafe fn from_value(value: &'a glib::Value) -> Self {
315        skip_assert_initialized!();
316        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
317    }
318}
319
320impl ToValue for RTCPSDESType {
321    #[inline]
322    fn to_value(&self) -> glib::Value {
323        let mut value = glib::Value::for_value_type::<Self>();
324        unsafe {
325            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
326        }
327        value
328    }
329
330    #[inline]
331    fn value_type(&self) -> glib::Type {
332        Self::static_type()
333    }
334}
335
336impl From<RTCPSDESType> for glib::Value {
337    #[inline]
338    fn from(v: RTCPSDESType) -> Self {
339        skip_assert_initialized!();
340        ToValue::to_value(&v)
341    }
342}
343
344/// Different RTCP packet types.
345#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
346#[non_exhaustive]
347#[doc(alias = "GstRTCPType")]
348pub enum RTCPType {
349    /// Invalid type
350    #[doc(alias = "GST_RTCP_TYPE_INVALID")]
351    Invalid,
352    /// Sender report
353    #[doc(alias = "GST_RTCP_TYPE_SR")]
354    Sr,
355    /// Receiver report
356    #[doc(alias = "GST_RTCP_TYPE_RR")]
357    Rr,
358    /// Source description
359    #[doc(alias = "GST_RTCP_TYPE_SDES")]
360    Sdes,
361    /// Goodbye
362    #[doc(alias = "GST_RTCP_TYPE_BYE")]
363    Bye,
364    /// Application defined
365    #[doc(alias = "GST_RTCP_TYPE_APP")]
366    App,
367    /// Transport layer feedback.
368    #[doc(alias = "GST_RTCP_TYPE_RTPFB")]
369    Rtpfb,
370    /// Payload-specific feedback.
371    #[doc(alias = "GST_RTCP_TYPE_PSFB")]
372    Psfb,
373    /// Extended report.
374    #[doc(alias = "GST_RTCP_TYPE_XR")]
375    Xr,
376    #[doc(hidden)]
377    __Unknown(i32),
378}
379
380#[doc(hidden)]
381impl IntoGlib for RTCPType {
382    type GlibType = ffi::GstRTCPType;
383
384    #[inline]
385    fn into_glib(self) -> ffi::GstRTCPType {
386        match self {
387            Self::Invalid => ffi::GST_RTCP_TYPE_INVALID,
388            Self::Sr => ffi::GST_RTCP_TYPE_SR,
389            Self::Rr => ffi::GST_RTCP_TYPE_RR,
390            Self::Sdes => ffi::GST_RTCP_TYPE_SDES,
391            Self::Bye => ffi::GST_RTCP_TYPE_BYE,
392            Self::App => ffi::GST_RTCP_TYPE_APP,
393            Self::Rtpfb => ffi::GST_RTCP_TYPE_RTPFB,
394            Self::Psfb => ffi::GST_RTCP_TYPE_PSFB,
395            Self::Xr => ffi::GST_RTCP_TYPE_XR,
396            Self::__Unknown(value) => value,
397        }
398    }
399}
400
401#[doc(hidden)]
402impl FromGlib<ffi::GstRTCPType> for RTCPType {
403    #[inline]
404    unsafe fn from_glib(value: ffi::GstRTCPType) -> Self {
405        skip_assert_initialized!();
406
407        match value {
408            ffi::GST_RTCP_TYPE_INVALID => Self::Invalid,
409            ffi::GST_RTCP_TYPE_SR => Self::Sr,
410            ffi::GST_RTCP_TYPE_RR => Self::Rr,
411            ffi::GST_RTCP_TYPE_SDES => Self::Sdes,
412            ffi::GST_RTCP_TYPE_BYE => Self::Bye,
413            ffi::GST_RTCP_TYPE_APP => Self::App,
414            ffi::GST_RTCP_TYPE_RTPFB => Self::Rtpfb,
415            ffi::GST_RTCP_TYPE_PSFB => Self::Psfb,
416            ffi::GST_RTCP_TYPE_XR => Self::Xr,
417            value => Self::__Unknown(value),
418        }
419    }
420}
421
422impl StaticType for RTCPType {
423    #[inline]
424    #[doc(alias = "gst_rtcp_type_get_type")]
425    fn static_type() -> glib::Type {
426        unsafe { from_glib(ffi::gst_rtcp_type_get_type()) }
427    }
428}
429
430impl glib::HasParamSpec for RTCPType {
431    type ParamSpec = glib::ParamSpecEnum;
432    type SetValue = Self;
433    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
434
435    fn param_spec_builder() -> Self::BuilderFn {
436        Self::ParamSpec::builder_with_default
437    }
438}
439
440impl glib::value::ValueType for RTCPType {
441    type Type = Self;
442}
443
444unsafe impl<'a> glib::value::FromValue<'a> for RTCPType {
445    type Checker = glib::value::GenericValueTypeChecker<Self>;
446
447    #[inline]
448    unsafe fn from_value(value: &'a glib::Value) -> Self {
449        skip_assert_initialized!();
450        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
451    }
452}
453
454impl ToValue for RTCPType {
455    #[inline]
456    fn to_value(&self) -> glib::Value {
457        let mut value = glib::Value::for_value_type::<Self>();
458        unsafe {
459            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
460        }
461        value
462    }
463
464    #[inline]
465    fn value_type(&self) -> glib::Type {
466        Self::static_type()
467    }
468}
469
470impl From<RTCPType> for glib::Value {
471    #[inline]
472    fn from(v: RTCPType) -> Self {
473        skip_assert_initialized!();
474        ToValue::to_value(&v)
475    }
476}
477
478/// Types of RTCP Extended Reports, those are defined in RFC 3611 and other RFCs
479/// according to the [IANA registry](https://www.iana.org/assignments/rtcp-xr-block-types/rtcp-xr-block-types.xhtml).
480#[cfg(feature = "v1_16")]
481#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
482#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
483#[non_exhaustive]
484#[doc(alias = "GstRTCPXRType")]
485pub enum RTCPXRType {
486    /// Invalid XR Report Block
487    #[doc(alias = "GST_RTCP_XR_TYPE_INVALID")]
488    Invalid,
489    /// Loss RLE Report Block
490    #[doc(alias = "GST_RTCP_XR_TYPE_LRLE")]
491    Lrle,
492    /// Duplicate RLE Report Block
493    #[doc(alias = "GST_RTCP_XR_TYPE_DRLE")]
494    Drle,
495    /// Packet Receipt Times Report Block
496    #[doc(alias = "GST_RTCP_XR_TYPE_PRT")]
497    Prt,
498    /// Receiver Reference Time Report Block
499    #[doc(alias = "GST_RTCP_XR_TYPE_RRT")]
500    Rrt,
501    /// Delay since the last Receiver Report
502    #[doc(alias = "GST_RTCP_XR_TYPE_DLRR")]
503    Dlrr,
504    /// Statistics Summary Report Block
505    #[doc(alias = "GST_RTCP_XR_TYPE_SSUMM")]
506    Ssumm,
507    /// VoIP Metrics Report Block
508    #[doc(alias = "GST_RTCP_XR_TYPE_VOIP_METRICS")]
509    VoipMetrics,
510    #[doc(hidden)]
511    __Unknown(i32),
512}
513
514#[cfg(feature = "v1_16")]
515#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
516#[doc(hidden)]
517impl IntoGlib for RTCPXRType {
518    type GlibType = ffi::GstRTCPXRType;
519
520    #[inline]
521    fn into_glib(self) -> ffi::GstRTCPXRType {
522        match self {
523            Self::Invalid => ffi::GST_RTCP_XR_TYPE_INVALID,
524            Self::Lrle => ffi::GST_RTCP_XR_TYPE_LRLE,
525            Self::Drle => ffi::GST_RTCP_XR_TYPE_DRLE,
526            Self::Prt => ffi::GST_RTCP_XR_TYPE_PRT,
527            Self::Rrt => ffi::GST_RTCP_XR_TYPE_RRT,
528            Self::Dlrr => ffi::GST_RTCP_XR_TYPE_DLRR,
529            Self::Ssumm => ffi::GST_RTCP_XR_TYPE_SSUMM,
530            Self::VoipMetrics => ffi::GST_RTCP_XR_TYPE_VOIP_METRICS,
531            Self::__Unknown(value) => value,
532        }
533    }
534}
535
536#[cfg(feature = "v1_16")]
537#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
538#[doc(hidden)]
539impl FromGlib<ffi::GstRTCPXRType> for RTCPXRType {
540    #[inline]
541    unsafe fn from_glib(value: ffi::GstRTCPXRType) -> Self {
542        skip_assert_initialized!();
543
544        match value {
545            ffi::GST_RTCP_XR_TYPE_INVALID => Self::Invalid,
546            ffi::GST_RTCP_XR_TYPE_LRLE => Self::Lrle,
547            ffi::GST_RTCP_XR_TYPE_DRLE => Self::Drle,
548            ffi::GST_RTCP_XR_TYPE_PRT => Self::Prt,
549            ffi::GST_RTCP_XR_TYPE_RRT => Self::Rrt,
550            ffi::GST_RTCP_XR_TYPE_DLRR => Self::Dlrr,
551            ffi::GST_RTCP_XR_TYPE_SSUMM => Self::Ssumm,
552            ffi::GST_RTCP_XR_TYPE_VOIP_METRICS => Self::VoipMetrics,
553            value => Self::__Unknown(value),
554        }
555    }
556}
557
558#[cfg(feature = "v1_16")]
559#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
560impl StaticType for RTCPXRType {
561    #[inline]
562    #[doc(alias = "gst_rtcpxr_type_get_type")]
563    fn static_type() -> glib::Type {
564        unsafe { from_glib(ffi::gst_rtcpxr_type_get_type()) }
565    }
566}
567
568#[cfg(feature = "v1_16")]
569#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
570impl glib::HasParamSpec for RTCPXRType {
571    type ParamSpec = glib::ParamSpecEnum;
572    type SetValue = Self;
573    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
574
575    fn param_spec_builder() -> Self::BuilderFn {
576        Self::ParamSpec::builder_with_default
577    }
578}
579
580#[cfg(feature = "v1_16")]
581#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
582impl glib::value::ValueType for RTCPXRType {
583    type Type = Self;
584}
585
586#[cfg(feature = "v1_16")]
587#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
588unsafe impl<'a> glib::value::FromValue<'a> for RTCPXRType {
589    type Checker = glib::value::GenericValueTypeChecker<Self>;
590
591    #[inline]
592    unsafe fn from_value(value: &'a glib::Value) -> Self {
593        skip_assert_initialized!();
594        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
595    }
596}
597
598#[cfg(feature = "v1_16")]
599#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
600impl ToValue for RTCPXRType {
601    #[inline]
602    fn to_value(&self) -> glib::Value {
603        let mut value = glib::Value::for_value_type::<Self>();
604        unsafe {
605            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
606        }
607        value
608    }
609
610    #[inline]
611    fn value_type(&self) -> glib::Type {
612        Self::static_type()
613    }
614}
615
616#[cfg(feature = "v1_16")]
617#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
618impl From<RTCPXRType> for glib::Value {
619    #[inline]
620    fn from(v: RTCPXRType) -> Self {
621        skip_assert_initialized!();
622        ToValue::to_value(&v)
623    }
624}
625
626/// Standard predefined fixed payload types.
627///
628/// The official list is at:
629/// http://www.iana.org/assignments/rtp-parameters
630///
631/// Audio:
632/// reserved: 19
633/// unassigned: 20-23,
634///
635/// Video:
636/// unassigned: 24, 27, 29, 30, 35-71, 77-95
637/// Reserved for RTCP conflict avoidance: 72-76
638#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
639#[non_exhaustive]
640#[doc(alias = "GstRTPPayload")]
641pub enum RTPPayload {
642    /// ITU-T G.711. mu-law audio (RFC 3551)
643    #[doc(alias = "GST_RTP_PAYLOAD_PCMU")]
644    Pcmu,
645    /// RFC 3551 says reserved
646    #[doc(alias = "GST_RTP_PAYLOAD_1016")]
647    _1016,
648    /// RFC 3551 says reserved
649    #[doc(alias = "GST_RTP_PAYLOAD_G721")]
650    G721,
651    /// GSM audio
652    #[doc(alias = "GST_RTP_PAYLOAD_GSM")]
653    Gsm,
654    /// ITU G.723.1 audio
655    #[doc(alias = "GST_RTP_PAYLOAD_G723")]
656    G723,
657    /// IMA ADPCM wave type (RFC 3551)
658    #[doc(alias = "GST_RTP_PAYLOAD_DVI4_8000")]
659    Dvi48000,
660    /// IMA ADPCM wave type (RFC 3551)
661    #[doc(alias = "GST_RTP_PAYLOAD_DVI4_16000")]
662    Dvi416000,
663    /// experimental linear predictive encoding
664    #[doc(alias = "GST_RTP_PAYLOAD_LPC")]
665    Lpc,
666    /// ITU-T G.711 A-law audio (RFC 3551)
667    #[doc(alias = "GST_RTP_PAYLOAD_PCMA")]
668    Pcma,
669    /// ITU-T G.722 (RFC 3551)
670    #[doc(alias = "GST_RTP_PAYLOAD_G722")]
671    G722,
672    /// stereo PCM
673    #[doc(alias = "GST_RTP_PAYLOAD_L16_STEREO")]
674    L16Stereo,
675    /// mono PCM
676    #[doc(alias = "GST_RTP_PAYLOAD_L16_MONO")]
677    L16Mono,
678    /// EIA & TIA standard IS-733
679    #[doc(alias = "GST_RTP_PAYLOAD_QCELP")]
680    Qcelp,
681    /// Comfort Noise (RFC 3389)
682    #[doc(alias = "GST_RTP_PAYLOAD_CN")]
683    Cn,
684    /// Audio MPEG 1-3.
685    #[doc(alias = "GST_RTP_PAYLOAD_MPA")]
686    Mpa,
687    /// ITU-T G.728 Speech coder (RFC 3551)
688    #[doc(alias = "GST_RTP_PAYLOAD_G728")]
689    G728,
690    /// IMA ADPCM wave type (RFC 3551)
691    #[doc(alias = "GST_RTP_PAYLOAD_DVI4_11025")]
692    Dvi411025,
693    /// IMA ADPCM wave type (RFC 3551)
694    #[doc(alias = "GST_RTP_PAYLOAD_DVI4_22050")]
695    Dvi422050,
696    /// ITU-T G.729 Speech coder (RFC 3551)
697    #[doc(alias = "GST_RTP_PAYLOAD_G729")]
698    G729,
699    /// See RFC 2029
700    #[doc(alias = "GST_RTP_PAYLOAD_CELLB")]
701    Cellb,
702    /// ISO Standards 10918-1 and 10918-2 (RFC 2435)
703    #[doc(alias = "GST_RTP_PAYLOAD_JPEG")]
704    Jpeg,
705    /// nv encoding by Ron Frederick
706    #[doc(alias = "GST_RTP_PAYLOAD_NV")]
707    Nv,
708    /// ITU-T Recommendation H.261 (RFC 2032)
709    #[doc(alias = "GST_RTP_PAYLOAD_H261")]
710    H261,
711    /// Video MPEG 1 & 2 (RFC 2250)
712    #[doc(alias = "GST_RTP_PAYLOAD_MPV")]
713    Mpv,
714    /// MPEG-2 transport stream (RFC 2250)
715    #[doc(alias = "GST_RTP_PAYLOAD_MP2T")]
716    Mp2t,
717    /// Video H263 (RFC 2190)
718    #[doc(alias = "GST_RTP_PAYLOAD_H263")]
719    H263,
720    #[doc(hidden)]
721    __Unknown(i32),
722}
723
724#[doc(hidden)]
725impl IntoGlib for RTPPayload {
726    type GlibType = ffi::GstRTPPayload;
727
728    fn into_glib(self) -> ffi::GstRTPPayload {
729        match self {
730            Self::Pcmu => ffi::GST_RTP_PAYLOAD_PCMU,
731            Self::_1016 => ffi::GST_RTP_PAYLOAD_1016,
732            Self::G721 => ffi::GST_RTP_PAYLOAD_G721,
733            Self::Gsm => ffi::GST_RTP_PAYLOAD_GSM,
734            Self::G723 => ffi::GST_RTP_PAYLOAD_G723,
735            Self::Dvi48000 => ffi::GST_RTP_PAYLOAD_DVI4_8000,
736            Self::Dvi416000 => ffi::GST_RTP_PAYLOAD_DVI4_16000,
737            Self::Lpc => ffi::GST_RTP_PAYLOAD_LPC,
738            Self::Pcma => ffi::GST_RTP_PAYLOAD_PCMA,
739            Self::G722 => ffi::GST_RTP_PAYLOAD_G722,
740            Self::L16Stereo => ffi::GST_RTP_PAYLOAD_L16_STEREO,
741            Self::L16Mono => ffi::GST_RTP_PAYLOAD_L16_MONO,
742            Self::Qcelp => ffi::GST_RTP_PAYLOAD_QCELP,
743            Self::Cn => ffi::GST_RTP_PAYLOAD_CN,
744            Self::Mpa => ffi::GST_RTP_PAYLOAD_MPA,
745            Self::G728 => ffi::GST_RTP_PAYLOAD_G728,
746            Self::Dvi411025 => ffi::GST_RTP_PAYLOAD_DVI4_11025,
747            Self::Dvi422050 => ffi::GST_RTP_PAYLOAD_DVI4_22050,
748            Self::G729 => ffi::GST_RTP_PAYLOAD_G729,
749            Self::Cellb => ffi::GST_RTP_PAYLOAD_CELLB,
750            Self::Jpeg => ffi::GST_RTP_PAYLOAD_JPEG,
751            Self::Nv => ffi::GST_RTP_PAYLOAD_NV,
752            Self::H261 => ffi::GST_RTP_PAYLOAD_H261,
753            Self::Mpv => ffi::GST_RTP_PAYLOAD_MPV,
754            Self::Mp2t => ffi::GST_RTP_PAYLOAD_MP2T,
755            Self::H263 => ffi::GST_RTP_PAYLOAD_H263,
756            Self::__Unknown(value) => value,
757        }
758    }
759}
760
761#[doc(hidden)]
762impl FromGlib<ffi::GstRTPPayload> for RTPPayload {
763    unsafe fn from_glib(value: ffi::GstRTPPayload) -> Self {
764        skip_assert_initialized!();
765
766        match value {
767            ffi::GST_RTP_PAYLOAD_PCMU => Self::Pcmu,
768            ffi::GST_RTP_PAYLOAD_1016 => Self::_1016,
769            ffi::GST_RTP_PAYLOAD_G721 => Self::G721,
770            ffi::GST_RTP_PAYLOAD_GSM => Self::Gsm,
771            ffi::GST_RTP_PAYLOAD_G723 => Self::G723,
772            ffi::GST_RTP_PAYLOAD_DVI4_8000 => Self::Dvi48000,
773            ffi::GST_RTP_PAYLOAD_DVI4_16000 => Self::Dvi416000,
774            ffi::GST_RTP_PAYLOAD_LPC => Self::Lpc,
775            ffi::GST_RTP_PAYLOAD_PCMA => Self::Pcma,
776            ffi::GST_RTP_PAYLOAD_G722 => Self::G722,
777            ffi::GST_RTP_PAYLOAD_L16_STEREO => Self::L16Stereo,
778            ffi::GST_RTP_PAYLOAD_L16_MONO => Self::L16Mono,
779            ffi::GST_RTP_PAYLOAD_QCELP => Self::Qcelp,
780            ffi::GST_RTP_PAYLOAD_CN => Self::Cn,
781            ffi::GST_RTP_PAYLOAD_MPA => Self::Mpa,
782            ffi::GST_RTP_PAYLOAD_G728 => Self::G728,
783            ffi::GST_RTP_PAYLOAD_DVI4_11025 => Self::Dvi411025,
784            ffi::GST_RTP_PAYLOAD_DVI4_22050 => Self::Dvi422050,
785            ffi::GST_RTP_PAYLOAD_G729 => Self::G729,
786            ffi::GST_RTP_PAYLOAD_CELLB => Self::Cellb,
787            ffi::GST_RTP_PAYLOAD_JPEG => Self::Jpeg,
788            ffi::GST_RTP_PAYLOAD_NV => Self::Nv,
789            ffi::GST_RTP_PAYLOAD_H261 => Self::H261,
790            ffi::GST_RTP_PAYLOAD_MPV => Self::Mpv,
791            ffi::GST_RTP_PAYLOAD_MP2T => Self::Mp2t,
792            ffi::GST_RTP_PAYLOAD_H263 => Self::H263,
793            value => Self::__Unknown(value),
794        }
795    }
796}
797
798impl StaticType for RTPPayload {
799    #[inline]
800    #[doc(alias = "gst_rtp_payload_get_type")]
801    fn static_type() -> glib::Type {
802        unsafe { from_glib(ffi::gst_rtp_payload_get_type()) }
803    }
804}
805
806impl glib::HasParamSpec for RTPPayload {
807    type ParamSpec = glib::ParamSpecEnum;
808    type SetValue = Self;
809    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
810
811    fn param_spec_builder() -> Self::BuilderFn {
812        Self::ParamSpec::builder_with_default
813    }
814}
815
816impl glib::value::ValueType for RTPPayload {
817    type Type = Self;
818}
819
820unsafe impl<'a> glib::value::FromValue<'a> for RTPPayload {
821    type Checker = glib::value::GenericValueTypeChecker<Self>;
822
823    #[inline]
824    unsafe fn from_value(value: &'a glib::Value) -> Self {
825        skip_assert_initialized!();
826        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
827    }
828}
829
830impl ToValue for RTPPayload {
831    #[inline]
832    fn to_value(&self) -> glib::Value {
833        let mut value = glib::Value::for_value_type::<Self>();
834        unsafe {
835            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
836        }
837        value
838    }
839
840    #[inline]
841    fn value_type(&self) -> glib::Type {
842        Self::static_type()
843    }
844}
845
846impl From<RTPPayload> for glib::Value {
847    #[inline]
848    fn from(v: RTPPayload) -> Self {
849        skip_assert_initialized!();
850        ToValue::to_value(&v)
851    }
852}
853
854/// The transfer profile to use.
855#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
856#[non_exhaustive]
857#[doc(alias = "GstRTPProfile")]
858pub enum RTPProfile {
859    /// invalid profile
860    #[doc(alias = "GST_RTP_PROFILE_UNKNOWN")]
861    Unknown,
862    /// the Audio/Visual profile (RFC 3551)
863    #[doc(alias = "GST_RTP_PROFILE_AVP")]
864    Avp,
865    /// the secure Audio/Visual profile (RFC 3711)
866    #[doc(alias = "GST_RTP_PROFILE_SAVP")]
867    Savp,
868    /// the Audio/Visual profile with feedback (RFC 4585)
869    #[doc(alias = "GST_RTP_PROFILE_AVPF")]
870    Avpf,
871    /// the secure Audio/Visual profile with feedback (RFC 5124)
872    #[doc(alias = "GST_RTP_PROFILE_SAVPF")]
873    Savpf,
874    #[doc(hidden)]
875    __Unknown(i32),
876}
877
878#[doc(hidden)]
879impl IntoGlib for RTPProfile {
880    type GlibType = ffi::GstRTPProfile;
881
882    #[inline]
883    fn into_glib(self) -> ffi::GstRTPProfile {
884        match self {
885            Self::Unknown => ffi::GST_RTP_PROFILE_UNKNOWN,
886            Self::Avp => ffi::GST_RTP_PROFILE_AVP,
887            Self::Savp => ffi::GST_RTP_PROFILE_SAVP,
888            Self::Avpf => ffi::GST_RTP_PROFILE_AVPF,
889            Self::Savpf => ffi::GST_RTP_PROFILE_SAVPF,
890            Self::__Unknown(value) => value,
891        }
892    }
893}
894
895#[doc(hidden)]
896impl FromGlib<ffi::GstRTPProfile> for RTPProfile {
897    #[inline]
898    unsafe fn from_glib(value: ffi::GstRTPProfile) -> Self {
899        skip_assert_initialized!();
900
901        match value {
902            ffi::GST_RTP_PROFILE_UNKNOWN => Self::Unknown,
903            ffi::GST_RTP_PROFILE_AVP => Self::Avp,
904            ffi::GST_RTP_PROFILE_SAVP => Self::Savp,
905            ffi::GST_RTP_PROFILE_AVPF => Self::Avpf,
906            ffi::GST_RTP_PROFILE_SAVPF => Self::Savpf,
907            value => Self::__Unknown(value),
908        }
909    }
910}
911
912impl StaticType for RTPProfile {
913    #[inline]
914    #[doc(alias = "gst_rtp_profile_get_type")]
915    fn static_type() -> glib::Type {
916        unsafe { from_glib(ffi::gst_rtp_profile_get_type()) }
917    }
918}
919
920impl glib::HasParamSpec for RTPProfile {
921    type ParamSpec = glib::ParamSpecEnum;
922    type SetValue = Self;
923    type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
924
925    fn param_spec_builder() -> Self::BuilderFn {
926        Self::ParamSpec::builder_with_default
927    }
928}
929
930impl glib::value::ValueType for RTPProfile {
931    type Type = Self;
932}
933
934unsafe impl<'a> glib::value::FromValue<'a> for RTPProfile {
935    type Checker = glib::value::GenericValueTypeChecker<Self>;
936
937    #[inline]
938    unsafe fn from_value(value: &'a glib::Value) -> Self {
939        skip_assert_initialized!();
940        from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
941    }
942}
943
944impl ToValue for RTPProfile {
945    #[inline]
946    fn to_value(&self) -> glib::Value {
947        let mut value = glib::Value::for_value_type::<Self>();
948        unsafe {
949            glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
950        }
951        value
952    }
953
954    #[inline]
955    fn value_type(&self) -> glib::Type {
956        Self::static_type()
957    }
958}
959
960impl From<RTPProfile> for glib::Value {
961    #[inline]
962    fn from(v: RTPProfile) -> Self {
963        skip_assert_initialized!();
964        ToValue::to_value(&v)
965    }
966}