janus_plugin_sys/
sdp.rs

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}