JS8Call-Improved master
Loading...
Searching...
No Matches
NotificationAudio.h
1#ifndef NOTIFICATIONAUDIO_H
2#define NOTIFICATIONAUDIO_H
3
5
6#include <QAudioDevice>
7#include <QBuffer>
8#include <QByteArray>
9#include <QHash>
10#include <QPair>
11#include <QScopedPointer>
12
13class SoundOutput;
14
15class NotificationAudio : public QObject {
16 Q_OBJECT
17
18 public:
19 explicit NotificationAudio(QObject *parent = nullptr);
21
22 public slots:
23 void status(QString message);
24 void error(QString message);
25 void setDevice(const QAudioDevice &device, unsigned msBuffer = 0);
26 void play(const QString &filePath);
27 void stop();
28
29 private:
30 using Entry = QPair<QAudioFormat, QByteArray>;
31 using Cache = QHash<QString, Entry>;
32
33 void playEntry(Cache::const_iterator);
34 static QByteArray pcm24le_to_int32le(const QByteArray &in);
35 static bool upmixMonoToStereoInPlace(QAudioFormat &fmt, QByteArray &data);
36
37 QScopedPointer<NotificationSoundOutput> m_stream;
38 Cache m_cache;
39 QAudioDevice m_device;
40 QBuffer m_buffer;
41 unsigned m_msBuffer;
42};
43
44#endif // NOTIFICATIONAUDIO_H
Self-contained audio output for notification sounds.
void error(QString message)
Handles error messages from the SoundOutput.
Definition NotificationAudio.cpp:47
NotificationAudio(QObject *parent=nullptr)
Constructs a NotificationAudio object.
Definition NotificationAudio.cpp:21
void status(QString message)
Handles status messages from the SoundOutput.
Definition NotificationAudio.cpp:38
void play(const QString &filePath)
Plays an audio file from the specified file path.
Definition NotificationAudio.cpp:66
~NotificationAudio()
Destructs the NotificationAudio object.
Definition NotificationAudio.cpp:32
void setDevice(const QAudioDevice &device, unsigned msBuffer=0)
Sets the audio device and buffer size.
Definition NotificationAudio.cpp:56
void stop()
Stops audio playback.
Definition NotificationAudio.cpp:111
Definition SoundOutput.h:13