JS8Call-Improved master
Loading...
Searching...
No Matches
NotificationSoundOutput.h
Go to the documentation of this file.
1
5
6#pragma once
7
8#include <QAudioDevice>
9#include <QAudioFormat>
10#include <QAudioSink>
11#include <QBuffer>
12#include <QObject>
13#include <qmath.h>
14
15#include <memory>
16
17class NotificationSoundOutput : public QObject
18{
19 Q_OBJECT
20
21public:
22 explicit NotificationSoundOutput(QObject *parent = nullptr);
23 ~NotificationSoundOutput() override;
24
25 void setDevice(QAudioDevice const &device, unsigned msBuffer);
26 void setAttenuation(qreal a);
27 void play(QByteArray const &data, QAudioFormat const &format);
28 void stop();
29
30signals:
31 void status(QString message);
32 void error(QString message);
33
34private slots:
35 void handleStateChanged(QAudio::State newState);
36
37private:
38 void release();
39
40 QAudioDevice m_device;
41 std::unique_ptr<QAudioSink> m_sink;
42 std::unique_ptr<QBuffer> m_buffer;
43 QAudioFormat m_currentFormat;
44 qreal m_volume = 1.0;
45 unsigned m_msBuffer = 0;
46};
void setAttenuation(qreal a)
Sets the attenuation in dB.
Definition NotificationSoundOutput.cpp:44
void play(QByteArray const &data, QAudioFormat const &format)
Plays audio from the provided data and format.
Definition NotificationSoundOutput.cpp:60
void stop()
Stops playback and releases all resources.
Definition NotificationSoundOutput.cpp:133
void setDevice(QAudioDevice const &device, unsigned msBuffer)
Sets the audio device and buffer size.
Definition NotificationSoundOutput.cpp:33