1#![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
32pub 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
138pub 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
192pub 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#[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#[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 pub fn gst_rtcpfb_type_get_type() -> GType;
609
610 pub fn gst_rtcpsdes_type_get_type() -> GType;
614
615 pub fn gst_rtcp_type_get_type() -> GType;
619
620 #[cfg(feature = "v1_16")]
624 #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
625 pub fn gst_rtcpxr_type_get_type() -> GType;
626
627 pub fn gst_rtp_payload_get_type() -> GType;
631
632 pub fn gst_rtp_profile_get_type() -> GType;
636
637 pub fn gst_rtp_buffer_flags_get_type() -> GType;
641
642 pub fn gst_rtp_buffer_map_flags_get_type() -> GType;
646
647 #[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 #[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 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 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 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 #[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 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 #[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 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 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 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 #[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 #[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}