Extract function for utterance start/complete event 75/271875/1
authorSuyeon Hwang <stom.hwang@samsung.com>
Tue, 18 May 2021 09:26:46 +0000 (18:26 +0900)
committerSuyeon Hwang <stom.hwang@samsung.com>
Thu, 3 Mar 2022 02:43:00 +0000 (11:43 +0900)
Change-Id: I490a61bc8707ba0cc189d8c1804cebebf17b46d7
Signed-off-by: Suyeon Hwang <stom.hwang@samsung.com>
server/ttsd_player.cpp

index 1b5d5c6753ba125a5faf5c90780179931b713343..cf84d6a7bb9deb7866b047d92693ac932562eacb 100644 (file)
@@ -313,6 +313,52 @@ bool ttsd_player_does_interrupt_have_playback_focus()
        return result;
 }
 
+static int __notify_utterance_started_event(unsigned int uid, int utt_id)
+{
+       int pid = ttsd_data_get_pid(uid);
+       if (pid <= 0) {
+               SLOG(LOG_ERROR, tts_tag(), "[Player] Current player is not valid. uid(%u)", uid);
+               return TTSD_ERROR_INVALID_PARAMETER;
+       }
+
+#ifdef BUF_SAVE_MODE
+       __open_buffer_dump_file();
+#endif
+       __set_playing_status(true);
+
+       if (0 != ttsdc_ipc_send_utt_start_message(pid, uid, utt_id)) {
+               SLOG(LOG_ERROR, tts_tag(), "[Player ERROR] Fail to send Utterance Started Signal : pid(%d), uid(%u), utt_id(%d)",
+                       pid, uid, utt_id);
+               return TTSD_ERROR_OPERATION_FAILED;
+       }
+
+       SLOG(LOG_INFO, tts_tag(), "[Player] Start utterance : uid(%u), utt_id(%d)", uid, utt_id);
+       return TTSD_ERROR_NONE;
+}
+
+static int __notify_utterance_completed_event(unsigned int uid, int utt_id)
+{
+       int pid = ttsd_data_get_pid(uid);
+       if (pid <= 0) {
+               SLOG(LOG_ERROR, tts_tag(), "[Player] Current player is not valid. uid(%u)", uid);
+               return TTSD_ERROR_INVALID_PARAMETER;
+       }
+
+#ifdef BUF_SAVE_MODE
+       __close_buffer_dump_file();
+#endif
+       __set_playing_status(false);
+
+       if (0 != ttsdc_ipc_send_utt_finish_message(pid, uid, utt_id)) {
+               SLOG(LOG_ERROR, tts_tag(), "[Player ERROR] Fail to send Utterance Completed Signal : pid(%d), uid(%u), utt_id(%d)",
+                       pid, uid, utt_id);
+               return TTSD_ERROR_OPERATION_FAILED;
+       }
+
+       SLOG(LOG_INFO, tts_tag(), "[Player] Complete utterance : uid(%u), utt_id(%d)", uid, utt_id);
+       return TTSD_ERROR_NONE;
+}
+
 static int __play_sound_data(player_s* player, sound_data_s* sound_data)
 {
        if (TTSD_ERROR_NONE != g_audio_stream->setAudioFormat(sound_data->audio_type, sound_data->rate)) {
@@ -470,26 +516,12 @@ static void __play_thread_old(void *data, Ecore_Thread *thread)
                         * 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)) {
-                               int pid = ttsd_data_get_pid(player->uid);
-                               if (pid <= 0) {
-                                       SLOG(LOG_WARN, tts_tag(), "[Send WARNIING] Current player is not valid. uid(%u)", player->uid);
-                                       /* unset volume policy, volume will be 100% */
+                       if (TTSE_RESULT_EVENT_START == sound_data->event || (TTSE_RESULT_EVENT_FINISH == player->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) {
                                        __unset_policy_for_playing();
                                        return;
                                }
-
-#ifdef BUF_SAVE_MODE
-                               __open_buffer_dump_file();
-#endif
-
-                               __set_playing_status(true);
-                               if (0 != ttsdc_ipc_send_utt_start_message(pid, player->uid, sound_data->utt_id)) {
-                                       SLOG(LOG_ERROR, tts_tag(), "[Send ERROR] Fail to send Utterance Start Signal : pid(%d), uid(%u), uttid(%d)",
-                                               pid, player->uid, sound_data->utt_id);
-                               }
-                               SLOG(LOG_INFO, tts_tag(), "[Player] Start utterance : uid(%u), uttid(%d)", player->uid, sound_data->utt_id);
                        } // (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 */
@@ -506,30 +538,11 @@ static void __play_thread_old(void *data, Ecore_Thread *thread)
 
                                if (TTSE_RESULT_EVENT_FINISH == event) {
                                        SLOG(LOG_DEBUG, tts_tag(), "No sound data");
-                                       /* send utterence finish signal */
-                                       int pid = ttsd_data_get_pid(player->uid);
-
-                                       if (pid <= 0) {
-                                               SLOG(LOG_WARN, tts_tag(), "[Send WARNIING] Current player is not valid. uid(%u)", player->uid);
-                                               /* unset volume policy, volume will be 100% */
-                                               __unset_policy_for_playing();
-                                               return;
-                                       }
-
                                        __unset_policy_for_playing();
 
-#ifdef BUF_SAVE_MODE
-                                       __close_buffer_dump_file();
-#endif
-
-                                       __set_playing_status(false);
-
-
-                                       if (0 != ttsdc_ipc_send_utt_finish_message(pid, player->uid, utt_id)) {
-                                               SLOG(LOG_ERROR, tts_tag(), "[Send ERROR] Fail to send Utterance Completed Signal : pid(%d), uid(%u), uttid(%d)",
-                                                       pid, player->uid, utt_id);
-                                       } else {
-                                               SLOG(LOG_INFO, tts_tag(), "[Player] Finish utterance : uid(%u), uttid(%d)", player->uid, utt_id);
+                                       ret = __notify_utterance_completed_event(player->uid, utt_id);
+                                       if (TTSD_ERROR_INVALID_PARAMETER == ret) {
+                                               return;
                                        }
                                } // TTSE_RESULT_EVENT_FINISH == event
                                SLOG(LOG_INFO, tts_tag(), "[Player] Event(%d) utterance : uid(%u), uttid(%d)", event, player->uid, utt_id);
@@ -561,32 +574,12 @@ static void __play_thread_old(void *data, Ecore_Thread *thread)
                }
                sound_data = nullptr;
 
-               if ((APP_STATE_PLAYING == player->state || APP_STATE_PAUSED == player->state) &&
-                       (TTSE_RESULT_EVENT_FINISH == event)) {
-                       /* send utterence finish signal */
-                       int pid = ttsd_data_get_pid(player->uid);
-
-                       if (pid <= 0) {
-                               SLOG(LOG_WARN, tts_tag(), "[Send WARNIING] Current player is not valid. uid(%u)", player->uid);
-                               /* unset volume policy, volume will be 100% */
-                               __unset_policy_for_playing();
-                               return;
-                       }
-
-#ifdef BUF_SAVE_MODE
-                       __close_buffer_dump_file();
-#endif
-                       __set_playing_status(false);
-
-                       if (0 != ttsdc_ipc_send_utt_finish_message(pid, player->uid, utt_id)) {
-                               SLOG(LOG_ERROR, tts_tag(), "[Send ERROR] Fail to send Utterance Completed Signal : pid(%d), uid(%u), uttid(%d)",
-                                       pid, player->uid, utt_id);
-                               /* unset volume policy, volume will be 100% */
+               if ((APP_STATE_PLAYING == player->state || APP_STATE_PAUSED == player->state) && (TTSE_RESULT_EVENT_FINISH == event)) {
+                       ret = __notify_utterance_completed_event(player->uid, utt_id);
+                       if (TTSD_ERROR_NONE != ret) {
                                __unset_policy_for_playing();
                                return;
                        }
-
-                       SLOG(LOG_INFO, tts_tag(), "[Player] Finish utterance : uid(%u), uttid(%d)", player->uid, utt_id);
                } // ((APP_STATE_PLAYING == player->state || APP_STATE_PAUSED == player->state) && (TTSE_RESULT_EVENT_FINISH == event))
 
                if (NULL == g_playing_info && APP_STATE_READY == player->state) {