diff options
| author | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-09-06 20:43:17 +1000 |
|---|---|---|
| committer | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-09-06 20:43:17 +1000 |
| commit | 929d8fa40e371a2adbe1fe0f93f0ebf11bcb0981 (patch) | |
| tree | 965f95279a862cf5853eb6af8ac60938a784a685 /plugin/src/Caelestia/audioprovider.hpp | |
| parent | plugin: fix cmake version (diff) | |
| download | caelestia-shell-929d8fa40e371a2adbe1fe0f93f0ebf11bcb0981.tar.gz caelestia-shell-929d8fa40e371a2adbe1fe0f93f0ebf11bcb0981.tar.bz2 caelestia-shell-929d8fa40e371a2adbe1fe0f93f0ebf11bcb0981.zip | |
plugin: async audio processing
Diffstat (limited to 'plugin/src/Caelestia/audioprovider.hpp')
| -rw-r--r-- | plugin/src/Caelestia/audioprovider.hpp | 33 |
1 files changed, 28 insertions, 5 deletions
diff --git a/plugin/src/Caelestia/audioprovider.hpp b/plugin/src/Caelestia/audioprovider.hpp index 5564dc5..205be2c 100644 --- a/plugin/src/Caelestia/audioprovider.hpp +++ b/plugin/src/Caelestia/audioprovider.hpp @@ -4,18 +4,22 @@ #include <QAudioSource> #include <QIODevice> #include <QObject> +#include <QThread> #include <qqmlintegration.h> namespace caelestia { -class AudioProvider : public Service { +class AudioWorker : public QObject { Q_OBJECT public: - explicit AudioProvider(int sampleRate = 44100, int hopSize = 512, QObject* parent = nullptr); - ~AudioProvider(); + explicit AudioWorker(int sampleRate = 44100, int hopSize = 512, QObject* parent = nullptr); + ~AudioWorker(); + + void init(); protected: + int m_sampleRate; int m_hopSize; template <typename T> void process(T* outBuf); @@ -24,8 +28,8 @@ private: QAudioSource* m_source; QIODevice* m_device; - void start() override; - void stop() override; + Q_INVOKABLE void start(); + Q_INVOKABLE void stop(); void handleStateChanged(QtAudio::State state) const; @@ -33,4 +37,23 @@ private: virtual void consumeData() = 0; }; +class AudioProvider : public Service { + Q_OBJECT + +public: + explicit AudioProvider(QObject* parent = nullptr); + ~AudioProvider(); + +protected: + AudioWorker* m_worker; + + void init(); + +private: + QThread* m_thread; + + void start() override; + void stop() override; +}; + } // namespace caelestia |