From 81887e9bfc840dcd16e056f570499ff75a360d82 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 16 Jan 2015 18:14:19 -0600 Subject: [PATCH] FS-7501: add video jitterbuffer debug controls --- src/switch_core_media.c | 54 +++++++++++++++++++++++++---------------- src/switch_rtp.c | 15 +++++++++--- 2 files changed, 45 insertions(+), 24 deletions(-) diff --git a/src/switch_core_media.c b/src/switch_core_media.c index 73f3ea90b5..ee7b44e224 100644 --- a/src/switch_core_media.c +++ b/src/switch_core_media.c @@ -1692,7 +1692,7 @@ static void check_jb(switch_core_session_t *session, const char *input) { const char *val; switch_media_handle_t *smh; - switch_rtp_engine_t *a_engine; + switch_rtp_engine_t *a_engine = NULL, *v_engine = NULL; switch_assert(session); @@ -1701,32 +1701,44 @@ static void check_jb(switch_core_session_t *session, const char *input) } a_engine = &smh->engines[SWITCH_MEDIA_TYPE_AUDIO]; - - if (!a_engine->rtp_session) return; + v_engine = &smh->engines[SWITCH_MEDIA_TYPE_VIDEO]; if (!zstr(input)) { const char *s; - - if (!strcasecmp(input, "pause")) { - switch_rtp_pause_jitter_buffer(a_engine->rtp_session, SWITCH_TRUE); - return; - } else if (!strcasecmp(input, "resume")) { - switch_rtp_pause_jitter_buffer(a_engine->rtp_session, SWITCH_FALSE); - return; - } else if (!strcasecmp(input, "stop")) { - switch_rtp_deactivate_jitter_buffer(a_engine->rtp_session); - return; - } else if (!strncasecmp(input, "debug:", 6)) { - s = input + 6; - if (s && !strcmp(s, "off")) { - s = NULL; + if (a_engine->rtp_session) { + if (!strcasecmp(input, "pause")) { + switch_rtp_pause_jitter_buffer(a_engine->rtp_session, SWITCH_TRUE); + return; + } else if (!strcasecmp(input, "resume")) { + switch_rtp_pause_jitter_buffer(a_engine->rtp_session, SWITCH_FALSE); + return; + } else if (!strcasecmp(input, "stop")) { + switch_rtp_deactivate_jitter_buffer(a_engine->rtp_session); + return; + } else if (!strncasecmp(input, "debug:", 6)) { + s = input + 6; + if (s && !strcmp(s, "off")) { + s = NULL; + } + switch_rtp_debug_jitter_buffer(a_engine->rtp_session, s); + return; } - switch_rtp_debug_jitter_buffer(a_engine->rtp_session, s); - return; - } - switch_channel_set_variable(session->channel, "jitterbuffer_msec", input); + switch_channel_set_variable(session->channel, "jitterbuffer_msec", input); + } + + if (v_engine->rtp_session) { + if (!strncasecmp(input, "vdebug:", 7)) { + s = input + 7; + + if (s && !strcmp(s, "off")) { + s = NULL; + } + switch_rtp_debug_jitter_buffer(v_engine->rtp_session, s); + return; + } + } } diff --git a/src/switch_rtp.c b/src/switch_rtp.c index ba6ad1df53..ab49bb4950 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -3807,12 +3807,21 @@ static void jb_logger(const char *file, const char *func, int line, int level, c SWITCH_DECLARE(switch_status_t) switch_rtp_debug_jitter_buffer(switch_rtp_t *rtp_session, const char *name) { - if (!switch_rtp_ready(rtp_session) || !rtp_session->jb) { + if (!switch_rtp_ready(rtp_session)) { return SWITCH_STATUS_FALSE; } - stfu_n_debug(rtp_session->jb, name); - stfu_global_set_logger(jb_logger); + if (rtp_session->jb) { + stfu_n_debug(rtp_session->jb, name); + stfu_global_set_logger(jb_logger); + } else if (rtp_session->vb) { + int x = 0; + + if (name) x = atoi(name); + if (x < 0) x = 0; + + switch_vb_debug_level(rtp_session->vb, x); + } return SWITCH_STATUS_SUCCESS; }