diff options
-rw-r--r-- | res/res_pjsip_sdp_rtp.c | 10 | ||||
-rw-r--r-- | third-party/pjproject/patches/config_site.h | 6 |
2 files changed, 15 insertions, 1 deletions
diff --git a/res/res_pjsip_sdp_rtp.c b/res/res_pjsip_sdp_rtp.c index 037b8e45f..3df9df030 100644 --- a/res/res_pjsip_sdp_rtp.c +++ b/res/res_pjsip_sdp_rtp.c @@ -1183,10 +1183,14 @@ static int create_outgoing_sdp_stream(struct ast_sip_session *session, struct as max_packet_size = ast_format_get_maximum_ms(format); } ao2_ref(format, -1); + + if (media->desc.fmt_count == PJMEDIA_MAX_SDP_FMT) { + break; + } } /* Add non-codec formats */ - if (media_type != AST_MEDIA_TYPE_VIDEO) { + if (media_type != AST_MEDIA_TYPE_VIDEO && media->desc.fmt_count < PJMEDIA_MAX_SDP_FMT) { for (index = 1LL; index <= AST_RTP_MAX; index <<= 1) { if (!(noncodec & index)) { continue; @@ -1208,6 +1212,10 @@ static int create_outgoing_sdp_stream(struct ast_sip_session *session, struct as attr = pjmedia_sdp_attr_create(pool, "fmtp", pj_cstr(&stmp, tmp)); media->attr[media->attr_count++] = attr; } + + if (media->desc.fmt_count == PJMEDIA_MAX_SDP_FMT) { + break; + } } } diff --git a/third-party/pjproject/patches/config_site.h b/third-party/pjproject/patches/config_site.h index 0694f120e..564959d84 100644 --- a/third-party/pjproject/patches/config_site.h +++ b/third-party/pjproject/patches/config_site.h @@ -57,3 +57,9 @@ /* Defaults too low for WebRTC */ #define PJ_ICE_MAX_CAND 32 #define PJ_ICE_MAX_CHECKS (PJ_ICE_MAX_CAND * 2) + +/* Increase limits to allow more formats */ +#define PJMEDIA_MAX_SDP_FMT 64 +#define PJMEDIA_MAX_SDP_BANDW 4 +#define PJMEDIA_MAX_SDP_ATTR (PJMEDIA_MAX_SDP_FMT*2 + 4) +#define PJMEDIA_MAX_SDP_MEDIA 16 |