int utt_id_stopped;
app_tts_state_e state;
ttsd_mode_e mode;
+ ttse_result_event_e result_event;
std::list<speak_data_s*> m_speak_data;
std::list<sound_data_s*> m_wav_data;
return app_data->m_wav_data.size();
}
+int ttsd_data_set_last_sound_result_event(unsigned int uid, ttse_result_event_e event)
+{
+ lock_guard<mutex> lock(g_app_data_mutex);
+ app_data_s* app_data = __get_client_app_data(uid);
+ if (nullptr == app_data) {
+ SECURE_SLOG(LOG_ERROR, tts_tag(), "[DATA ERROR] uid is not valid (%u)", uid);
+ return TTSE_ERROR_INVALID_PARAMETER;
+ }
+
+ app_data->result_event = event;
+ return TTSE_ERROR_NONE;
+}
+
+ttse_result_event_e ttsd_data_get_last_sound_result_event(unsigned int uid)
+{
+ lock_guard<mutex> lock(g_app_data_mutex);
+ app_data_s* app_data = __get_client_app_data(uid);
+ if (nullptr == app_data) {
+ SECURE_SLOG(LOG_ERROR, tts_tag(), "[DATA ERROR] uid is not valid (%u)", uid);
+ return TTSE_RESULT_EVENT_FAIL;
+ }
+
+ return app_data->result_event;
+}
+
int ttsd_data_clear_data(unsigned int uid)
{
lock_guard<mutex> lock(g_app_data_mutex);
typedef struct {
unsigned int uid; /** client id */
-
- /* Current utterance information */
- ttse_result_event_e event; /** event of last utterance */
} player_s;
#define SOUND_BUFFER_LENGTH 2048
* When previous wdata's event is 'finish' and current wdata's event is 'finish',
* the player should send utt started event.
*/
- if (TTSE_RESULT_EVENT_START == sound_data->event || (TTSE_RESULT_EVENT_FINISH == player->event && TTSE_RESULT_EVENT_FINISH == sound_data->event)) {
+ ttse_result_event_e last_event = ttsd_data_get_last_sound_result_event(player->uid);
+ if (TTSE_RESULT_EVENT_START == sound_data->event || (TTSE_RESULT_EVENT_FINISH == last_event && TTSE_RESULT_EVENT_FINISH == sound_data->event)) {
int ret = __notify_utterance_started_event(player->uid, sound_data->utt_id);
if (TTSD_ERROR_INVALID_PARAMETER == ret) {
g_audio_stream->unprepareAudioOut();
} // (TTSE_RESULT_EVENT_START == sound_data->event || (TTSE_RESULT_EVENT_FINISH == player->event && TTSE_RESULT_EVENT_FINISH == sound_data->event))
/* Save last event to check utterance start */
- player->event = sound_data->event;
+ ttsd_data_set_last_sound_result_event(player->uid, sound_data->event);
if (NULL == sound_data->data || 0 >= sound_data->data_size) {
ttse_result_event_e event = sound_data->event;
}
new_client->uid = uid;
- new_client->event = TTSE_RESULT_EVENT_FINISH;
+ ttsd_data_set_last_sound_result_event(uid, TTSE_RESULT_EVENT_FINISH);
ttsd_data_set_paused_data_existing(uid, false);
SECURE_SLOG(LOG_DEBUG, tts_tag(), "[Player] Create player : uid(%u)", uid);
return -1;
}
- current->event = TTSE_RESULT_EVENT_FINISH;
+ ttsd_data_set_last_sound_result_event(uid, TTSE_RESULT_EVENT_FINISH);
ttsd_data_set_paused_data_existing(uid, false);
SLOG(LOG_DEBUG, tts_tag(), "[Player SUCCESS] Clear player : uid(%u)", uid);
}
if (APP_STATE_PLAYING == state || APP_STATE_PAUSED == state) {
- data->event = TTSE_RESULT_EVENT_FINISH;
+ ttsd_data_set_last_sound_result_event(data->uid, TTSE_RESULT_EVENT_FINISH);
ttsd_data_set_paused_data_existing(data->uid, false);
}