Add test code for dumping pcm data from wakeup engines 13/221613/1
authorJi-hoon Lee <dalton.lee@samsung.com>
Mon, 6 Jan 2020 08:08:10 +0000 (17:08 +0900)
committerJi-hoon Lee <dalton.lee@samsung.com>
Mon, 6 Jan 2020 08:08:14 +0000 (17:08 +0900)
Change-Id: Ieec852c3317fb418966d90b94176f6dad4e562f6

plugins/wakeup-manager/src/wakeup_engine_manager.cpp

index 01372c751b03579ec42853c32e87b7bbbdce48ab..41af682b7efd7dea7350f8dddfb34bc89bc2098f 100644 (file)
@@ -13,6 +13,19 @@ namespace multiassistant
 namespace wakeup
 {
 
+/* Sound buf save for test */
+#if 0
+#define BUF_SAVE_MODE
+#endif
+
+#ifdef BUF_SAVE_MODE
+static char g_temp_file_name[128] = {'\0', };
+
+static FILE* g_pFile = NULL;
+
+static int g_count = 1;
+#endif
+
 /* Need to check whether this value needs to be configurable */
 static int g_speech_pcm_wait_count = 400;
 
@@ -269,6 +282,42 @@ void CWakeupEngineManager::streaming_speech_data_thread_func()
 
        MWR_LOGD("data_count : %d", interface->get_utterance_data_count());
 
+#ifdef BUF_SAVE_MODE
+       if (g_pFile) {
+               fclose(g_pFile);
+               g_pFile = NULL;
+       } else {
+               MWR_LOGD("[Recorder Info] File not found!");
+       }
+
+       while (1) {
+               snprintf(g_temp_file_name, sizeof(g_temp_file_name), "/tmp/ma_wue_%d_%d", getpid(), g_count);
+               int ret = access(g_temp_file_name, 0);
+
+               if (0 == ret) {
+                       MWR_LOGD("[Recorder ERROR] File is already exist");
+                       if (0 == remove(g_temp_file_name)) {
+                               MWR_LOGD("[Recorder] Remove file");
+                               break;
+                       } else {
+                               g_count++;
+                       }
+               } else {
+                       break;
+               }
+       }
+
+       MWR_LOGD("[Recorder] Temp file name=[%s]", g_temp_file_name);
+
+       /* open test file */
+       g_pFile = fopen(g_temp_file_name, "wb+x");
+       if (!g_pFile) {
+               MWR_LOGD("[Recorder ERROR] File not found!");
+               return;
+       }
+       g_count++;
+#endif
+
        mas_speech_data speech_data;
        int index = 0;
        bool finish_event_sent = false;
@@ -287,6 +336,10 @@ void CWakeupEngineManager::streaming_speech_data_thread_func()
                while (!(mStopStreamingThread.load()) && index < count) {
                        int ret = interface->get_wake_word_data(index, &speech_data);
                        if (0 == ret) {
+#ifdef BUF_SAVE_MODE
+                               if (g_pFile)
+                                       fwrite(speech_data.buffer, 1, speech_data.len, g_pFile);
+#endif
                                for (const auto& observer : mObservers) {
                                        if (observer) {
                                                if (!observer->on_streaming_audio_data(
@@ -331,6 +384,14 @@ void CWakeupEngineManager::streaming_speech_data_thread_func()
                                        if (g_speech_pcm_wait_count < cnt) {
                                                unsigned char final_buffer[2] = {'\0', };
                                                MWR_LOGE("[ERROR] Wrong request, there's no pcm data");
+#ifdef BUF_SAVE_MODE
+                                               if (g_pFile) {
+                                                       fwrite(final_buffer, 1, sizeof(final_buffer), g_pFile);
+                                                       MWR_LOGE("[Recorder SUCCESS] File Close");
+                                                       fclose(g_pFile);
+                                                       g_pFile = NULL;
+                                               }
+#endif
                                                for (const auto& observer : mObservers) {
                                                        if (observer) {
                                                                if (!observer->on_streaming_audio_data(
@@ -353,6 +414,20 @@ void CWakeupEngineManager::streaming_speech_data_thread_func()
                                continue;
                        }
 
+#ifdef BUF_SAVE_MODE
+                       if (g_pFile)
+                               fwrite(speech_data.buffer, 1, speech_data.len, g_pFile);
+
+                       if (MAS_SPEECH_STREAMING_EVENT_FINISH == speech_data.event) {
+                               if (g_pFile) {
+                                       MWR_LOGE("[Recorder SUCCESS] File Close");
+                                       fclose(g_pFile);
+                                       g_pFile = NULL;
+                               } else {
+                                       MWR_LOGE("[Recorder ERROR] File not found!");
+                               }
+                       }
+#endif
                        for (const auto& observer : mObservers) {
                                if (observer) {
                                        if (!observer->on_streaming_audio_data(
@@ -382,6 +457,14 @@ void CWakeupEngineManager::streaming_speech_data_thread_func()
                                }
                        }
                }
+#ifdef BUF_SAVE_MODE
+               if (g_pFile) {
+                       fwrite(final_buffer, 1, sizeof(final_buffer), g_pFile);
+                       MWR_LOGE("[Recorder SUCCESS] File Close");
+                       fclose(g_pFile);
+                       g_pFile = NULL;
+               }
+#endif
        }
 
        MWR_LOGI("[EXIT]");