comparison 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
comparison
equal deleted inserted replaced
574:b3c35447ef31 575:c2e27ad7f408
18 #include "base/AudioRecordTarget.h" 18 #include "base/AudioRecordTarget.h"
19 19
20 #include <bqaudioio/ApplicationRecordTarget.h> 20 #include <bqaudioio/ApplicationRecordTarget.h>
21 21
22 #include <string> 22 #include <string>
23 #include <atomic>
23 24
24 #include <QObject> 25 #include <QObject>
25 #include <QMutex> 26 #include <QMutex>
26 27
27 #include "base/BaseTypes.h" 28 #include "base/BaseTypes.h"
29 #include "base/RingBuffer.h"
28 30
29 class ViewManagerBase; 31 class ViewManagerBase;
30 class WritableWaveFileModel; 32 class WritableWaveFileModel;
31 33
32 class AudioCallbackRecordTarget : public QObject, 34 class AudioCallbackRecordTarget : public QObject,
71 void recordDurationChanged(sv_frame_t, sv_samplerate_t); // emitted occasionally 73 void recordDurationChanged(sv_frame_t, sv_samplerate_t); // emitted occasionally
72 void recordCompleted(); 74 void recordCompleted();
73 75
74 protected slots: 76 protected slots:
75 void modelAboutToBeDeleted(); 77 void modelAboutToBeDeleted();
78 void updateModel();
76 79
77 private: 80 private:
78 ViewManagerBase *m_viewManager; 81 ViewManagerBase *m_viewManager;
79 std::string m_clientName; 82 std::string m_clientName;
80 bool m_recording; 83 std::atomic_bool m_recording;
81 sv_samplerate_t m_recordSampleRate; 84 sv_samplerate_t m_recordSampleRate;
82 int m_recordChannelCount; 85 int m_recordChannelCount;
83 sv_frame_t m_frameCount; 86 sv_frame_t m_frameCount;
84 QString m_audioFileName; 87 QString m_audioFileName;
85 WritableWaveFileModel *m_model; 88 WritableWaveFileModel *m_model;
89 RingBuffer<float> **m_buffers;
90 QMutex m_bufPtrMutex;
91 int m_bufferCount;
86 float m_inputLeft; 92 float m_inputLeft;
87 float m_inputRight; 93 float m_inputRight;
88 QMutex m_mutex; 94
95 void recreateBuffers();
89 }; 96 };
90 97
91 #endif 98 #endif