#pragma once #include #include #include #include class AudioThread : public QThread { Q_OBJECT public: explicit AudioThread(const QString& device, QObject* parent = nullptr); ~AudioThread() override; void stop(); signals: void errorOccurred(const QString& message); protected: void run() override; private: bool setupCapture(snd_pcm_t*& handle, unsigned int& rate, unsigned int& channels); bool setupPlayback(snd_pcm_t*& handle, unsigned int rate, unsigned int channels); QString m_device; std::atomic m_running{false}; // PCM-Parameter static constexpr unsigned int k_defaultRate = 48000; static constexpr unsigned int k_defaultChannels = 2; static constexpr snd_pcm_uframes_t k_periodFrames = 1024; };