summaryrefslogtreecommitdiff
path: root/plugin/src/Caelestia/audiocollector.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/src/Caelestia/audiocollector.hpp')
-rw-r--r--plugin/src/Caelestia/audiocollector.hpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/plugin/src/Caelestia/audiocollector.hpp b/plugin/src/Caelestia/audiocollector.hpp
index 3db294f..d60736f 100644
--- a/plugin/src/Caelestia/audiocollector.hpp
+++ b/plugin/src/Caelestia/audiocollector.hpp
@@ -24,6 +24,7 @@ private:
pw_main_loop* m_loop;
pw_stream* m_stream;
spa_source* m_timer;
+ bool m_idle;
std::stop_token m_token;
AudioCollector* m_collector;
@@ -31,6 +32,7 @@ private:
void cleanup();
static void handleTimeout(void* data, uint64_t expirations);
+ void streamStateChanged(pw_stream_state state);
void processStream();
void processSamples(const int16_t* samples, uint32_t count);
@@ -42,7 +44,7 @@ class AudioCollector : public Service {
public:
explicit AudioCollector(
- uint32_t sampleRate = 44100, uint32_t chunkSize = 512, uint32_t bufferSize = 1024, QObject* parent = nullptr);
+ uint32_t sampleRate = 44100, uint32_t chunkSize = 512, uint32_t bufferSize = 512, QObject* parent = nullptr);
~AudioCollector();
static AudioCollector* instance();
@@ -51,6 +53,7 @@ public:
[[nodiscard]] uint32_t chunkSize() const;
[[nodiscard]] uint32_t bufferSize() const;
+ void clearBuffer();
void loadChunk(const int16_t* samples, uint32_t count);
uint32_t readChunk(float* out, uint32_t count = 0);
uint32_t readChunk(double* out, uint32_t count = 0);
@@ -62,7 +65,6 @@ private:
std::jthread m_thread;
std::vector<float> m_buffer;
uint32_t m_bufferIndex;
- bool m_bufferFull;
std::mutex m_bufferMutex;
const uint32_t m_sampleRate;