Mercurial > hg > svapp
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 |