]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-7501: add video jitterbuffer debug controls
authorAnthony Minessale <anthm@freeswitch.org>
Sat, 17 Jan 2015 00:14:19 +0000 (18:14 -0600)
committerMichael Jerris <mike@jerris.com>
Thu, 28 May 2015 17:46:53 +0000 (12:46 -0500)
src/switch_core_media.c
src/switch_rtp.c

index 73f3ea90b588c9fe5105444aa942cad904732456..ee7b44e22467aedd88543a592dd33b28d371fca3 100644 (file)
@@ -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_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;
                        }
-                       switch_rtp_debug_jitter_buffer(a_engine->rtp_session, s);
-                       return;
                }
-
-               switch_channel_set_variable(session->channel, "jitterbuffer_msec", input);
        }
        
 
index ba6ad1df53dbbd44e0e8740142c04e3dc163e285..ab49bb495026c849e8370047dbc4134c605d4970 100644 (file)
@@ -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;
 }