1 /* Webcamoid, webcam capture application. 2 * Copyright (C) 2016 Gonzalo Exequiel Pedone 3 * 4 * Webcamoid is free software: you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * the Free Software Foundation, either version 3 of the License, or 7 * (at your option) any later version. 8 * 9 * Webcamoid is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with Webcamoid. If not, see <http://www.gnu.org/licenses/>. 16 * 17 * Web-Site: http://webcamoid.github.io/ 18 */ 19 20 #ifndef CAPTURE_H 21 #define CAPTURE_H 22 23 #include <QObject> 24 25 class Capture; 26 class AkCaps; 27 class AkPacket; 28 29 using CapturePtr = QSharedPointer<Capture>; 30 31 class Capture: public QObject 32 { 33 Q_OBJECT 34 Q_PROPERTY(QStringList webcams 35 READ webcams 36 NOTIFY webcamsChanged) 37 Q_PROPERTY(QString device 38 READ device 39 WRITE setDevice 40 RESET resetDevice 41 NOTIFY deviceChanged) 42 Q_PROPERTY(QString ioMethod 43 READ ioMethod 44 WRITE setIoMethod 45 RESET resetIoMethod 46 NOTIFY ioMethodChanged) 47 Q_PROPERTY(int nBuffers 48 READ nBuffers 49 WRITE setNBuffers 50 RESET resetNBuffers 51 NOTIFY nBuffersChanged) 52 53 public: 54 Capture(QObject *parent=nullptr); 55 virtual ~Capture() = default; 56 57 Q_INVOKABLE virtual QStringList webcams() const; 58 Q_INVOKABLE virtual QString device() const; 59 Q_INVOKABLE virtual QList<int> streams(); 60 Q_INVOKABLE virtual QList<int> listTracks(const QString &mimeType); 61 Q_INVOKABLE virtual QString ioMethod() const; 62 Q_INVOKABLE virtual int nBuffers() const; 63 Q_INVOKABLE virtual QString description(const QString &webcam) const; 64 Q_INVOKABLE virtual QVariantList caps(const QString &webcam) const; 65 Q_INVOKABLE virtual QString capsDescription(const AkCaps &caps) const; 66 Q_INVOKABLE virtual QVariantList imageControls() const; 67 Q_INVOKABLE virtual bool setImageControls(const QVariantMap &imageControls); 68 Q_INVOKABLE virtual bool resetImageControls(); 69 Q_INVOKABLE virtual QVariantList cameraControls() const; 70 Q_INVOKABLE virtual bool setCameraControls(const QVariantMap &cameraControls); 71 Q_INVOKABLE virtual bool resetCameraControls(); 72 Q_INVOKABLE virtual AkPacket readFrame(); 73 74 signals: 75 void webcamsChanged(const QStringList &webcams) const; 76 void deviceChanged(const QString &device); 77 void streamsChanged(const QList<int> &streams); 78 void ioMethodChanged(const QString &ioMethod); 79 void nBuffersChanged(int nBuffers); 80 void error(const QString &message); 81 void imageControlsChanged(const QVariantMap &imageControls) const; 82 void cameraControlsChanged(const QVariantMap &cameraControls) const; 83 84 public slots: 85 virtual bool init(); 86 virtual void uninit(); 87 virtual void setDevice(const QString &device); 88 virtual void setStreams(const QList<int> &streams); 89 virtual void setIoMethod(const QString &ioMethod); 90 virtual void setNBuffers(int nBuffers); 91 virtual void resetDevice(); 92 virtual void resetStreams(); 93 virtual void resetIoMethod(); 94 virtual void resetNBuffers(); 95 virtual void reset(); 96 }; 97 98 #endif // CAPTURE_H 99