summaryrefslogtreecommitdiff
path: root/plugin/src/Caelestia/audioprovider.hpp
diff options
context:
space:
mode:
author2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-09-08 21:10:30 +1000
committer2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-09-08 21:10:30 +1000
commitd0fdbefbfb60994ad8d6cf3b7129dcdd556c1924 (patch)
tree5319ea868c554d470ab3c74d7ba4a28442fbeaff /plugin/src/Caelestia/audioprovider.hpp
parentdev: export cmake compile commands (diff)
downloadcaelestia-shell-d0fdbefbfb60994ad8d6cf3b7129dcdd556c1924.tar.gz
caelestia-shell-d0fdbefbfb60994ad8d6cf3b7129dcdd556c1924.tar.bz2
caelestia-shell-d0fdbefbfb60994ad8d6cf3b7129dcdd556c1924.zip
plugin/ap: fix collector
Actually read from speakers not mic
Diffstat (limited to 'plugin/src/Caelestia/audioprovider.hpp')
-rw-r--r--plugin/src/Caelestia/audioprovider.hpp59
1 files changed, 8 insertions, 51 deletions
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 <QThread>
#include <QTimer>
#include <QVector>
+#include <cstdint>
#include <qqmlintegration.h>
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<double> 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<double>& 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<double> nextChunk();
- void loadChunk(const QVector<double>& chunk);
-
protected:
- int m_sampleRate;
- int m_chunkSize;
-
- QMutex m_mutex;
- QQueue<QVector<double>> 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;