diff --git a/daemon/media_socket.c b/daemon/media_socket.c index 50b6ecfb4..40590bafc 100644 --- a/daemon/media_socket.c +++ b/daemon/media_socket.c @@ -2187,6 +2187,7 @@ static void rtpext_printer_extmap_kernel(struct rtpengine_output_info *roi, roi->extmap = 1; unsigned int u = 0; + unsigned int mid = 0; for (__auto_type l = dst->extmap.head; l; l = l->next) { __auto_type ext = l->data; @@ -2194,11 +2195,24 @@ static void rtpext_printer_extmap_kernel(struct rtpengine_output_info *roi, ilog(LOG_WARN, "Too many RTP header extensions for kernel module"); break; } + + // filter out MID for bundle support + if (dst->bundle && ext->handler.id == RTP_EXT_MID) { + mid = ext->id; + continue; + } + roi->extmap_filter[u] = ext->id; u++; } qsort(roi->extmap_filter, u, sizeof(*roi->extmap_filter), uint8_sort); + + if (mid && dst->media_id.len && dst->media_id.len <= sizeof(roi->extmap_mid_str)) { + roi->extmap_mid = mid; + roi->extmap_mid_len = dst->media_id.len; + snprintf(roi->extmap_mid_str, sizeof(roi->extmap_mid_str), STR_FORMAT, STR_FMT(&dst->media_id)); + } }