capture.h
4.9 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
/* 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 CAPTURE_H
#define CAPTURE_H
#include <akcaps.h>
class Capture;
class CapturePrivate;
class AkPacket;
using CapturePtr = QSharedPointer<Capture>;
using CaptureVideoCaps = QVector<AkCaps>;
class Capture: public QObject
{
Q_OBJECT
Q_PROPERTY(QString error
READ error
NOTIFY errorChanged)
Q_PROPERTY(QStringList webcams
READ webcams
NOTIFY webcamsChanged)
Q_PROPERTY(QString device
READ device
WRITE setDevice
RESET resetDevice
NOTIFY deviceChanged)
Q_PROPERTY(QString ioMethod
READ ioMethod
WRITE setIoMethod
RESET resetIoMethod
NOTIFY ioMethodChanged)
Q_PROPERTY(int nBuffers
READ nBuffers
WRITE setNBuffers
RESET resetNBuffers
NOTIFY nBuffersChanged)
Q_PROPERTY(bool isTorchSupported
READ isTorchSupported
NOTIFY isTorchSupportedChanged)
Q_PROPERTY(TorchMode torchMode
READ torchMode
WRITE setTorchMode
RESET resetTorchMode
NOTIFY torchModeChanged)
Q_PROPERTY(PermissionStatus permissionStatus
READ permissionStatus
NOTIFY permissionStatusChanged)
public:
enum TorchMode
{
Torch_Off,
Torch_On,
};
enum PermissionStatus
{
PermissionStatus_Undetermined,
PermissionStatus_Granted,
PermissionStatus_Denied,
};
Capture(QObject *parent=nullptr);
~Capture();
Q_INVOKABLE virtual QString error() const;
Q_INVOKABLE virtual QStringList webcams() const;
Q_INVOKABLE virtual QString device() const;
Q_INVOKABLE virtual QList<int> streams();
Q_INVOKABLE virtual QList<int> listTracks(AkCaps::CapsType type);
Q_INVOKABLE virtual QString ioMethod() const;
Q_INVOKABLE virtual int nBuffers() const;
Q_INVOKABLE virtual QString description(const QString &webcam) const;
Q_INVOKABLE virtual CaptureVideoCaps caps(const QString &webcam) const;
Q_INVOKABLE virtual QVariantList imageControls() const;
Q_INVOKABLE virtual bool setImageControls(const QVariantMap &imageControls);
Q_INVOKABLE virtual bool resetImageControls();
Q_INVOKABLE virtual QVariantList cameraControls() const;
Q_INVOKABLE virtual bool setCameraControls(const QVariantMap &cameraControls);
Q_INVOKABLE virtual bool resetCameraControls();
Q_INVOKABLE virtual bool isTorchSupported() const;
Q_INVOKABLE virtual TorchMode torchMode() const;
Q_INVOKABLE virtual PermissionStatus permissionStatus() const;
Q_INVOKABLE virtual AkPacket readFrame();
private:
CapturePrivate *d;
signals:
void errorChanged(const QString &error);
void webcamsChanged(const QStringList &webcams);
void deviceChanged(const QString &device);
void streamsChanged(const QList<int> &streams);
void ioMethodChanged(const QString &ioMethod);
void nBuffersChanged(int nBuffers);
void imageControlsChanged(const QVariantMap &imageControls);
void cameraControlsChanged(const QVariantMap &cameraControls);
void pictureTaken(int index, const AkPacket &picture);
void isTorchSupportedChanged(bool torchSupported);
void torchModeChanged(TorchMode mode);
void permissionStatusChanged(PermissionStatus status);
public slots:
virtual bool init();
virtual void uninit();
virtual void setDevice(const QString &device);
virtual void setStreams(const QList<int> &streams);
virtual void setIoMethod(const QString &ioMethod);
virtual void setNBuffers(int nBuffers);
virtual void setTorchMode(TorchMode mode);
virtual void resetDevice();
virtual void resetStreams();
virtual void resetIoMethod();
virtual void resetNBuffers();
virtual void resetTorchMode();
virtual void reset();
virtual void takePictures(int count, int delayMsecs=0);
};
#endif // CAPTURE_H