diff options
Diffstat (limited to 'plugin/src/Caelestia/audioprovider.hpp')
| -rw-r--r-- | plugin/src/Caelestia/audioprovider.hpp | 59 |
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; |