1#![allow(non_camel_case_types)]
2
3use glib_sys::{gboolean, GList};
4use std::os::raw::{c_char, c_int, c_long, c_short, c_ulong};
5
6pub type guint16 = c_short;
7pub type guint64 = c_ulong;
8pub type gint64 = c_long;
9
10#[repr(u32)]
11#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
12pub enum janus_sdp_mtype {
13 JANUS_SDP_AUDIO = 0,
14 JANUS_SDP_VIDEO = 1,
15 JANUS_SDP_APPLICATION = 2,
16 JANUS_SDP_OTHER = 3,
17}
18
19#[repr(u32)]
20#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
21pub enum janus_sdp_mdirection {
22 JANUS_SDP_DEFAULT = 0,
23 JANUS_SDP_SENDRECV = 1,
24 JANUS_SDP_SENDONLY = 2,
25 JANUS_SDP_RECVONLY = 3,
26 JANUS_SDP_INACTIVE = 4,
27 JANUS_SDP_INVALID = 5,
28}
29
30#[repr(C)]
31#[derive(Debug)]
32pub struct janus_sdp {
33 pub version: c_int,
34 pub o_name: *mut c_char,
35 pub o_sessid: guint64,
36 pub o_version: guint64,
37 pub o_ipv4: gboolean,
38 pub o_addr: *mut c_char,
39 pub s_name: *mut c_char,
40 pub t_start: guint64,
41 pub t_stop: guint64,
42 pub c_ipv4: gboolean,
43 pub c_addr: *mut c_char,
44 pub attributes: *mut GList,
45 pub m_lines: *mut GList,
46}
47
48#[repr(C)]
49#[derive(Debug)]
50pub struct janus_sdp_mline {
51 pub type_: janus_sdp_mtype,
52 pub type_str: *mut c_char,
53 pub port: guint16,
54 pub proto: *mut c_char,
55 pub fmts: *mut GList,
56 pub ptypes: *mut GList,
57 pub c_ipv4: gboolean,
58 pub c_addr: *mut c_char,
59 pub b_name: *mut c_char,
60 pub b_value: c_int,
61 pub direction: janus_sdp_mdirection,
62 pub attributes: *mut GList,
63}
64
65#[repr(C)]
66#[derive(Debug)]
67pub struct janus_sdp_attribute {
68 pub name: *mut c_char,
69 pub value: *mut c_char,
70 pub direction: janus_sdp_mdirection,
71}
72
73extern "C" {
74 pub fn janus_sdp_parse_mtype(type_: *const c_char) -> janus_sdp_mtype;
75 pub fn janus_sdp_mtype_str(type_: janus_sdp_mtype) -> *const c_char;
76 pub fn janus_sdp_parse_mdirection(direction: *const c_char) -> janus_sdp_mdirection;
77 pub fn janus_sdp_mdirection_str(direction: janus_sdp_mdirection) -> *const c_char;
78 pub fn janus_sdp_mline_create(
79 type_: janus_sdp_mtype,
80 port: guint16,
81 proto: *const c_char,
82 direction: janus_sdp_mdirection,
83 ) -> *mut janus_sdp_mline;
84 pub fn janus_sdp_mline_destroy(mline: *mut janus_sdp_mline);
85 pub fn janus_sdp_mline_find(sdp: *mut janus_sdp, type_: janus_sdp_mtype) -> *mut janus_sdp_mline;
86 pub fn janus_sdp_attribute_create(name: *const c_char, value: *const c_char, ...) -> *mut janus_sdp_attribute;
87 pub fn janus_sdp_attribute_destroy(attr: *mut janus_sdp_attribute);
88 pub fn janus_sdp_attribute_add_to_mline(mline: *mut janus_sdp_mline, attr: *mut janus_sdp_attribute) -> c_int;
89 pub fn janus_sdp_parse(sdp: *const c_char, error: *mut c_char, errlen: usize) -> *mut janus_sdp;
90 pub fn janus_sdp_remove_payload_type(sdp: *mut janus_sdp, pt: c_int) -> c_int;
91 pub fn janus_sdp_write(sdp: *mut janus_sdp) -> *mut c_char;
92 pub fn janus_sdp_new(name: *const c_char, address: *const c_char) -> *mut janus_sdp;
93 pub fn janus_sdp_generate_offer(name: *const c_char, address: *const c_char, ...) -> *mut janus_sdp;
94 pub fn janus_sdp_generate_answer(offer: *mut janus_sdp, ...) -> *mut janus_sdp;
95 pub fn janus_sdp_get_codec_pt(sdp: *mut janus_sdp, codec: *const c_char) -> c_int;
96 pub fn janus_sdp_get_codec_pt_full(sdp: *mut janus_sdp, codec: *const c_char, profile: *const c_char) -> c_int;
97 pub fn janus_sdp_get_codec_name(sdp: *mut janus_sdp, pt: c_int) -> *const c_char;
98 pub fn janus_sdp_get_codec_rtpmap(codec: *const c_char) -> *const c_char;
99 pub fn janus_sdp_destroy(sdp: *mut janus_sdp);
100}