blob: 604082a52a3c5a180437f8f7d902f7272789e266 [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
Austin Schuh35a2f492021-04-07 21:41:56 -070013enum {
14 MEDIA_LADDR_SET = 1<<0,
15 MEDIA_LDIR_EXCLUDE = 1<<1,
16};
17
James Kuszmaul82f6c042021-01-17 11:30:16 -080018
19struct sdp_session {
20 struct list lmedial;
21 struct list medial;
22 struct list lattrl;
23 struct list rattrl;
24 struct sa laddr;
25 struct sa raddr;
26 int32_t lbwv[SDP_BANDWIDTH_MAX];
27 int32_t rbwv[SDP_BANDWIDTH_MAX];
28 uint32_t id;
29 uint32_t ver;
30 enum sdp_dir rdir;
31};
32
33struct sdp_media {
34 struct le le;
Austin Schuh35a2f492021-04-07 21:41:56 -070035 uint8_t flags;
James Kuszmaul82f6c042021-01-17 11:30:16 -080036 struct list lfmtl;
37 struct list rfmtl;
38 struct list lattrl;
39 struct list rattrl;
40 struct sa laddr;
41 struct sa raddr;
42 struct sa laddr_rtcp;
43 struct sa raddr_rtcp;
44 int32_t lbwv[SDP_BANDWIDTH_MAX];
45 int32_t rbwv[SDP_BANDWIDTH_MAX];
46 char *name;
47 char *proto;
48 char *protov[8];
49 char *uproto; /* unsupported protocol */
50 sdp_media_enc_h *ench;
51 void *arg;
52 enum sdp_dir ldir;
53 enum sdp_dir rdir;
54 bool fmt_ignore;
55 bool disabled;
56 int dynpt;
57};
58
59
60/* session */
61void sdp_session_rreset(struct sdp_session *sess);
62
63
64/* media */
65int sdp_media_radd(struct sdp_media **mp, struct sdp_session *sess,
66 const struct pl *name, const struct pl *proto);
67void sdp_media_rreset(struct sdp_media *m);
68bool sdp_media_proto_cmp(struct sdp_media *m, const struct pl *proto,
69 bool update);
70struct sdp_media *sdp_media_find(const struct sdp_session *sess,
71 const struct pl *name,
72 const struct pl *proto,
73 bool update_proto);
74void sdp_media_align_formats(struct sdp_media *m, bool offer);
75
76
77/* format */
78int sdp_format_radd(struct sdp_media *m, const struct pl *id);
79struct sdp_format *sdp_format_find(const struct list *lst,
80 const struct pl *id);
81
82
83/* attribute */
84struct sdp_attr;
85
86int sdp_attr_add(struct list *lst, struct pl *name, struct pl *val);
87int sdp_attr_addv(struct list *lst, const char *name, const char *val,
88 va_list ap);
89void sdp_attr_del(const struct list *lst, const char *name);
90const char *sdp_attr_apply(const struct list *lst, const char *name,
91 sdp_attr_h *attrh, void *arg);
92int sdp_attr_print(struct re_printf *pf, const struct sdp_attr *attr);
93int sdp_attr_debug(struct re_printf *pf, const struct sdp_attr *attr);