Qt 6.x
The Qt SDK
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
qv4l2camera_p.h
Go to the documentation of this file.
1// Copyright (C) 2021 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QFFMPEGCAMERA_H
5#define QFFMPEGCAMERA_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <private/qplatformcamera_p.h>
19#include <private/qplatformvideodevices_p.h>
20#include <private/qplatformmediaintegration_p.h>
21
22#include <qfilesystemwatcher.h>
23#include <qsocketnotifier.h>
24#include <qmutex.h>
25
27
29{
31public:
33
34 QList<QCameraDevice> videoDevices() const override;
35
36public Q_SLOTS:
37 void checkCameras();
38
39private:
40 bool doCheckCameras();
41
42private:
43 QList<QCameraDevice> m_cameras;
44 QFileSystemWatcher m_deviceWatcher;
45};
46
48{
49public:
51
52 void release(int index);
53 void unmapBuffers();
54
57 struct MappedBuffer {
58 void *data;
60 };
63};
64
65class Q_MULTIMEDIA_EXPORT QV4L2Camera : public QPlatformCamera
66{
68
69public:
70 explicit QV4L2Camera(QCamera *parent);
72
73 bool isActive() const override;
74 void setActive(bool active) override;
75
76 void setCamera(const QCameraDevice &camera) override;
77 bool setCameraFormat(const QCameraFormat &format) override;
78 bool resolveCameraFormat(const QCameraFormat &format);
79
80 bool isFocusModeSupported(QCamera::FocusMode mode) const override;
81 void setFocusMode(QCamera::FocusMode /*mode*/) override;
82
83// void setCustomFocusPoint(const QPointF &/*point*/) override;
84 void setFocusDistance(float) override;
85 void zoomTo(float /*newZoomFactor*/, float /*rate*/ = -1.) override;
86
87 void setFlashMode(QCamera::FlashMode /*mode*/) override;
88 bool isFlashModeSupported(QCamera::FlashMode mode) const override;
89 bool isFlashReady() const override;
90
91 void setTorchMode(QCamera::TorchMode /*mode*/) override;
92 bool isTorchModeSupported(QCamera::TorchMode mode) const override;
93
96 void setExposureCompensation(float) override;
97 int isoSensitivity() const override;
98 void setManualIsoSensitivity(int) override;
99 void setManualExposureTime(float) override;
100 float exposureTime() const override;
101
103 void setWhiteBalanceMode(QCamera::WhiteBalanceMode /*mode*/) override;
104 void setColorTemperature(int /*temperature*/) override;
105
107
108private Q_SLOTS:
109 void readFrame();
110
111private:
112 void setCameraBusy();
113
114 bool m_active = false;
115
116 QCameraDevice m_cameraDevice;
117
118 void initV4L2Controls();
119 void closeV4L2Fd();
120 int setV4L2ColorTemperature(int temperature);
121 bool setV4L2Parameter(quint32 id, qint32 value);
122 int getV4L2Parameter(quint32 id) const;
123
124 void setV4L2CameraFormat();
125 void initMMap();
126 void startCapturing();
127 void stopCapturing();
128
129 QSocketNotifier *notifier = nullptr;
131
132 bool v4l2AutoWhiteBalanceSupported = false;
133 bool v4l2ColorTemperatureSupported = false;
134 bool v4l2AutoExposureSupported = false;
135 bool v4l2ManualExposureSupported = false;
136 qint32 v4l2MinColorTemp = 5600; // Daylight...
137 qint32 v4l2MaxColorTemp = 5600;
138 qint32 v4l2MinExposure = 0;
139 qint32 v4l2MaxExposure = 0;
140 qint32 v4l2MinExposureAdjustment = 0;
141 qint32 v4l2MaxExposureAdjustment = 0;
142 qint32 v4l2MinFocus = 0;
143 qint32 v4l2MaxFocus = 0;
144 qint32 v4l2RangedFocus = false;
145 bool v4l2FlashSupported = false;
146 bool v4l2TorchSupported = false;
147 int v4l2MinZoom = 0;
148 int v4l2MaxZoom = 0;
149 timeval firstFrameTime = {-1, -1};
150 int bytesPerLine = -1;
152 qint64 frameDuration = -1;
153 bool cameraBusy = false;
154};
155
157
158
159#endif // QFFMPEGCAMERA_H
160
DarwinBluetooth::LECBManagerNotifier * notifier
bool m_active
\inmodule QtCore
Definition qatomic.h:112
The QCameraDevice class provides general information about camera devices.
The QCameraFormat class describes a video format supported by a camera device. \inmodule QtMultimedia...
The QCamera class provides interface for system camera devices.
Definition qcamera.h:28
WhiteBalanceMode
\value WhiteBalanceAuto Auto white balance mode.
Definition qcamera.h:112
TorchMode
\value TorchOff Torch is Off.
Definition qcamera.h:84
FocusMode
\value FocusModeAuto Continuous auto focus mode.
Definition qcamera.h:67
FlashMode
\value FlashOff Flash is Off.
Definition qcamera.h:77
ExposureMode
\value ExposureAuto Automatic mode.
Definition qcamera.h:91
Definition qlist.h:74
\inmodule QtCore
Definition qmutex.h:285
virtual void setExposureCompensation(float)
virtual void setManualExposureTime(float)
virtual void setFocusMode(QCamera::FocusMode)
virtual void setWhiteBalanceMode(QCamera::WhiteBalanceMode)
virtual void setColorTemperature(int)
virtual bool isFlashReady() const
virtual bool isExposureModeSupported(QCamera::ExposureMode mode) const
virtual void setCamera(const QCameraDevice &camera)=0
virtual int isoSensitivity() const
virtual bool isFocusModeSupported(QCamera::FocusMode mode) const
virtual void setManualIsoSensitivity(int)
virtual float exposureTime() const
virtual void zoomTo(float, float=-1.)
virtual void setTorchMode(QCamera::TorchMode)
virtual void setFlashMode(QCamera::FlashMode)
virtual bool setCameraFormat(const QCameraFormat &)
virtual bool isWhiteBalanceModeSupported(QCamera::WhiteBalanceMode mode) const
virtual bool isFlashModeSupported(QCamera::FlashMode mode) const
virtual void setFocusDistance(float)
virtual void setExposureMode(QCamera::ExposureMode)
virtual bool isTorchModeSupported(QCamera::TorchMode mode) const
virtual void setActive(bool active)=0
virtual bool isActive() const =0
\inmodule QtCore
QList< QCameraDevice > videoDevices() const override
void releaseBuffer(int index)
ColorSpace
Enumerates the color space of video frames.
QCamera * camera
Definition camera.cpp:19
Combined button and popup list for selecting options.
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
GLenum mode
GLuint index
[2]
GLint GLsizei GLsizei GLenum format
#define Q_OBJECT
#define Q_SLOTS
unsigned int quint32
Definition qtypes.h:45
int qint32
Definition qtypes.h:44
ptrdiff_t qsizetype
Definition qtypes.h:70
long long qint64
Definition qtypes.h:55
sem release()
QList< MappedBuffer > mappedBuffers
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent