audiolayer.h
6.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
/* Webcamoid, webcam capture application.
* Copyright (C) 2016 Gonzalo Exequiel Pedone
*
* Webcamoid is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Webcamoid is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Webcamoid. If not, see <http://www.gnu.org/licenses/>.
*
* Web-Site: http://webcamoid.github.io/
*/
#ifndef AUDIOLAYER_H
#define AUDIOLAYER_H
#include <akaudiocaps.h>
#include <iak/akelement.h>
class AudioLayerPrivate;
class AudioLayer;
class AkAudioCaps;
class QQmlApplicationEngine;
using AudioLayerPtr = QSharedPointer<AudioLayer>;
class AudioLayer: public QObject
{
Q_OBJECT
Q_PROPERTY(QStringList audioInput
READ audioInput
WRITE setAudioInput
RESET resetAudioInput
NOTIFY audioInputChanged)
Q_PROPERTY(QString audioOutput
READ audioOutput
WRITE setAudioOutput
RESET resetAudioOutput
NOTIFY audioOutputChanged)
Q_PROPERTY(QStringList inputs
READ inputs
NOTIFY inputsChanged)
Q_PROPERTY(QStringList outputs
READ outputs
NOTIFY outputsChanged)
Q_PROPERTY(AkAudioCaps outputCaps
READ outputCaps
NOTIFY outputCapsChanged)
Q_PROPERTY(AkAudioCaps inputDeviceCaps
READ inputDeviceCaps
WRITE setInputDeviceCaps
RESET resetInputDeviceCaps
NOTIFY inputDeviceCapsChanged)
Q_PROPERTY(AkAudioCaps outputDeviceCaps
READ outputDeviceCaps
WRITE setOutputDeviceCaps
RESET resetOutputDeviceCaps
NOTIFY outputDeviceCapsChanged)
Q_PROPERTY(AkElement::ElementState outputState
READ outputState
WRITE setOutputState
RESET resetOutputState
NOTIFY outputStateChanged)
Q_PROPERTY(AkElement::ElementState inputState
READ inputState
WRITE setInputState
RESET resetInputState
NOTIFY inputStateChanged)
Q_PROPERTY(int inputLatency
READ inputLatency
WRITE setInputLatency
RESET resetInputLatency
NOTIFY inputLatencyChanged)
Q_PROPERTY(int outputLatency
READ outputLatency
WRITE setOutputLatency
RESET resetOutputLatency
NOTIFY outputLatencyChanged)
public:
AudioLayer(QQmlApplicationEngine *engine=nullptr,
QObject *parent=nullptr);
~AudioLayer();
Q_INVOKABLE QStringList audioInput() const;
Q_INVOKABLE QString audioOutput() const;
Q_INVOKABLE QStringList inputs() const;
Q_INVOKABLE QStringList outputs() const;
Q_INVOKABLE AkAudioCaps outputCaps() const;
Q_INVOKABLE AkAudioCaps inputDeviceCaps() const;
Q_INVOKABLE AkAudioCaps outputDeviceCaps() const;
Q_INVOKABLE QString description(const QString &device) const;
Q_INVOKABLE AkElement::ElementState inputState() const;
Q_INVOKABLE AkElement::ElementState outputState() const;
Q_INVOKABLE int inputLatency() const;
Q_INVOKABLE int outputLatency() const;
Q_INVOKABLE AkAudioCaps preferredFormat(const QString &device);
Q_INVOKABLE QList<AkAudioCaps::SampleFormat> supportedFormats(const QString &device) const;
Q_INVOKABLE QList<AkAudioCaps::ChannelLayout> supportedChannelLayouts(const QString &device) const;
Q_INVOKABLE QList<int> supportedSampleRates(const QString &device) const;
Q_INVOKABLE QVariantList supportedFormatsVariant(const QString &device) const;
Q_INVOKABLE QVariantList supportedChannelLayoutsVariant(const QString &device) const;
private:
AudioLayerPrivate *d;
signals:
void audioInputChanged(const QStringList &audioInput);
void audioOutputChanged(const QString &audioOutput);
void inputsChanged(const QStringList &inputs);
void outputsChanged(const QStringList &outputs);
void outputCapsChanged(const AkAudioCaps &outputCaps);
void inputDeviceCapsChanged(const AkAudioCaps &inputDeviceCaps);
void outputDeviceCapsChanged(const AkAudioCaps &outputDeviceCaps);
void inputStateChanged(AkElement::ElementState inputState);
void outputStateChanged(AkElement::ElementState outputState);
void inputLatencyChanged(int inputLatency);
void outputLatencyChanged(int outputLatency);
void oStream(const AkPacket &packet);
public slots:
void setAudioInput(const QStringList &audioInput);
void setAudioOutput(const QString &audioOutput);
void setInput(const QString &device,
const QString &description,
const AkAudioCaps &inputCaps);
void setInputDeviceCaps(const AkAudioCaps &inputDeviceCaps);
void setOutputDeviceCaps(const AkAudioCaps &outputDeviceCaps);
void setInputState(AkElement::ElementState inputState);
bool setOutputState(AkElement::ElementState outputState);
void setInputLatency(int inputLatency);
void setOutputLatency(int outputLatency);
void resetAudioInput();
void resetAudioOutput();
void resetInput();
void resetInputDeviceCaps();
void resetOutputDeviceCaps();
void resetInputState();
void resetOutputState();
void resetInputLatency();
void resetOutputLatency();
AkPacket iStream(const AkPacket &packet);
void setQmlEngine(QQmlApplicationEngine *engine=nullptr);
private slots:
void sendPacket(const AkPacket &packet);
void privInputsChanged(const QStringList &inputs);
};
#endif // AUDIOLAYER_H