diff options
| author | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-09-06 16:57:40 +1000 |
|---|---|---|
| committer | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-09-06 16:57:40 +1000 |
| commit | af43c1166e8ace50954dd1c6ac86769810104b53 (patch) | |
| tree | f028c1984d66d0a4ac77d6856e6731fee4152b96 /plugin/src/Caelestia/audioprovider.hpp | |
| parent | plugin: abstract service + ref (diff) | |
| download | caelestia-shell-af43c1166e8ace50954dd1c6ac86769810104b53.tar.gz caelestia-shell-af43c1166e8ace50954dd1c6ac86769810104b53.tar.bz2 caelestia-shell-af43c1166e8ace50954dd1c6ac86769810104b53.zip | |
plugin: abstract audioprovider
Diffstat (limited to 'plugin/src/Caelestia/audioprovider.hpp')
| -rw-r--r-- | plugin/src/Caelestia/audioprovider.hpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/plugin/src/Caelestia/audioprovider.hpp b/plugin/src/Caelestia/audioprovider.hpp new file mode 100644 index 0000000..5564dc5 --- /dev/null +++ b/plugin/src/Caelestia/audioprovider.hpp @@ -0,0 +1,36 @@ +#pragma once + +#include "service.hpp" +#include <QAudioSource> +#include <QIODevice> +#include <QObject> +#include <qqmlintegration.h> + +namespace caelestia { + +class AudioProvider : public Service { + Q_OBJECT + +public: + explicit AudioProvider(int sampleRate = 44100, int hopSize = 512, QObject* parent = nullptr); + ~AudioProvider(); + +protected: + int m_hopSize; + + template <typename T> void process(T* outBuf); + +private: + QAudioSource* m_source; + QIODevice* m_device; + + void start() override; + void stop() override; + + void handleStateChanged(QtAudio::State state) const; + + virtual void processData() = 0; + virtual void consumeData() = 0; +}; + +} // namespace caelestia |