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_sdp_sys as gst_sdp;
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 GstWebRTCBundlePolicy = c_int;
34pub const GST_WEBRTC_BUNDLE_POLICY_NONE: GstWebRTCBundlePolicy = 0;
35pub const GST_WEBRTC_BUNDLE_POLICY_BALANCED: GstWebRTCBundlePolicy = 1;
36pub const GST_WEBRTC_BUNDLE_POLICY_MAX_COMPAT: GstWebRTCBundlePolicy = 2;
37pub const GST_WEBRTC_BUNDLE_POLICY_MAX_BUNDLE: GstWebRTCBundlePolicy = 3;
38
39pub type GstWebRTCDTLSRole = c_int;
40pub const GST_WEBRTC_DTLS_ROLE_CLIENT: GstWebRTCDTLSRole = 0;
41pub const GST_WEBRTC_DTLS_ROLE_SERVER: GstWebRTCDTLSRole = 1;
42pub const GST_WEBRTC_DTLS_ROLE_UNKNOWN: GstWebRTCDTLSRole = 2;
43
44pub type GstWebRTCDTLSSetup = c_int;
45pub const GST_WEBRTC_DTLS_SETUP_NONE: GstWebRTCDTLSSetup = 0;
46pub const GST_WEBRTC_DTLS_SETUP_ACTPASS: GstWebRTCDTLSSetup = 1;
47pub const GST_WEBRTC_DTLS_SETUP_ACTIVE: GstWebRTCDTLSSetup = 2;
48pub const GST_WEBRTC_DTLS_SETUP_PASSIVE: GstWebRTCDTLSSetup = 3;
49
50pub type GstWebRTCDTLSTransportState = c_int;
51pub const GST_WEBRTC_DTLS_TRANSPORT_STATE_NEW: GstWebRTCDTLSTransportState = 0;
52pub const GST_WEBRTC_DTLS_TRANSPORT_STATE_CLOSED: GstWebRTCDTLSTransportState = 1;
53pub const GST_WEBRTC_DTLS_TRANSPORT_STATE_FAILED: GstWebRTCDTLSTransportState = 2;
54pub const GST_WEBRTC_DTLS_TRANSPORT_STATE_CONNECTING: GstWebRTCDTLSTransportState = 3;
55pub const GST_WEBRTC_DTLS_TRANSPORT_STATE_CONNECTED: GstWebRTCDTLSTransportState = 4;
56
57pub type GstWebRTCDataChannelState = c_int;
58pub const GST_WEBRTC_DATA_CHANNEL_STATE_CONNECTING: GstWebRTCDataChannelState = 1;
59pub const GST_WEBRTC_DATA_CHANNEL_STATE_OPEN: GstWebRTCDataChannelState = 2;
60pub const GST_WEBRTC_DATA_CHANNEL_STATE_CLOSING: GstWebRTCDataChannelState = 3;
61pub const GST_WEBRTC_DATA_CHANNEL_STATE_CLOSED: GstWebRTCDataChannelState = 4;
62
63pub type GstWebRTCError = c_int;
64pub const GST_WEBRTC_ERROR_DATA_CHANNEL_FAILURE: GstWebRTCError = 0;
65pub const GST_WEBRTC_ERROR_DTLS_FAILURE: GstWebRTCError = 1;
66pub const GST_WEBRTC_ERROR_FINGERPRINT_FAILURE: GstWebRTCError = 2;
67pub const GST_WEBRTC_ERROR_SCTP_FAILURE: GstWebRTCError = 3;
68pub const GST_WEBRTC_ERROR_SDP_SYNTAX_ERROR: GstWebRTCError = 4;
69pub const GST_WEBRTC_ERROR_HARDWARE_ENCODER_NOT_AVAILABLE: GstWebRTCError = 5;
70pub const GST_WEBRTC_ERROR_ENCODER_ERROR: GstWebRTCError = 6;
71pub const GST_WEBRTC_ERROR_INVALID_STATE: GstWebRTCError = 7;
72pub const GST_WEBRTC_ERROR_INTERNAL_FAILURE: GstWebRTCError = 8;
73#[cfg(feature = "v1_22")]
74#[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
75pub const GST_WEBRTC_ERROR_INVALID_MODIFICATION: GstWebRTCError = 9;
76#[cfg(feature = "v1_22")]
77#[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
78pub const GST_WEBRTC_ERROR_TYPE_ERROR: GstWebRTCError = 10;
79
80pub type GstWebRTCFECType = c_int;
81pub const GST_WEBRTC_FEC_TYPE_NONE: GstWebRTCFECType = 0;
82pub const GST_WEBRTC_FEC_TYPE_ULP_RED: GstWebRTCFECType = 1;
83
84pub type GstWebRTCICEComponent = c_int;
85pub const GST_WEBRTC_ICE_COMPONENT_RTP: GstWebRTCICEComponent = 0;
86pub const GST_WEBRTC_ICE_COMPONENT_RTCP: GstWebRTCICEComponent = 1;
87
88pub type GstWebRTCICEConnectionState = c_int;
89pub const GST_WEBRTC_ICE_CONNECTION_STATE_NEW: GstWebRTCICEConnectionState = 0;
90pub const GST_WEBRTC_ICE_CONNECTION_STATE_CHECKING: GstWebRTCICEConnectionState = 1;
91pub const GST_WEBRTC_ICE_CONNECTION_STATE_CONNECTED: GstWebRTCICEConnectionState = 2;
92pub const GST_WEBRTC_ICE_CONNECTION_STATE_COMPLETED: GstWebRTCICEConnectionState = 3;
93pub const GST_WEBRTC_ICE_CONNECTION_STATE_FAILED: GstWebRTCICEConnectionState = 4;
94pub const GST_WEBRTC_ICE_CONNECTION_STATE_DISCONNECTED: GstWebRTCICEConnectionState = 5;
95pub const GST_WEBRTC_ICE_CONNECTION_STATE_CLOSED: GstWebRTCICEConnectionState = 6;
96
97pub type GstWebRTCICEGatheringState = c_int;
98pub const GST_WEBRTC_ICE_GATHERING_STATE_NEW: GstWebRTCICEGatheringState = 0;
99pub const GST_WEBRTC_ICE_GATHERING_STATE_GATHERING: GstWebRTCICEGatheringState = 1;
100pub const GST_WEBRTC_ICE_GATHERING_STATE_COMPLETE: GstWebRTCICEGatheringState = 2;
101
102pub type GstWebRTCICERole = c_int;
103pub const GST_WEBRTC_ICE_ROLE_CONTROLLED: GstWebRTCICERole = 0;
104pub const GST_WEBRTC_ICE_ROLE_CONTROLLING: GstWebRTCICERole = 1;
105
106pub type GstWebRTCICETcpCandidateType = c_int;
107pub const GST_WEBRTC_ICE_TCP_CANDIDATE_TYPE_ACTIVE: GstWebRTCICETcpCandidateType = 0;
108pub const GST_WEBRTC_ICE_TCP_CANDIDATE_TYPE_PASSIVE: GstWebRTCICETcpCandidateType = 1;
109pub const GST_WEBRTC_ICE_TCP_CANDIDATE_TYPE_SO: GstWebRTCICETcpCandidateType = 2;
110pub const GST_WEBRTC_ICE_TCP_CANDIDATE_TYPE_NONE: GstWebRTCICETcpCandidateType = 3;
111
112pub type GstWebRTCICETransportPolicy = c_int;
113pub const GST_WEBRTC_ICE_TRANSPORT_POLICY_ALL: GstWebRTCICETransportPolicy = 0;
114pub const GST_WEBRTC_ICE_TRANSPORT_POLICY_RELAY: GstWebRTCICETransportPolicy = 1;
115
116pub type GstWebRTCKind = c_int;
117pub const GST_WEBRTC_KIND_UNKNOWN: GstWebRTCKind = 0;
118pub const GST_WEBRTC_KIND_AUDIO: GstWebRTCKind = 1;
119pub const GST_WEBRTC_KIND_VIDEO: GstWebRTCKind = 2;
120
121pub type GstWebRTCPeerConnectionState = c_int;
122pub const GST_WEBRTC_PEER_CONNECTION_STATE_NEW: GstWebRTCPeerConnectionState = 0;
123pub const GST_WEBRTC_PEER_CONNECTION_STATE_CONNECTING: GstWebRTCPeerConnectionState = 1;
124pub const GST_WEBRTC_PEER_CONNECTION_STATE_CONNECTED: GstWebRTCPeerConnectionState = 2;
125pub const GST_WEBRTC_PEER_CONNECTION_STATE_DISCONNECTED: GstWebRTCPeerConnectionState = 3;
126pub const GST_WEBRTC_PEER_CONNECTION_STATE_FAILED: GstWebRTCPeerConnectionState = 4;
127pub const GST_WEBRTC_PEER_CONNECTION_STATE_CLOSED: GstWebRTCPeerConnectionState = 5;
128
129pub type GstWebRTCPriorityType = c_int;
130pub const GST_WEBRTC_PRIORITY_TYPE_VERY_LOW: GstWebRTCPriorityType = 1;
131pub const GST_WEBRTC_PRIORITY_TYPE_LOW: GstWebRTCPriorityType = 2;
132pub const GST_WEBRTC_PRIORITY_TYPE_MEDIUM: GstWebRTCPriorityType = 3;
133pub const GST_WEBRTC_PRIORITY_TYPE_HIGH: GstWebRTCPriorityType = 4;
134
135pub type GstWebRTCRTPTransceiverDirection = c_int;
136pub const GST_WEBRTC_RTP_TRANSCEIVER_DIRECTION_NONE: GstWebRTCRTPTransceiverDirection = 0;
137pub const GST_WEBRTC_RTP_TRANSCEIVER_DIRECTION_INACTIVE: GstWebRTCRTPTransceiverDirection = 1;
138pub const GST_WEBRTC_RTP_TRANSCEIVER_DIRECTION_SENDONLY: GstWebRTCRTPTransceiverDirection = 2;
139pub const GST_WEBRTC_RTP_TRANSCEIVER_DIRECTION_RECVONLY: GstWebRTCRTPTransceiverDirection = 3;
140pub const GST_WEBRTC_RTP_TRANSCEIVER_DIRECTION_SENDRECV: GstWebRTCRTPTransceiverDirection = 4;
141
142pub type GstWebRTCSCTPTransportState = c_int;
143pub const GST_WEBRTC_SCTP_TRANSPORT_STATE_NEW: GstWebRTCSCTPTransportState = 0;
144pub const GST_WEBRTC_SCTP_TRANSPORT_STATE_CONNECTING: GstWebRTCSCTPTransportState = 1;
145pub const GST_WEBRTC_SCTP_TRANSPORT_STATE_CONNECTED: GstWebRTCSCTPTransportState = 2;
146pub const GST_WEBRTC_SCTP_TRANSPORT_STATE_CLOSED: GstWebRTCSCTPTransportState = 3;
147
148pub type GstWebRTCSDPType = c_int;
149pub const GST_WEBRTC_SDP_TYPE_OFFER: GstWebRTCSDPType = 1;
150pub const GST_WEBRTC_SDP_TYPE_PRANSWER: GstWebRTCSDPType = 2;
151pub const GST_WEBRTC_SDP_TYPE_ANSWER: GstWebRTCSDPType = 3;
152pub const GST_WEBRTC_SDP_TYPE_ROLLBACK: GstWebRTCSDPType = 4;
153
154pub type GstWebRTCSignalingState = c_int;
155pub const GST_WEBRTC_SIGNALING_STATE_STABLE: GstWebRTCSignalingState = 0;
156pub const GST_WEBRTC_SIGNALING_STATE_CLOSED: GstWebRTCSignalingState = 1;
157pub const GST_WEBRTC_SIGNALING_STATE_HAVE_LOCAL_OFFER: GstWebRTCSignalingState = 2;
158pub const GST_WEBRTC_SIGNALING_STATE_HAVE_REMOTE_OFFER: GstWebRTCSignalingState = 3;
159pub const GST_WEBRTC_SIGNALING_STATE_HAVE_LOCAL_PRANSWER: GstWebRTCSignalingState = 4;
160pub const GST_WEBRTC_SIGNALING_STATE_HAVE_REMOTE_PRANSWER: GstWebRTCSignalingState = 5;
161
162pub type GstWebRTCStatsType = c_int;
163pub const GST_WEBRTC_STATS_CODEC: GstWebRTCStatsType = 1;
164pub const GST_WEBRTC_STATS_INBOUND_RTP: GstWebRTCStatsType = 2;
165pub const GST_WEBRTC_STATS_OUTBOUND_RTP: GstWebRTCStatsType = 3;
166pub const GST_WEBRTC_STATS_REMOTE_INBOUND_RTP: GstWebRTCStatsType = 4;
167pub const GST_WEBRTC_STATS_REMOTE_OUTBOUND_RTP: GstWebRTCStatsType = 5;
168pub const GST_WEBRTC_STATS_CSRC: GstWebRTCStatsType = 6;
169pub const GST_WEBRTC_STATS_PEER_CONNECTION: GstWebRTCStatsType = 7;
170pub const GST_WEBRTC_STATS_DATA_CHANNEL: GstWebRTCStatsType = 8;
171pub const GST_WEBRTC_STATS_STREAM: GstWebRTCStatsType = 9;
172pub const GST_WEBRTC_STATS_TRANSPORT: GstWebRTCStatsType = 10;
173pub const GST_WEBRTC_STATS_CANDIDATE_PAIR: GstWebRTCStatsType = 11;
174pub const GST_WEBRTC_STATS_LOCAL_CANDIDATE: GstWebRTCStatsType = 12;
175pub const GST_WEBRTC_STATS_REMOTE_CANDIDATE: GstWebRTCStatsType = 13;
176pub const GST_WEBRTC_STATS_CERTIFICATE: GstWebRTCStatsType = 14;
177
178#[derive(Copy, Clone)]
180#[repr(C)]
181pub union GstWebRTCICECandidateStats_ABI {
182 pub abi: GstWebRTCICECandidateStats_ABI_abi,
183 pub _gst_reserved: [gpointer; 20],
184}
185
186impl ::std::fmt::Debug for GstWebRTCICECandidateStats_ABI {
187 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
188 f.debug_struct(&format!("GstWebRTCICECandidateStats_ABI @ {self:p}"))
189 .field("abi", unsafe { &self.abi })
190 .finish()
191 }
192}
193
194pub type GstWebRTCICEOnCandidateFunc =
196 Option<unsafe extern "C" fn(*mut GstWebRTCICE, c_uint, *const c_char, gpointer)>;
197
198#[repr(C)]
200#[allow(dead_code)]
201pub struct _GstWebRTCDTLSTransportClass {
202 _data: [u8; 0],
203 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
204}
205
206pub type GstWebRTCDTLSTransportClass = _GstWebRTCDTLSTransportClass;
207
208#[repr(C)]
209#[allow(dead_code)]
210pub struct _GstWebRTCDataChannelClass {
211 _data: [u8; 0],
212 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
213}
214
215pub type GstWebRTCDataChannelClass = _GstWebRTCDataChannelClass;
216
217#[derive(Copy, Clone)]
218#[repr(C)]
219pub struct GstWebRTCICECandidateStats {
220 pub ipaddr: *mut c_char,
221 pub port: c_uint,
222 pub stream_id: c_uint,
223 pub type_: *const c_char,
224 pub proto: *const c_char,
225 pub relay_proto: *const c_char,
226 pub prio: c_uint,
227 pub url: *mut c_char,
228 pub ABI: GstWebRTCICECandidateStats_ABI,
229}
230
231impl ::std::fmt::Debug for GstWebRTCICECandidateStats {
232 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
233 f.debug_struct(&format!("GstWebRTCICECandidateStats @ {self:p}"))
234 .field("ipaddr", &self.ipaddr)
235 .field("port", &self.port)
236 .field("stream_id", &self.stream_id)
237 .field("type_", &self.type_)
238 .field("proto", &self.proto)
239 .field("relay_proto", &self.relay_proto)
240 .field("prio", &self.prio)
241 .field("url", &self.url)
242 .field("ABI", &self.ABI)
243 .finish()
244 }
245}
246
247#[derive(Copy, Clone)]
248#[repr(C)]
249pub struct GstWebRTCICECandidateStats_ABI_abi {
250 pub foundation: *mut c_char,
251 pub related_address: *mut c_char,
252 pub related_port: c_uint,
253 pub username_fragment: *mut c_char,
254 pub tcp_type: GstWebRTCICETcpCandidateType,
255}
256
257impl ::std::fmt::Debug for GstWebRTCICECandidateStats_ABI_abi {
258 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
259 f.debug_struct(&format!("GstWebRTCICECandidateStats_ABI_abi @ {self:p}"))
260 .field("foundation", &self.foundation)
261 .field("related_address", &self.related_address)
262 .field("related_port", &self.related_port)
263 .field("username_fragment", &self.username_fragment)
264 .field("tcp_type", &self.tcp_type)
265 .finish()
266 }
267}
268
269#[derive(Copy, Clone)]
270#[repr(C)]
271pub struct GstWebRTCICEClass {
272 pub parent_class: gst::GstObjectClass,
273 pub add_stream:
274 Option<unsafe extern "C" fn(*mut GstWebRTCICE, c_uint) -> *mut GstWebRTCICEStream>,
275 pub find_transport: Option<
276 unsafe extern "C" fn(
277 *mut GstWebRTCICE,
278 *mut GstWebRTCICEStream,
279 GstWebRTCICEComponent,
280 ) -> *mut GstWebRTCICETransport,
281 >,
282 pub gather_candidates:
283 Option<unsafe extern "C" fn(*mut GstWebRTCICE, *mut GstWebRTCICEStream) -> gboolean>,
284 pub add_candidate: Option<
285 unsafe extern "C" fn(
286 *mut GstWebRTCICE,
287 *mut GstWebRTCICEStream,
288 *const c_char,
289 *mut gst::GstPromise,
290 ),
291 >,
292 pub set_local_credentials: Option<
293 unsafe extern "C" fn(
294 *mut GstWebRTCICE,
295 *mut GstWebRTCICEStream,
296 *const c_char,
297 *const c_char,
298 ) -> gboolean,
299 >,
300 pub set_remote_credentials: Option<
301 unsafe extern "C" fn(
302 *mut GstWebRTCICE,
303 *mut GstWebRTCICEStream,
304 *const c_char,
305 *const c_char,
306 ) -> gboolean,
307 >,
308 pub add_turn_server: Option<unsafe extern "C" fn(*mut GstWebRTCICE, *const c_char) -> gboolean>,
309 pub set_is_controller: Option<unsafe extern "C" fn(*mut GstWebRTCICE, gboolean)>,
310 pub get_is_controller: Option<unsafe extern "C" fn(*mut GstWebRTCICE) -> gboolean>,
311 pub set_force_relay: Option<unsafe extern "C" fn(*mut GstWebRTCICE, gboolean)>,
312 pub set_stun_server: Option<unsafe extern "C" fn(*mut GstWebRTCICE, *const c_char)>,
313 pub get_stun_server: Option<unsafe extern "C" fn(*mut GstWebRTCICE) -> *mut c_char>,
314 pub set_turn_server: Option<unsafe extern "C" fn(*mut GstWebRTCICE, *const c_char)>,
315 pub get_turn_server: Option<unsafe extern "C" fn(*mut GstWebRTCICE) -> *mut c_char>,
316 pub set_http_proxy: Option<unsafe extern "C" fn(*mut GstWebRTCICE, *const c_char)>,
317 pub get_http_proxy: Option<unsafe extern "C" fn(*mut GstWebRTCICE) -> *mut c_char>,
318 pub set_tos: Option<unsafe extern "C" fn(*mut GstWebRTCICE, *mut GstWebRTCICEStream, c_uint)>,
319 pub set_on_ice_candidate: Option<
320 unsafe extern "C" fn(
321 *mut GstWebRTCICE,
322 GstWebRTCICEOnCandidateFunc,
323 gpointer,
324 glib::GDestroyNotify,
325 ),
326 >,
327 pub get_local_candidates: Option<
328 unsafe extern "C" fn(
329 *mut GstWebRTCICE,
330 *mut GstWebRTCICEStream,
331 ) -> *mut *mut GstWebRTCICECandidateStats,
332 >,
333 pub get_remote_candidates: Option<
334 unsafe extern "C" fn(
335 *mut GstWebRTCICE,
336 *mut GstWebRTCICEStream,
337 ) -> *mut *mut GstWebRTCICECandidateStats,
338 >,
339 pub get_selected_pair: Option<
340 unsafe extern "C" fn(
341 *mut GstWebRTCICE,
342 *mut GstWebRTCICEStream,
343 *mut *mut GstWebRTCICECandidateStats,
344 *mut *mut GstWebRTCICECandidateStats,
345 ) -> gboolean,
346 >,
347 pub _gst_reserved: [gpointer; 4],
348}
349
350impl ::std::fmt::Debug for GstWebRTCICEClass {
351 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
352 f.debug_struct(&format!("GstWebRTCICEClass @ {self:p}"))
353 .field("parent_class", &self.parent_class)
354 .field("add_stream", &self.add_stream)
355 .field("find_transport", &self.find_transport)
356 .field("gather_candidates", &self.gather_candidates)
357 .field("add_candidate", &self.add_candidate)
358 .field("set_local_credentials", &self.set_local_credentials)
359 .field("set_remote_credentials", &self.set_remote_credentials)
360 .field("add_turn_server", &self.add_turn_server)
361 .field("set_is_controller", &self.set_is_controller)
362 .field("get_is_controller", &self.get_is_controller)
363 .field("set_force_relay", &self.set_force_relay)
364 .field("set_stun_server", &self.set_stun_server)
365 .field("get_stun_server", &self.get_stun_server)
366 .field("set_turn_server", &self.set_turn_server)
367 .field("get_turn_server", &self.get_turn_server)
368 .field("set_http_proxy", &self.set_http_proxy)
369 .field("get_http_proxy", &self.get_http_proxy)
370 .field("set_tos", &self.set_tos)
371 .field("set_on_ice_candidate", &self.set_on_ice_candidate)
372 .field("get_local_candidates", &self.get_local_candidates)
373 .field("get_remote_candidates", &self.get_remote_candidates)
374 .field("get_selected_pair", &self.get_selected_pair)
375 .field("_gst_reserved", &self._gst_reserved)
376 .finish()
377 }
378}
379
380#[derive(Copy, Clone)]
381#[repr(C)]
382pub struct GstWebRTCICEStreamClass {
383 pub parent_class: gst::GstObjectClass,
384 pub find_transport: Option<
385 unsafe extern "C" fn(
386 *mut GstWebRTCICEStream,
387 GstWebRTCICEComponent,
388 ) -> *mut GstWebRTCICETransport,
389 >,
390 pub gather_candidates: Option<unsafe extern "C" fn(*mut GstWebRTCICEStream) -> gboolean>,
391}
392
393impl ::std::fmt::Debug for GstWebRTCICEStreamClass {
394 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
395 f.debug_struct(&format!("GstWebRTCICEStreamClass @ {self:p}"))
396 .field("parent_class", &self.parent_class)
397 .field("find_transport", &self.find_transport)
398 .field("gather_candidates", &self.gather_candidates)
399 .finish()
400 }
401}
402
403#[derive(Copy, Clone)]
404#[repr(C)]
405pub struct GstWebRTCICETransportClass {
406 pub parent_class: gst::GstObjectClass,
407 pub gather_candidates: Option<unsafe extern "C" fn(*mut GstWebRTCICETransport) -> gboolean>,
408 pub _padding: [gpointer; 4],
409}
410
411impl ::std::fmt::Debug for GstWebRTCICETransportClass {
412 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
413 f.debug_struct(&format!("GstWebRTCICETransportClass @ {self:p}"))
414 .field("parent_class", &self.parent_class)
415 .field("gather_candidates", &self.gather_candidates)
416 .field("_padding", &self._padding)
417 .finish()
418 }
419}
420
421#[repr(C)]
422#[allow(dead_code)]
423pub struct _GstWebRTCRTPReceiverClass {
424 _data: [u8; 0],
425 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
426}
427
428pub type GstWebRTCRTPReceiverClass = _GstWebRTCRTPReceiverClass;
429
430#[repr(C)]
431#[allow(dead_code)]
432pub struct _GstWebRTCRTPSenderClass {
433 _data: [u8; 0],
434 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
435}
436
437pub type GstWebRTCRTPSenderClass = _GstWebRTCRTPSenderClass;
438
439#[repr(C)]
440#[allow(dead_code)]
441pub struct _GstWebRTCRTPTransceiverClass {
442 _data: [u8; 0],
443 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
444}
445
446pub type GstWebRTCRTPTransceiverClass = _GstWebRTCRTPTransceiverClass;
447
448#[repr(C)]
449#[allow(dead_code)]
450pub struct _GstWebRTCSCTPTransportClass {
451 _data: [u8; 0],
452 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
453}
454
455pub type GstWebRTCSCTPTransportClass = _GstWebRTCSCTPTransportClass;
456
457#[derive(Copy, Clone)]
458#[repr(C)]
459pub struct GstWebRTCSessionDescription {
460 pub type_: GstWebRTCSDPType,
461 pub sdp: *mut gst_sdp::GstSDPMessage,
462}
463
464impl ::std::fmt::Debug for GstWebRTCSessionDescription {
465 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
466 f.debug_struct(&format!("GstWebRTCSessionDescription @ {self:p}"))
467 .field("type_", &self.type_)
468 .field("sdp", &self.sdp)
469 .finish()
470 }
471}
472
473#[repr(C)]
475#[allow(dead_code)]
476pub struct GstWebRTCDTLSTransport {
477 _data: [u8; 0],
478 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
479}
480
481impl ::std::fmt::Debug for GstWebRTCDTLSTransport {
482 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
483 f.debug_struct(&format!("GstWebRTCDTLSTransport @ {self:p}"))
484 .finish()
485 }
486}
487
488#[repr(C)]
489#[allow(dead_code)]
490pub struct GstWebRTCDataChannel {
491 _data: [u8; 0],
492 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
493}
494
495impl ::std::fmt::Debug for GstWebRTCDataChannel {
496 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
497 f.debug_struct(&format!("GstWebRTCDataChannel @ {self:p}"))
498 .finish()
499 }
500}
501
502#[derive(Copy, Clone)]
503#[repr(C)]
504pub struct GstWebRTCICE {
505 pub parent: gst::GstObject,
506 pub ice_gathering_state: GstWebRTCICEGatheringState,
507 pub ice_connection_state: GstWebRTCICEConnectionState,
508 pub min_rtp_port: c_uint,
509 pub max_rtp_port: c_uint,
510 pub _gst_reserved: [gpointer; 4],
511}
512
513impl ::std::fmt::Debug for GstWebRTCICE {
514 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
515 f.debug_struct(&format!("GstWebRTCICE @ {self:p}"))
516 .field("parent", &self.parent)
517 .field("ice_gathering_state", &self.ice_gathering_state)
518 .field("ice_connection_state", &self.ice_connection_state)
519 .field("min_rtp_port", &self.min_rtp_port)
520 .field("max_rtp_port", &self.max_rtp_port)
521 .field("_gst_reserved", &self._gst_reserved)
522 .finish()
523 }
524}
525
526#[derive(Copy, Clone)]
527#[repr(C)]
528pub struct GstWebRTCICEStream {
529 pub parent: gst::GstObject,
530 pub stream_id: c_uint,
531}
532
533impl ::std::fmt::Debug for GstWebRTCICEStream {
534 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
535 f.debug_struct(&format!("GstWebRTCICEStream @ {self:p}"))
536 .field("parent", &self.parent)
537 .field("stream_id", &self.stream_id)
538 .finish()
539 }
540}
541
542#[derive(Copy, Clone)]
543#[repr(C)]
544pub struct GstWebRTCICETransport {
545 pub parent: gst::GstObject,
546 pub role: GstWebRTCICERole,
547 pub component: GstWebRTCICEComponent,
548 pub state: GstWebRTCICEConnectionState,
549 pub gathering_state: GstWebRTCICEGatheringState,
550 pub src: *mut gst::GstElement,
551 pub sink: *mut gst::GstElement,
552 pub _padding: [gpointer; 4],
553}
554
555impl ::std::fmt::Debug for GstWebRTCICETransport {
556 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
557 f.debug_struct(&format!("GstWebRTCICETransport @ {self:p}"))
558 .field("parent", &self.parent)
559 .field("role", &self.role)
560 .field("component", &self.component)
561 .field("state", &self.state)
562 .field("gathering_state", &self.gathering_state)
563 .field("src", &self.src)
564 .field("sink", &self.sink)
565 .field("_padding", &self._padding)
566 .finish()
567 }
568}
569
570#[repr(C)]
571#[allow(dead_code)]
572pub struct GstWebRTCRTPReceiver {
573 _data: [u8; 0],
574 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
575}
576
577impl ::std::fmt::Debug for GstWebRTCRTPReceiver {
578 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
579 f.debug_struct(&format!("GstWebRTCRTPReceiver @ {self:p}"))
580 .finish()
581 }
582}
583
584#[repr(C)]
585#[allow(dead_code)]
586pub struct GstWebRTCRTPSender {
587 _data: [u8; 0],
588 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
589}
590
591impl ::std::fmt::Debug for GstWebRTCRTPSender {
592 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
593 f.debug_struct(&format!("GstWebRTCRTPSender @ {self:p}"))
594 .finish()
595 }
596}
597
598#[repr(C)]
599#[allow(dead_code)]
600pub struct GstWebRTCRTPTransceiver {
601 _data: [u8; 0],
602 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
603}
604
605impl ::std::fmt::Debug for GstWebRTCRTPTransceiver {
606 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
607 f.debug_struct(&format!("GstWebRTCRTPTransceiver @ {self:p}"))
608 .finish()
609 }
610}
611
612#[repr(C)]
613#[allow(dead_code)]
614pub struct GstWebRTCSCTPTransport {
615 _data: [u8; 0],
616 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
617}
618
619impl ::std::fmt::Debug for GstWebRTCSCTPTransport {
620 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
621 f.debug_struct(&format!("GstWebRTCSCTPTransport @ {self:p}"))
622 .finish()
623 }
624}
625
626extern "C" {
627
628 #[cfg(feature = "v1_16")]
632 #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
633 pub fn gst_webrtc_bundle_policy_get_type() -> GType;
634
635 #[cfg(feature = "v1_28")]
639 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
640 pub fn gst_webrtc_dtls_role_get_type() -> GType;
641
642 pub fn gst_webrtc_dtls_setup_get_type() -> GType;
646
647 pub fn gst_webrtc_dtls_transport_state_get_type() -> GType;
651
652 #[cfg(feature = "v1_16")]
656 #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
657 pub fn gst_webrtc_data_channel_state_get_type() -> GType;
658
659 #[cfg(feature = "v1_20")]
663 #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
664 pub fn gst_webrtc_error_get_type() -> GType;
665 #[cfg(feature = "v1_20")]
666 #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
667 pub fn gst_webrtc_error_quark() -> glib::GQuark;
668
669 #[cfg(feature = "v1_14_1")]
673 #[cfg_attr(docsrs, doc(cfg(feature = "v1_14_1")))]
674 pub fn gst_webrtc_fec_type_get_type() -> GType;
675
676 pub fn gst_webrtc_ice_component_get_type() -> GType;
680
681 pub fn gst_webrtc_ice_connection_state_get_type() -> GType;
685
686 pub fn gst_webrtc_ice_gathering_state_get_type() -> GType;
690
691 pub fn gst_webrtc_ice_role_get_type() -> GType;
695
696 #[cfg(feature = "v1_28")]
700 #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
701 pub fn gst_webrtc_ice_tcp_candidate_type_get_type() -> GType;
702
703 #[cfg(feature = "v1_16")]
707 #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
708 pub fn gst_webrtc_ice_transport_policy_get_type() -> GType;
709
710 #[cfg(feature = "v1_20")]
714 #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
715 pub fn gst_webrtc_kind_get_type() -> GType;
716
717 pub fn gst_webrtc_peer_connection_state_get_type() -> GType;
721
722 #[cfg(feature = "v1_16")]
726 #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
727 pub fn gst_webrtc_priority_type_get_type() -> GType;
728
729 pub fn gst_webrtc_rtp_transceiver_direction_get_type() -> GType;
733
734 #[cfg(feature = "v1_16")]
738 #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
739 pub fn gst_webrtc_sctp_transport_state_get_type() -> GType;
740
741 pub fn gst_webrtc_sdp_type_get_type() -> GType;
745 pub fn gst_webrtc_sdp_type_to_string(type_: GstWebRTCSDPType) -> *const c_char;
746
747 pub fn gst_webrtc_signaling_state_get_type() -> GType;
751
752 pub fn gst_webrtc_stats_type_get_type() -> GType;
756
757 #[cfg(feature = "v1_22")]
761 #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
762 pub fn gst_webrtc_ice_candidate_stats_get_type() -> GType;
763 #[cfg(feature = "v1_22")]
764 #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
765 pub fn gst_webrtc_ice_candidate_stats_copy(
766 stats: *mut GstWebRTCICECandidateStats,
767 ) -> *mut GstWebRTCICECandidateStats;
768 #[cfg(feature = "v1_22")]
769 #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
770 pub fn gst_webrtc_ice_candidate_stats_free(stats: *mut GstWebRTCICECandidateStats);
771
772 pub fn gst_webrtc_session_description_get_type() -> GType;
776 pub fn gst_webrtc_session_description_new(
777 type_: GstWebRTCSDPType,
778 sdp: *mut gst_sdp::GstSDPMessage,
779 ) -> *mut GstWebRTCSessionDescription;
780 pub fn gst_webrtc_session_description_copy(
781 src: *const GstWebRTCSessionDescription,
782 ) -> *mut GstWebRTCSessionDescription;
783 pub fn gst_webrtc_session_description_free(desc: *mut GstWebRTCSessionDescription);
784
785 pub fn gst_webrtc_dtls_transport_get_type() -> GType;
789
790 #[cfg(feature = "v1_18")]
794 #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
795 pub fn gst_webrtc_data_channel_get_type() -> GType;
796 #[cfg(feature = "v1_18")]
797 #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
798 pub fn gst_webrtc_data_channel_close(channel: *mut GstWebRTCDataChannel);
799 #[cfg(feature = "v1_18")]
800 #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
801 pub fn gst_webrtc_data_channel_send_data(
802 channel: *mut GstWebRTCDataChannel,
803 data: *mut glib::GBytes,
804 );
805 #[cfg(feature = "v1_22")]
806 #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
807 pub fn gst_webrtc_data_channel_send_data_full(
808 channel: *mut GstWebRTCDataChannel,
809 data: *mut glib::GBytes,
810 error: *mut *mut glib::GError,
811 ) -> gboolean;
812 #[cfg(feature = "v1_18")]
813 #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
814 pub fn gst_webrtc_data_channel_send_string(
815 channel: *mut GstWebRTCDataChannel,
816 str: *const c_char,
817 );
818 #[cfg(feature = "v1_22")]
819 #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
820 pub fn gst_webrtc_data_channel_send_string_full(
821 channel: *mut GstWebRTCDataChannel,
822 str: *const c_char,
823 error: *mut *mut glib::GError,
824 ) -> gboolean;
825
826 #[cfg(feature = "v1_22")]
830 #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
831 pub fn gst_webrtc_ice_get_type() -> GType;
832 #[cfg(feature = "v1_22")]
833 #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
834 pub fn gst_webrtc_ice_add_candidate(
835 ice: *mut GstWebRTCICE,
836 stream: *mut GstWebRTCICEStream,
837 candidate: *const c_char,
838 promise: *mut gst::GstPromise,
839 );
840 #[cfg(feature = "v1_22")]
841 #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
842 pub fn gst_webrtc_ice_add_stream(
843 ice: *mut GstWebRTCICE,
844 session_id: c_uint,
845 ) -> *mut GstWebRTCICEStream;
846 #[cfg(feature = "v1_22")]
847 #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
848 pub fn gst_webrtc_ice_add_turn_server(ice: *mut GstWebRTCICE, uri: *const c_char) -> gboolean;
849 #[cfg(feature = "v1_22")]
850 #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
851 pub fn gst_webrtc_ice_find_transport(
852 ice: *mut GstWebRTCICE,
853 stream: *mut GstWebRTCICEStream,
854 component: GstWebRTCICEComponent,
855 ) -> *mut GstWebRTCICETransport;
856 #[cfg(feature = "v1_22")]
857 #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
858 pub fn gst_webrtc_ice_gather_candidates(
859 ice: *mut GstWebRTCICE,
860 stream: *mut GstWebRTCICEStream,
861 ) -> gboolean;
862 #[cfg(feature = "v1_22")]
863 #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
864 pub fn gst_webrtc_ice_get_http_proxy(ice: *mut GstWebRTCICE) -> *mut c_char;
865 #[cfg(feature = "v1_22")]
866 #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
867 pub fn gst_webrtc_ice_get_is_controller(ice: *mut GstWebRTCICE) -> gboolean;
868 #[cfg(feature = "v1_22")]
869 #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
870 pub fn gst_webrtc_ice_get_local_candidates(
871 ice: *mut GstWebRTCICE,
872 stream: *mut GstWebRTCICEStream,
873 ) -> *mut *mut GstWebRTCICECandidateStats;
874 #[cfg(feature = "v1_22")]
875 #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
876 pub fn gst_webrtc_ice_get_remote_candidates(
877 ice: *mut GstWebRTCICE,
878 stream: *mut GstWebRTCICEStream,
879 ) -> *mut *mut GstWebRTCICECandidateStats;
880 #[cfg(feature = "v1_22")]
881 #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
882 pub fn gst_webrtc_ice_get_selected_pair(
883 ice: *mut GstWebRTCICE,
884 stream: *mut GstWebRTCICEStream,
885 local_stats: *mut *mut GstWebRTCICECandidateStats,
886 remote_stats: *mut *mut GstWebRTCICECandidateStats,
887 ) -> gboolean;
888 #[cfg(feature = "v1_22")]
889 #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
890 pub fn gst_webrtc_ice_get_stun_server(ice: *mut GstWebRTCICE) -> *mut c_char;
891 #[cfg(feature = "v1_22")]
892 #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
893 pub fn gst_webrtc_ice_get_turn_server(ice: *mut GstWebRTCICE) -> *mut c_char;
894 #[cfg(feature = "v1_22")]
895 #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
896 pub fn gst_webrtc_ice_set_force_relay(ice: *mut GstWebRTCICE, force_relay: gboolean);
897 #[cfg(feature = "v1_22")]
898 #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
899 pub fn gst_webrtc_ice_set_http_proxy(ice: *mut GstWebRTCICE, uri: *const c_char);
900 #[cfg(feature = "v1_22")]
901 #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
902 pub fn gst_webrtc_ice_set_is_controller(ice: *mut GstWebRTCICE, controller: gboolean);
903 #[cfg(feature = "v1_22")]
904 #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
905 pub fn gst_webrtc_ice_set_local_credentials(
906 ice: *mut GstWebRTCICE,
907 stream: *mut GstWebRTCICEStream,
908 ufrag: *const c_char,
909 pwd: *const c_char,
910 ) -> gboolean;
911 #[cfg(feature = "v1_22")]
912 #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
913 pub fn gst_webrtc_ice_set_on_ice_candidate(
914 ice: *mut GstWebRTCICE,
915 func: GstWebRTCICEOnCandidateFunc,
916 user_data: gpointer,
917 notify: glib::GDestroyNotify,
918 );
919 #[cfg(feature = "v1_22")]
920 #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
921 pub fn gst_webrtc_ice_set_remote_credentials(
922 ice: *mut GstWebRTCICE,
923 stream: *mut GstWebRTCICEStream,
924 ufrag: *const c_char,
925 pwd: *const c_char,
926 ) -> gboolean;
927 #[cfg(feature = "v1_22")]
928 #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
929 pub fn gst_webrtc_ice_set_stun_server(ice: *mut GstWebRTCICE, uri: *const c_char);
930 #[cfg(feature = "v1_22")]
931 #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
932 pub fn gst_webrtc_ice_set_tos(
933 ice: *mut GstWebRTCICE,
934 stream: *mut GstWebRTCICEStream,
935 tos: c_uint,
936 );
937 #[cfg(feature = "v1_22")]
938 #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
939 pub fn gst_webrtc_ice_set_turn_server(ice: *mut GstWebRTCICE, uri: *const c_char);
940
941 #[cfg(feature = "v1_22")]
945 #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
946 pub fn gst_webrtc_ice_stream_get_type() -> GType;
947 #[cfg(feature = "v1_22")]
948 #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
949 pub fn gst_webrtc_ice_stream_find_transport(
950 stream: *mut GstWebRTCICEStream,
951 component: GstWebRTCICEComponent,
952 ) -> *mut GstWebRTCICETransport;
953 #[cfg(feature = "v1_22")]
954 #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
955 pub fn gst_webrtc_ice_stream_gather_candidates(ice: *mut GstWebRTCICEStream) -> gboolean;
956
957 pub fn gst_webrtc_ice_transport_get_type() -> GType;
961 pub fn gst_webrtc_ice_transport_connection_state_change(
962 ice: *mut GstWebRTCICETransport,
963 new_state: GstWebRTCICEConnectionState,
964 );
965 pub fn gst_webrtc_ice_transport_gathering_state_change(
966 ice: *mut GstWebRTCICETransport,
967 new_state: GstWebRTCICEGatheringState,
968 );
969 pub fn gst_webrtc_ice_transport_new_candidate(
970 ice: *mut GstWebRTCICETransport,
971 stream_id: c_uint,
972 component: GstWebRTCICEComponent,
973 attr: *const c_char,
974 );
975 pub fn gst_webrtc_ice_transport_selected_pair_change(ice: *mut GstWebRTCICETransport);
976
977 pub fn gst_webrtc_rtp_receiver_get_type() -> GType;
981
982 pub fn gst_webrtc_rtp_sender_get_type() -> GType;
986 #[cfg(feature = "v1_20")]
987 #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
988 pub fn gst_webrtc_rtp_sender_set_priority(
989 sender: *mut GstWebRTCRTPSender,
990 priority: GstWebRTCPriorityType,
991 );
992
993 pub fn gst_webrtc_rtp_transceiver_get_type() -> GType;
997
998 #[cfg(feature = "v1_20")]
1002 #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1003 pub fn gst_webrtc_sctp_transport_get_type() -> GType;
1004
1005}