From: Robert Cripps Date: Wed, 17 Oct 2018 13:48:13 +0000 (+0200) Subject: bridge_native_rtp.c: Fail native bridge if no framing match. X-Git-Tag: 16.1.0-rc1~17^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=df703c1853ee294535c35ec99a437f9c932b2ea1;p=thirdparty%2Fasterisk.git bridge_native_rtp.c: Fail native bridge if no framing match. ASTERISK-28110 #close Change-Id: Ic64b8fc6a140a93fbdb2f97550a40d0ff334e607 --- diff --git a/bridges/bridge_native_rtp.c b/bridges/bridge_native_rtp.c index e07f7faccb..602fed8df9 100644 --- a/bridges/bridge_native_rtp.c +++ b/bridges/bridge_native_rtp.c @@ -703,6 +703,18 @@ static int native_rtp_bridge_compatible_check(struct ast_bridge *bridge, struct return 0; } + if (glue0->audio.instance && glue1->audio.instance) { + unsigned int framing_inst0, framing_inst1; + framing_inst0 = ast_rtp_codecs_get_framing(ast_rtp_instance_get_codecs(glue0->audio.instance)); + framing_inst1 = ast_rtp_codecs_get_framing(ast_rtp_instance_get_codecs(glue1->audio.instance)); + if (framing_inst0 != framing_inst1) { + /* ptimes are asymmetric on the two call legs so we can't use the native bridge */ + ast_debug(1, "Asymmetric ptimes on the two call legs (%u != %u). Cannot native bridge in RTP\n", + framing_inst0, framing_inst1); + return 0; + } + } + read_ptime0 = ast_format_cap_get_format_framing(cap0, ast_channel_rawreadformat(bc0->chan)); read_ptime1 = ast_format_cap_get_format_framing(cap1, ast_channel_rawreadformat(bc1->chan)); write_ptime0 = ast_format_cap_get_format_framing(cap0, ast_channel_rawwriteformat(bc0->chan));