return nullptr;
}
- return __get_sound_data(app_data);
-}
-
-int ttsd_data_pop_sound_data(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 TTSD_ERROR_INVALID_PARAMETER;
- }
-
- if (app_data->m_wav_data.empty()) {
- SECURE_SLOG(LOG_ERROR, tts_tag(), "[DATA ERROR] Sound data is empty (%u)", uid);
- return TTSD_ERROR_OPERATION_FAILED;
+ sound_data_s* soundData = __get_sound_data(app_data);
+ if (nullptr == soundData) {
+ SLOG(LOG_WARN, tts_tag(), "[DATA WARNING] There is no sound data");
+ return nullptr;
}
app_data->m_wav_data.pop_front();
- return TTSD_ERROR_NONE;
+ return soundData;
}
int ttsd_data_get_sound_data_size(unsigned int uid)
return TTSD_ERROR_NONE;
}
-int ttsd_data_set_paused_data_existing(unsigned int uid, bool is_paused_data_existing)
+int ttsd_data_set_paused_data(unsigned int uid, sound_data_s* sound_data)
{
lock_guard<mutex> lock(g_app_data_mutex);
app_data_s* app_data = __get_client_app_data(uid);
return TTSD_ERROR_INVALID_PARAMETER;
}
- app_data->paused_data_existing = is_paused_data_existing;
+ if (sound_data) {
+ app_data->m_wav_data.push_front(sound_data);
+ app_data->paused_data_existing = true;
+ } else {
+ app_data->paused_data_existing = false;
+ }
+
return TTSD_ERROR_NONE;
}
sound_data_s* ttsd_data_get_first_sound_data(unsigned int uid);
-int ttsd_data_pop_sound_data(unsigned int uid);
-
int ttsd_data_get_sound_data_size(unsigned int uid);
int ttsd_data_set_last_sound_result_event(unsigned int uid, ttse_result_event_e event);
int ttsd_data_set_play_type(unsigned int uid, tts_app_play_type_e type);
-int ttsd_data_set_paused_data_existing(unsigned int uid, bool is_paused_data_existing);
+int ttsd_data_set_paused_data(unsigned int uid, sound_data_s* sound_data);
bool ttsd_data_is_paused_data_existing(unsigned int uid);
}
}
+static void __set_paused_data(unsigned int uid, sound_data_s* sound_data) {
+ int ret = ttsd_data_set_paused_data(uid, sound_data);
+ if (TTSD_ERROR_NONE != ret) {
+ ttsd_data_destroy_sound_data(sound_data);
+ }
+}
+
static void __play_utterance_cb(PlayerThread* player, unsigned int uid)
{
SLOG(LOG_DEBUG, tts_tag(), "[PLAYER] Start play utterance. uid(%u)", uid);
while (player->isCurrentUid(uid)) {
sound_data_s* sound_data = ttsd_data_get_first_sound_data(uid);
if (ttsd_data_is_paused_data_existing(uid)) {
- ttsd_data_set_paused_data_existing(uid, false);
+ ttsd_data_set_paused_data(uid, nullptr);
if (nullptr == sound_data) {
break;
ttse_result_event_e event = sound_data->event;
int utt_id = sound_data->utt_id;
- if (TTSD_ERROR_NONE == ttsd_data_pop_sound_data(uid)) {
- ttsd_data_destroy_sound_data(sound_data);
- }
+ ttsd_data_destroy_sound_data(sound_data);
sound_data = nullptr;
SLOG(LOG_INFO, tts_tag(), "[Player] No Sound data. Event(%d), uid(%u), uttid(%d)", event, uid, utt_id);
int ret = __play_sound_data(player, uid, sound_data);
if (TTSD_ERROR_INVALID_STATE == ret) {
SLOG(LOG_DEBUG, tts_tag(), "[Player] Uid(%u) is paused", uid);
- ttsd_data_set_paused_data_existing(uid, true);
+ __set_paused_data(uid, sound_data);
break;
} else if (TTSD_ERROR_NONE != ret) {
SLOG(LOG_ERROR, tts_tag(), "[Player] Fail to play audio data. uid(%u)", uid);
+ ttsd_data_destroy_sound_data(sound_data);
+ sound_data = nullptr;
break;
}
ttse_result_event_e event = sound_data->event;
int utt_id = sound_data->utt_id;
- if (TTSD_ERROR_NONE == ttsd_data_pop_sound_data(uid)) {
- ttsd_data_destroy_sound_data(sound_data);
- }
+ ttsd_data_destroy_sound_data(sound_data);
sound_data = nullptr;
if (TTSE_RESULT_EVENT_FINISH == event) {
__set_playing_status(false);
ttsd_data_set_last_sound_result_event(uid, TTSE_RESULT_EVENT_FINISH);
- ttsd_data_set_paused_data_existing(uid, false);
+ ttsd_data_set_paused_data(uid, nullptr);
SLOG(LOG_INFO, tts_tag(), "[Player SUCCESS] Stop player : uid(%u)", uid);
if (APP_STATE_PLAYING == state || APP_STATE_PAUSED == state) {
ttsd_data_set_last_sound_result_event(uid, TTSE_RESULT_EVENT_FINISH);
- ttsd_data_set_paused_data_existing(uid, false);
+ ttsd_data_set_paused_data(uid, nullptr);
}
return true;