From d0fdbefbfb60994ad8d6cf3b7129dcdd556c1924 Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Mon, 8 Sep 2025 21:10:30 +1000 Subject: plugin/ap: fix collector Actually read from speakers not mic --- plugin/src/Caelestia/audioprovider.hpp | 59 +++++----------------------------- 1 file changed, 8 insertions(+), 51 deletions(-) (limited to 'plugin/src/Caelestia/audioprovider.hpp') diff --git a/plugin/src/Caelestia/audioprovider.hpp b/plugin/src/Caelestia/audioprovider.hpp index 44c6890..51ee930 100644 --- a/plugin/src/Caelestia/audioprovider.hpp +++ b/plugin/src/Caelestia/audioprovider.hpp @@ -9,91 +9,48 @@ #include #include #include +#include #include namespace caelestia { -class AudioProvider; - -class AudioCollector : public QObject { - Q_OBJECT - -public: - explicit AudioCollector(AudioProvider* provider, QObject* parent = nullptr); - ~AudioCollector(); - - void init(); - -private: - QAudioSource* m_source; - QIODevice* m_device; - - AudioProvider* m_provider; - int m_sampleRate; - int m_chunkSize; - - QVector m_chunk; - int m_chunkOffset; - - Q_INVOKABLE void start(); - Q_INVOKABLE void stop(); - - void handleStateChanged(QtAudio::State state) const; - void loadChunk(); -}; - class AudioProcessor : public QObject { Q_OBJECT public: - explicit AudioProcessor(AudioProvider* provider, QObject* parent = nullptr); + explicit AudioProcessor(QObject* parent = nullptr); ~AudioProcessor(); void init(); protected: - int m_sampleRate; - int m_chunkSize; + uint32_t m_sampleRate; + uint32_t m_chunkSize; + uint32_t m_bufferSize; private: - AudioProvider* m_provider; QTimer* m_timer; Q_INVOKABLE void start(); Q_INVOKABLE void stop(); - void handleTimeout(); - virtual void processChunk(const QVector& chunk) = 0; + virtual void process() = 0; }; class AudioProvider : public Service { Q_OBJECT public: - explicit AudioProvider(int sampleRate = 44100, int chunkSize = 512, QObject* parent = nullptr); + explicit AudioProvider(QObject* parent = nullptr); ~AudioProvider(); - [[nodiscard]] int sampleRate() const; - [[nodiscard]] int chunkSize() const; - - [[nodiscard]] QVector nextChunk(); - void loadChunk(const QVector& chunk); - protected: - int m_sampleRate; - int m_chunkSize; - - QMutex m_mutex; - QQueue> m_chunks; - - AudioCollector* m_collector; AudioProcessor* m_processor; void init(); private: - QThread* m_collectorThread; - QThread* m_processorThread; + QThread* m_thread; void start() override; void stop() override; -- cgit v1.2.3-freya