AST_SPEECH_RESULTS_TYPE_NBEST,
};
+/*! \brief Convert a speech results type to a string */
+const char *ast_speech_results_type_to_string(enum ast_speech_results_type type);
+
/* Speech structure */
struct ast_speech {
/*! Structure lock */
int ast_speech_register(struct ast_speech_engine *engine);
/*! \brief Unregister a speech recognition engine */
int ast_speech_unregister(const char *engine_name);
+/*! \brief Unregister a speech recognition engine */
+struct ast_speech_engine *ast_speech_unregister2(const char *engine_name);
+
#if defined(__cplusplus) || defined(c_plusplus)
}
return res;
}
+const char *ast_speech_results_type_to_string(enum ast_speech_results_type type)
+{
+ switch (type) {
+ case AST_SPEECH_RESULTS_TYPE_NORMAL:
+ return "normal";
+ case AST_SPEECH_RESULTS_TYPE_NBEST:
+ return "nbest";
+ default:
+ ast_assert(0);
+ return "unknown";
+ }
+}
+
/*! \brief Change the type of results we want */
int ast_speech_change_results_type(struct ast_speech *speech, enum ast_speech_results_type results_type)
{
/*! \brief Unregister a speech recognition engine */
int ast_speech_unregister(const char *engine_name)
+{
+ return ast_speech_unregister2(engine_name) == NULL ? -1 : 0;
+}
+
+struct ast_speech_engine *ast_speech_unregister2(const char *engine_name)
{
struct ast_speech_engine *engine = NULL;
- int res = -1;
- if (ast_strlen_zero(engine_name))
- return -1;
+ if (ast_strlen_zero(engine_name)) {
+ return NULL;
+ }
AST_RWLIST_WRLOCK(&engines);
AST_RWLIST_TRAVERSE_SAFE_BEGIN(&engines, engine, list) {
}
ast_verb(2, "Unregistered speech recognition engine '%s'\n", engine_name);
/* All went well */
- res = 0;
break;
}
}
AST_RWLIST_TRAVERSE_SAFE_END;
AST_RWLIST_UNLOCK(&engines);
- return res;
+ return engine;
}
static int unload_module(void)