return TTSD_ERROR_NONE;
}
+static inline void __destroy_speak_data(speak_data_s* speak_data)
+{
+ SLOG(LOG_DEBUG, tts_tag(), "[DEBUG] utt(%d), text(%s), lang(%s), vctype(%d) speed(%d)",
+ speak_data->utt_id, speak_data->text, speak_data->lang, speak_data->vctype, speak_data->speed);
+
+ free(speak_data->text);
+ free(speak_data->lang);
+
+ delete speak_data;
+}
+
static void __clean_data(app_data_s& app_data)
{
int removed_last_uttid = -1;
continue;
}
- SLOG(LOG_DEBUG, tts_tag(), "[DEBUG] utt(%d), text(%s), lang(%s), vctype(%d) speed(%d)",
- speak_data->utt_id, speak_data->text, speak_data->lang, speak_data->vctype, speak_data->speed);
-
- if (nullptr != speak_data->text) {
- free(speak_data->text);
- speak_data->text = nullptr;
- }
- if (nullptr != speak_data->lang) {
- free(speak_data->lang);
- speak_data->lang = nullptr;
- }
removed_last_uttid = speak_data->utt_id;
- free(speak_data);
+ __destroy_speak_data(speak_data);
speak_data = nullptr;
}
return TTSD_ERROR_NONE;
}
+speak_data_s* ttsd_data_create_speak_data(const char* text, const char* language, int voice_type, int speed, int utt_id)
+{
+ speak_data_s* speak_data = new speak_data_s();
+ if (nullptr == speak_data) {
+ SECURE_SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to allocate memory for speak_data_s");
+ return nullptr;
+ }
+
+ speak_data->text = strdup(text);
+ speak_data->lang = strdup(language);
+
+ speak_data->vctype = voice_type;
+ speak_data->speed = speed;
+ speak_data->utt_id = utt_id;
+
+ return speak_data;
+}
+
+void ttsd_data_destroy_speak_data(speak_data_s* speak_data)
+{
+ if (nullptr == speak_data) {
+ SECURE_SLOG(LOG_ERROR, tts_tag(), "[ERROR] data is nullptr");
+ return;
+ }
+ __destroy_speak_data(speak_data);
+}
+
int ttsd_data_add_speak_data(unsigned int uid, speak_data_s* data)
{
lock_guard<mutex> lock(g_app_data_mutex);
return app_data->m_wav_data.size();
}
-int ttsd_data_clear_speak_data(speak_data_s** speak_data)
-{
- if (nullptr == speak_data) {
- SECURE_SLOG(LOG_ERROR, tts_tag(), "[DATA ERROR] speak_data is nullptr");
- return TTSD_ERROR_INVALID_PARAMETER;
- }
-
- if (nullptr != *speak_data) {
- SLOG(LOG_DEBUG, tts_tag(), "[DEBUG] utt(%d), text(%s), lang(%s), vctype(%d) speed(%d)",
- (*speak_data)->utt_id, (*speak_data)->text, (*speak_data)->lang, (*speak_data)->vctype, (*speak_data)->speed);
-
- if (nullptr != (*speak_data)->text) {
- free((*speak_data)->text);
- (*speak_data)->text = nullptr;
- }
- if (nullptr != (*speak_data)->lang) {
- free((*speak_data)->lang);
- (*speak_data)->lang = nullptr;
- }
-
- free(*speak_data);
- *speak_data = nullptr;
- }
-
- return TTSD_ERROR_NONE;
-}
-
int ttsd_data_clear_sound_data(sound_data_s** sound_data)
{
if (nullptr == sound_data) {
int pid = ttsd_data_get_pid(uid);
if (pid <= 0) {
SLOG(LOG_ERROR, tts_tag(), "[Server ERROR] Fail to get pid. uid(%u)", uid);
+ ttsd_data_destroy_speak_data(speak_data);
+ speak_data = NULL;
return -1;
}
ttsdc_ipc_send_set_state_message(pid, uid, APP_STATE_READY);
- ttsd_data_clear_speak_data(&speak_data);
+ ttsd_data_destroy_speak_data(speak_data);
+ speak_data = NULL;
return 0;
}
free(credential);
credential = NULL;
- ttsd_data_clear_speak_data(&speak_data);
+ ttsd_data_destroy_speak_data(speak_data);
+ speak_data = NULL;
} else {
- ttsd_data_clear_speak_data(&speak_data);
+ ttsd_data_destroy_speak_data(speak_data);
+ speak_data = NULL;
}
SLOG(LOG_DEBUG, tts_tag(), "@@@ SYNTHESIS END");
return TTSD_ERROR_INVALID_VOICE;
}
- speak_data_s* speak_data = NULL;
- speak_data = (speak_data_s*)calloc(1, sizeof(speak_data_s));
+ speak_data_s* speak_data = ttsd_data_create_speak_data(text, lang, voice_type, speed, utt_id);
if (NULL == speak_data) {
SLOG(LOG_ERROR, tts_tag(), "[Server ERROR] Fail to allocate memory");
if (NULL != temp_lang) {
free(temp_lang);
temp_lang = NULL;
}
+
return TTSD_ERROR_OPERATION_FAILED;
}
- speak_data->lang = strdup(lang);
- speak_data->vctype = voice_type;
-
- speak_data->speed = speed;
- speak_data->utt_id = utt_id;
-
- speak_data->text = strdup(text);
-
SLOG(LOG_INFO, tts_tag(), "[Server] Add queue, lang(%s), vctype(%d), speed(%d), uttid(%d), credential(%s)", lang, voice_type, speed, utt_id, credential);
/* if state is APP_STATE_READY , APP_STATE_PAUSED , only need to add speak data to queue*/
free(temp_lang);
temp_lang = NULL;
}
- if (NULL != speak_data) {
- if (NULL != speak_data->lang) free(speak_data->lang);
- if (NULL != speak_data->text) free(speak_data->text);
-
- speak_data->lang = NULL;
- speak_data->text = NULL;
- free(speak_data);
- speak_data = NULL;
- }
+ ttsd_data_destroy_speak_data(speak_data);
+ speak_data = NULL;
return ret;
}