blob: f0588d1f360848b0e5066d8817cfc1ce2328e50e [file] [log] [blame]
James Kuszmaul82f6c042021-01-17 11:30:16 -08001/**
2 * @file sdp.h Internal SDP interface
3 *
4 * Copyright (C) 2010 Creytiv.com
5 */
6
7
8enum {
9 RTP_DYNPT_START = 96,
10 RTP_DYNPT_END = 127,
11};
12
13
14struct sdp_session {
15 struct list lmedial;
16 struct list medial;
17 struct list lattrl;
18 struct list rattrl;
19 struct sa laddr;
20 struct sa raddr;
21 int32_t lbwv[SDP_BANDWIDTH_MAX];
22 int32_t rbwv[SDP_BANDWIDTH_MAX];
23 uint32_t id;
24 uint32_t ver;
25 enum sdp_dir rdir;
26};
27
28struct sdp_media {
29 struct le le;
30 struct list lfmtl;
31 struct list rfmtl;
32 struct list lattrl;
33 struct list rattrl;
34 struct sa laddr;
35 struct sa raddr;
36 struct sa laddr_rtcp;
37 struct sa raddr_rtcp;
38 int32_t lbwv[SDP_BANDWIDTH_MAX];
39 int32_t rbwv[SDP_BANDWIDTH_MAX];
40 char *name;
41 char *proto;
42 char *protov[8];
43 char *uproto; /* unsupported protocol */
44 sdp_media_enc_h *ench;
45 void *arg;
46 enum sdp_dir ldir;
47 enum sdp_dir rdir;
48 bool fmt_ignore;
49 bool disabled;
50 int dynpt;
51};
52
53
54/* session */
55void sdp_session_rreset(struct sdp_session *sess);
56
57
58/* media */
59int sdp_media_radd(struct sdp_media **mp, struct sdp_session *sess,
60 const struct pl *name, const struct pl *proto);
61void sdp_media_rreset(struct sdp_media *m);
62bool sdp_media_proto_cmp(struct sdp_media *m, const struct pl *proto,
63 bool update);
64struct sdp_media *sdp_media_find(const struct sdp_session *sess,
65 const struct pl *name,
66 const struct pl *proto,
67 bool update_proto);
68void sdp_media_align_formats(struct sdp_media *m, bool offer);
69
70
71/* format */
72int sdp_format_radd(struct sdp_media *m, const struct pl *id);
73struct sdp_format *sdp_format_find(const struct list *lst,
74 const struct pl *id);
75
76
77/* attribute */
78struct sdp_attr;
79
80int sdp_attr_add(struct list *lst, struct pl *name, struct pl *val);
81int sdp_attr_addv(struct list *lst, const char *name, const char *val,
82 va_list ap);
83void sdp_attr_del(const struct list *lst, const char *name);
84const char *sdp_attr_apply(const struct list *lst, const char *name,
85 sdp_attr_h *attrh, void *arg);
86int sdp_attr_print(struct re_printf *pf, const struct sdp_attr *attr);
87int sdp_attr_debug(struct re_printf *pf, const struct sdp_attr *attr);