|
|
|
@ -2668,6 +2668,25 @@ static void media_packet_rtcp_mux(struct packet_handler_ctx *phc, struct sink_ha |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static void rtp_ext_mid_parse(struct packet_handler_ctx *phc, const struct rtp_extension_data *data) { |
|
|
|
__auto_type media = t_hash_table_lookup(phc->mp.media->monologue->media_ids, &data->content); |
|
|
|
if (!media) |
|
|
|
return; // XXX log error? |
|
|
|
|
|
|
|
media_packet_reset_media(phc, media); |
|
|
|
} |
|
|
|
|
|
|
|
static const rtp_ext_handler rtp_ext_mid = { |
|
|
|
.parse = rtp_ext_mid_parse, |
|
|
|
.id = RTP_EXT_MID, |
|
|
|
}; |
|
|
|
|
|
|
|
rtp_ext_handler rtp_extension_get_handler(const str *name) { |
|
|
|
if (!str_cmp(name, "urn:ietf:params:rtp-hdrext:sdes:mid")) |
|
|
|
return rtp_ext_mid; |
|
|
|
return (rtp_ext_handler) { .id = RTP_EXT_UNKNOWN }; |
|
|
|
} |
|
|
|
|
|
|
|
static void media_packet_rtp_extension(struct packet_handler_ctx *phc, unsigned int id, const str *data) { |
|
|
|
__auto_type ext = phc->mp.media->extmap_ops->lookup(phc->mp.media, id); |
|
|
|
if (!ext) |
|
|
|
@ -2679,6 +2698,9 @@ static void media_packet_rtp_extension(struct packet_handler_ctx *phc, unsigned |
|
|
|
edata->content = *data; |
|
|
|
|
|
|
|
t_queue_push_tail_link(&phc->mp.extmap, &edata->link); |
|
|
|
|
|
|
|
if (ext->handler.parse) |
|
|
|
ext->handler.parse(phc, edata); |
|
|
|
} |
|
|
|
|
|
|
|
static void media_packet_rtp_extensions(struct packet_handler_ctx *phc) { |
|
|
|
|