fix ptime from known broken endpoints on re-invite
Freeswitch tries to fix timing issues (wrong ptime) on re-invite the same way it does for the initial invite. This results in small audio glitches, while it sends a couple of packets with different ptime, before the timing detection logic figures out the remote (broken) endpoint true ptime. In order to avoid unnecessary timing changes, this patch overwrites the advertised ptime from known broken endpoints with the ptime, which was detected by freeswitch. It does this by checking if the sip_h_X-Broken-PTIME (1.2.x) or rtp_h_X-Broken-PTIME (master) variables are set. FS-6644 #resolve
This commit is contained in:
parent
310f18982f
commit
fbe857e6fa
|
@ -3419,6 +3419,11 @@ SWITCH_DECLARE(uint8_t) switch_core_media_negotiate_sdp(switch_core_session_t *s
|
|||
|
||||
codec_ms = ptime;
|
||||
|
||||
if (switch_channel_get_variable(session->channel, "rtp_h_X-Broken-PTIME") && a_engine->read_impl.microseconds_per_packet) {
|
||||
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Overwriting ptime from a known broken endpoint with the currently used value of %d ms\n", a_engine->read_impl.microseconds_per_packet / 1000);
|
||||
codec_ms = a_engine->read_impl.microseconds_per_packet / 1000;
|
||||
}
|
||||
|
||||
if (maxptime && (!codec_ms || codec_ms > maxptime)) {
|
||||
codec_ms = maxptime;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue