James Kuszmaul | 82f6c04 | 2021-01-17 11:30:16 -0800 | [diff] [blame^] | 1 | /** |
| 2 | * @file sdp.h Internal SDP interface |
| 3 | * |
| 4 | * Copyright (C) 2010 Creytiv.com |
| 5 | */ |
| 6 | |
| 7 | |
| 8 | enum { |
| 9 | RTP_DYNPT_START = 96, |
| 10 | RTP_DYNPT_END = 127, |
| 11 | }; |
| 12 | |
| 13 | |
| 14 | struct 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 | |
| 28 | struct 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 */ |
| 55 | void sdp_session_rreset(struct sdp_session *sess); |
| 56 | |
| 57 | |
| 58 | /* media */ |
| 59 | int sdp_media_radd(struct sdp_media **mp, struct sdp_session *sess, |
| 60 | const struct pl *name, const struct pl *proto); |
| 61 | void sdp_media_rreset(struct sdp_media *m); |
| 62 | bool sdp_media_proto_cmp(struct sdp_media *m, const struct pl *proto, |
| 63 | bool update); |
| 64 | struct sdp_media *sdp_media_find(const struct sdp_session *sess, |
| 65 | const struct pl *name, |
| 66 | const struct pl *proto, |
| 67 | bool update_proto); |
| 68 | void sdp_media_align_formats(struct sdp_media *m, bool offer); |
| 69 | |
| 70 | |
| 71 | /* format */ |
| 72 | int sdp_format_radd(struct sdp_media *m, const struct pl *id); |
| 73 | struct sdp_format *sdp_format_find(const struct list *lst, |
| 74 | const struct pl *id); |
| 75 | |
| 76 | |
| 77 | /* attribute */ |
| 78 | struct sdp_attr; |
| 79 | |
| 80 | int sdp_attr_add(struct list *lst, struct pl *name, struct pl *val); |
| 81 | int sdp_attr_addv(struct list *lst, const char *name, const char *val, |
| 82 | va_list ap); |
| 83 | void sdp_attr_del(const struct list *lst, const char *name); |
| 84 | const char *sdp_attr_apply(const struct list *lst, const char *name, |
| 85 | sdp_attr_h *attrh, void *arg); |
| 86 | int sdp_attr_print(struct re_printf *pf, const struct sdp_attr *attr); |
| 87 | int sdp_attr_debug(struct re_printf *pf, const struct sdp_attr *attr); |