Make play type to identify the method to stop playing 90/271890/2
authorSuyeon Hwang <stom.hwang@samsung.com>
Fri, 14 Jan 2022 09:03:36 +0000 (18:03 +0900)
committerSuyeon Hwang <stom.hwang@samsung.com>
Tue, 15 Mar 2022 05:47:40 +0000 (14:47 +0900)
Change-Id: Ief42fe91d71fc74db33fd3bea79b1419a9be7a5b
Signed-off-by: Suyeon Hwang <stom.hwang@samsung.com>
server/ttsd_data.cpp
server/ttsd_data.h
server/ttsd_dbus_server.c
server/ttsd_server.c
server/ttsd_server.h
server/ttsd_tidl.c

index 119cb03d134f36691ffbb3da6b954c54bdde5253..367f60a0daad8ccd9b9b8ae593cb39fbadb7b60e 100644 (file)
@@ -33,6 +33,7 @@ typedef struct
        unsigned int            uid;
        int             utt_id_stopped;
        app_tts_state_e state;
+       tts_app_play_type_e type;
        ttsd_mode_e     mode;
        ttse_result_event_e result_event;
 
@@ -798,6 +799,32 @@ int ttsd_data_set_client_state(unsigned int uid, app_tts_state_e state)
        return TTSD_ERROR_NONE;
 }
 
+tts_app_play_type_e ttsd_data_get_play_type(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 TTS_APP_PLAY_TYPE_SYNTH;
+       }
+
+       return app_data->type;
+}
+
+int ttsd_data_set_play_type(unsigned int uid, tts_app_play_type_e type)
+{
+       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;
+       }
+
+       app_data->type = type;
+
+       return TTSD_ERROR_NONE;
+}
+
 int ttsd_data_set_paused_data_existing(unsigned int uid, bool is_paused_data_existing)
 {
        lock_guard<mutex> lock(g_app_data_mutex);
index ce7de2ec816d399b7a8015db895fbe8184584042..feff8d740cbdfc684f83949ef47fa4cf38b54d4a 100644 (file)
@@ -32,6 +32,11 @@ typedef enum {
        APP_STATE_PAUSED
 } app_tts_state_e;
 
+typedef enum {
+       TTS_APP_PLAY_TYPE_SYNTH = 0,
+       TTS_APP_PLAY_TYPE_PCM = 1
+} tts_app_play_type_e;
+
 typedef enum {
        TTSD_SYNTHESIS_CONTROL_DOING    = 0,
        TTSD_SYNTHESIS_CONTROL_DONE     = 1,
@@ -126,6 +131,10 @@ app_tts_state_e ttsd_data_get_client_state(unsigned int uid);
 
 int ttsd_data_set_client_state(unsigned int uid, app_tts_state_e state);
 
+tts_app_play_type_e ttsd_data_get_play_type(unsigned int uid);
+
+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);
 
 bool ttsd_data_is_paused_data_existing(unsigned int uid);
index 51a0ed3da53c7ae30dbbc1c31270b630492d2a15..0b9fddf64f7520665b2e4afff056988ba684acdf 100644 (file)
@@ -788,7 +788,7 @@ int ttsd_dbus_server_stop_pcm(DBusConnection* conn, DBusMessage* msg)
                ret = TTSD_ERROR_OPERATION_FAILED;
        } else {
                SECURE_SLOG(LOG_DEBUG, tts_tag(), "[IN] tts stop pcm : uid(%u)", uid);
-               ret =  ttsd_server_stop_pcm(uid);
+               ret = ttsd_server_stop(uid);
        }
 
        DBusMessage* reply;
index 36f3165de6a3b2cd1221011d55cf8ed84c7ef70a..93244314f8847e04f1299047d0b84fecbaea06ce 100644 (file)
@@ -53,8 +53,6 @@ static utterance_t g_utt;
 
 static GList *g_proc_list = NULL;
 
-static bool g_is_paused;
-
 static bool g_is_terminated = false;
 
 
@@ -1017,7 +1015,6 @@ int ttsd_server_play(unsigned int uid, const char* credential)
        int ret = TTSD_ERROR_NONE;
        if (APP_STATE_PAUSED == state) {
                SLOG(LOG_DEBUG, tts_tag(), "[Server] uid(%u) is 'Pause' state : resume player", uid);
-               g_is_paused = false;
                ret = ttsd_player_resume(uid);
        } else {
                SLOG(LOG_DEBUG, tts_tag(), "[Server] Play player. uid(%u)", uid);
@@ -1041,10 +1038,27 @@ int ttsd_server_play(unsigned int uid, const char* credential)
        } else {
                __synthesis(uid);
        }
+       ttsd_data_set_play_type(uid, TTS_APP_PLAY_TYPE_SYNTH);
 
        return TTSD_ERROR_NONE;
 }
 
