|
|
|
@ -453,6 +453,7 @@ static int set_caps(struct ast_sip_session *session,
|
|
|
|
|
static pjmedia_sdp_attr* generate_rtpmap_attr(struct ast_sip_session *session, pjmedia_sdp_media *media, pj_pool_t *pool,
|
|
|
|
|
int rtp_code, int asterisk_format, struct ast_format *format, int code)
|
|
|
|
|
{
|
|
|
|
|
extern pj_bool_t pjsip_use_compact_form;
|
|
|
|
|
pjmedia_sdp_rtpmap rtpmap;
|
|
|
|
|
pjmedia_sdp_attr *attr = NULL;
|
|
|
|
|
char tmp[64];
|
|
|
|
@ -461,6 +462,11 @@ static pjmedia_sdp_attr* generate_rtpmap_attr(struct ast_sip_session *session, p
|
|
|
|
|
|
|
|
|
|
snprintf(tmp, sizeof(tmp), "%d", rtp_code);
|
|
|
|
|
pj_strdup2(pool, &media->desc.fmt[media->desc.fmt_count++], tmp);
|
|
|
|
|
|
|
|
|
|
if (rtp_code <= AST_RTP_PT_LAST_STATIC && pjsip_use_compact_form) {
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
rtpmap.pt = media->desc.fmt[media->desc.fmt_count - 1];
|
|
|
|
|
rtpmap.clock_rate = ast_rtp_lookup_sample_rate2(asterisk_format, format, code);
|
|
|
|
|
pj_strdup2(pool, &rtpmap.enc_name, ast_rtp_lookup_mime_subtype2(asterisk_format, format, code, options));
|
|
|
|
@ -1260,11 +1266,9 @@ static int create_outgoing_sdp_stream(struct ast_sip_session *session, struct as
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!(attr = generate_rtpmap_attr(session, media, pool, rtp_code, 1, format, 0))) {
|
|
|
|
|
ao2_ref(format, -1);
|
|
|
|
|
continue;
|
|
|
|
|
if ((attr = generate_rtpmap_attr(session, media, pool, rtp_code, 1, format, 0))) {
|
|
|
|
|
media->attr[media->attr_count++] = attr;
|
|
|
|
|
}
|
|
|
|
|
media->attr[media->attr_count++] = attr;
|
|
|
|
|
|
|
|
|
|
if ((attr = generate_fmtp_attr(pool, format, rtp_code))) {
|
|
|
|
|
media->attr[media->attr_count++] = attr;
|
|
|
|
@ -1293,12 +1297,10 @@ static int create_outgoing_sdp_stream(struct ast_sip_session *session, struct as
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!(attr = generate_rtpmap_attr(session, media, pool, rtp_code, 0, NULL, index))) {
|
|
|
|
|
continue;
|
|
|
|
|
if ((attr = generate_rtpmap_attr(session, media, pool, rtp_code, 0, NULL, index))) {
|
|
|
|
|
media->attr[media->attr_count++] = attr;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
media->attr[media->attr_count++] = attr;
|
|
|
|
|
|
|
|
|
|
if (index == AST_RTP_DTMF) {
|
|
|
|
|
snprintf(tmp, sizeof(tmp), "%d 0-16", rtp_code);
|
|
|
|
|
attr = pjmedia_sdp_attr_create(pool, "fmtp", pj_cstr(&stmp, tmp));
|
|
|
|
|