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
|
// Copyright (C) 2017 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#ifndef CAMERA_H
#define CAMERA_H
#include <QAudioInput>
#include <QCamera>
#include <QImageCapture>
#include <QMediaCaptureSession>
#include <QMediaDevices>
#include <QMediaMetaData>
#include <QMediaRecorder>
#include <QMainWindow>
#include <memory>
QT_BEGIN_NAMESPACE
namespace Ui {
class Camera;
}
class QActionGroup;
QT_END_NAMESPACE
class MetaDataDialog;
class Camera : public QMainWindow
{
Q_OBJECT
public:
Camera();
public slots:
void saveMetaData();
private slots:
void init();
void setCamera(const QCameraDevice &cameraDevice);
void startCamera();
void stopCamera();
void record();
void pause();
void stop();
void setMuted(bool);
void takeImage();
void displayCaptureError(int, QImageCapture::Error, const QString &errorString);
void configureCaptureSettings();
void configureVideoSettings();
void configureImageSettings();
void displayRecorderError();
void displayCameraError();
void updateCameraDevice(QAction *action);
void updateCameraActive(bool active);
void updateCaptureMode();
void updateRecorderState(QMediaRecorder::RecorderState state);
void updateRecordTime();
void processCapturedImage(int requestId, const QImage &img);
void displayViewfinder();
void displayCapturedImage();
void readyForCapture(bool ready);
void imageSaved(int id, const QString &fileName);
void updateCameras();
void showMetaDataDialog();
protected:
void keyPressEvent(QKeyEvent *event) override;
void closeEvent(QCloseEvent *event) override;
private:
Ui::Camera *ui;
QActionGroup *videoDevicesGroup = nullptr;
QMediaDevices m_devices;
std::unique_ptr<QImageCapture> m_imageCapture;
QMediaCaptureSession m_captureSession;
std::unique_ptr<QCamera> m_camera;
std::unique_ptr<QAudioInput> m_audioInput;
std::unique_ptr<QMediaRecorder> m_mediaRecorder;
bool m_isCapturingImage = false;
bool m_applicationExiting = false;
bool m_doImageCapture = true;
MetaDataDialog *m_metaDataDialog = nullptr;
};
#endif
|