From 66a8b5bfac589eccb136f6a4ba4b6417f2961770 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 14 Sep 2016 15:50:12 -0500 Subject: [PATCH] FS-9511 #resolve [Sync issues on inbound video calls] --- src/switch_core_media.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/switch_core_media.c b/src/switch_core_media.c index 982b94e1ee..58350bd4a6 100644 --- a/src/switch_core_media.c +++ b/src/switch_core_media.c @@ -2048,37 +2048,39 @@ static void check_jb_sync(switch_core_session_t *session) } } - fps = switch_core_media_get_video_fps(session); - switch_rtp_get_video_buffer_size(v_engine->rtp_session, &min_frames, &max_frames, &cur_frames, NULL); + fps = switch_core_media_get_video_fps(session); + + if (!fps) return; + + if (!frames) { - if (cur_frames != min_frames) { + if (cur_frames && min_frames && cur_frames >= min_frames) { frames = cur_frames; } else { - frames = fps / 7.5; + frames = fps / 15; if (frames < 1) frames = 1; sync_audio = 1; } } if (!jb_sync_msec) { - jb_sync_msec = frames * 75; + jb_sync_msec = (double)(1000 / fps) * frames; } - - if (frames != cur_frames) { + if (frames != cur_frames && frames > min_frames) { switch_rtp_set_video_buffer_size(v_engine->rtp_session, frames, 0); sync_audio = 1; sync_video = 1; } switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), - SWITCH_LOG_DEBUG1, "%s %s \"%s\" Sync A/V JB to %dms %u VFrames FPS %u a:%s v:%s\n", + SWITCH_LOG_DEBUG1, "%s %s \"%s\" Sync A/V JB to %dms %u VFrames FPS %u a:%s v:%s sync_ms:%d\n", switch_core_session_get_uuid(session), switch_channel_get_name(session->channel), switch_channel_get_variable_dup(session->channel, "caller_id_name", SWITCH_FALSE, -1), - jb_sync_msec, frames, video_globals.fps, sync_audio ? "yes" : "no", sync_video ? "yes" : "no"); + jb_sync_msec, frames, video_globals.fps, sync_audio ? "yes" : "no", sync_video ? "yes" : "no", jb_sync_msec); if (sync_audio) { check_jb(session, NULL, jb_sync_msec, 0, SWITCH_TRUE);