diff --git a/patches/asr.diff b/patches/asr.diff deleted file mode 100644 index cf5dce5a4a..0000000000 --- a/patches/asr.diff +++ /dev/null @@ -1,562 +0,0 @@ -Index: src/switch_ivr_async.c -=================================================================== ---- src/switch_ivr_async.c (revision 13692) -+++ src/switch_ivr_async.c (working copy) -@@ -2027,14 +2027,14 @@ - return SWITCH_STATUS_FALSE; - } - --SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_load_grammar(switch_core_session_t *session, char *grammar, char *path) -+SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_load_grammar(switch_core_session_t *session, char *grammar, char *name) - { - switch_channel_t *channel = switch_core_session_get_channel(session); - switch_asr_flag_t flags = SWITCH_ASR_FLAG_NONE; - struct speech_thread_handle *sth = switch_channel_get_private(channel, SWITCH_SPEECH_KEY); - - if (sth) { -- if (switch_core_asr_load_grammar(sth->ah, grammar, path) != SWITCH_STATUS_SUCCESS) { -+ if (switch_core_asr_load_grammar(sth->ah, grammar, name) != SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Error loading Grammar\n"); - switch_core_asr_close(sth->ah, &flags); - switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER); -@@ -2045,14 +2045,14 @@ - return SWITCH_STATUS_FALSE; - } - --SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_unload_grammar(switch_core_session_t *session, const char *grammar) -+SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_unload_grammar(switch_core_session_t *session, const char *name) - { - switch_channel_t *channel = switch_core_session_get_channel(session); - switch_asr_flag_t flags = SWITCH_ASR_FLAG_NONE; - struct speech_thread_handle *sth = switch_channel_get_private(channel, SWITCH_SPEECH_KEY); - - if (sth) { -- if (switch_core_asr_unload_grammar(sth->ah, grammar) != SWITCH_STATUS_SUCCESS) { -+ if (switch_core_asr_unload_grammar(sth->ah, name) != SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Error unloading Grammar\n"); - switch_core_asr_close(sth->ah, &flags); - switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER); -@@ -2065,7 +2065,7 @@ - - SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech(switch_core_session_t *session, - const char *mod_name, -- const char *grammar, const char *path, const char *dest, switch_asr_handle_t *ah) -+ const char *grammar, const char *name, const char *dest, switch_asr_handle_t *ah) - { - switch_channel_t *channel = switch_core_session_get_channel(session); - switch_status_t status; -@@ -2085,7 +2085,7 @@ - } - - if (sth) { -- if (switch_core_asr_load_grammar(sth->ah, grammar, path) != SWITCH_STATUS_SUCCESS) { -+ if (switch_core_asr_load_grammar(sth->ah, grammar, name) != SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Error loading Grammar\n"); - switch_core_asr_close(sth->ah, &flags); - return SWITCH_STATUS_FALSE; -@@ -2100,7 +2100,7 @@ - read_impl.actual_samples_per_second, dest, &flags, - switch_core_session_get_pool(session)) == SWITCH_STATUS_SUCCESS) { - -- if (switch_core_asr_load_grammar(ah, grammar, path) != SWITCH_STATUS_SUCCESS) { -+ if (switch_core_asr_load_grammar(ah, grammar, name) != SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Error loading Grammar\n"); - switch_core_asr_close(ah, &flags); - switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER); -Index: src/switch_core_asr.c -=================================================================== ---- src/switch_core_asr.c (revision 13692) -+++ src/switch_core_asr.c (working copy) -@@ -26,6 +26,7 @@ - * Anthony Minessale II - * Michael Jerris - * Paul D. Tinsley -+ * Christopher M. Rienzo - * - * - * switch_core_asr.c -- Main Core Library (Speech Detection Interface) -@@ -79,30 +80,74 @@ - return ah->asr_interface->asr_open(ah, codec, rate, dest, flags); - } - --SWITCH_DECLARE(switch_status_t) switch_core_asr_load_grammar(switch_asr_handle_t *ah, const char *grammar, const char *path) -+SWITCH_DECLARE(switch_status_t) switch_core_asr_load_grammar(switch_asr_handle_t *ah, const char *grammar, const char *name) - { -- char *epath = NULL; -- switch_status_t status; -+ switch_status_t status = SWITCH_STATUS_SUCCESS; -+ char *param_string = NULL; -+ char *data = NULL; -+ char *lgrammar = NULL; - - switch_assert(ah != NULL); - -- if (!switch_is_file_path(path)) { -- epath = switch_mprintf("%s%s%s", SWITCH_GLOBAL_dirs.grammar_dir, SWITCH_PATH_SEPARATOR, path); -- path = epath; -+ if (switch_strlen_zero(grammar)) { -+ status = SWITCH_STATUS_FALSE; -+ goto done; - } - -- status = ah->asr_interface->asr_load_grammar(ah, grammar, path); -- switch_safe_free(epath); -+ /* Set ASR parameters from params in the grammar string -+ * Params are defined as follows {name1=val1,name2=val2,name3=val3}grammar text -+ */ -+ lgrammar = strdup(grammar); -+ data = lgrammar; - -+ /* strip leading spaces */ -+ while (data && *data == ' ') { -+ data++; -+ } -+ if (switch_strlen_zero(data)) { -+ status = SWITCH_STATUS_FALSE; -+ goto done; -+ } -+ -+ /* extract params */ -+ if (*data == '{') { -+ param_string = data + 1; -+ data = switch_find_end_paren(data, '{', '}'); -+ if (switch_strlen_zero(data)) { -+ status = SWITCH_STATUS_FALSE; -+ goto done; -+ } else { -+ *data = '\0'; -+ data++; -+ } -+ } -+ -+ /* set ASR params */ -+ if (!switch_strlen_zero(param_string)) { -+ char *param[256] = { 0 }; -+ switch_separate_string(param_string, ',', param, (sizeof(param) / sizeof(param[0]))); -+ for (int i = 0; param[i]; ++i) { -+ char *param_pair[2] = { 0 }; -+ if(switch_separate_string(param[i], '=', param_pair, (sizeof(param_pair) / sizeof(param_pair[0]))) == 2) { -+ switch_core_asr_text_param(ah, param_pair[0], param_pair[1]); -+ } -+ } -+ } -+ -+ status = ah->asr_interface->asr_load_grammar(ah, data, name); -+ -+ done: -+ -+ switch_safe_free(lgrammar); - return status; - } - --SWITCH_DECLARE(switch_status_t) switch_core_asr_unload_grammar(switch_asr_handle_t *ah, const char *grammar) -+SWITCH_DECLARE(switch_status_t) switch_core_asr_unload_grammar(switch_asr_handle_t *ah, const char *name) - { - switch_status_t status; - - switch_assert(ah != NULL); -- status = ah->asr_interface->asr_unload_grammar(ah, grammar); -+ status = ah->asr_interface->asr_unload_grammar(ah, name); - - return status; - } -@@ -158,6 +203,46 @@ - return ah->asr_interface->asr_get_results(ah, xmlstr, flags); - } - -+SWITCH_DECLARE(switch_status_t) switch_core_asr_start_input_timers(switch_asr_handle_t *ah) -+{ -+ switch_status_t status = SWITCH_STATUS_SUCCESS; -+ -+ switch_assert(ah != NULL); -+ -+ if (ah->asr_interface->asr_start_input_timers) { -+ status = ah->asr_interface->asr_start_input_timers(ah); -+ } -+ -+ return status; -+} -+ -+SWITCH_DECLARE(void) switch_core_asr_text_param(switch_asr_handle_t *ah, char *param, const char *val) -+{ -+ switch_assert(ah != NULL); -+ -+ if (ah->asr_interface->asr_text_param) { -+ ah->asr_interface->asr_text_param(ah, param, val); -+ } -+} -+ -+SWITCH_DECLARE(void) switch_core_asr_numeric_param(switch_asr_handle_t *ah, char *param, int val) -+{ -+ switch_assert(ah != NULL); -+ -+ if (ah->asr_interface->asr_numeric_param) { -+ ah->asr_interface->asr_numeric_param(ah, param, val); -+ } -+} -+ -+SWITCH_DECLARE(void) switch_core_asr_float_param(switch_asr_handle_t *ah, char *param, double val) -+{ -+ switch_assert(ah != NULL); -+ -+ if (ah->asr_interface->asr_float_param) { -+ ah->asr_interface->asr_float_param(ah, param, val); -+ } -+} -+ - /* For Emacs: - * Local Variables: - * mode:c -Index: src/mod/asr_tts/mod_pocketsphinx/mod_pocketsphinx.c -=================================================================== ---- src/mod/asr_tts/mod_pocketsphinx/mod_pocketsphinx.c (revision 13692) -+++ src/mod/asr_tts/mod_pocketsphinx/mod_pocketsphinx.c (working copy) -@@ -111,7 +111,7 @@ - } - - /*! function to load a grammar to the asr interface */ --static switch_status_t pocketsphinx_asr_load_grammar(switch_asr_handle_t *ah, const char *grammar, const char *path) -+static switch_status_t pocketsphinx_asr_load_grammar(switch_asr_handle_t *ah, const char *grammar, const char *name) - { - char *jsgf, *dic, *model, *rate = NULL; - pocketsphinx_t *ps = (pocketsphinx_t *) ah->private_info; -@@ -199,7 +199,7 @@ - } - - /*! function to unload a grammar to the asr interface */ --static switch_status_t pocketsphinx_asr_unload_grammar(switch_asr_handle_t *ah, const char *grammar) -+static switch_status_t pocketsphinx_asr_unload_grammar(switch_asr_handle_t *ah, const char *name) - { - return SWITCH_STATUS_SUCCESS; - } -@@ -506,6 +506,10 @@ - asr_interface->asr_pause = pocketsphinx_asr_pause; - asr_interface->asr_check_results = pocketsphinx_asr_check_results; - asr_interface->asr_get_results = pocketsphinx_asr_get_results; -+ asr_interface->asr_start_input_timers = NULL; -+ asr_interface->asr_text_param = NULL; -+ asr_interface->asr_numeric_param = NULL; -+ asr_interface->asr_float_param = NULL; - - err_set_logfp(NULL); - -Index: src/mod/applications/mod_voicemail/Makefile -=================================================================== ---- src/mod/applications/mod_voicemail/Makefile (revision 13692) -+++ src/mod/applications/mod_voicemail/Makefile (working copy) -@@ -1,3 +1,4 @@ - BASE=../../../.. - include $(BASE)/build/modmake.rules - LOCAL_CFLAGS += `if test -f $(BASE)/.libs/libfreeswitch_la-switch_odbc.o ; then echo -DSWITCH_HAVE_ODBC; fi ;` -+LOCAL_LIBADD += -liodbc -Index: src/mod/applications/mod_limit/Makefile -=================================================================== ---- src/mod/applications/mod_limit/Makefile (revision 13692) -+++ src/mod/applications/mod_limit/Makefile (working copy) -@@ -1,3 +1,4 @@ - BASE=../../../.. - include $(BASE)/build/modmake.rules - LOCAL_CFLAGS += `if test -f $(BASE)/.libs/libfreeswitch_la-switch_odbc.o ; then echo -DSWITCH_HAVE_ODBC; fi ;` -+LOCAL_LIBADD += -liodbc -Index: src/switch_core_speech.c -=================================================================== ---- src/switch_core_speech.c (revision 13692) -+++ src/switch_core_speech.c (working copy) -@@ -22,10 +22,11 @@ - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): -- * -+ * - * Anthony Minessale II - * Michael Jerris - * Paul D. Tinsley -+ * Christopher M. Rienzo - * - * - * switch_core_speech.c -- Main Core Library (speech functions) -@@ -92,9 +93,64 @@ - - SWITCH_DECLARE(switch_status_t) switch_core_speech_feed_tts(switch_speech_handle_t *sh, char *text, switch_speech_flag_t *flags) - { -+ switch_status_t status = SWITCH_STATUS_SUCCESS; -+ char *param_string = NULL; -+ char *data = NULL; -+ char *ltext = NULL; -+ - switch_assert(sh != NULL); - -- return sh->speech_interface->speech_feed_tts(sh, text, flags); -+ if (switch_strlen_zero(text)) { -+ status = SWITCH_STATUS_FALSE; -+ goto done; -+ } -+ -+ /* Set TTS parameters from params in the text string -+ * Params are defined as follows {name1=val1,name2=val2,name3=val3}text to speak -+ */ -+ ltext = strdup(text); -+ data = ltext; -+ -+ /* strip leading spaces */ -+ while (data && *data == ' ') { -+ data++; -+ } -+ if (switch_strlen_zero(data)) { -+ status = SWITCH_STATUS_FALSE; -+ goto done; -+ } -+ -+ /* extract params */ -+ if (*data == '{') { -+ param_string = data + 1; -+ data = switch_find_end_paren(data, '{', '}'); -+ if (switch_strlen_zero(data)) { -+ status = SWITCH_STATUS_FALSE; -+ goto done; -+ } else { -+ *data = '\0'; -+ data++; -+ } -+ } -+ -+ /* set TTS params */ -+ if (!switch_strlen_zero(param_string)) { -+ char *param[256] = { 0 }; -+ switch_separate_string(param_string, ',', param, (sizeof(param) / sizeof(param[0]))); -+ for (int i = 0; param[i]; ++i) { -+ char *param_pair[2] = { 0 }; -+ if(switch_separate_string(param[i], '=', param_pair, (sizeof(param_pair) / sizeof(param_pair[0]))) == 2) { -+ switch_core_speech_text_param_tts(sh, param_pair[0], param_pair[1]); -+ } -+ } -+ } -+ -+ status = sh->speech_interface->speech_feed_tts(sh, data, flags); -+ -+ done: -+ -+ switch_safe_free(ltext); -+ return status; - } - - SWITCH_DECLARE(void) switch_core_speech_flush_tts(switch_speech_handle_t *sh) -Index: src/include/switch_module_interfaces.h -=================================================================== ---- src/include/switch_module_interfaces.h (revision 13692) -+++ src/include/switch_module_interfaces.h (working copy) -@@ -342,9 +342,9 @@ - /*! function to open the asr interface */ - switch_status_t (*asr_open) (switch_asr_handle_t *ah, const char *codec, int rate, const char *dest, switch_asr_flag_t *flags); - /*! function to load a grammar to the asr interface */ -- switch_status_t (*asr_load_grammar) (switch_asr_handle_t *ah, const char *grammar, const char *path); -+ switch_status_t (*asr_load_grammar) (switch_asr_handle_t *ah, const char *grammar, const char *name); - /*! function to unload a grammar to the asr interface */ -- switch_status_t (*asr_unload_grammar) (switch_asr_handle_t *ah, const char *grammar); -+ switch_status_t (*asr_unload_grammar) (switch_asr_handle_t *ah, const char *name); - /*! function to close the asr interface */ - switch_status_t (*asr_close) (switch_asr_handle_t *ah, switch_asr_flag_t *flags); - /*! function to feed audio to the ASR */ -@@ -357,6 +357,11 @@ - switch_status_t (*asr_check_results) (switch_asr_handle_t *ah, switch_asr_flag_t *flags); - /*! function to read results from the ASR */ - switch_status_t (*asr_get_results) (switch_asr_handle_t *ah, char **xmlstr, switch_asr_flag_t *flags); -+ /*! function to start ASR input timers */ -+ switch_status_t (*asr_start_input_timers) (switch_asr_handle_t *ah); -+ void (*asr_text_param) (switch_asr_handle_t *ah, char *param, const char *val); -+ void (*asr_numeric_param) (switch_asr_handle_t *ah, char *param, int val); -+ void (*asr_float_param) (switch_asr_handle_t *ah, char *param, double val); - switch_thread_rwlock_t *rwlock; - int refs; - switch_mutex_t *reflock; -@@ -409,7 +414,7 @@ - }; - - --/*! an abstract representation of a asr/tts speech interface. */ -+/*! an abstract representation of a tts speech interface. */ - struct switch_speech_handle { - /*! the interface of the module that implemented the current speech interface */ - switch_speech_interface_t *speech_interface; -Index: src/include/switch_ivr.h -=================================================================== ---- src/include/switch_ivr.h (revision 13692) -+++ src/include/switch_ivr.h (working copy) -@@ -148,15 +148,15 @@ - \brief Engage background Speech detection on a session - \param session the session to attach - \param mod_name the module name of the ASR library -- \param grammar the grammar name -- \param path the path to the grammar file -+ \param grammar the grammar text, URI, or local file name -+ \param name the grammar name - \param dest the destination address - \param ah an ASR handle to use (NULL to create one) - \return SWITCH_STATUS_SUCCESS if all is well - */ - SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech(switch_core_session_t *session, - const char *mod_name, -- const char *grammar, const char *path, const char *dest, switch_asr_handle_t *ah); -+ const char *grammar, const char *name, const char *dest, switch_asr_handle_t *ah); - - /*! - \brief Stop background Speech detection on a session -@@ -182,19 +182,19 @@ - /*! - \brief Load a grammar on a background speech detection handle - \param session The session to change the grammar on -- \param grammar the grammar name -- \param path the grammar path -+ \param grammar the grammar text, URI, or local file name -+ \param name the grammar name - \return SWITCH_STATUS_SUCCESS if all is well - */ --SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_load_grammar(switch_core_session_t *session, char *grammar, char *path); -+SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_load_grammar(switch_core_session_t *session, char *grammar, char *name); - - /*! - \brief Unload a grammar on a background speech detection handle - \param session The session to change the grammar on -- \param grammar the grammar name -+ \param name the grammar name - \return SWITCH_STATUS_SUCCESS if all is well - */ --SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_unload_grammar(switch_core_session_t *session, const char *grammar); -+SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_unload_grammar(switch_core_session_t *session, const char *name); - - /*! - \brief Record a session to disk -Index: src/include/switch_core.h -=================================================================== ---- src/include/switch_core.h (revision 13692) -+++ src/include/switch_core.h (working copy) -@@ -1623,19 +1623,19 @@ - /*! - \brief Load a grammar to an asr handle - \param ah the handle to load to -- \param grammar the name of the grammar -- \param path the path to the grammaar file -+ \param grammar the grammar text, file path, or URI -+ \param name the grammar name - \return SWITCH_STATUS_SUCCESS - */ --SWITCH_DECLARE(switch_status_t) switch_core_asr_load_grammar(switch_asr_handle_t *ah, const char *grammar, const char *path); -+SWITCH_DECLARE(switch_status_t) switch_core_asr_load_grammar(switch_asr_handle_t *ah, const char *grammar, const char *name); - - /*! - \brief Unload a grammar from an asr handle - \param ah the handle to unload the grammar from -- \param grammar the grammar to unload -+ \param name the name of the grammar to unload - \return SWITCH_STATUS_SUCCESS - */ --SWITCH_DECLARE(switch_status_t) switch_core_asr_unload_grammar(switch_asr_handle_t *ah, const char *grammar); -+SWITCH_DECLARE(switch_status_t) switch_core_asr_unload_grammar(switch_asr_handle_t *ah, const char *name); - - /*! - \brief Pause detection on an asr handle -@@ -1651,6 +1651,37 @@ - */ - SWITCH_DECLARE(switch_status_t) switch_core_asr_resume(switch_asr_handle_t *ah); - -+/*! -+ \brief Start input timers on an asr handle -+ \param ah the handle to start timers on -+ \return SWITCH_STATUS_SUCCESS -+*/ -+SWITCH_DECLARE(switch_status_t) switch_core_asr_start_input_timers(switch_asr_handle_t *ah); -+ -+/*! -+ \brief Set a text parameter on an asr handle -+ \param sh the asr handle -+ \param param the parameter -+ \param val the value -+*/ -+SWITCH_DECLARE(void) switch_core_asr_text_param(switch_asr_handle_t *ah, char *param, const char *val); -+ -+/*! -+ \brief Set a numeric parameter on an asr handle -+ \param sh the asr handle -+ \param param the parameter -+ \param val the value -+*/ -+SWITCH_DECLARE(void) switch_core_asr_numeric_param(switch_asr_handle_t *ah, char *param, int val); -+ -+/*! -+ \brief Set a float parameter on an asr handle -+ \param sh the asr handle -+ \param param the parameter -+ \param val the value -+*/ -+SWITCH_DECLARE(void) switch_core_asr_float_param(switch_asr_handle_t *ah, char *param, double val); -+ - ///\} - - -@@ -1659,7 +1690,7 @@ - ///\{ - /*! - \brief Open a directory handle -- \param dh a direcotry handle to use -+ \param dh a directory handle to use - \param module_name the directory module to use - \param source the source of the db (ip, hostname, path etc) - \param dsn the username or designation of the lookup -@@ -1672,7 +1703,7 @@ - - /*! - \brief Query a directory handle -- \param dh a direcotry handle to use -+ \param dh a directory handle to use - \param base the base to query against - \param query a string of filters or query data - \return SWITCH_STATUS_SUCCESS if the query is successful -@@ -1681,23 +1712,23 @@ - - /*! - \brief Obtain the next record in a lookup -- \param dh a direcotry handle to use -+ \param dh a directory handle to use - \return SWITCH_STATUS_SUCCESS if another record exists - */ - SWITCH_DECLARE(switch_status_t) switch_core_directory_next(switch_directory_handle_t *dh); - - /*! - \brief Obtain the next name/value pair in the current record -- \param dh a direcotry handle to use -+ \param dh a directory handle to use - \param var a pointer to pointer of the name to fill in -- \param val a pointer to poinbter of the value to fill in -+ \param val a pointer to pointer of the value to fill in - \return SWITCH_STATUS_SUCCESS if an item exists - */ - SWITCH_DECLARE(switch_status_t) switch_core_directory_next_pair(switch_directory_handle_t *dh, char **var, char **val); - - /*! - \brief Close an open directory handle -- \param dh a direcotry handle to close -+ \param dh a directory handle to close - \return SWITCH_STATUS_SUCCESS if handle was closed - */ - SWITCH_DECLARE(switch_status_t) switch_core_directory_close(switch_directory_handle_t *dh); -Index: libs/speex/config.h.in -=================================================================== ---- libs/speex/config.h.in (revision 13692) -+++ libs/speex/config.h.in (working copy) -@@ -96,13 +96,13 @@ - /* Define to the version of this package. */ - #undef PACKAGE_VERSION - --/* The size of a `int', as computed by sizeof. */ -+/* The size of `int', as computed by sizeof. */ - #undef SIZEOF_INT - --/* The size of a `long', as computed by sizeof. */ -+/* The size of `long', as computed by sizeof. */ - #undef SIZEOF_LONG - --/* The size of a `short', as computed by sizeof. */ -+/* The size of `short', as computed by sizeof. */ - #undef SIZEOF_SHORT - - /* Version extra */