Index: main/rtp_engine.c =================================================================== --- main/rtp_engine.c (revision 380922) +++ main/rtp_engine.c (working copy) @@ -1273,6 +1273,7 @@ enum ast_rtp_dtmf_mode dmode; format_t codec0 = 0, codec1 = 0; int unlock_chans = 1; + int read_ptime0, read_ptime1, write_ptime0, write_ptime1; /* Lock both channels so we can look for the glue that binds them together */ ast_channel_lock(c0); @@ -1352,6 +1353,18 @@ goto done; } + read_ptime0 = (ast_codec_pref_getsize(&instance0->codecs.pref, c0->rawreadformat)).cur_ms; + read_ptime1 = (ast_codec_pref_getsize(&instance1->codecs.pref, c1->rawreadformat)).cur_ms; + write_ptime0 = (ast_codec_pref_getsize(&instance0->codecs.pref, c0->rawwriteformat)).cur_ms; + write_ptime1 = (ast_codec_pref_getsize(&instance1->codecs.pref, c1->rawwriteformat)).cur_ms; + + if (read_ptime0 != write_ptime1 || read_ptime1 != write_ptime0) { + ast_debug(1, "Packetization differs between RTP streams (%d != %d or %d != %d). Cannot native bridge in RTP\n", + read_ptime0, write_ptime1, read_ptime1, write_ptime0); + res = AST_BRIDGE_FAILED_NOWARN; + goto done; + } + instance0->glue = glue0; instance1->glue = glue1; instance0->chan = c0;