+static void __stop_engine_synthesis(unsigned int uid)
+{
+       ttsd_synthesis_control_e synth_control = ttsd_get_synth_control();
+       SLOG(LOG_INFO, tts_tag(), "[Server INFO] synth_control(%d)", synth_control);
+
+       if (TTSD_SYNTHESIS_CONTROL_DOING == synth_control && uid == ttsd_data_get_current_playing()) {
+               SLOG(LOG_DEBUG, tts_tag(), "[Server] TTS-engine is running");
+
+               int ret = ttsd_engine_cancel_synthesis();
+               if (TTSD_ERROR_NONE != ret)
+                       SLOG(LOG_ERROR, tts_tag(), "[Server ERROR] Fail to cancel synthesis : ret(%d)", ret);
+       }
+
+       ttsd_set_synth_control(TTSD_SYNTHESIS_CONTROL_EXPIRED);
+}
+
 int ttsd_server_stop(unsigned int uid)
 {
        app_tts_state_e state = ttsd_data_get_client_state(uid);
@@ -1056,16 +1070,9 @@ int ttsd_server_stop(unsigned int uid)
        SLOG(LOG_INFO, tts_tag(), "[Server] server stop, uid(%d), state(%d)", uid, state);
 
        if (APP_STATE_PLAYING == state || APP_STATE_PAUSED == state) {
-               ttsd_synthesis_control_e synth_control = ttsd_get_synth_control();
-               SLOG(LOG_INFO, tts_tag(), "[Server INFO] synth_control(%d)", synth_control);
-               if (TTSD_SYNTHESIS_CONTROL_DOING == synth_control && uid == ttsd_data_get_current_playing()) {
-                       SLOG(LOG_DEBUG, tts_tag(), "[Server] TTS-engine is running");
-
-                       int ret = ttsd_engine_cancel_synthesis();
-                       if (TTSD_ERROR_NONE != ret)
-                               SLOG(LOG_ERROR, tts_tag(), "[Server ERROR] Fail to cancel synthesis : ret(%d)", ret);
+               if (TTS_APP_PLAY_TYPE_SYNTH == ttsd_data_get_play_type(uid)) {
+                       __stop_engine_synthesis(uid);
                }
-               ttsd_set_synth_control(TTSD_SYNTHESIS_CONTROL_EXPIRED);
 
                /* stop player */
                ttsd_data_set_client_state(uid, APP_STATE_READY);
@@ -1076,7 +1083,6 @@ int ttsd_server_stop(unsigned int uid)
 
        /* Reset all data */
        ttsd_data_clear_data(uid);
-       g_is_paused = false;
 
        return TTSD_ERROR_NONE;
 }
@@ -1106,8 +1112,6 @@ int ttsd_server_pause(unsigned int uid)
                return TTSD_ERROR_OPERATION_FAILED;
        }
 
-       g_is_paused = true;
-
        return TTSD_ERROR_NONE;
 }
 
@@ -1270,7 +1274,6 @@ int ttsd_server_play_pcm(unsigned int uid)
        int ret = TTSD_ERROR_NONE;
        if (APP_STATE_PAUSED == state) {
                SLOG(LOG_DEBUG, tts_tag(), "[Server] uid(%u) is 'Pause' state : resume player", uid);
-               g_is_paused = false;
                ret = ttsd_player_resume(uid);
        } else {
                SLOG(LOG_DEBUG, tts_tag(), "[Server] Play player. uid(%u)", uid);
@@ -1283,27 +1286,7 @@ int ttsd_server_play_pcm(unsigned int uid)
                return TTSD_ERROR_OPERATION_FAILED;
        }
 
-       return TTSD_ERROR_NONE;
-}
-
-int ttsd_server_stop_pcm(unsigned int uid)
-{
-       app_tts_state_e state = ttsd_data_get_client_state(uid);
-       if (APP_STATE_NONE == state) {
-               SLOG(LOG_ERROR, tts_tag(), "[Server ERROR] uid is not valid");
-               return TTSD_ERROR_INVALID_PARAMETER;
-       }
-
-       SLOG(LOG_INFO, tts_tag(), "[Server] server stop, state(%d)", state);
-
-       if (APP_STATE_PLAYING == state || APP_STATE_PAUSED == state || APP_STATE_READY == state) {
-               ttsd_data_set_client_state(uid, APP_STATE_READY);
-       }
-
-       /* Reset all data */
-       ttsd_data_clear_data(uid);
-
-       ttsd_player_stop(uid);
+       ttsd_data_set_play_type(uid, TTS_APP_PLAY_TYPE_PCM);
 
        return TTSD_ERROR_NONE;
 }
index 726b085625401f2d5192dbcf15e7684aeb906765..dea4c04199f8b4281a74e9e9b6e02de6907931c9 100644 (file)
@@ -75,8 +75,6 @@ int ttsd_server_get_private_data(unsigned int uid, const char* key, char** data)
 
 int ttsd_server_play_pcm(unsigned int uid);
 
-int ttsd_server_stop_pcm(unsigned int uid);
-
 int ttsd_server_add_pcm(unsigned int uid, int event, void* data, int data_size, int audio_type, int rate);
 
 #ifdef __cplusplus
index 00f1ba04c670b23c3849dfd2b07093b13b11a715..281134e22f60b9a607daa575e427c92911d0af38 100644 (file)
@@ -390,7 +390,7 @@ static int __stop_pcm_cb(rpc_port_stub_tts_context_h context, int uid, void *use
        unsigned int u_uid = (unsigned int)uid;
        SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS STOP PCM (%u)", u_uid);
 
-       int ret = ttsd_server_stop_pcm(u_uid);
+       int ret = ttsd_server_stop(u_uid);
        if (TTSD_ERROR_NONE != ret) {
                SLOG(LOG_ERROR, tts_tag(), "[ERROR] TTS STOP PCM (%u) fail (%d/%s) <<<<<", u_uid, ret, get_error_message(ret));
                return ret;