MWR_LOGI("[EXIT]");
}
+static void validate_audio_data_event_field(const mas_speech_data &data)
+{
+ if (data.event == MAS_SPEECH_STREAMING_EVENT_CONTINUE ||
+ data.event == MAS_SPEECH_STREAMING_EVENT_START ||
+ data.event == MAS_SPEECH_STREAMING_EVENT_FINISH ||
+ data.event == MAS_SPEECH_STREAMING_EVENT_FAIL) {
+ return;
+ }
+ MWR_LOGE("mas_speech_data has event field : %d", data.event);
+}
+
void CAudioManager::streaming_audio_data_thread_func(long long start_time)
{
MWR_LOGI("[ENTER]");
mas_speech_data& speech_data = iter->data;
for (const auto& observer : observers) {
if (observer) {
+ validate_audio_data_event_field(speech_data);
if (!observer->on_streaming_audio_data(
speech_data.event, speech_data.buffer, speech_data.len)) {
LOGE("[Recorder WARNING] One of the observer returned false");
lock_guard<mutex> lock(mMutex);
/* Pop items only when the streaming is not activated */
- while(false == mAudioData.empty() && mAudioData.front().time < time - delta) {
- const auto &front = mAudioData.front();
- if (front.data.buffer) {
- vm_free_simple(front.data.buffer);
+ if (!mStreamingThread.joinable()) {
+ while(false == mAudioData.empty() && mAudioData.front().time < time - delta) {
+ const auto &front = mAudioData.front();
+ if (front.data.buffer) {
+ vm_free_simple(front.data.buffer);
+ }
+ mAudioData.pop_front();
}
- mAudioData.pop_front();
}
+ validate_audio_data_event_field(data);
mAudioData.push_back(data_with_time);
}