JS8Call-Improved master
Loading...
Searching...
No Matches
NotificationAudio.h
Go to the documentation of this file.
1
5
6#ifndef NOTIFICATIONAUDIO_H
7#define NOTIFICATIONAUDIO_H
8
10
11#include <QAudioDevice>
12#include <QBuffer>
13#include <QByteArray>
14#include <QHash>
15#include <QPair>
16#include <QScopedPointer>
17
18class SoundOutput;
19
27class NotificationAudio : public QObject {
28 Q_OBJECT
29
30 public:
35 explicit NotificationAudio(QObject *parent = nullptr);
36
41
42 public slots:
47 void status(QString message);
48
53 void error(QString message);
54
60 void setDevice(const QAudioDevice &device, unsigned msBuffer = 0);
61
66 void play(const QString &filePath);
67
71 void stop();
72
73 private:
74 using Entry = QPair<QAudioFormat, QByteArray>;
75 using Cache = QHash<QString, Entry>;
76
80 void playEntry(Cache::const_iterator it);
81
87 static QByteArray pcm24le_to_int32le(const QByteArray &in);
88
95 static bool upmixMonoToStereoInPlace(QAudioFormat &fmt, QByteArray &data);
96
97 QScopedPointer<NotificationSoundOutput> m_stream;
98 Cache m_cache;
99 QAudioDevice m_device;
100 QBuffer m_buffer;
101 unsigned m_msBuffer;
102};
103
104#endif // NOTIFICATIONAUDIO_H
Self-contained audio output for notification sounds.
void error(QString message)
Relay an error message from internal components.
Definition NotificationAudio.cpp:47
NotificationAudio(QObject *parent=nullptr)
Construct a NotificationAudio helper.
Definition NotificationAudio.cpp:21
void status(QString message)
Relay a status message from internal components.
Definition NotificationAudio.cpp:38
void play(const QString &filePath)
Play a sound file referenced by filePath.
Definition NotificationAudio.cpp:66
~NotificationAudio()
Destroy the NotificationAudio and release cached resources.
Definition NotificationAudio.cpp:32
void setDevice(const QAudioDevice &device, unsigned msBuffer=0)
Set output device and optional buffering for playback.
Definition NotificationAudio.cpp:56
void stop()
Stop any currently playing notification sound.
Definition NotificationAudio.cpp:111
Manages audio output format, buffering and the underlying sink.
Definition SoundOutput.h:24