diff --git a/src/include/switch_vad.h b/src/include/switch_vad.h index 8cc6c63f05..d2a7f4a816 100644 --- a/src/include/switch_vad.h +++ b/src/include/switch_vad.h @@ -52,6 +52,8 @@ SWITCH_DECLARE(switch_vad_state_t) switch_vad_process(switch_vad_t *vad, int16_t SWITCH_DECLARE(void) switch_vad_reset(switch_vad_t *vad); SWITCH_DECLARE(void) switch_vad_destroy(switch_vad_t **vad); +SWITCH_DECLARE(const char *) switch_vad_state2str(switch_vad_state_t state); + SWITCH_END_EXTERN_C #endif /* For Emacs: diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c index b69a0a4025..aa68cb2c5b 100644 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@ -6169,14 +6169,27 @@ SWITCH_STANDARD_APP(vad_test_function) if (tmp > 0) switch_vad_set_param(vad, "thresh", tmp); } - if ((var = switch_channel_get_variable(channel, "vad_timeout_len"))) { + if ((var = switch_channel_get_variable(channel, "vad_listen_hits"))) { tmp = atoi(var); - if (tmp > 0) switch_vad_set_param(vad, "timeout_len", tmp); + if (tmp > 0) switch_vad_set_param(vad, "listen_hits", tmp); } - while(switch_channel_ready(channel)) { - switch_core_session_read_frame(session, &frame, SWITCH_IO_FLAG_NONE, 0); + if ((var = switch_channel_get_variable(channel, "vad_debug"))) { + tmp = atoi(var); + + if (tmp < 0) tmp = 0; + if (tmp > 1) tmp = 1; + + switch_vad_set_param(vad, "debug", tmp); + } + + while (switch_channel_ready(channel)) { + switch_status_t status = switch_core_session_read_frame(session, &frame, SWITCH_IO_FLAG_NONE, 0); + + if (!SWITCH_READ_ACCEPTABLE(status)) { + break; + } if (switch_test_flag(frame, SFF_CNG)) { continue; @@ -6192,7 +6205,7 @@ SWITCH_STANDARD_APP(vad_test_function) } else if (vad_state == SWITCH_VAD_STATE_TALKING) { switch_core_session_write_frame(session, frame, SWITCH_IO_FLAG_NONE, 0); } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "vad_state: %d\n", vad_state); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "vad_state: %s\n", switch_vad_state2str(vad_state)); } } diff --git a/src/switch_vad.c b/src/switch_vad.c index 0e0e7f0961..b71963052e 100644 --- a/src/switch_vad.c +++ b/src/switch_vad.c @@ -57,17 +57,17 @@ struct switch_vad_s { #endif }; -static const char *state2str(switch_vad_state_t state) +SWITCH_DECLARE(const char *) switch_vad_state2str(switch_vad_state_t state) { switch(state) { case SWITCH_VAD_STATE_NONE: return "none"; - + return "none"; case SWITCH_VAD_STATE_START_TALKING: return "start_talking"; - + return "start-talking"; case SWITCH_VAD_STATE_TALKING: return "talking"; - + return "talking"; case SWITCH_VAD_STATE_STOP_TALKING: return "stop_talking"; - + return "stop-talking"; default: return "error"; } @@ -232,7 +232,7 @@ SWITCH_DECLARE(switch_vad_state_t) switch_vad_process(switch_vad_t *vad, int16_t } if (vad->debug > 0) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "VAD DEBUG energy: %d state %s\n", score, state2str(vad->vad_state)); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "VAD DEBUG energy: %d state %s\n", score, switch_vad_state2str(vad->vad_state)); } return vad->vad_state;