gstreamer_rtp_sys/
lib.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
6#![allow(non_camel_case_types, non_upper_case_globals, non_snake_case)]
7#![allow(
8    clippy::approx_constant,
9    clippy::type_complexity,
10    clippy::unreadable_literal,
11    clippy::upper_case_acronyms
12)]
13#![cfg_attr(docsrs, feature(doc_cfg))]
14
15use glib_sys as glib;
16use gstreamer_base_sys as gst_base;
17use gstreamer_sys as gst;
18
19#[cfg(unix)]
20#[allow(unused_imports)]
21use libc::{dev_t, gid_t, pid_t, socklen_t, uid_t};
22#[allow(unused_imports)]
23use libc::{intptr_t, off_t, size_t, ssize_t, time_t, uintptr_t, FILE};
24#[allow(unused_imports)]
25use std::ffi::{
26    c_char, c_double, c_float, c_int, c_long, c_short, c_uchar, c_uint, c_ulong, c_ushort, c_void,
27};
28
29#[allow(unused_imports)]
30use glib::{gboolean, gconstpointer, gpointer, GType};
31
32// Enums
33pub type GstRTCPFBType = c_int;
34pub const GST_RTCP_FB_TYPE_INVALID: GstRTCPFBType = 0;
35pub const GST_RTCP_RTPFB_TYPE_NACK: GstRTCPFBType = 1;
36pub const GST_RTCP_RTPFB_TYPE_TMMBR: GstRTCPFBType = 3;
37pub const GST_RTCP_RTPFB_TYPE_TMMBN: GstRTCPFBType = 4;
38pub const GST_RTCP_RTPFB_TYPE_RTCP_SR_REQ: GstRTCPFBType = 5;
39pub const GST_RTCP_RTPFB_TYPE_TWCC: GstRTCPFBType = 15;
40pub const GST_RTCP_PSFB_TYPE_PLI: GstRTCPFBType = 1;
41pub const GST_RTCP_PSFB_TYPE_SLI: GstRTCPFBType = 2;
42pub const GST_RTCP_PSFB_TYPE_RPSI: GstRTCPFBType = 3;
43pub const GST_RTCP_PSFB_TYPE_AFB: GstRTCPFBType = 15;
44pub const GST_RTCP_PSFB_TYPE_FIR: GstRTCPFBType = 4;
45pub const GST_RTCP_PSFB_TYPE_TSTR: GstRTCPFBType = 5;
46pub const GST_RTCP_PSFB_TYPE_TSTN: GstRTCPFBType = 6;
47pub const GST_RTCP_PSFB_TYPE_VBCN: GstRTCPFBType = 7;
48
49pub type GstRTCPSDESType = c_int;
50pub const GST_RTCP_SDES_INVALID: GstRTCPSDESType = -1;
51pub const GST_RTCP_SDES_END: GstRTCPSDESType = 0;
52pub const GST_RTCP_SDES_CNAME: GstRTCPSDESType = 1;
53pub const GST_RTCP_SDES_NAME: GstRTCPSDESType = 2;
54pub const GST_RTCP_SDES_EMAIL: GstRTCPSDESType = 3;
55pub const GST_RTCP_SDES_PHONE: GstRTCPSDESType = 4;
56pub const GST_RTCP_SDES_LOC: GstRTCPSDESType = 5;
57pub const GST_RTCP_SDES_TOOL: GstRTCPSDESType = 6;
58pub const GST_RTCP_SDES_NOTE: GstRTCPSDESType = 7;
59pub const GST_RTCP_SDES_PRIV: GstRTCPSDESType = 8;
60#[cfg(feature = "v1_20")]
61#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
62pub const GST_RTCP_SDES_H323_CADDR: GstRTCPSDESType = 9;
63#[cfg(feature = "v1_20")]
64#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
65pub const GST_RTCP_SDES_APSI: GstRTCPSDESType = 10;
66#[cfg(feature = "v1_20")]
67#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
68pub const GST_RTCP_SDES_RGRP: GstRTCPSDESType = 11;
69#[cfg(feature = "v1_20")]
70#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
71pub const GST_RTCP_SDES_RTP_STREAM_ID: GstRTCPSDESType = 12;
72#[cfg(feature = "v1_20")]
73#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
74pub const GST_RTCP_SDES_REPAIRED_RTP_STREAM_ID: GstRTCPSDESType = 13;
75#[cfg(feature = "v1_20")]
76#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
77pub const GST_RTCP_SDES_CCID: GstRTCPSDESType = 14;
78#[cfg(feature = "v1_20")]
79#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
80pub const GST_RTCP_SDES_MID: GstRTCPSDESType = 15;
81
82pub type GstRTCPType = c_int;
83pub const GST_RTCP_TYPE_INVALID: GstRTCPType = 0;
84pub const GST_RTCP_TYPE_SR: GstRTCPType = 200;
85pub const GST_RTCP_TYPE_RR: GstRTCPType = 201;
86pub const GST_RTCP_TYPE_SDES: GstRTCPType = 202;
87pub const GST_RTCP_TYPE_BYE: GstRTCPType = 203;
88pub const GST_RTCP_TYPE_APP: GstRTCPType = 204;
89pub const GST_RTCP_TYPE_RTPFB: GstRTCPType = 205;
90pub const GST_RTCP_TYPE_PSFB: GstRTCPType = 206;
91pub const GST_RTCP_TYPE_XR: GstRTCPType = 207;
92
93pub type GstRTCPXRType = c_int;
94pub const GST_RTCP_XR_TYPE_INVALID: GstRTCPXRType = -1;
95pub const GST_RTCP_XR_TYPE_LRLE: GstRTCPXRType = 1;
96pub const GST_RTCP_XR_TYPE_DRLE: GstRTCPXRType = 2;
97pub const GST_RTCP_XR_TYPE_PRT: GstRTCPXRType = 3;
98pub const GST_RTCP_XR_TYPE_RRT: GstRTCPXRType = 4;
99pub const GST_RTCP_XR_TYPE_DLRR: GstRTCPXRType = 5;
100pub const GST_RTCP_XR_TYPE_SSUMM: GstRTCPXRType = 6;
101pub const GST_RTCP_XR_TYPE_VOIP_METRICS: GstRTCPXRType = 7;
102
103pub type GstRTPPayload = c_int;
104pub const GST_RTP_PAYLOAD_PCMU: GstRTPPayload = 0;
105pub const GST_RTP_PAYLOAD_1016: GstRTPPayload = 1;
106pub const GST_RTP_PAYLOAD_G721: GstRTPPayload = 2;
107pub const GST_RTP_PAYLOAD_GSM: GstRTPPayload = 3;
108pub const GST_RTP_PAYLOAD_G723: GstRTPPayload = 4;
109pub const GST_RTP_PAYLOAD_DVI4_8000: GstRTPPayload = 5;
110pub const GST_RTP_PAYLOAD_DVI4_16000: GstRTPPayload = 6;
111pub const GST_RTP_PAYLOAD_LPC: GstRTPPayload = 7;
112pub const GST_RTP_PAYLOAD_PCMA: GstRTPPayload = 8;
113pub const GST_RTP_PAYLOAD_G722: GstRTPPayload = 9;
114pub const GST_RTP_PAYLOAD_L16_STEREO: GstRTPPayload = 10;
115pub const GST_RTP_PAYLOAD_L16_MONO: GstRTPPayload = 11;
116pub const GST_RTP_PAYLOAD_QCELP: GstRTPPayload = 12;
117pub const GST_RTP_PAYLOAD_CN: GstRTPPayload = 13;
118pub const GST_RTP_PAYLOAD_MPA: GstRTPPayload = 14;
119pub const GST_RTP_PAYLOAD_G728: GstRTPPayload = 15;
120pub const GST_RTP_PAYLOAD_DVI4_11025: GstRTPPayload = 16;
121pub const GST_RTP_PAYLOAD_DVI4_22050: GstRTPPayload = 17;
122pub const GST_RTP_PAYLOAD_G729: GstRTPPayload = 18;
123pub const GST_RTP_PAYLOAD_CELLB: GstRTPPayload = 25;
124pub const GST_RTP_PAYLOAD_JPEG: GstRTPPayload = 26;
125pub const GST_RTP_PAYLOAD_NV: GstRTPPayload = 28;
126pub const GST_RTP_PAYLOAD_H261: GstRTPPayload = 31;
127pub const GST_RTP_PAYLOAD_MPV: GstRTPPayload = 32;
128pub const GST_RTP_PAYLOAD_MP2T: GstRTPPayload = 33;
129pub const GST_RTP_PAYLOAD_H263: GstRTPPayload = 34;
130
131pub type GstRTPProfile = c_int;
132pub const GST_RTP_PROFILE_UNKNOWN: GstRTPProfile = 0;
133pub const GST_RTP_PROFILE_AVP: GstRTPProfile = 1;
134pub const GST_RTP_PROFILE_SAVP: GstRTPProfile = 2;
135pub const GST_RTP_PROFILE_AVPF: GstRTPProfile = 3;
136pub const GST_RTP_PROFILE_SAVPF: GstRTPProfile = 4;
137
138// Constants
139pub const GST_RTCP_MAX_BYE_SSRC_COUNT: c_int = 31;
140pub const GST_RTCP_MAX_RB_COUNT: c_int = 31;
141pub const GST_RTCP_MAX_SDES: c_int = 255;
142pub const GST_RTCP_MAX_SDES_ITEM_COUNT: c_int = 31;
143pub const GST_RTCP_REDUCED_SIZE_VALID_MASK: c_int = 49400;
144pub const GST_RTCP_VALID_MASK: c_int = 57598;
145pub const GST_RTCP_VALID_VALUE: c_int = 32968;
146pub const GST_RTCP_VERSION: c_int = 2;
147pub const GST_RTP_HDREXT_BASE: &[u8] = b"urn:ietf:params:rtp-hdrext:\0";
148pub const GST_RTP_HDREXT_ELEMENT_CLASS: &[u8] = b"Network/Extension/RTPHeader\0";
149pub const GST_RTP_HDREXT_NTP_56: &[u8] = b"ntp-56\0";
150pub const GST_RTP_HDREXT_NTP_56_SIZE: c_int = 7;
151pub const GST_RTP_HDREXT_NTP_64: &[u8] = b"ntp-64\0";
152pub const GST_RTP_HDREXT_NTP_64_SIZE: c_int = 8;
153pub const GST_RTP_HEADER_EXTENSION_URI_METADATA_KEY: &[u8] = b"RTP-Header-Extension-URI\0";
154pub const GST_RTP_PAYLOAD_1016_STRING: &[u8] = b"1\0";
155pub const GST_RTP_PAYLOAD_CELLB_STRING: &[u8] = b"25\0";
156pub const GST_RTP_PAYLOAD_CN_STRING: &[u8] = b"13\0";
157pub const GST_RTP_PAYLOAD_DVI4_11025_STRING: &[u8] = b"16\0";
158pub const GST_RTP_PAYLOAD_DVI4_16000_STRING: &[u8] = b"6\0";
159pub const GST_RTP_PAYLOAD_DVI4_22050_STRING: &[u8] = b"17\0";
160pub const GST_RTP_PAYLOAD_DVI4_8000_STRING: &[u8] = b"5\0";
161pub const GST_RTP_PAYLOAD_DYNAMIC_STRING: &[u8] = b"[96, 127]\0";
162pub const GST_RTP_PAYLOAD_G721_STRING: &[u8] = b"2\0";
163pub const GST_RTP_PAYLOAD_G722_STRING: &[u8] = b"9\0";
164pub const GST_RTP_PAYLOAD_G723_53: c_int = 17;
165pub const GST_RTP_PAYLOAD_G723_53_STRING: &[u8] = b"17\0";
166pub const GST_RTP_PAYLOAD_G723_63: c_int = 16;
167pub const GST_RTP_PAYLOAD_G723_63_STRING: &[u8] = b"16\0";
168pub const GST_RTP_PAYLOAD_G723_STRING: &[u8] = b"4\0";
169pub const GST_RTP_PAYLOAD_G728_STRING: &[u8] = b"15\0";
170pub const GST_RTP_PAYLOAD_G729_STRING: &[u8] = b"18\0";
171pub const GST_RTP_PAYLOAD_GSM_STRING: &[u8] = b"3\0";
172pub const GST_RTP_PAYLOAD_H261_STRING: &[u8] = b"31\0";
173pub const GST_RTP_PAYLOAD_H263_STRING: &[u8] = b"34\0";
174pub const GST_RTP_PAYLOAD_JPEG_STRING: &[u8] = b"26\0";
175pub const GST_RTP_PAYLOAD_L16_MONO_STRING: &[u8] = b"11\0";
176pub const GST_RTP_PAYLOAD_L16_STEREO_STRING: &[u8] = b"10\0";
177pub const GST_RTP_PAYLOAD_LPC_STRING: &[u8] = b"7\0";
178pub const GST_RTP_PAYLOAD_MP2T_STRING: &[u8] = b"33\0";
179pub const GST_RTP_PAYLOAD_MPA_STRING: &[u8] = b"14\0";
180pub const GST_RTP_PAYLOAD_MPV_STRING: &[u8] = b"32\0";
181pub const GST_RTP_PAYLOAD_NV_STRING: &[u8] = b"28\0";
182pub const GST_RTP_PAYLOAD_PCMA_STRING: &[u8] = b"8\0";
183pub const GST_RTP_PAYLOAD_PCMU_STRING: &[u8] = b"0\0";
184pub const GST_RTP_PAYLOAD_QCELP_STRING: &[u8] = b"12\0";
185pub const GST_RTP_PAYLOAD_TS41: c_int = 19;
186pub const GST_RTP_PAYLOAD_TS41_STRING: &[u8] = b"19\0";
187pub const GST_RTP_PAYLOAD_TS48: c_int = 18;
188pub const GST_RTP_PAYLOAD_TS48_STRING: &[u8] = b"18\0";
189pub const GST_RTP_SOURCE_META_MAX_CSRC_COUNT: c_int = 15;
190pub const GST_RTP_VERSION: c_int = 2;
191
192// Flags
193pub type GstRTPBufferFlags = c_uint;
194pub const GST_RTP_BUFFER_FLAG_RETRANSMISSION: GstRTPBufferFlags = 1048576;
195pub const GST_RTP_BUFFER_FLAG_REDUNDANT: GstRTPBufferFlags = 2097152;
196pub const GST_RTP_BUFFER_FLAG_LAST: GstRTPBufferFlags = 268435456;
197
198pub type GstRTPBufferMapFlags = c_uint;
199pub const GST_RTP_BUFFER_MAP_FLAG_SKIP_PADDING: GstRTPBufferMapFlags = 65536;
200pub const GST_RTP_BUFFER_MAP_FLAG_LAST: GstRTPBufferMapFlags = 16777216;
201
202pub type GstRTPHeaderExtensionDirection = c_uint;
203pub const GST_RTP_HEADER_EXTENSION_DIRECTION_INACTIVE: GstRTPHeaderExtensionDirection = 0;
204pub const GST_RTP_HEADER_EXTENSION_DIRECTION_SENDONLY: GstRTPHeaderExtensionDirection = 1;
205pub const GST_RTP_HEADER_EXTENSION_DIRECTION_RECVONLY: GstRTPHeaderExtensionDirection = 2;
206pub const GST_RTP_HEADER_EXTENSION_DIRECTION_SENDRECV: GstRTPHeaderExtensionDirection = 3;
207pub const GST_RTP_HEADER_EXTENSION_DIRECTION_INHERITED: GstRTPHeaderExtensionDirection = 4;
208
209pub type GstRTPHeaderExtensionFlags = c_uint;
210pub const GST_RTP_HEADER_EXTENSION_ONE_BYTE: GstRTPHeaderExtensionFlags = 1;
211pub const GST_RTP_HEADER_EXTENSION_TWO_BYTE: GstRTPHeaderExtensionFlags = 2;
212
213// Records
214#[derive(Copy, Clone)]
215#[repr(C)]
216pub struct GstRTCPBuffer {
217    pub buffer: *mut gst::GstBuffer,
218    pub map: gst::GstMapInfo,
219}
220
221impl ::std::fmt::Debug for GstRTCPBuffer {
222    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
223        f.debug_struct(&format!("GstRTCPBuffer @ {self:p}"))
224            .field("buffer", &self.buffer)
225            .field("map", &self.map)
226            .finish()
227    }
228}
229
230#[derive(Copy, Clone)]
231#[repr(C)]
232pub struct GstRTCPPacket {
233    pub rtcp: *mut GstRTCPBuffer,
234    pub offset: c_uint,
235    pub padding: gboolean,
236    pub count: u8,
237    pub type_: GstRTCPType,
238    pub length: u16,
239    pub item_offset: c_uint,
240    pub item_count: c_uint,
241    pub entry_offset: c_uint,
242}
243
244impl ::std::fmt::Debug for GstRTCPPacket {
245    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
246        f.debug_struct(&format!("GstRTCPPacket @ {self:p}"))
247            .field("rtcp", &self.rtcp)
248            .field("offset", &self.offset)
249            .finish()
250    }
251}
252
253#[derive(Copy, Clone)]
254#[repr(C)]
255pub struct GstRTPBaseAudioPayloadClass {
256    pub parent_class: GstRTPBasePayloadClass,
257    pub _gst_reserved: [gpointer; 4],
258}
259
260impl ::std::fmt::Debug for GstRTPBaseAudioPayloadClass {
261    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
262        f.debug_struct(&format!("GstRTPBaseAudioPayloadClass @ {self:p}"))
263            .field("parent_class", &self.parent_class)
264            .finish()
265    }
266}
267
268#[repr(C)]
269#[allow(dead_code)]
270pub struct _GstRTPBaseAudioPayloadPrivate {
271    _data: [u8; 0],
272    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
273}
274
275pub type GstRTPBaseAudioPayloadPrivate = _GstRTPBaseAudioPayloadPrivate;
276
277#[derive(Copy, Clone)]
278#[repr(C)]
279pub struct GstRTPBaseDepayloadClass {
280    pub parent_class: gst::GstElementClass,
281    pub set_caps:
282        Option<unsafe extern "C" fn(*mut GstRTPBaseDepayload, *mut gst::GstCaps) -> gboolean>,
283    pub process: Option<
284        unsafe extern "C" fn(*mut GstRTPBaseDepayload, *mut gst::GstBuffer) -> *mut gst::GstBuffer,
285    >,
286    pub packet_lost:
287        Option<unsafe extern "C" fn(*mut GstRTPBaseDepayload, *mut gst::GstEvent) -> gboolean>,
288    pub handle_event:
289        Option<unsafe extern "C" fn(*mut GstRTPBaseDepayload, *mut gst::GstEvent) -> gboolean>,
290    pub process_rtp_packet: Option<
291        unsafe extern "C" fn(*mut GstRTPBaseDepayload, *mut GstRTPBuffer) -> *mut gst::GstBuffer,
292    >,
293    pub _gst_reserved: [gpointer; 3],
294}
295
296impl ::std::fmt::Debug for GstRTPBaseDepayloadClass {
297    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
298        f.debug_struct(&format!("GstRTPBaseDepayloadClass @ {self:p}"))
299            .field("parent_class", &self.parent_class)
300            .field("set_caps", &self.set_caps)
301            .field("process", &self.process)
302            .field("packet_lost", &self.packet_lost)
303            .field("handle_event", &self.handle_event)
304            .field("process_rtp_packet", &self.process_rtp_packet)
305            .finish()
306    }
307}
308
309#[repr(C)]
310#[allow(dead_code)]
311pub struct _GstRTPBaseDepayloadPrivate {
312    _data: [u8; 0],
313    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
314}
315
316pub type GstRTPBaseDepayloadPrivate = _GstRTPBaseDepayloadPrivate;
317
318#[derive(Copy, Clone)]
319#[repr(C)]
320pub struct GstRTPBasePayloadClass {
321    pub parent_class: gst::GstElementClass,
322    pub get_caps: Option<
323        unsafe extern "C" fn(
324            *mut GstRTPBasePayload,
325            *mut gst::GstPad,
326            *mut gst::GstCaps,
327        ) -> *mut gst::GstCaps,
328    >,
329    pub set_caps:
330        Option<unsafe extern "C" fn(*mut GstRTPBasePayload, *mut gst::GstCaps) -> gboolean>,
331    pub handle_buffer: Option<
332        unsafe extern "C" fn(*mut GstRTPBasePayload, *mut gst::GstBuffer) -> gst::GstFlowReturn,
333    >,
334    pub sink_event:
335        Option<unsafe extern "C" fn(*mut GstRTPBasePayload, *mut gst::GstEvent) -> gboolean>,
336    pub src_event:
337        Option<unsafe extern "C" fn(*mut GstRTPBasePayload, *mut gst::GstEvent) -> gboolean>,
338    pub query: Option<
339        unsafe extern "C" fn(
340            *mut GstRTPBasePayload,
341            *mut gst::GstPad,
342            *mut gst::GstQuery,
343        ) -> gboolean,
344    >,
345    pub _gst_reserved: [gpointer; 4],
346}
347
348impl ::std::fmt::Debug for GstRTPBasePayloadClass {
349    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
350        f.debug_struct(&format!("GstRTPBasePayloadClass @ {self:p}"))
351            .field("parent_class", &self.parent_class)
352            .field("get_caps", &self.get_caps)
353            .field("set_caps", &self.set_caps)
354            .field("handle_buffer", &self.handle_buffer)
355            .field("sink_event", &self.sink_event)
356            .field("src_event", &self.src_event)
357            .field("query", &self.query)
358            .finish()
359    }
360}
361
362#[repr(C)]
363#[allow(dead_code)]
364pub struct _GstRTPBasePayloadPrivate {
365    _data: [u8; 0],
366    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
367}
368
369pub type GstRTPBasePayloadPrivate = _GstRTPBasePayloadPrivate;
370
371#[derive(Copy, Clone)]
372#[repr(C)]
373pub struct GstRTPBuffer {
374    pub buffer: *mut gst::GstBuffer,
375    pub state: c_uint,
376    pub data: [gpointer; 4],
377    pub size: [size_t; 4],
378    pub map: [gst::GstMapInfo; 4],
379}
380
381impl ::std::fmt::Debug for GstRTPBuffer {
382    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
383        f.debug_struct(&format!("GstRTPBuffer @ {self:p}"))
384            .field("buffer", &self.buffer)
385            .field("state", &self.state)
386            .field("data", &self.data)
387            .field("size", &self.size)
388            .field("map", &self.map)
389            .finish()
390    }
391}
392
393#[derive(Copy, Clone)]
394#[repr(C)]
395pub struct GstRTPHeaderExtensionClass {
396    pub parent_class: gst::GstElementClass,
397    pub get_supported_flags:
398        Option<unsafe extern "C" fn(*mut GstRTPHeaderExtension) -> GstRTPHeaderExtensionFlags>,
399    pub get_max_size:
400        Option<unsafe extern "C" fn(*mut GstRTPHeaderExtension, *const gst::GstBuffer) -> size_t>,
401    pub write: Option<
402        unsafe extern "C" fn(
403            *mut GstRTPHeaderExtension,
404            *const gst::GstBuffer,
405            GstRTPHeaderExtensionFlags,
406            *mut gst::GstBuffer,
407            *mut u8,
408            size_t,
409        ) -> ssize_t,
410    >,
411    pub read: Option<
412        unsafe extern "C" fn(
413            *mut GstRTPHeaderExtension,
414            GstRTPHeaderExtensionFlags,
415            *const u8,
416            size_t,
417            *mut gst::GstBuffer,
418        ) -> gboolean,
419    >,
420    pub set_non_rtp_sink_caps:
421        Option<unsafe extern "C" fn(*mut GstRTPHeaderExtension, *mut gst::GstCaps) -> gboolean>,
422    pub update_non_rtp_src_caps:
423        Option<unsafe extern "C" fn(*mut GstRTPHeaderExtension, *mut gst::GstCaps) -> gboolean>,
424    pub set_attributes: Option<
425        unsafe extern "C" fn(
426            *mut GstRTPHeaderExtension,
427            GstRTPHeaderExtensionDirection,
428            *const c_char,
429        ) -> gboolean,
430    >,
431    pub set_caps_from_attributes:
432        Option<unsafe extern "C" fn(*mut GstRTPHeaderExtension, *mut gst::GstCaps) -> gboolean>,
433    pub _gst_reserved: [gpointer; 20],
434}
435
436impl ::std::fmt::Debug for GstRTPHeaderExtensionClass {
437    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
438        f.debug_struct(&format!("GstRTPHeaderExtensionClass @ {self:p}"))
439            .field("parent_class", &self.parent_class)
440            .field("get_supported_flags", &self.get_supported_flags)
441            .field("get_max_size", &self.get_max_size)
442            .field("write", &self.write)
443            .field("read", &self.read)
444            .field("set_non_rtp_sink_caps", &self.set_non_rtp_sink_caps)
445            .field("update_non_rtp_src_caps", &self.update_non_rtp_src_caps)
446            .field("set_attributes", &self.set_attributes)
447            .field("set_caps_from_attributes", &self.set_caps_from_attributes)
448            .finish()
449    }
450}
451
452#[derive(Copy, Clone)]
453#[repr(C)]
454pub struct GstRTPPayloadInfo {
455    pub payload_type: u8,
456    pub media: *const c_char,
457    pub encoding_name: *const c_char,
458    pub clock_rate: c_uint,
459    pub encoding_parameters: *const c_char,
460    pub bitrate: c_uint,
461    pub _gst_reserved: [gpointer; 4],
462}
463
464impl ::std::fmt::Debug for GstRTPPayloadInfo {
465    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
466        f.debug_struct(&format!("GstRTPPayloadInfo @ {self:p}"))
467            .field("payload_type", &self.payload_type)
468            .field("media", &self.media)
469            .field("encoding_name", &self.encoding_name)
470            .field("clock_rate", &self.clock_rate)
471            .field("encoding_parameters", &self.encoding_parameters)
472            .field("bitrate", &self.bitrate)
473            .finish()
474    }
475}
476
477#[derive(Copy, Clone)]
478#[repr(C)]
479pub struct GstRTPSourceMeta {
480    pub meta: gst::GstMeta,
481    pub ssrc: u32,
482    pub ssrc_valid: gboolean,
483    pub csrc: [u32; 15],
484    pub csrc_count: c_uint,
485}
486
487impl ::std::fmt::Debug for GstRTPSourceMeta {
488    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
489        f.debug_struct(&format!("GstRTPSourceMeta @ {self:p}"))
490            .field("meta", &self.meta)
491            .field("ssrc", &self.ssrc)
492            .field("ssrc_valid", &self.ssrc_valid)
493            .field("csrc", &self.csrc)
494            .field("csrc_count", &self.csrc_count)
495            .finish()
496    }
497}
498
499// Classes
500#[derive(Copy, Clone)]
501#[repr(C)]
502pub struct GstRTPBaseAudioPayload {
503    pub payload: GstRTPBasePayload,
504    pub priv_: *mut GstRTPBaseAudioPayloadPrivate,
505    pub base_ts: gst::GstClockTime,
506    pub frame_size: c_int,
507    pub frame_duration: c_int,
508    pub sample_size: c_int,
509    pub _gst_reserved: [gpointer; 4],
510}
511
512impl ::std::fmt::Debug for GstRTPBaseAudioPayload {
513    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
514        f.debug_struct(&format!("GstRTPBaseAudioPayload @ {self:p}"))
515            .field("payload", &self.payload)
516            .field("priv_", &self.priv_)
517            .field("base_ts", &self.base_ts)
518            .field("frame_size", &self.frame_size)
519            .field("frame_duration", &self.frame_duration)
520            .field("sample_size", &self.sample_size)
521            .finish()
522    }
523}
524
525#[derive(Copy, Clone)]
526#[repr(C)]
527pub struct GstRTPBaseDepayload {
528    pub parent: gst::GstElement,
529    pub sinkpad: *mut gst::GstPad,
530    pub srcpad: *mut gst::GstPad,
531    pub clock_rate: c_uint,
532    pub segment: gst::GstSegment,
533    pub need_newsegment: gboolean,
534    pub priv_: *mut GstRTPBaseDepayloadPrivate,
535    pub _gst_reserved: [gpointer; 4],
536}
537
538impl ::std::fmt::Debug for GstRTPBaseDepayload {
539    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
540        f.debug_struct(&format!("GstRTPBaseDepayload @ {self:p}"))
541            .field("parent", &self.parent)
542            .field("sinkpad", &self.sinkpad)
543            .field("srcpad", &self.srcpad)
544            .field("clock_rate", &self.clock_rate)
545            .field("segment", &self.segment)
546            .field("need_newsegment", &self.need_newsegment)
547            .finish()
548    }
549}
550
551#[derive(Copy, Clone)]
552#[repr(C)]
553pub struct GstRTPBasePayload {
554    pub element: gst::GstElement,
555    pub sinkpad: *mut gst::GstPad,
556    pub srcpad: *mut gst::GstPad,
557    pub ts_base: u32,
558    pub seqnum_base: u16,
559    pub media: *mut c_char,
560    pub encoding_name: *mut c_char,
561    pub dynamic: gboolean,
562    pub clock_rate: u32,
563    pub ts_offset: i32,
564    pub timestamp: u32,
565    pub seqnum_offset: i16,
566    pub seqnum: u16,
567    pub max_ptime: i64,
568    pub pt: c_uint,
569    pub ssrc: c_uint,
570    pub current_ssrc: c_uint,
571    pub mtu: c_uint,
572    pub segment: gst::GstSegment,
573    pub min_ptime: u64,
574    pub ptime: u64,
575    pub ptime_multiple: u64,
576    pub priv_: *mut GstRTPBasePayloadPrivate,
577    pub _gst_reserved: [gpointer; 4],
578}
579
580impl ::std::fmt::Debug for GstRTPBasePayload {
581    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
582        f.debug_struct(&format!("GstRTPBasePayload @ {self:p}"))
583            .field("element", &self.element)
584            .finish()
585    }
586}
587
588#[derive(Copy, Clone)]
589#[repr(C)]
590pub struct GstRTPHeaderExtension {
591    pub parent: gst::GstElement,
592    pub _gst_reserved: [gpointer; 4],
593}
594
595impl ::std::fmt::Debug for GstRTPHeaderExtension {
596    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
597        f.debug_struct(&format!("GstRTPHeaderExtension @ {self:p}"))
598            .field("parent", &self.parent)
599            .finish()
600    }
601}
602
603extern "C" {
604
605    //=========================================================================
606    // GstRTCPFBType
607    //=========================================================================
608    pub fn gst_rtcpfb_type_get_type() -> GType;
609
610    //=========================================================================
611    // GstRTCPSDESType
612    //=========================================================================
613    pub fn gst_rtcpsdes_type_get_type() -> GType;
614
615    //=========================================================================
616    // GstRTCPType
617    //=========================================================================
618    pub fn gst_rtcp_type_get_type() -> GType;
619
620    //=========================================================================
621    // GstRTCPXRType
622    //=========================================================================
623    #[cfg(feature = "v1_16")]
624    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
625    pub fn gst_rtcpxr_type_get_type() -> GType;
626
627    //=========================================================================
628    // GstRTPPayload
629    //=========================================================================
630    pub fn gst_rtp_payload_get_type() -> GType;
631
632    //=========================================================================
633    // GstRTPProfile
634    //=========================================================================
635    pub fn gst_rtp_profile_get_type() -> GType;
636
637    //=========================================================================
638    // GstRTPBufferFlags
639    //=========================================================================
640    pub fn gst_rtp_buffer_flags_get_type() -> GType;
641
642    //=========================================================================
643    // GstRTPBufferMapFlags
644    //=========================================================================
645    pub fn gst_rtp_buffer_map_flags_get_type() -> GType;
646
647    //=========================================================================
648    // GstRTPHeaderExtensionDirection
649    //=========================================================================
650    #[cfg(feature = "v1_20")]
651    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
652    pub fn gst_rtp_header_extension_direction_get_type() -> GType;
653
654    //=========================================================================
655    // GstRTPHeaderExtensionFlags
656    //=========================================================================
657    #[cfg(feature = "v1_20")]
658    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
659    pub fn gst_rtp_header_extension_flags_get_type() -> GType;
660
661    //=========================================================================
662    // GstRTCPBuffer
663    //=========================================================================
664    pub fn gst_rtcp_buffer_add_packet(
665        rtcp: *mut GstRTCPBuffer,
666        type_: GstRTCPType,
667        packet: *mut GstRTCPPacket,
668    ) -> gboolean;
669    pub fn gst_rtcp_buffer_get_first_packet(
670        rtcp: *mut GstRTCPBuffer,
671        packet: *mut GstRTCPPacket,
672    ) -> gboolean;
673    pub fn gst_rtcp_buffer_get_packet_count(rtcp: *mut GstRTCPBuffer) -> c_uint;
674    pub fn gst_rtcp_buffer_unmap(rtcp: *mut GstRTCPBuffer) -> gboolean;
675    pub fn gst_rtcp_buffer_map(
676        buffer: *mut gst::GstBuffer,
677        flags: gst::GstMapFlags,
678        rtcp: *mut GstRTCPBuffer,
679    ) -> gboolean;
680    pub fn gst_rtcp_buffer_new(mtu: c_uint) -> *mut gst::GstBuffer;
681    pub fn gst_rtcp_buffer_new_copy_data(data: gconstpointer, len: c_uint) -> *mut gst::GstBuffer;
682    pub fn gst_rtcp_buffer_new_take_data(data: gpointer, len: c_uint) -> *mut gst::GstBuffer;
683    pub fn gst_rtcp_buffer_validate(buffer: *mut gst::GstBuffer) -> gboolean;
684    pub fn gst_rtcp_buffer_validate_data(data: *mut u8, len: c_uint) -> gboolean;
685    pub fn gst_rtcp_buffer_validate_data_reduced(data: *mut u8, len: c_uint) -> gboolean;
686    pub fn gst_rtcp_buffer_validate_reduced(buffer: *mut gst::GstBuffer) -> gboolean;
687
688    //=========================================================================
689    // GstRTCPPacket
690    //=========================================================================
691    pub fn gst_rtcp_packet_add_profile_specific_ext(
692        packet: *mut GstRTCPPacket,
693        data: *const u8,
694        len: c_uint,
695    ) -> gboolean;
696    pub fn gst_rtcp_packet_add_rb(
697        packet: *mut GstRTCPPacket,
698        ssrc: u32,
699        fractionlost: u8,
700        packetslost: i32,
701        exthighestseq: u32,
702        jitter: u32,
703        lsr: u32,
704        dlsr: u32,
705    ) -> gboolean;
706    pub fn gst_rtcp_packet_app_get_data(packet: *mut GstRTCPPacket) -> *mut u8;
707    pub fn gst_rtcp_packet_app_get_data_length(packet: *mut GstRTCPPacket) -> u16;
708    pub fn gst_rtcp_packet_app_get_name(packet: *mut GstRTCPPacket) -> *const c_char;
709    pub fn gst_rtcp_packet_app_get_ssrc(packet: *mut GstRTCPPacket) -> u32;
710    pub fn gst_rtcp_packet_app_get_subtype(packet: *mut GstRTCPPacket) -> u8;
711    pub fn gst_rtcp_packet_app_set_data_length(
712        packet: *mut GstRTCPPacket,
713        wordlen: u16,
714    ) -> gboolean;
715    pub fn gst_rtcp_packet_app_set_name(packet: *mut GstRTCPPacket, name: *const c_char);
716    pub fn gst_rtcp_packet_app_set_ssrc(packet: *mut GstRTCPPacket, ssrc: u32);
717    pub fn gst_rtcp_packet_app_set_subtype(packet: *mut GstRTCPPacket, subtype: u8);
718    pub fn gst_rtcp_packet_bye_add_ssrc(packet: *mut GstRTCPPacket, ssrc: u32) -> gboolean;
719    pub fn gst_rtcp_packet_bye_add_ssrcs(
720        packet: *mut GstRTCPPacket,
721        ssrc: *mut u32,
722        len: c_uint,
723    ) -> gboolean;
724    pub fn gst_rtcp_packet_bye_get_nth_ssrc(packet: *mut GstRTCPPacket, nth: c_uint) -> u32;
725    pub fn gst_rtcp_packet_bye_get_reason(packet: *mut GstRTCPPacket) -> *mut c_char;
726    pub fn gst_rtcp_packet_bye_get_reason_len(packet: *mut GstRTCPPacket) -> u8;
727    pub fn gst_rtcp_packet_bye_get_ssrc_count(packet: *mut GstRTCPPacket) -> c_uint;
728    pub fn gst_rtcp_packet_bye_set_reason(
729        packet: *mut GstRTCPPacket,
730        reason: *const c_char,
731    ) -> gboolean;
732    pub fn gst_rtcp_packet_copy_profile_specific_ext(
733        packet: *mut GstRTCPPacket,
734        data: *mut *mut u8,
735        len: *mut c_uint,
736    ) -> gboolean;
737    pub fn gst_rtcp_packet_fb_get_fci(packet: *mut GstRTCPPacket) -> *mut u8;
738    pub fn gst_rtcp_packet_fb_get_fci_length(packet: *mut GstRTCPPacket) -> u16;
739    pub fn gst_rtcp_packet_fb_get_media_ssrc(packet: *mut GstRTCPPacket) -> u32;
740    pub fn gst_rtcp_packet_fb_get_sender_ssrc(packet: *mut GstRTCPPacket) -> u32;
741    pub fn gst_rtcp_packet_fb_get_type(packet: *mut GstRTCPPacket) -> GstRTCPFBType;
742    pub fn gst_rtcp_packet_fb_set_fci_length(packet: *mut GstRTCPPacket, wordlen: u16) -> gboolean;
743    pub fn gst_rtcp_packet_fb_set_media_ssrc(packet: *mut GstRTCPPacket, ssrc: u32);
744    pub fn gst_rtcp_packet_fb_set_sender_ssrc(packet: *mut GstRTCPPacket, ssrc: u32);
745    pub fn gst_rtcp_packet_fb_set_type(packet: *mut GstRTCPPacket, type_: GstRTCPFBType);
746    pub fn gst_rtcp_packet_get_count(packet: *mut GstRTCPPacket) -> u8;
747    pub fn gst_rtcp_packet_get_length(packet: *mut GstRTCPPacket) -> u16;
748    pub fn gst_rtcp_packet_get_padding(packet: *mut GstRTCPPacket) -> gboolean;
749    pub fn gst_rtcp_packet_get_profile_specific_ext(
750        packet: *mut GstRTCPPacket,
751        data: *mut *mut u8,
752        len: *mut c_uint,
753    ) -> gboolean;
754    pub fn gst_rtcp_packet_get_profile_specific_ext_length(packet: *mut GstRTCPPacket) -> u16;
755    pub fn gst_rtcp_packet_get_rb(
756        packet: *mut GstRTCPPacket,
757        nth: c_uint,
758        ssrc: *mut u32,
759        fractionlost: *mut u8,
760        packetslost: *mut i32,
761        exthighestseq: *mut u32,
762        jitter: *mut u32,
763        lsr: *mut u32,
764        dlsr: *mut u32,
765    );
766    pub fn gst_rtcp_packet_get_rb_count(packet: *mut GstRTCPPacket) -> c_uint;
767    pub fn gst_rtcp_packet_get_type(packet: *mut GstRTCPPacket) -> GstRTCPType;
768    pub fn gst_rtcp_packet_move_to_next(packet: *mut GstRTCPPacket) -> gboolean;
769    pub fn gst_rtcp_packet_remove(packet: *mut GstRTCPPacket) -> gboolean;
770    pub fn gst_rtcp_packet_rr_get_ssrc(packet: *mut GstRTCPPacket) -> u32;
771    pub fn gst_rtcp_packet_rr_set_ssrc(packet: *mut GstRTCPPacket, ssrc: u32);
772    pub fn gst_rtcp_packet_sdes_add_entry(
773        packet: *mut GstRTCPPacket,
774        type_: GstRTCPSDESType,
775        len: u8,
776        data: *const u8,
777    ) -> gboolean;
778    pub fn gst_rtcp_packet_sdes_add_item(packet: *mut GstRTCPPacket, ssrc: u32) -> gboolean;
779    pub fn gst_rtcp_packet_sdes_copy_entry(
780        packet: *mut GstRTCPPacket,
781        type_: *mut GstRTCPSDESType,
782        len: *mut u8,
783        data: *mut *mut u8,
784    ) -> gboolean;
785    pub fn gst_rtcp_packet_sdes_first_entry(packet: *mut GstRTCPPacket) -> gboolean;
786    pub fn gst_rtcp_packet_sdes_first_item(packet: *mut GstRTCPPacket) -> gboolean;
787    pub fn gst_rtcp_packet_sdes_get_entry(
788        packet: *mut GstRTCPPacket,
789        type_: *mut GstRTCPSDESType,
790        len: *mut u8,
791        data: *mut *mut u8,
792    ) -> gboolean;
793    pub fn gst_rtcp_packet_sdes_get_item_count(packet: *mut GstRTCPPacket) -> c_uint;
794    pub fn gst_rtcp_packet_sdes_get_ssrc(packet: *mut GstRTCPPacket) -> u32;
795    pub fn gst_rtcp_packet_sdes_next_entry(packet: *mut GstRTCPPacket) -> gboolean;
796    pub fn gst_rtcp_packet_sdes_next_item(packet: *mut GstRTCPPacket) -> gboolean;
797    pub fn gst_rtcp_packet_set_rb(
798        packet: *mut GstRTCPPacket,
799        nth: c_uint,
800        ssrc: u32,
801        fractionlost: u8,
802        packetslost: i32,
803        exthighestseq: u32,
804        jitter: u32,
805        lsr: u32,
806        dlsr: u32,
807    );
808    pub fn gst_rtcp_packet_sr_get_sender_info(
809        packet: *mut GstRTCPPacket,
810        ssrc: *mut u32,
811        ntptime: *mut u64,
812        rtptime: *mut u32,
813        packet_count: *mut u32,
814        octet_count: *mut u32,
815    );
816    pub fn gst_rtcp_packet_sr_set_sender_info(
817        packet: *mut GstRTCPPacket,
818        ssrc: u32,
819        ntptime: u64,
820        rtptime: u32,
821        packet_count: u32,
822        octet_count: u32,
823    );
824    #[cfg(feature = "v1_16")]
825    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
826    pub fn gst_rtcp_packet_xr_first_rb(packet: *mut GstRTCPPacket) -> gboolean;
827    #[cfg(feature = "v1_16")]
828    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
829    pub fn gst_rtcp_packet_xr_get_block_length(packet: *mut GstRTCPPacket) -> u16;
830    #[cfg(feature = "v1_16")]
831    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
832    pub fn gst_rtcp_packet_xr_get_block_type(packet: *mut GstRTCPPacket) -> GstRTCPXRType;
833    #[cfg(feature = "v1_16")]
834    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
835    pub fn gst_rtcp_packet_xr_get_dlrr_block(
836        packet: *mut GstRTCPPacket,
837        nth: c_uint,
838        ssrc: *mut u32,
839        last_rr: *mut u32,
840        delay: *mut u32,
841    ) -> gboolean;
842    #[cfg(feature = "v1_16")]
843    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
844    pub fn gst_rtcp_packet_xr_get_prt_by_seq(
845        packet: *mut GstRTCPPacket,
846        seq: u16,
847        receipt_time: *mut u32,
848    ) -> gboolean;
849    #[cfg(feature = "v1_16")]
850    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
851    pub fn gst_rtcp_packet_xr_get_prt_info(
852        packet: *mut GstRTCPPacket,
853        ssrc: *mut u32,
854        thinning: *mut u8,
855        begin_seq: *mut u16,
856        end_seq: *mut u16,
857    ) -> gboolean;
858    #[cfg(feature = "v1_16")]
859    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
860    pub fn gst_rtcp_packet_xr_get_rle_info(
861        packet: *mut GstRTCPPacket,
862        ssrc: *mut u32,
863        thinning: *mut u8,
864        begin_seq: *mut u16,
865        end_seq: *mut u16,
866        chunk_count: *mut u32,
867    ) -> gboolean;
868    #[cfg(feature = "v1_16")]
869    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
870    pub fn gst_rtcp_packet_xr_get_rle_nth_chunk(
871        packet: *mut GstRTCPPacket,
872        nth: c_uint,
873        chunk: *mut u16,
874    ) -> gboolean;
875    #[cfg(feature = "v1_16")]
876    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
877    pub fn gst_rtcp_packet_xr_get_rrt(packet: *mut GstRTCPPacket, timestamp: *mut u64) -> gboolean;
878    #[cfg(feature = "v1_16")]
879    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
880    pub fn gst_rtcp_packet_xr_get_ssrc(packet: *mut GstRTCPPacket) -> u32;
881    #[cfg(feature = "v1_16")]
882    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
883    pub fn gst_rtcp_packet_xr_get_summary_info(
884        packet: *mut GstRTCPPacket,
885        ssrc: *mut u32,
886        begin_seq: *mut u16,
887        end_seq: *mut u16,
888    ) -> gboolean;
889    #[cfg(feature = "v1_16")]
890    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
891    pub fn gst_rtcp_packet_xr_get_summary_jitter(
892        packet: *mut GstRTCPPacket,
893        min_jitter: *mut u32,
894        max_jitter: *mut u32,
895        mean_jitter: *mut u32,
896        dev_jitter: *mut u32,
897    ) -> gboolean;
898    #[cfg(feature = "v1_16")]
899    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
900    pub fn gst_rtcp_packet_xr_get_summary_pkt(
901        packet: *mut GstRTCPPacket,
902        lost_packets: *mut u32,
903        dup_packets: *mut u32,
904    ) -> gboolean;
905    #[cfg(feature = "v1_16")]
906    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
907    pub fn gst_rtcp_packet_xr_get_summary_ttl(
908        packet: *mut GstRTCPPacket,
909        is_ipv4: *mut gboolean,
910        min_ttl: *mut u8,
911        max_ttl: *mut u8,
912        mean_ttl: *mut u8,
913        dev_ttl: *mut u8,
914    ) -> gboolean;
915    #[cfg(feature = "v1_16")]
916    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
917    pub fn gst_rtcp_packet_xr_get_voip_burst_metrics(
918        packet: *mut GstRTCPPacket,
919        burst_density: *mut u8,
920        gap_density: *mut u8,
921        burst_duration: *mut u16,
922        gap_duration: *mut u16,
923    ) -> gboolean;
924    #[cfg(feature = "v1_16")]
925    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
926    pub fn gst_rtcp_packet_xr_get_voip_configuration_params(
927        packet: *mut GstRTCPPacket,
928        gmin: *mut u8,
929        rx_config: *mut u8,
930    ) -> gboolean;
931    #[cfg(feature = "v1_16")]
932    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
933    pub fn gst_rtcp_packet_xr_get_voip_delay_metrics(
934        packet: *mut GstRTCPPacket,
935        roundtrip_delay: *mut u16,
936        end_system_delay: *mut u16,
937    ) -> gboolean;
938    #[cfg(feature = "v1_16")]
939    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
940    pub fn gst_rtcp_packet_xr_get_voip_jitter_buffer_params(
941        packet: *mut GstRTCPPacket,
942        jb_nominal: *mut u16,
943        jb_maximum: *mut u16,
944        jb_abs_max: *mut u16,
945    ) -> gboolean;
946    #[cfg(feature = "v1_16")]
947    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
948    pub fn gst_rtcp_packet_xr_get_voip_metrics_ssrc(
949        packet: *mut GstRTCPPacket,
950        ssrc: *mut u32,
951    ) -> gboolean;
952    #[cfg(feature = "v1_16")]
953    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
954    pub fn gst_rtcp_packet_xr_get_voip_packet_metrics(
955        packet: *mut GstRTCPPacket,
956        loss_rate: *mut u8,
957        discard_rate: *mut u8,
958    ) -> gboolean;
959    #[cfg(feature = "v1_16")]
960    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
961    pub fn gst_rtcp_packet_xr_get_voip_quality_metrics(
962        packet: *mut GstRTCPPacket,
963        r_factor: *mut u8,
964        ext_r_factor: *mut u8,
965        mos_lq: *mut u8,
966        mos_cq: *mut u8,
967    ) -> gboolean;
968    #[cfg(feature = "v1_16")]
969    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
970    pub fn gst_rtcp_packet_xr_get_voip_signal_metrics(
971        packet: *mut GstRTCPPacket,
972        signal_level: *mut u8,
973        noise_level: *mut u8,
974        rerl: *mut u8,
975        gmin: *mut u8,
976    ) -> gboolean;
977    #[cfg(feature = "v1_16")]
978    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
979    pub fn gst_rtcp_packet_xr_next_rb(packet: *mut GstRTCPPacket) -> gboolean;
980
981    //=========================================================================
982    // GstRTPBuffer
983    //=========================================================================
984    pub fn gst_rtp_buffer_add_extension_onebyte_header(
985        rtp: *mut GstRTPBuffer,
986        id: u8,
987        data: gconstpointer,
988        size: c_uint,
989    ) -> gboolean;
990    pub fn gst_rtp_buffer_add_extension_twobytes_header(
991        rtp: *mut GstRTPBuffer,
992        appbits: u8,
993        id: u8,
994        data: gconstpointer,
995        size: c_uint,
996    ) -> gboolean;
997    pub fn gst_rtp_buffer_get_csrc(rtp: *mut GstRTPBuffer, idx: u8) -> u32;
998    pub fn gst_rtp_buffer_get_csrc_count(rtp: *mut GstRTPBuffer) -> u8;
999    pub fn gst_rtp_buffer_get_extension(rtp: *mut GstRTPBuffer) -> gboolean;
1000    pub fn gst_rtp_buffer_get_extension_bytes(
1001        rtp: *mut GstRTPBuffer,
1002        bits: *mut u16,
1003    ) -> *mut glib::GBytes;
1004    pub fn gst_rtp_buffer_get_extension_data(
1005        rtp: *mut GstRTPBuffer,
1006        bits: *mut u16,
1007        data: *mut u8,
1008        wordlen: *mut c_uint,
1009    ) -> gboolean;
1010    pub fn gst_rtp_buffer_get_extension_onebyte_header(
1011        rtp: *mut GstRTPBuffer,
1012        id: u8,
1013        nth: c_uint,
1014        data: *mut u8,
1015        size: *mut c_uint,
1016    ) -> gboolean;
1017    pub fn gst_rtp_buffer_get_extension_twobytes_header(
1018        rtp: *mut GstRTPBuffer,
1019        appbits: *mut u8,
1020        id: u8,
1021        nth: c_uint,
1022        data: *mut u8,
1023        size: *mut c_uint,
1024    ) -> gboolean;
1025    pub fn gst_rtp_buffer_get_header_len(rtp: *mut GstRTPBuffer) -> c_uint;
1026    pub fn gst_rtp_buffer_get_marker(rtp: *mut GstRTPBuffer) -> gboolean;
1027    pub fn gst_rtp_buffer_get_packet_len(rtp: *mut GstRTPBuffer) -> c_uint;
1028    pub fn gst_rtp_buffer_get_padding(rtp: *mut GstRTPBuffer) -> gboolean;
1029    pub fn gst_rtp_buffer_get_payload(rtp: *mut GstRTPBuffer) -> gpointer;
1030    pub fn gst_rtp_buffer_get_payload_buffer(rtp: *mut GstRTPBuffer) -> *mut gst::GstBuffer;
1031    pub fn gst_rtp_buffer_get_payload_bytes(rtp: *mut GstRTPBuffer) -> *mut glib::GBytes;
1032    pub fn gst_rtp_buffer_get_payload_len(rtp: *mut GstRTPBuffer) -> c_uint;
1033    pub fn gst_rtp_buffer_get_payload_subbuffer(
1034        rtp: *mut GstRTPBuffer,
1035        offset: c_uint,
1036        len: c_uint,
1037    ) -> *mut gst::GstBuffer;
1038    pub fn gst_rtp_buffer_get_payload_type(rtp: *mut GstRTPBuffer) -> u8;
1039    pub fn gst_rtp_buffer_get_seq(rtp: *mut GstRTPBuffer) -> u16;
1040    pub fn gst_rtp_buffer_get_ssrc(rtp: *mut GstRTPBuffer) -> u32;
1041    pub fn gst_rtp_buffer_get_timestamp(rtp: *mut GstRTPBuffer) -> u32;
1042    pub fn gst_rtp_buffer_get_version(rtp: *mut GstRTPBuffer) -> u8;
1043    pub fn gst_rtp_buffer_pad_to(rtp: *mut GstRTPBuffer, len: c_uint);
1044    #[cfg(feature = "v1_20")]
1045    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1046    pub fn gst_rtp_buffer_remove_extension_data(rtp: *mut GstRTPBuffer);
1047    pub fn gst_rtp_buffer_set_csrc(rtp: *mut GstRTPBuffer, idx: u8, csrc: u32);
1048    pub fn gst_rtp_buffer_set_extension(rtp: *mut GstRTPBuffer, extension: gboolean);
1049    pub fn gst_rtp_buffer_set_extension_data(
1050        rtp: *mut GstRTPBuffer,
1051        bits: u16,
1052        length: u16,
1053    ) -> gboolean;
1054    pub fn gst_rtp_buffer_set_marker(rtp: *mut GstRTPBuffer, marker: gboolean);
1055    pub fn gst_rtp_buffer_set_packet_len(rtp: *mut GstRTPBuffer, len: c_uint);
1056    pub fn gst_rtp_buffer_set_padding(rtp: *mut GstRTPBuffer, padding: gboolean);
1057    pub fn gst_rtp_buffer_set_payload_type(rtp: *mut GstRTPBuffer, payload_type: u8);
1058    pub fn gst_rtp_buffer_set_seq(rtp: *mut GstRTPBuffer, seq: u16);
1059    pub fn gst_rtp_buffer_set_ssrc(rtp: *mut GstRTPBuffer, ssrc: u32);
1060    pub fn gst_rtp_buffer_set_timestamp(rtp: *mut GstRTPBuffer, timestamp: u32);
1061    pub fn gst_rtp_buffer_set_version(rtp: *mut GstRTPBuffer, version: u8);
1062    pub fn gst_rtp_buffer_unmap(rtp: *mut GstRTPBuffer);
1063    pub fn gst_rtp_buffer_allocate_data(
1064        buffer: *mut gst::GstBuffer,
1065        payload_len: c_uint,
1066        pad_len: u8,
1067        csrc_count: u8,
1068    );
1069    pub fn gst_rtp_buffer_calc_header_len(csrc_count: u8) -> c_uint;
1070    pub fn gst_rtp_buffer_calc_packet_len(
1071        payload_len: c_uint,
1072        pad_len: u8,
1073        csrc_count: u8,
1074    ) -> c_uint;
1075    pub fn gst_rtp_buffer_calc_payload_len(
1076        packet_len: c_uint,
1077        pad_len: u8,
1078        csrc_count: u8,
1079    ) -> c_uint;
1080    pub fn gst_rtp_buffer_compare_seqnum(seqnum1: u16, seqnum2: u16) -> c_int;
1081    pub fn gst_rtp_buffer_default_clock_rate(payload_type: u8) -> u32;
1082    pub fn gst_rtp_buffer_ext_timestamp(exttimestamp: *mut u64, timestamp: u32) -> u64;
1083    #[cfg(feature = "v1_18")]
1084    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
1085    pub fn gst_rtp_buffer_get_extension_onebyte_header_from_bytes(
1086        bytes: *mut glib::GBytes,
1087        bit_pattern: u16,
1088        id: u8,
1089        nth: c_uint,
1090        data: *mut u8,
1091        size: *mut c_uint,
1092    ) -> gboolean;
1093    pub fn gst_rtp_buffer_map(
1094        buffer: *mut gst::GstBuffer,
1095        flags: gst::GstMapFlags,
1096        rtp: *mut GstRTPBuffer,
1097    ) -> gboolean;
1098    pub fn gst_rtp_buffer_new_allocate(
1099        payload_len: c_uint,
1100        pad_len: u8,
1101        csrc_count: u8,
1102    ) -> *mut gst::GstBuffer;
1103    pub fn gst_rtp_buffer_new_allocate_len(
1104        packet_len: c_uint,
1105        pad_len: u8,
1106        csrc_count: u8,
1107    ) -> *mut gst::GstBuffer;
1108    pub fn gst_rtp_buffer_new_copy_data(data: gconstpointer, len: size_t) -> *mut gst::GstBuffer;
1109    pub fn gst_rtp_buffer_new_take_data(data: gpointer, len: size_t) -> *mut gst::GstBuffer;
1110
1111    //=========================================================================
1112    // GstRTPHeaderExtensionClass
1113    //=========================================================================
1114    #[cfg(feature = "v1_20")]
1115    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1116    pub fn gst_rtp_header_extension_class_set_uri(
1117        klass: *mut GstRTPHeaderExtensionClass,
1118        uri: *const c_char,
1119    );
1120
1121    //=========================================================================
1122    // GstRTPPayloadInfo
1123    //=========================================================================
1124    pub fn gst_rtp_payload_info_for_name(
1125        media: *const c_char,
1126        encoding_name: *const c_char,
1127    ) -> *const GstRTPPayloadInfo;
1128    pub fn gst_rtp_payload_info_for_pt(payload_type: u8) -> *const GstRTPPayloadInfo;
1129
1130    //=========================================================================
1131    // GstRTPSourceMeta
1132    //=========================================================================
1133    #[cfg(feature = "v1_16")]
1134    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1135    pub fn gst_rtp_source_meta_append_csrc(
1136        meta: *mut GstRTPSourceMeta,
1137        csrc: *const u32,
1138        csrc_count: c_uint,
1139    ) -> gboolean;
1140    #[cfg(feature = "v1_16")]
1141    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1142    pub fn gst_rtp_source_meta_get_source_count(meta: *const GstRTPSourceMeta) -> c_uint;
1143    #[cfg(feature = "v1_16")]
1144    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1145    pub fn gst_rtp_source_meta_set_ssrc(meta: *mut GstRTPSourceMeta, ssrc: *mut u32) -> gboolean;
1146    #[cfg(feature = "v1_16")]
1147    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1148    pub fn gst_rtp_source_meta_get_info() -> *const gst::GstMetaInfo;
1149
1150    //=========================================================================
1151    // GstRTPBaseAudioPayload
1152    //=========================================================================
1153    pub fn gst_rtp_base_audio_payload_get_type() -> GType;
1154    pub fn gst_rtp_base_audio_payload_flush(
1155        baseaudiopayload: *mut GstRTPBaseAudioPayload,
1156        payload_len: c_uint,
1157        timestamp: gst::GstClockTime,
1158    ) -> gst::GstFlowReturn;
1159    pub fn gst_rtp_base_audio_payload_get_adapter(
1160        rtpbaseaudiopayload: *mut GstRTPBaseAudioPayload,
1161    ) -> *mut gst_base::GstAdapter;
1162    pub fn gst_rtp_base_audio_payload_push(
1163        baseaudiopayload: *mut GstRTPBaseAudioPayload,
1164        data: *const u8,
1165        payload_len: c_uint,
1166        timestamp: gst::GstClockTime,
1167    ) -> gst::GstFlowReturn;
1168    pub fn gst_rtp_base_audio_payload_set_frame_based(
1169        rtpbaseaudiopayload: *mut GstRTPBaseAudioPayload,
1170    );
1171    pub fn gst_rtp_base_audio_payload_set_frame_options(
1172        rtpbaseaudiopayload: *mut GstRTPBaseAudioPayload,
1173        frame_duration: c_int,
1174        frame_size: c_int,
1175    );
1176    pub fn gst_rtp_base_audio_payload_set_sample_based(
1177        rtpbaseaudiopayload: *mut GstRTPBaseAudioPayload,
1178    );
1179    pub fn gst_rtp_base_audio_payload_set_sample_options(
1180        rtpbaseaudiopayload: *mut GstRTPBaseAudioPayload,
1181        sample_size: c_int,
1182    );
1183    pub fn gst_rtp_base_audio_payload_set_samplebits_options(
1184        rtpbaseaudiopayload: *mut GstRTPBaseAudioPayload,
1185        sample_size: c_int,
1186    );
1187
1188    //=========================================================================
1189    // GstRTPBaseDepayload
1190    //=========================================================================
1191    pub fn gst_rtp_base_depayload_get_type() -> GType;
1192    #[cfg(feature = "v1_24")]
1193    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
1194    pub fn gst_rtp_base_depayload_delayed(depayload: *mut GstRTPBaseDepayload);
1195    #[cfg(feature = "v1_24")]
1196    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
1197    pub fn gst_rtp_base_depayload_dropped(depayload: *mut GstRTPBaseDepayload);
1198    #[cfg(feature = "v1_24")]
1199    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
1200    pub fn gst_rtp_base_depayload_flush(
1201        depayload: *mut GstRTPBaseDepayload,
1202        keep_current: gboolean,
1203    );
1204    #[cfg(feature = "v1_24")]
1205    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
1206    pub fn gst_rtp_base_depayload_is_aggregate_hdrext_enabled(
1207        depayload: *mut GstRTPBaseDepayload,
1208    ) -> gboolean;
1209    #[cfg(feature = "v1_16")]
1210    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1211    pub fn gst_rtp_base_depayload_is_source_info_enabled(
1212        depayload: *mut GstRTPBaseDepayload,
1213    ) -> gboolean;
1214    pub fn gst_rtp_base_depayload_push(
1215        filter: *mut GstRTPBaseDepayload,
1216        out_buf: *mut gst::GstBuffer,
1217    ) -> gst::GstFlowReturn;
1218    pub fn gst_rtp_base_depayload_push_list(
1219        filter: *mut GstRTPBaseDepayload,
1220        out_list: *mut gst::GstBufferList,
1221    ) -> gst::GstFlowReturn;
1222    #[cfg(feature = "v1_24")]
1223    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
1224    pub fn gst_rtp_base_depayload_set_aggregate_hdrext_enabled(
1225        depayload: *mut GstRTPBaseDepayload,
1226        enable: gboolean,
1227    );
1228    #[cfg(feature = "v1_16")]
1229    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1230    pub fn gst_rtp_base_depayload_set_source_info_enabled(
1231        depayload: *mut GstRTPBaseDepayload,
1232        enable: gboolean,
1233    );
1234
1235    //=========================================================================
1236    // GstRTPBasePayload
1237    //=========================================================================
1238    pub fn gst_rtp_base_payload_get_type() -> GType;
1239    #[cfg(feature = "v1_16")]
1240    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1241    pub fn gst_rtp_base_payload_allocate_output_buffer(
1242        payload: *mut GstRTPBasePayload,
1243        payload_len: c_uint,
1244        pad_len: u8,
1245        csrc_count: u8,
1246    ) -> *mut gst::GstBuffer;
1247    #[cfg(feature = "v1_16")]
1248    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1249    pub fn gst_rtp_base_payload_get_source_count(
1250        payload: *mut GstRTPBasePayload,
1251        buffer: *mut gst::GstBuffer,
1252    ) -> c_uint;
1253    pub fn gst_rtp_base_payload_is_filled(
1254        payload: *mut GstRTPBasePayload,
1255        size: c_uint,
1256        duration: gst::GstClockTime,
1257    ) -> gboolean;
1258    #[cfg(feature = "v1_16")]
1259    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1260    pub fn gst_rtp_base_payload_is_source_info_enabled(payload: *mut GstRTPBasePayload)
1261        -> gboolean;
1262    pub fn gst_rtp_base_payload_push(
1263        payload: *mut GstRTPBasePayload,
1264        buffer: *mut gst::GstBuffer,
1265    ) -> gst::GstFlowReturn;
1266    pub fn gst_rtp_base_payload_push_list(
1267        payload: *mut GstRTPBasePayload,
1268        list: *mut gst::GstBufferList,
1269    ) -> gst::GstFlowReturn;
1270    pub fn gst_rtp_base_payload_set_options(
1271        payload: *mut GstRTPBasePayload,
1272        media: *const c_char,
1273        dynamic: gboolean,
1274        encoding_name: *const c_char,
1275        clock_rate: u32,
1276    );
1277    pub fn gst_rtp_base_payload_set_outcaps(
1278        payload: *mut GstRTPBasePayload,
1279        fieldname: *const c_char,
1280        ...
1281    ) -> gboolean;
1282    #[cfg(feature = "v1_20")]
1283    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1284    pub fn gst_rtp_base_payload_set_outcaps_structure(
1285        payload: *mut GstRTPBasePayload,
1286        s: *mut gst::GstStructure,
1287    ) -> gboolean;
1288    #[cfg(feature = "v1_16")]
1289    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1290    pub fn gst_rtp_base_payload_set_source_info_enabled(
1291        payload: *mut GstRTPBasePayload,
1292        enable: gboolean,
1293    );
1294
1295    //=========================================================================
1296    // GstRTPHeaderExtension
1297    //=========================================================================
1298    #[cfg(feature = "v1_20")]
1299    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1300    pub fn gst_rtp_header_extension_get_type() -> GType;
1301    #[cfg(feature = "v1_20")]
1302    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1303    pub fn gst_rtp_header_extension_create_from_uri(
1304        uri: *const c_char,
1305    ) -> *mut GstRTPHeaderExtension;
1306    #[cfg(feature = "v1_20")]
1307    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1308    pub fn gst_rtp_header_extension_get_direction(
1309        ext: *mut GstRTPHeaderExtension,
1310    ) -> GstRTPHeaderExtensionDirection;
1311    #[cfg(feature = "v1_20")]
1312    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1313    pub fn gst_rtp_header_extension_get_id(ext: *mut GstRTPHeaderExtension) -> c_uint;
1314    #[cfg(feature = "v1_20")]
1315    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1316    pub fn gst_rtp_header_extension_get_max_size(
1317        ext: *mut GstRTPHeaderExtension,
1318        input_meta: *const gst::GstBuffer,
1319    ) -> size_t;
1320    #[cfg(feature = "v1_20")]
1321    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1322    pub fn gst_rtp_header_extension_get_sdp_caps_field_name(
1323        ext: *mut GstRTPHeaderExtension,
1324    ) -> *mut c_char;
1325    #[cfg(feature = "v1_20")]
1326    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1327    pub fn gst_rtp_header_extension_get_supported_flags(
1328        ext: *mut GstRTPHeaderExtension,
1329    ) -> GstRTPHeaderExtensionFlags;
1330    #[cfg(feature = "v1_20")]
1331    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1332    pub fn gst_rtp_header_extension_get_uri(ext: *mut GstRTPHeaderExtension) -> *const c_char;
1333    #[cfg(feature = "v1_20")]
1334    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1335    pub fn gst_rtp_header_extension_read(
1336        ext: *mut GstRTPHeaderExtension,
1337        read_flags: GstRTPHeaderExtensionFlags,
1338        data: *const u8,
1339        size: size_t,
1340        buffer: *mut gst::GstBuffer,
1341    ) -> gboolean;
1342    #[cfg(feature = "v1_20")]
1343    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1344    pub fn gst_rtp_header_extension_set_attributes_from_caps(
1345        ext: *mut GstRTPHeaderExtension,
1346        caps: *const gst::GstCaps,
1347    ) -> gboolean;
1348    #[cfg(feature = "v1_20")]
1349    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1350    pub fn gst_rtp_header_extension_set_caps_from_attributes(
1351        ext: *mut GstRTPHeaderExtension,
1352        caps: *mut gst::GstCaps,
1353    ) -> gboolean;
1354    #[cfg(feature = "v1_20")]
1355    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1356    pub fn gst_rtp_header_extension_set_caps_from_attributes_helper(
1357        ext: *mut GstRTPHeaderExtension,
1358        caps: *mut gst::GstCaps,
1359        attributes: *const c_char,
1360    ) -> gboolean;
1361    #[cfg(feature = "v1_20")]
1362    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1363    pub fn gst_rtp_header_extension_set_direction(
1364        ext: *mut GstRTPHeaderExtension,
1365        direction: GstRTPHeaderExtensionDirection,
1366    );
1367    #[cfg(feature = "v1_20")]
1368    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1369    pub fn gst_rtp_header_extension_set_id(ext: *mut GstRTPHeaderExtension, ext_id: c_uint);
1370    #[cfg(feature = "v1_20")]
1371    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1372    pub fn gst_rtp_header_extension_set_non_rtp_sink_caps(
1373        ext: *mut GstRTPHeaderExtension,
1374        caps: *const gst::GstCaps,
1375    ) -> gboolean;
1376    #[cfg(feature = "v1_20")]
1377    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1378    pub fn gst_rtp_header_extension_set_wants_update_non_rtp_src_caps(
1379        ext: *mut GstRTPHeaderExtension,
1380        state: gboolean,
1381    );
1382    #[cfg(feature = "v1_20")]
1383    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1384    pub fn gst_rtp_header_extension_update_non_rtp_src_caps(
1385        ext: *mut GstRTPHeaderExtension,
1386        caps: *mut gst::GstCaps,
1387    ) -> gboolean;
1388    #[cfg(feature = "v1_20")]
1389    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1390    pub fn gst_rtp_header_extension_wants_update_non_rtp_src_caps(
1391        ext: *mut GstRTPHeaderExtension,
1392    ) -> gboolean;
1393    #[cfg(feature = "v1_20")]
1394    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1395    pub fn gst_rtp_header_extension_write(
1396        ext: *mut GstRTPHeaderExtension,
1397        input_meta: *const gst::GstBuffer,
1398        write_flags: GstRTPHeaderExtensionFlags,
1399        output: *mut gst::GstBuffer,
1400        data: *mut u8,
1401        size: size_t,
1402    ) -> ssize_t;
1403
1404    //=========================================================================
1405    // Other functions
1406    //=========================================================================
1407    #[cfg(feature = "v1_16")]
1408    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1409    pub fn gst_buffer_add_rtp_source_meta(
1410        buffer: *mut gst::GstBuffer,
1411        ssrc: *const u32,
1412        csrc: *const u32,
1413        csrc_count: c_uint,
1414    ) -> *mut GstRTPSourceMeta;
1415    #[cfg(feature = "v1_16")]
1416    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1417    pub fn gst_buffer_get_rtp_source_meta(buffer: *mut gst::GstBuffer) -> *mut GstRTPSourceMeta;
1418    pub fn gst_rtcp_ntp_to_unix(ntptime: u64) -> u64;
1419    pub fn gst_rtcp_sdes_name_to_type(name: *const c_char) -> GstRTCPSDESType;
1420    pub fn gst_rtcp_sdes_type_to_name(type_: GstRTCPSDESType) -> *const c_char;
1421    pub fn gst_rtcp_unix_to_ntp(unixtime: u64) -> u64;
1422    #[cfg(feature = "v1_20")]
1423    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1424    pub fn gst_rtp_get_header_extension_list() -> *mut glib::GList;
1425    pub fn gst_rtp_hdrext_get_ntp_56(data: gpointer, size: c_uint, ntptime: *mut u64) -> gboolean;
1426    pub fn gst_rtp_hdrext_get_ntp_64(data: gpointer, size: c_uint, ntptime: *mut u64) -> gboolean;
1427    pub fn gst_rtp_hdrext_set_ntp_56(data: gpointer, size: c_uint, ntptime: u64) -> gboolean;
1428    pub fn gst_rtp_hdrext_set_ntp_64(data: gpointer, size: c_uint, ntptime: u64) -> gboolean;
1429    #[cfg(feature = "v1_16")]
1430    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1431    pub fn gst_rtp_source_meta_api_get_type() -> GType;
1432
1433}