JS8Call-Improved master
Loading...
Searching...
No Matches
SoundOutput.h
1// -*- Mode: C++ -*-
2#ifndef SOUNDOUT_H__
3#define SOUNDOUT_H__
4
5#include <QAudioDevice>
6#include <QAudioFormat>
7#include <QAudioSink>
8#include <QObject>
9#include <QString>
10
11// An instance of this sends audio data to a specified soundcard.
12
13class SoundOutput : public QObject {
14 Q_OBJECT;
15
16 public:
17 SoundOutput() = default;
18
19 qreal attenuation() const;
20 QAudioFormat format() const;
21
22 public Q_SLOTS:
23 void setFormat(QAudioDevice const &device, unsigned channels,
24 unsigned msBuffered = 0u);
25 void setDeviceFormat(QAudioDevice const &device, QAudioFormat const &format,
26 unsigned msBuffered = 0u);
27 void restart(QIODevice *);
28 void suspend();
29 void resume();
30 void reset();
31 void stop();
32 void setAttenuation(qreal); /* unsigned */
33 void resetAttenuation(); /* to zero */
34
35 Q_SIGNALS:
36 void error(QString message) const;
37 void status(QString message) const;
38
39 private:
40 bool checkStream() const;
41
42 private Q_SLOTS:
43 void handleStateChanged(QAudio::State) const;
44
45 private:
46 QAudioDevice m_device;
47 QScopedPointer<QAudioSink> m_stream;
48 QAudioFormat m_format;
49 unsigned m_msBuffered = 0u;
50 qreal m_volume = 1.0;
51 bool m_error = false;
52};
53
54#endif
void setDeviceFormat(QAudioDevice const &device, QAudioFormat const &format, unsigned msBuffered=0u)
Sets the audio device and format.
Definition SoundOutput.cpp:74
void suspend()
Suspends audio output.
Definition SoundOutput.cpp:134
QAudioFormat format() const
Gets the current audio format.
Definition SoundOutput.cpp:185
void reset()
Resets the audio output.
Definition SoundOutput.cpp:154
void setAttenuation(qreal)
Sets the attenuation in decibels.
Definition SoundOutput.cpp:191
qreal attenuation() const
Gets the current attenuation in decibels.
Definition SoundOutput.cpp:177
void resume()
Resumes audio output.
Definition SoundOutput.cpp:144
void stop()
Stops audio output.
Definition SoundOutput.cpp:164
void restart(QIODevice *)
Restarts audio output with the specified source.
Definition SoundOutput.cpp:96
void resetAttenuation()
Resets the attenuation to zero.
Definition SoundOutput.cpp:202
void setFormat(QAudioDevice const &device, unsigned channels, unsigned msBuffered=0u)
Sets the audio format based on the device and channel count.
Definition SoundOutput.cpp:54