#include <tizen.h>
+#ifndef LOG_TAG
+#define LOG_TAG "dependency_default"
+#endif
+
#ifdef __cplusplus
extern "C" {
#endif
MA_PLUGIN_EVENT_VOICE_KEY_RELEASED_AFTER_TAP,
} ma_plugin_event_e;
+typedef enum
+{
+ RECORDING_SESSION_WAKE_WORD,
+ RECORDING_SESSION_UTTERANCE,
+ RECORDING_SESSION_FOLLOW_UP,
+} recording_session;
+
typedef void (*mas_dependency_error_cb)(int error, const char* err_msg, void* user_data);
typedef int (*mas_proxy_process_event)(int event, void* data, int len);
EXPORT_API int mas_dependency_set_error_callback(mas_dependency_error_cb callback, void* user_data);
EXPORT_API int mas_dependency_start_recording(void);
EXPORT_API int mas_dependency_stop_recording(void);
+EXPORT_API int mas_dependency_set_recording_session(unsigned int session);
EXPORT_API int mas_dependency_change_system_volume(void);
EXPORT_API int mas_dependency_recover_system_volume(void);
EXPORT_API int mas_dependency_get_audio_format(int* rate, int* channel, int* audio_type);
void dependency_default_audio_start_recording();
void dependency_default_audio_stop_recording();
+void dependency_default_audio_set_recording_session(unsigned int session);
+
void dependency_default_audio_voice_key_pressed_set(bool pressed);
void dependency_default_audio_change_system_volume();
return 0;
}
+int mas_dependency_set_recording_session(unsigned int session)
+{
+ dependency_default_audio_set_recording_session(session);
+ return 0;
+}
+
int mas_dependency_change_system_volume(void)
{
dependency_default_audio_change_system_volume();
}
}
+void dependency_default_audio_set_recording_session(unsigned int session)
+{
+ LOGD("Current recording session : [%s]",
+ (RECORDING_SESSION_WAKE_WORD == session) ? "wake word detecting" :
+ (RECORDING_SESSION_UTTERANCE == session) ? "utterance recording" :
+ (RECORDING_SESSION_FOLLOW_UP == session) ? "follow-up speech recording" :
+ "ERROR - Invalid recording session information"
+ );
+}
+
void dependency_default_audio_voice_key_pressed_set(bool pressed)
{
g_voice_key_pressed = pressed;
return;
}
*type = source_type;
-}
\ No newline at end of file
+}
MA_PLUGIN_EVENT_VOICE_KEY_RELEASED_AFTER_TAP,
} ma_plugin_event_e;
+typedef enum
+{
+ RECORDING_SESSION_WAKE_WORD,
+ RECORDING_SESSION_UTTERANCE,
+ RECORDING_SESSION_FOLLOW_UP,
+} recording_session;
+
typedef void (*mas_dependency_error_cb)(int error, const char* err_msg, void* user_data);
typedef int (*mas_proxy_process_event)(int event, void* data, int len);
EXPORT_API int mas_dependency_set_error_callback(mas_dependency_error_cb callback, void* user_data);
EXPORT_API int mas_dependency_start_recording(void);
EXPORT_API int mas_dependency_stop_recording(void);
+EXPORT_API int mas_dependency_set_recording_session(unsigned int session);
EXPORT_API int mas_dependency_change_system_volume(void);
EXPORT_API int mas_dependency_recover_system_volume(void);
EXPORT_API int mas_dependency_get_audio_format(int* rate, int* channel, int* audio_type);
void dependency_tv_audio_start_recording();
void dependency_tv_audio_stop_recording();
+void dependency_tv_audio_set_recording_session(unsigned int session);
+
void dependency_tv_audio_change_system_volume();
void dependency_tv_audio_recover_system_volume();
return 0;
}
+int mas_dependency_set_recording_session(unsigned int session)
+{
+ dependency_tv_audio_set_recording_session(session);
+ return 0;
+}
+
int mas_dependency_change_system_volume(void)
{
dependency_tv_audio_change_system_volume();
{
}
+void dependency_tv_audio_set_recording_session(unsigned int session)
+{
+ LOGD("Current recording session : [%s]",
+ (RECORDING_SESSION_WAKE_WORD == session) ? "wake word detecting" :
+ (RECORDING_SESSION_UTTERANCE == session) ? "utterance recording" :
+ (RECORDING_SESSION_FOLLOW_UP == session) ? "follow-up speech recording" :
+ "ERROR - Invalid recording session information"
+ );
+}
void dependency_tv_audio_change_system_volume()
{
int dependency_resolver_set_error_callback(mas_dependency_error_cb callback, void* user_data);
int dependency_resolver_start_recording();
int dependency_resolver_stop_recording();
+int dependency_resolver_set_recording_session(unsigned int);
int dependency_resolver_change_system_volume();
int dependency_resolver_recover_system_volume();
int dependency_resolver_get_audio_format(int* rate, int* channel, int* audio_type);
typedef int (*mas_dependency_start_recording)(void);
#define MAS_DEPENDENCY_FUNC_STOP_RECORDING "mas_dependency_stop_recording"
typedef int (*mas_dependency_stop_recording)(void);
+#define MAS_DEPENDENCY_FUNC_SET_RECORDING_SESSION "mas_dependency_set_recording_session"
+typedef int (*mas_dependency_set_recording_session)(unsigned int);
#define MAS_DEPENDENCY_FUNC_CHANGE_SYSTEM_VOLUME "mas_dependency_change_system_volume"
typedef int (*mas_dependency_change_system_volume)(void);
#define MAS_DEPENDENCY_FUNC_RECOVER_SYSTEM_VOLUME "mas_dependency_recover_system_volume"
mas_dependency_set_error_callback set_error_callback;
mas_dependency_start_recording start_recording;
mas_dependency_stop_recording stop_recording;
+ mas_dependency_set_recording_session set_recording_session;
mas_dependency_change_system_volume change_system_volume;
mas_dependency_recover_system_volume recover_system_volume;
mas_dependency_get_audio_format get_audio_format;
wakeup_speech_streaming_event_e event, void* buffer, unsigned int len) = 0;
};
+typedef enum
+{
+ RECORDING_SESSION_WAKE_WORD,
+ RECORDING_SESSION_UTTERANCE,
+ RECORDING_SESSION_FOLLOW_UP,
+} recording_session;
+
class CAudioManager
{
public:
void start_recording();
void stop_recording();
+ void set_recording_session(recording_session session);
+
void feed_audio_data(wakeup_speech_streaming_event_e event, void* buffer, int len);
void finalize_audio_data();
void clear_audio_data();
g_mas_dependency.stop_recording =
(mas_dependency_stop_recording)dlsym(g_handle,
MAS_DEPENDENCY_FUNC_STOP_RECORDING);
+ g_mas_dependency.set_recording_session =
+ (mas_dependency_set_recording_session)dlsym(g_handle,
+ MAS_DEPENDENCY_FUNC_SET_RECORDING_SESSION);
g_mas_dependency.change_system_volume =
(mas_dependency_change_system_volume)dlsym(g_handle,
MAS_DEPENDENCY_FUNC_CHANGE_SYSTEM_VOLUME);
return ret;
}
+int dependency_resolver_set_recording_session(unsigned int session)
+{
+ int ret = -1;
+ MAS_LOGD("g_handle : %p", g_handle);
+ if (NULL != g_handle) {
+ mas_dependency_set_recording_session func = g_mas_dependency.set_recording_session;
+ if (NULL == func) {
+ MAS_LOGE("[ERROR] symbol lookup failed : %s", MAS_DEPENDENCY_FUNC_SET_RECORDING_SESSION);
+ } else {
+ ret = func(session);
+ if (0 != ret) {
+ MAS_LOGE("[ERROR] Fail to set recording session, ret(%d)", ret);
+ }
+ }
+ } else {
+ MAS_LOGE("[ERROR] g_handle is not valid");
+ }
+
+ return ret;
+}
+
int dependency_resolver_change_system_volume()
{
int ret = -1;
dependency_resolver_start_recording();
}
+void CAudioManager::set_recording_session(recording_session session)
+{
+ dependency_resolver_set_recording_session((unsigned int)session);
+}
+
/* Need to consider adapting conventional producer-consumer model */
void CAudioManager::streaming_previous_audio_data_thread_func()
{
change_manager_state(WAKEUP_MANAGER_STATE_LISTENING);
if (mWakeupEngineManager.get_audio_data_required()) {
+ mAudioManager.set_recording_session(RECORDING_SESSION_WAKE_WORD);
mAudioManager.start_recording();
}
mVoiceKeyPressed = true;
/* Start recorder thread using appropriate recording device */
+ mAudioManager.set_recording_session(RECORDING_SESSION_UTTERANCE);
mAudioManager.start_recording();
/* Wakeup default assistant */
if (mWakeupEngineManager.get_audio_data_required()) {
/* Restart recorder thread using appropriate recording device */
mAudioManager.stop_recording();
+ mAudioManager.set_recording_session(RECORDING_SESSION_WAKE_WORD);
mAudioManager.start_recording();
} else {
mAudioManager.stop_recording();
if (WAKEUP_MANAGER_STATE_UTTERANCE == wakeup_manager->get_manager_state()) {
wakeup_manager->change_manager_state(WAKEUP_MANAGER_STATE_PROCESSING);
}
+
return ECORE_CALLBACK_CANCEL;
}
mAudioManager.stop_recording();
mAudioManager.clear_audio_data();
change_manager_state(WAKEUP_MANAGER_STATE_UTTERANCE);
+ mAudioManager.set_recording_session(RECORDING_SESSION_FOLLOW_UP);
mAudioManager.start_recording();
mAudioManager.start_streaming_follow_up_data();
mAudioManager.stop_recording();
mAudioManager.clear_audio_data();
+ mAudioManager.set_recording_session(RECORDING_SESSION_WAKE_WORD);
mAudioManager.start_recording();
MWR_LOGD("[END]");
if (audio_manager && engine_manager) {
if (engine_manager->get_audio_data_required()) {
if (mWakeupManager->get_voice_key_pressed() != true) {
+ audio_manager->set_recording_session(RECORDING_SESSION_WAKE_WORD);
audio_manager->start_recording();
}
} else {