diff audio/AudioCallbackRecordTarget.h @ 575:c2e27ad7f408 3.0-integration

Pull out record buffer into a separate RT-ish thread
author Chris Cannam
date Wed, 04 Jan 2017 16:53:06 +0000
parents b3c35447ef31
children 298d864113f0
line wrap: on
line diff
--- a/audio/AudioCallbackRecordTarget.h	Wed Jan 04 16:03:12 2017 +0000
+++ b/audio/AudioCallbackRecordTarget.h	Wed Jan 04 16:53:06 2017 +0000
@@ -20,11 +20,13 @@
 #include <bqaudioio/ApplicationRecordTarget.h>
 
 #include <string>
+#include <atomic>
 
 #include <QObject>
 #include <QMutex>
 
 #include "base/BaseTypes.h"
+#include "base/RingBuffer.h"
 
 class ViewManagerBase;
 class WritableWaveFileModel;
@@ -73,19 +75,24 @@
 
 protected slots:
     void modelAboutToBeDeleted();
+    void updateModel();
     
 private:
     ViewManagerBase *m_viewManager;
     std::string m_clientName;
-    bool m_recording;
+    std::atomic_bool m_recording;
     sv_samplerate_t m_recordSampleRate;
     int m_recordChannelCount;
     sv_frame_t m_frameCount;
     QString m_audioFileName;
     WritableWaveFileModel *m_model;
+    RingBuffer<float> **m_buffers;
+    QMutex m_bufPtrMutex;
+    int m_bufferCount;
     float m_inputLeft;
     float m_inputRight;
-    QMutex m_mutex;
+
+    void recreateBuffers();
 };
 
 #endif