diff options
| author | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-09-08 23:12:25 +1000 |
|---|---|---|
| committer | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-09-08 23:12:25 +1000 |
| commit | dc42e4f38e731cda0651540b4629f3e196792a85 (patch) | |
| tree | 944904da920a152c4203528e3e08b1df2ee891d0 /plugin/src/Caelestia/audiocollector.hpp | |
| parent | nix: remove cava dep (diff) | |
| download | caelestia-shell-dc42e4f38e731cda0651540b4629f3e196792a85.tar.gz caelestia-shell-dc42e4f38e731cda0651540b4629f3e196792a85.tar.bz2 caelestia-shell-dc42e4f38e731cda0651540b4629f3e196792a85.zip | |
plugin/ac: use double buffer
Double buffer instead of circular buffer
Diffstat (limited to 'plugin/src/Caelestia/audiocollector.hpp')
| -rw-r--r-- | plugin/src/Caelestia/audiocollector.hpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/plugin/src/Caelestia/audiocollector.hpp b/plugin/src/Caelestia/audiocollector.hpp index d60736f..420452c 100644 --- a/plugin/src/Caelestia/audiocollector.hpp +++ b/plugin/src/Caelestia/audiocollector.hpp @@ -2,6 +2,7 @@ #include "service.hpp" #include <QObject> +#include <atomic> #include <cstdint> #include <mutex> #include <pipewire/pipewire.h> @@ -43,15 +44,13 @@ class AudioCollector : public Service { Q_OBJECT public: - explicit AudioCollector( - uint32_t sampleRate = 44100, uint32_t chunkSize = 512, uint32_t bufferSize = 512, QObject* parent = nullptr); + explicit AudioCollector(uint32_t sampleRate = 44100, uint32_t chunkSize = 512, QObject* parent = nullptr); ~AudioCollector(); static AudioCollector* instance(); [[nodiscard]] uint32_t sampleRate() const; [[nodiscard]] uint32_t chunkSize() const; - [[nodiscard]] uint32_t bufferSize() const; void clearBuffer(); void loadChunk(const int16_t* samples, uint32_t count); @@ -63,13 +62,14 @@ private: inline static std::mutex s_mutex; std::jthread m_thread; - std::vector<float> m_buffer; - uint32_t m_bufferIndex; - std::mutex m_bufferMutex; + std::vector<float> m_buffer1; + std::vector<float> m_buffer2; + std::atomic<std::vector<float>*> m_readBuffer; + std::atomic<std::vector<float>*> m_writeBuffer; + uint32_t m_sampleCount; const uint32_t m_sampleRate; const uint32_t m_chunkSize; - const uint32_t m_bufferSize; void start() override; void stop() override; |