From 4bf84459c77227b7adc642d04b9ad93659d96ee2 Mon Sep 17 00:00:00 2001 From: Alexander Traud Date: Tue, 10 Nov 2015 16:27:57 +0100 Subject: rtp_engine: Init a format-attribute module to its RFC defaults. Previously, format-attribute modules relied on an existing fmtp line in SDP negotiation. However, fmtp is optional for several formats like the Opus Codec. Now, the format-attribute module is called with an empty fmtp, which allows the module to initialise itself to RFC defaults. Furthermore now, Asterisk is able to differentiate between internally and externally created formats. ASTERISK-25537 #close Change-Id: I28f680cef7fdf51c0969ff8da71548edad72ec52 --- main/rtp_engine.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'main') diff --git a/main/rtp_engine.c b/main/rtp_engine.c index 8ad3d9e77..57a3ef354 100644 --- a/main/rtp_engine.c +++ b/main/rtp_engine.c @@ -727,9 +727,13 @@ int ast_rtp_codecs_payloads_set_rtpmap_type_rate(struct ast_rtp_codecs *codecs, new_type->rtp_code = t->payload_type.rtp_code; if ((ast_format_cmp(t->payload_type.format, ast_format_g726) == AST_FORMAT_CMP_EQUAL) && t->payload_type.asterisk_format && (options & AST_RTP_OPT_G726_NONSTANDARD)) { - new_type->format = ao2_bump(ast_format_g726_aal2); + new_type->format = ast_format_g726_aal2; } else { - new_type->format = ao2_bump(t->payload_type.format); + new_type->format = t->payload_type.format; + } + if (new_type->format) { + /* SDP parsing automatically increases the reference count */ + new_type->format = ast_format_parse_sdp_fmtp(new_type->format, ""); } AST_VECTOR_REPLACE(&codecs->payloads, pt, new_type); -- cgit v1.2.3