From af43c1166e8ace50954dd1c6ac86769810104b53 Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Sat, 6 Sep 2025 16:57:40 +1000 Subject: plugin: abstract audioprovider --- plugin/src/Caelestia/audioprovider.hpp | 36 ++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 plugin/src/Caelestia/audioprovider.hpp (limited to 'plugin/src/Caelestia/audioprovider.hpp') 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 +#include +#include +#include + +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 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 -- cgit v1.2.3-freya