2 * Copyright (c) 2011-2014 Samsung Electronics Co., Ltd All Rights Reserved
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 * http://www.apache.org/licenses/LICENSE-2.0
7 * Unless required by applicable law or agreed to in writing, software
8 * distributed under the License is distributed on an "AS IS" BASIS,
9 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10 * See the License for the specific language governing permissions and
11 * limitations under the License.
17 #include <sys/types.h>
20 #include "tts_config_mgr.h"
22 #include "tts_setting.h"
25 * @brief Enumerations of setting state.
28 TTS_SETTING_STATE_NONE = 0,
29 TTS_SETTING_STATE_READY
30 } tts_setting_state_e;
33 static tts_setting_state_e g_state = TTS_SETTING_STATE_NONE;
35 static tts_setting_supported_engine_cb g_engine_cb;
37 static tts_setting_engine_changed_cb g_engine_changed_cb;
38 static void* g_engine_changed_user_data;
40 static tts_setting_voice_changed_cb g_voice_changed_cb;
41 static void* g_voice_changed_user_data;
43 static tts_setting_speed_changed_cb g_speed_changed_cb;
44 static void* g_speed_changed_user_data;
46 static tts_setting_pitch_changed_cb g_pitch_changed_cb;
47 static void* g_pitch_changed_user_data;
56 static int __setting_convert_config_error_code(tts_config_error_e code)
58 if (code == TTS_CONFIG_ERROR_NONE) return TTS_SETTING_ERROR_NONE;
59 if (code == TTS_CONFIG_ERROR_OUT_OF_MEMORY) return TTS_SETTING_ERROR_OUT_OF_MEMORY;
60 if (code == TTS_CONFIG_ERROR_IO_ERROR) return TTS_SETTING_ERROR_IO_ERROR;
61 if (code == TTS_CONFIG_ERROR_INVALID_PARAMETER) return TTS_SETTING_ERROR_INVALID_PARAMETER;
62 if (code == TTS_CONFIG_ERROR_INVALID_STATE) return TTS_SETTING_ERROR_INVALID_STATE;
63 if (code == TTS_CONFIG_ERROR_INVALID_VOICE) return TTS_SETTING_ERROR_INVALID_VOICE;
64 if (code == TTS_CONFIG_ERROR_ENGINE_NOT_FOUND) return TTS_SETTING_ERROR_ENGINE_NOT_FOUND;
65 if (code == TTS_CONFIG_ERROR_OPERATION_FAILED) return TTS_SETTING_ERROR_OPERATION_FAILED;
66 if (code == TTS_CONFIG_ERROR_NOT_SUPPORTED_FEATURE) return TTS_SETTING_ERROR_NOT_SUPPORTED_FEATURE;
68 return TTS_SETTING_ERROR_NONE;
71 void __setting_config_engine_changed_cb(const char* engine_id, const char* setting, const char* language, int voice_type, bool auto_voice, void* user_data)
73 SLOG(LOG_DEBUG, TAG_TTSC, "Engine chagned : engine(%s) setting(%s) lang(%s) type(%d)",
74 engine_id, setting, language, language, voice_type);
76 if (NULL != g_engine_changed_cb)
77 g_engine_changed_cb(engine_id, g_engine_changed_user_data);
79 if (NULL != g_voice_changed_cb)
80 g_voice_changed_cb(language, voice_type, auto_voice, g_voice_changed_user_data);
83 void __setting_config_voice_changed_cb(const char* before_language, int before_type, const char* language, int voice_type, bool auto_voice, void* user_data)
85 SLOG(LOG_DEBUG, TAG_TTSC, "Voice changed : lang(%s) type(%d) auto(%s)", language, voice_type, auto_voice ? "on" : "off");
87 if (NULL != g_voice_changed_cb)
88 g_voice_changed_cb(language, voice_type, auto_voice, g_voice_changed_user_data);
91 void __setting_config_speech_rate_changed_cb(int value, void* user_data)
93 SLOG(LOG_DEBUG, TAG_TTSC, "Speech rate : %d", value);
95 if (NULL != g_speed_changed_cb)
96 g_speed_changed_cb(value, g_speed_changed_user_data);
99 void __setting_config_pitch_changed_cb(int value, void* user_data)
101 SLOG(LOG_DEBUG, TAG_TTSC, "Pitch : %d", value);
103 if (NULL != g_pitch_changed_cb)
104 g_pitch_changed_cb(value, g_pitch_changed_user_data);
107 int tts_setting_initialize()
109 SLOG(LOG_DEBUG, TAG_TTSC, "===== Initialize TTS Setting");
111 if (TTS_SETTING_STATE_READY == g_state) {
112 SLOG(LOG_WARN, TAG_TTSC, "[WARNING] TTS Setting has already been initialized.");
113 SLOG(LOG_DEBUG, TAG_TTSC, "=====");
114 SLOG(LOG_DEBUG, TAG_TTSC, " ");
115 return TTS_SETTING_ERROR_NONE;
118 int ret = tts_config_mgr_initialize(getpid());
120 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to initialize config manager : %d", ret);
121 return __setting_convert_config_error_code(ret);
124 ret = tts_config_mgr_set_callback(getpid(), __setting_config_engine_changed_cb, __setting_config_voice_changed_cb,
125 __setting_config_speech_rate_changed_cb, __setting_config_pitch_changed_cb, NULL);
127 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to set config changed : %d", ret);
128 return __setting_convert_config_error_code(ret);
131 g_state = TTS_SETTING_STATE_READY;
133 g_engine_changed_cb = NULL;
134 g_engine_changed_user_data = NULL;
136 g_voice_changed_cb = NULL;
137 g_voice_changed_user_data = NULL;
139 g_speed_changed_cb = NULL;
140 g_speed_changed_user_data = NULL;
142 g_pitch_changed_cb = NULL;
143 g_pitch_changed_user_data = NULL;
145 SLOG(LOG_DEBUG, TAG_TTSC, "=====");
146 SLOG(LOG_DEBUG, TAG_TTSC, " ");
148 return TTS_SETTING_ERROR_NONE;
151 int tts_setting_finalize()
153 SLOG(LOG_DEBUG, TAG_TTSC, "===== Finalize TTS Setting");
155 tts_config_mgr_finalize(getpid());
157 g_state = TTS_SETTING_STATE_NONE;
159 SLOG(LOG_DEBUG, TAG_TTSC, "=====");
160 SLOG(LOG_DEBUG, TAG_TTSC, " ");
162 return TTS_SETTING_ERROR_NONE;
165 bool __tts_config_mgr_get_engine_list(const char* engine_id, const char* engine_name, const char* setting, void* user_data)
167 if (NULL != g_engine_cb) {
168 return g_engine_cb(engine_id, engine_name, setting, user_data);
174 int tts_setting_foreach_supported_engines(tts_setting_supported_engine_cb callback, void* user_data)
176 SLOG(LOG_DEBUG, TAG_TTSC, "===== Foreach supported engines");
178 if (TTS_SETTING_STATE_NONE == g_state) {
179 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
180 return TTS_SETTING_ERROR_INVALID_STATE;
183 if (NULL == callback) {
184 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Callback is NULL");
185 return TTS_SETTING_ERROR_INVALID_PARAMETER;
188 g_engine_cb = callback;
190 int ret = tts_config_mgr_get_engine_list(__tts_config_mgr_get_engine_list, user_data);
192 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
197 SLOG(LOG_DEBUG, TAG_TTSC, "=====");
198 SLOG(LOG_DEBUG, TAG_TTSC, " ");
200 return __setting_convert_config_error_code(ret);
203 int tts_setting_get_engine(char** engine_id)
205 SLOG(LOG_DEBUG, TAG_TTSC, "===== Get current engine");
207 if (TTS_SETTING_STATE_NONE == g_state) {
208 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
209 SLOG(LOG_DEBUG, TAG_TTSC, "=====");
210 SLOG(LOG_DEBUG, TAG_TTSC, " ");
211 return TTS_SETTING_ERROR_INVALID_STATE;
214 if (NULL == engine_id) {
215 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Engine id is NULL");
216 SLOG(LOG_DEBUG, TAG_TTSC, "=====");
217 SLOG(LOG_DEBUG, TAG_TTSC, " ");
218 return TTS_SETTING_ERROR_INVALID_PARAMETER;
221 int ret = tts_config_mgr_get_engine(engine_id);
223 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
225 SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Get current engine");
228 SLOG(LOG_DEBUG, TAG_TTSC, "=====");
229 SLOG(LOG_DEBUG, TAG_TTSC, " ");
231 return __setting_convert_config_error_code(ret);
234 int tts_setting_set_engine(const char* engine_id)
236 SLOG(LOG_DEBUG, TAG_TTSC, "===== Set current engine");
238 if (TTS_SETTING_STATE_NONE == g_state) {
239 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
240 SLOG(LOG_DEBUG, TAG_TTSC, "=====");
241 SLOG(LOG_DEBUG, TAG_TTSC, " ");
242 return TTS_SETTING_ERROR_INVALID_STATE;
245 if (NULL == engine_id) {
246 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Engine id is NULL");
247 SLOG(LOG_DEBUG, TAG_TTSC, "=====");
248 SLOG(LOG_DEBUG, TAG_TTSC, " ");
249 return TTS_SETTING_ERROR_INVALID_PARAMETER;
252 int ret = tts_config_mgr_set_engine(engine_id);
254 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
256 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Set current engine : %s", engine_id);
259 SLOG(LOG_DEBUG, TAG_TTSC, "=====");
260 SLOG(LOG_DEBUG, TAG_TTSC, " ");
262 return __setting_convert_config_error_code(ret);
265 int tts_setting_foreach_supported_voices(tts_setting_supported_voice_cb callback, void* user_data)
267 SLOG(LOG_DEBUG, TAG_TTSC, "===== Foreach supported voices");
269 if (TTS_SETTING_STATE_NONE == g_state) {
270 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
271 return TTS_SETTING_ERROR_INVALID_STATE;
274 if (NULL == callback) {
275 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Param is NULL");
276 return TTS_SETTING_ERROR_INVALID_PARAMETER;
279 char* current_engine = NULL;
280 int ret = tts_config_mgr_get_engine(¤t_engine);
282 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to get current engine : %d", ret);
283 return TTS_SETTING_ERROR_OPERATION_FAILED;
286 ret = tts_config_mgr_get_voice_list(current_engine, (tts_config_supported_voice_cb)callback, user_data);
288 if (NULL != current_engine)
289 free(current_engine);
292 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
294 SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Foreach supported voices");
297 SLOG(LOG_DEBUG, TAG_TTSC, "=====");
298 SLOG(LOG_DEBUG, TAG_TTSC, " ");
300 return __setting_convert_config_error_code(ret);
303 int tts_setting_get_voice(char** language, int* voice_type)
305 SLOG(LOG_DEBUG, TAG_TTSC, "===== Get default voice");
307 if (TTS_SETTING_STATE_NONE == g_state) {
308 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
309 return TTS_SETTING_ERROR_INVALID_STATE;
312 if (NULL == language || NULL == voice_type) {
313 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input parameter is NULL");
314 return TTS_SETTING_ERROR_INVALID_PARAMETER;
317 int ret = tts_config_mgr_get_voice(language, (int*)voice_type);
319 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
321 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Get default voices : lang(%s) type(%d)", *language, *voice_type);
324 SLOG(LOG_DEBUG, TAG_TTSC, "=====");
325 SLOG(LOG_DEBUG, TAG_TTSC, " ");
327 return __setting_convert_config_error_code(ret);
330 int tts_setting_set_voice(const char* language, int voice_type)
332 SLOG(LOG_DEBUG, TAG_TTSC, "===== Set default voice");
334 if (TTS_SETTING_STATE_NONE == g_state) {
335 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
336 return TTS_SETTING_ERROR_INVALID_STATE;
339 if (NULL == language) {
340 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input parameter is NULL");
341 return TTS_SETTING_ERROR_INVALID_PARAMETER;
344 if (voice_type < TTS_SETTING_VOICE_TYPE_MALE || TTS_SETTING_VOICE_TYPE_CHILD < voice_type) {
345 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Invalid voice type");
346 return TTS_SETTING_ERROR_INVALID_PARAMETER;
349 int ret = tts_config_mgr_set_voice(language, (int)voice_type);
351 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
353 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Set default voice : lang(%s) type(%d)", language, voice_type);
356 SLOG(LOG_DEBUG, TAG_TTSC, "=====");
357 SLOG(LOG_DEBUG, TAG_TTSC, " ");
359 return __setting_convert_config_error_code(ret);
362 int tts_setting_set_auto_voice(bool value)
364 SLOG(LOG_DEBUG, TAG_TTSC, "===== Set auto voice");
366 if (TTS_SETTING_STATE_NONE == g_state) {
367 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
368 return TTS_SETTING_ERROR_INVALID_STATE;
371 if (value != true && value != false) {
372 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Invalid value");
373 return TTS_SETTING_ERROR_INVALID_PARAMETER;
376 int ret = tts_config_mgr_set_auto_voice(value);
378 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
380 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Set auto voice %s", value ? "on" : "off");
383 SLOG(LOG_DEBUG, TAG_TTSC, "=====");
384 SLOG(LOG_DEBUG, TAG_TTSC, " ");
386 return __setting_convert_config_error_code(ret);
389 int tts_setting_get_auto_voice(bool* value)
391 SLOG(LOG_DEBUG, TAG_TTSC, "===== Get auto voice");
393 if (TTS_SETTING_STATE_NONE == g_state) {
394 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
395 return TTS_SETTING_ERROR_INVALID_STATE;
399 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Param is NULL");
400 return TTS_SETTING_ERROR_INVALID_PARAMETER;
403 int ret = tts_config_mgr_get_auto_voice(value);
405 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
407 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Get auto voice : %d ", (int)*value);
410 SLOG(LOG_DEBUG, TAG_TTSC, "=====");
411 SLOG(LOG_DEBUG, TAG_TTSC, " ");
413 return __setting_convert_config_error_code(ret);
416 int tts_setting_get_speed_range(int* min, int* normal, int* max)
418 SLOG(LOG_DEBUG, TAG_TTSC, "===== Get speed range");
420 if (TTS_SETTING_STATE_NONE == g_state) {
421 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
422 return TTS_SETTING_ERROR_INVALID_STATE;
425 if (NULL == min || NULL == normal || NULL == max) {
426 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input parameter is null");
427 return TTS_SETTING_ERROR_INVALID_PARAMETER;
430 *min = TTS_SPEED_MIN;
431 *normal = TTS_SPEED_NORMAL;
432 *max = TTS_SPEED_MAX;
434 SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Get speed range : min(%d) normal(%d) max(%d)", *min, *normal, *max);
436 return TTS_SETTING_ERROR_NONE;
439 int tts_setting_get_speed(int* speed)
441 SLOG(LOG_DEBUG, TAG_TTSC, "===== Get default speed");
443 if (TTS_SETTING_STATE_NONE == g_state) {
444 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
445 return TTS_SETTING_ERROR_INVALID_STATE;
449 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Param is NULL");
450 return TTS_SETTING_ERROR_INVALID_PARAMETER;
456 int ret = tts_config_mgr_get_speech_rate(&temp);
458 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
462 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Get default speed : %d ", *speed);
465 SLOG(LOG_DEBUG, TAG_TTSC, "=====");
466 SLOG(LOG_DEBUG, TAG_TTSC, " ");
468 return __setting_convert_config_error_code(ret);
471 int tts_setting_set_speed(int speed)
473 SLOG(LOG_DEBUG, TAG_TTSC, "===== Set default speed");
475 if (TTS_SETTING_STATE_NONE == g_state) {
476 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
477 return TTS_SETTING_ERROR_INVALID_STATE;
480 if (TTS_SPEED_MIN > speed || speed > TTS_SPEED_MAX) {
481 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Invalid speed");
482 return TTS_SETTING_ERROR_INVALID_PARAMETER;
485 int ret = tts_config_mgr_set_speech_rate(speed);
487 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
489 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Set default speed, %d", speed);
492 SLOG(LOG_DEBUG, TAG_TTSC, "=====");
493 SLOG(LOG_DEBUG, TAG_TTSC, " ");
495 return __setting_convert_config_error_code(ret);
498 int tts_setting_get_pitch_range(int* min, int* normal, int* max)
500 SLOG(LOG_DEBUG, TAG_TTSC, "===== Get speed range");
502 if (TTS_SETTING_STATE_NONE == g_state) {
503 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
504 return TTS_SETTING_ERROR_INVALID_STATE;
507 if (NULL == min || NULL == normal || NULL == max) {
508 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input parameter is null");
509 return TTS_SETTING_ERROR_INVALID_PARAMETER;
512 *min = TTS_PITCH_MIN;
513 *normal = TTS_PITCH_NORMAL;
514 *max = TTS_PITCH_MAX;
516 SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Get pitch range : min(%d) normal(%d) max(%d)", *min, *normal, *max);
518 return TTS_SETTING_ERROR_NONE;
521 int tts_setting_set_pitch(int pitch)
523 SLOG(LOG_DEBUG, TAG_TTSC, "===== Set default pitch");
525 if (TTS_SETTING_STATE_NONE == g_state) {
526 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
527 return TTS_SETTING_ERROR_INVALID_STATE;
530 if (TTS_PITCH_MIN > pitch || pitch > TTS_PITCH_MAX) {
531 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Invalid pitch");
532 return TTS_SETTING_ERROR_INVALID_PARAMETER;
535 int ret = tts_config_mgr_set_pitch(pitch);
537 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
539 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Set default pitch, %d", pitch);
542 SLOG(LOG_DEBUG, TAG_TTSC, "=====");
543 SLOG(LOG_DEBUG, TAG_TTSC, " ");
545 return __setting_convert_config_error_code(ret);
548 int tts_setting_get_pitch(int* pitch)
550 SLOG(LOG_DEBUG, TAG_TTSC, "===== Get default pitch");
552 if (TTS_SETTING_STATE_NONE == g_state) {
553 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not initialized");
554 return TTS_SETTING_ERROR_INVALID_STATE;
558 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input parameter is NULL");
559 return TTS_SETTING_ERROR_INVALID_PARAMETER;
565 int ret = tts_config_mgr_get_pitch(&temp);
567 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Result : %d", ret);
571 SECURE_SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Get default pitch : %d ", *pitch);
574 return __setting_convert_config_error_code(ret);
577 int tts_setting_set_engine_changed_cb(tts_setting_engine_changed_cb callback, void* user_data)
579 if (NULL == callback) {
580 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input param is NULL");
581 return TTS_SETTING_ERROR_INVALID_PARAMETER;
584 g_engine_changed_cb = callback;
585 g_engine_changed_user_data = user_data;
587 return TTS_SETTING_ERROR_NONE;
590 int tts_setting_unset_engine_changed_cb()
592 g_engine_changed_cb = NULL;
593 g_engine_changed_user_data = NULL;
595 return TTS_SETTING_ERROR_NONE;
598 int tts_setting_set_voice_changed_cb(tts_setting_voice_changed_cb callback, void* user_data)
600 if (NULL == callback) {
601 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input param is NULL");
602 return TTS_SETTING_ERROR_INVALID_PARAMETER;
605 g_voice_changed_cb = callback;
606 g_voice_changed_user_data = user_data;
608 return TTS_SETTING_ERROR_NONE;
611 int tts_setting_unset_voice_changed_cb()
613 g_voice_changed_cb = NULL;
614 g_voice_changed_user_data = NULL;
616 return TTS_SETTING_ERROR_NONE;
619 int tts_setting_set_speed_changed_cb(tts_setting_speed_changed_cb callback, void* user_data)
621 if (NULL == callback) {
622 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input param is NULL");
623 return TTS_SETTING_ERROR_INVALID_PARAMETER;
626 g_speed_changed_cb = callback;
627 g_speed_changed_user_data = user_data;
629 return TTS_SETTING_ERROR_NONE;
632 int tts_setting_unset_speed_changed_cb()
634 g_speed_changed_cb = NULL;
635 g_speed_changed_user_data = NULL;
637 return TTS_SETTING_ERROR_NONE;
641 int tts_setting_set_pitch_changed_cb(tts_setting_pitch_changed_cb callback, void* user_data)
643 if (NULL == callback) {
644 SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input param is NULL");
645 return TTS_SETTING_ERROR_INVALID_PARAMETER;
648 g_pitch_changed_cb = callback;
649 g_pitch_changed_user_data = user_data;
651 return TTS_SETTING_ERROR_NONE;
654 int tts_setting_unset_pitch_changed_cb()
656 g_pitch_changed_cb = NULL;
657 g_pitch_changed_user_data = NULL;
659 return TTS_SETTING_ERROR_NONE;