Clear audio data when voice key gets pressed
authorJi-hoon Lee <dalton.lee@samsung.com>
Fri, 9 Aug 2019 06:43:33 +0000 (15:43 +0900)
committerJi-hoon Lee <dalton.lee@samsung.com>
Mon, 12 Aug 2019 08:04:16 +0000 (17:04 +0900)
Change-Id: I105c93d9c75438b540a3c0e6f8614c034b660749

plugins/wakeup-manager/inc/wakeup_audio_manager.h
plugins/wakeup-manager/src/wakeup_audio_manager.cpp
plugins/wakeup-manager/src/wakeup_manager.cpp

index 0e1bc6b..d23a1f5 100644 (file)
@@ -66,6 +66,7 @@ public:
 
        void feed_audio_data(wakeup_speech_streaming_event_e event, void* buffer, int len);
        void finalize_audio_data();
+       void clear_audio_data();
 
        void start_streaming_current_utterance_data(long start_time = 0);
        void stop_streaming_current_utterance_data();
index d6c1868..1eb1899 100644 (file)
@@ -271,6 +271,16 @@ void CAudioManager::finalize_audio_data()
        }
 }
 
+void CAudioManager::clear_audio_data()
+{
+       lock_guard<mutex> lock(mMutex);
+
+       for (const auto &data : mAudioData) {
+               if (data.data.buffer) free(data.data.buffer);
+       }
+       mAudioData.clear();
+}
+
 void CAudioManager::notify_audio_data_recording(long time, void* data, int len)
 {
        for (const auto& observer : mObservers) {
index 0eaeb2c..60dcd4c 100644 (file)
@@ -385,6 +385,8 @@ bool CWakeupManager::process_event(ma_plugin_event_e event, void* data, int len)
                        stop_streaming_utterance_data();
                        stop_streaming_previous_utterance_data();
                        stop_streaming_follow_up_data();
+
+                       mAudioManager.clear_audio_data();
                        change_manager_state(WAKEUP_MANAGER_STATE_UTTERANCE);
 
                        mVoiceKeyPressed = true;