diff options
| author | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-09-08 22:06:49 +1000 |
|---|---|---|
| committer | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-09-08 22:06:49 +1000 |
| commit | 6f463a92d1a01956911b6bf03e01dd4ad1390551 (patch) | |
| tree | 061de4ce74566b860367cca3b8200f3ef1453326 /plugin/src/Caelestia/audiocollector.hpp | |
| parent | dashboard/media: ensure visualiser heads (diff) | |
| download | caelestia-shell-6f463a92d1a01956911b6bf03e01dd4ad1390551.tar.gz caelestia-shell-6f463a92d1a01956911b6bf03e01dd4ad1390551.tar.bz2 caelestia-shell-6f463a92d1a01956911b6bf03e01dd4ad1390551.zip | |
plugin/ac: fix idle state + reduce buffer size
Diffstat (limited to 'plugin/src/Caelestia/audiocollector.hpp')
| -rw-r--r-- | plugin/src/Caelestia/audiocollector.hpp | 6 |
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; |