return 0;
}
-int sttd_engine_agent_recognize_start_recorder(int uid)
+int sttd_engine_agent_recognize_start_recorder(int uid, const char* appid)
{
if (NULL == g_engine_info) {
SECURE_SLOG(LOG_ERROR, TAG_STTD, "[Engine Agent ERROR] The engine is not valid");
SLOG(LOG_INFO, TAG_STTD, "[Engine Agent] Start recorder");
int ret;
- ret = sttd_recorder_start(uid);
+ ret = sttd_recorder_start(uid, appid);
if (0 != ret) {
SLOG(LOG_ERROR, TAG_STTD, "[Engine Agent ERROR] Fail to start recorder : result(%d)", ret);
stt_engine_recognize_cancel();
int sttd_engine_agent_recognize_start_engine(int uid, const char* lang, const char* recognition_type,
int silence, const char* appid, const char* credential, void* user_param);
-int sttd_engine_agent_recognize_start_recorder(int uid);
+int sttd_engine_agent_recognize_start_recorder(int uid, const char* appid);
int sttd_engine_agent_recognize_start_file(int uid, const char* filepath);
#endif
#ifdef TV_BT_MODE
+static char* g_tct_apps[5] = {"tct-stt-native-itc",
+ "tct-stt-native-utc",
+ "org.tizen.tbtcoreapp",
+ "Tizen.Stt.Tests",
+ "Tizen.Stt.Manual.Tests"};
+
static float get_volume_decibel(char* data, int size, stte_audio_type_e type);
//static stt_recorder_s* __get_recorder(int engine_id);
}
}
-void __recorder_focus_state_watch_cb(int id, sound_stream_focus_mask_e focus_mask, sound_stream_focus_state_e focus_state,
+void __recorder_focus_state_watch_cb(int id, sound_stream_focus_mask_e focus_mask, sound_stream_focus_state_e focus_state,
sound_stream_focus_change_reason_e reason, const char *extra_info, void *user_data)
{
SLOG(LOG_WARN, TAG_STTD, "[Recorder] focus_state_watch_cb is called, focus_state(%d), reason(%s)", (int)focus_state, __stt_get_focus_changed_reason_code(reason));
}
#endif
-int sttd_recorder_start(int uid)
+#ifdef TV_BT_MODE
+bool __is_tct_app(const char* appid)
+{
+ int cnt = 0;
+ if (NULL == appid) {
+ SLOG(LOG_WARN, TAG_STTD, "[Recorder WARN] appid is NULL");
+ return false;
+ }
+
+ for (cnt = 0 ; cnt < 5 ; cnt++) {
+ if (0 == strncmp(appid, g_tct_apps[cnt], strlen(appid))) {
+ SLOG(LOG_INFO, TAG_STTD, "[Recoder INFO] Current app(%s) is TCT app.", appid);
+ return true;
+ }
+ }
+
+ return false;
+}
+#endif
+
+int sttd_recorder_start(int uid, const char* appid)
{
if (STTD_RECORDER_STATE_RECORDING == g_recorder_state)
return 0;
SLOG(LOG_WARN, TAG_STTD, "[Recorder WARNING] Fail to create timer of read_audio");
return STTD_ERROR_OPERATION_FAILED;
}
+#else
+ if (true == __is_tct_app(appid)) {
+ int ret = -1;
+ int bt_retry = 0;
+ bool started = false;
+ while (5 > bt_retry) {
+ ret = bt_hid_rc_start_sending_voice(NULL);
+ if (BT_ERROR_NONE == ret) {
+ SLOG(LOG_DEBUG, TAG_STTD, "[Recorder] Start bt audio");
+ started = true;
+ break;
+ } else if (BT_ERROR_NOW_IN_PROGRESS == ret) {
+ SLOG(LOG_ERROR, TAG_STTD, "[Recorder ERROR] Fail bt_hid_rc_start_sending_voice()");
+ usleep(50000);
+ bt_retry++;
+ } else {
+ SLOG(LOG_ERROR, TAG_STTD, "[Recorder ERROR] bt_hid_rc_start_sending_voice(): ret(%d)", ret);
+ break;
+ }
+ }
+ if (false == started) {
+ SLOG(LOG_ERROR, TAG_STTD, "[Recorder ERROR] Fail to start bt audio(%d)", ret);
+ }
+ }
#endif
g_recorder_state = STTD_RECORDER_STATE_RECORDING;
* limitations under the License.
*/
+#include <aul.h>
#include <pthread.h>
#include <sound_manager.h>
#include <wav_player.h>
return;
}
- int ret = sttd_engine_agent_recognize_start_recorder(uid);
+ char appid[1024] = {0, };
+ int pid = sttd_client_get_pid(uid);
+ int ret = -1;
+ ret = aul_app_get_appid_bypid(pid, appid, sizeof(appid) - 1);
+ if ((AUL_R_OK != ret) || (0 == strlen(appid))) {
+ SLOG(LOG_ERROR, TAG_STTD, "[ERROR] Fail to get application ID");
+ } else {
+ SLOG(LOG_DEBUG, TAG_STTD, "[DEBUG] Current app id is %s", appid);
+ }
+
+ ret = sttd_engine_agent_recognize_start_recorder(uid, appid);
if (0 != ret) {
SLOG(LOG_ERROR, TAG_STTD, "[Server ERROR] Fail to start recognition : result(%d)", ret);
return;
if (true == is_sound_done) {
SLOG(LOG_INFO, TAG_STTD, "[Server] No sound play");
- ret = sttd_engine_agent_recognize_start_recorder(uid);
+ ret = sttd_engine_agent_recognize_start_recorder(uid, appid);
if (0 != ret) {
stt_client_unset_current_recognition();
sttd_recorder_unset_audio_session();