Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qplatformcamera_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 QPLATFORMCAMERA_H
5#define QPLATFORMCAMERA_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
19#include "private/qerrorinfo_p.h"
20#include <QtMultimedia/qcamera.h>
21
23
24class Q_MULTIMEDIA_EXPORT QPlatformCamera : public QPlatformVideoSource
25{
27
28public:
29 virtual void setCamera(const QCameraDevice &camera) = 0;
30 virtual bool setCameraFormat(const QCameraFormat &/*format*/) { return false; }
31 QCameraFormat cameraFormat() const { return m_cameraFormat; }
32
34 virtual void setFocusMode(QCamera::FocusMode /*mode*/) {}
35
36 virtual void setCustomFocusPoint(const QPointF &/*point*/) {}
37
38 virtual void setFocusDistance(float) {}
39
40 // smaller 0: zoom instantly, rate in power-of-two/sec
41 virtual void zoomTo(float /*newZoomFactor*/, float /*rate*/ = -1.) {}
42
43 virtual void setFlashMode(QCamera::FlashMode /*mode*/) {}
45 virtual bool isFlashReady() const { return false; }
46
47 virtual void setTorchMode(QCamera::TorchMode /*mode*/) {}
49
52 virtual void setExposureCompensation(float) {}
53 virtual int isoSensitivity() const { return 100; }
54 virtual void setManualIsoSensitivity(int) {}
55 virtual void setManualExposureTime(float) {}
56 virtual float exposureTime() const { return -1.; }
57
60 virtual void setColorTemperature(int /*temperature*/) {}
61
62 QVideoFrameFormat frameFormat() const override;
63
64 QCamera::Features supportedFeatures() const { return m_supportedFeatures; }
65
66 QCamera::FocusMode focusMode() const { return m_focusMode; }
67 QPointF focusPoint() const { return m_customFocusPoint; }
68
69 float minZoomFactor() const { return m_minZoom; }
70 float maxZoomFactor() const { return m_maxZoom; }
71 float zoomFactor() const { return m_zoomFactor; }
72 QPointF customFocusPoint() const { return m_customFocusPoint; }
73 float focusDistance() const { return m_focusDistance; }
74
75 QCamera::FlashMode flashMode() const { return m_flashMode; }
76 QCamera::TorchMode torchMode() const { return m_torchMode; }
77
78 QCamera::ExposureMode exposureMode() const { return m_exposureMode; }
79 float exposureCompensation() const { return m_exposureCompensation; }
80 int manualIsoSensitivity() const { return m_iso; }
81 int minIso() const { return m_minIso; }
82 int maxIso() const { return m_maxIso; }
83 float manualExposureTime() const { return m_exposureTime; }
84 float minExposureTime() const { return m_minExposureTime; }
85 float maxExposureTime() const { return m_maxExposureTime; }
86 QCamera::WhiteBalanceMode whiteBalanceMode() const { return m_whiteBalance; }
87 int colorTemperature() const { return m_colorTemperature; }
88
89 void supportedFeaturesChanged(QCamera::Features);
90 void minimumZoomFactorChanged(float factor);
91 void maximumZoomFactorChanged(float);
92 void focusModeChanged(QCamera::FocusMode mode);
93 void customFocusPointChanged(const QPointF &point);
94 void focusDistanceChanged(float d);
95 void zoomFactorChanged(float zoom);
96 void flashReadyChanged(bool);
97 void flashModeChanged(QCamera::FlashMode mode);
98 void torchModeChanged(QCamera::TorchMode mode);
99 void exposureModeChanged(QCamera::ExposureMode mode);
100 void exposureCompensationChanged(float compensation);
101 void exposureCompensationRangeChanged(float min, float max);
102 void isoSensitivityChanged(int iso);
103 void minIsoChanged(int iso) { m_minIso = iso; }
104 void maxIsoChanged(int iso) { m_maxIso = iso; }
105 void exposureTimeChanged(float speed);
106 void minExposureTimeChanged(float secs) { m_minExposureTime = secs; }
107 void maxExposureTimeChanged(float secs) { m_maxExposureTime = secs; }
108 void whiteBalanceModeChanged(QCamera::WhiteBalanceMode mode);
109 void colorTemperatureChanged(int temperature);
110
111 static int colorTemperatureForWhiteBalance(QCamera::WhiteBalanceMode mode);
112
113 QCamera::Error error() const { return m_error.code(); }
114 QString errorString() const final { return m_error.description(); }
115
116 void updateError(QCamera::Error error, const QString &errorString);
117
119 void errorOccurred(QCamera::Error error, const QString &errorString);
120
121protected:
122 explicit QPlatformCamera(QCamera *parent);
123
125 QVideoFrameFormat::ColorRange /*colorRange*/) const
126 {
127 return 0;
128 }
129
130 QCameraFormat findBestCameraFormat(const QCameraDevice &camera) const;
133
134private:
135 QCamera *m_camera = nullptr;
136 QCamera::Features m_supportedFeatures = {};
138 float m_minZoom = 1.;
139 float m_maxZoom = 1.;
140 float m_zoomFactor = 1.;
141 float m_focusDistance = 1.;
142 QPointF m_customFocusPoint{-1, -1};
143 bool m_flashReady = false;
147 float m_exposureCompensation = 0.;
148 float m_minExposureCompensation = 0.;
149 float m_maxExposureCompensation = 0.;
150 int m_iso = -1;
151 int m_minIso = -1;
152 int m_maxIso = -1;
153 float m_exposureTime = -1.;
154 float m_minExposureTime = -1.;
155 float m_maxExposureTime = -1.;
157 int m_colorTemperature = 0;
158 QErrorInfo<QCamera::Error> m_error;
159};
160
162
163
164#endif // QPLATFORMCAMERA_H
165
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
@ WhiteBalanceAuto
Definition qcamera.h:113
TorchMode
\value TorchOff Torch is Off.
Definition qcamera.h:84
@ TorchOff
Definition qcamera.h:85
FocusMode
\value FocusModeAuto Continuous auto focus mode.
Definition qcamera.h:67
@ FocusModeAuto
Definition qcamera.h:68
FlashMode
\value FlashOff Flash is Off.
Definition qcamera.h:77
@ FlashOff
Definition qcamera.h:78
ExposureMode
\value ExposureAuto Automatic mode.
Definition qcamera.h:91
@ ExposureAuto
Definition qcamera.h:92
Error
This enum holds the last error code.
Definition qcamera.h:61
float minExposureTime() const
virtual void setExposureCompensation(float)
void minExposureTimeChanged(float secs)
virtual void setManualExposureTime(float)
void maxIsoChanged(int iso)
QCamera::Features supportedFeatures() const
QString errorString() const final
QCameraFormat cameraFormat() const
virtual void setFocusMode(QCamera::FocusMode)
QCamera::WhiteBalanceMode whiteBalanceMode() const
virtual void setWhiteBalanceMode(QCamera::WhiteBalanceMode)
virtual void setColorTemperature(int)
virtual bool isFlashReady() const
float focusDistance() const
void maxExposureTimeChanged(float secs)
virtual bool isExposureModeSupported(QCamera::ExposureMode mode) const
float minZoomFactor() const
virtual void setCamera(const QCameraDevice &camera)=0
QPointF focusPoint() const
virtual int isoSensitivity() const
virtual bool isFocusModeSupported(QCamera::FocusMode mode) const
float zoomFactor() const
virtual void setManualIsoSensitivity(int)
QPointF customFocusPoint() const
QCamera::FocusMode focusMode() const
QCamera::FlashMode flashMode() const
virtual float exposureTime() const
void errorOccurred(QCamera::Error error, const QString &errorString)
int manualIsoSensitivity() const
QCamera::ExposureMode exposureMode() const
virtual void zoomTo(float, float=-1.)
virtual void setTorchMode(QCamera::TorchMode)
virtual void setCustomFocusPoint(const QPointF &)
int colorTemperature() const
float maxZoomFactor() const
float manualExposureTime() const
float exposureCompensation() const
virtual void setFlashMode(QCamera::FlashMode)
virtual int cameraPixelFormatScore(QVideoFrameFormat::PixelFormat, QVideoFrameFormat::ColorRange) const
void minIsoChanged(int iso)
virtual bool setCameraFormat(const QCameraFormat &)
virtual bool isWhiteBalanceModeSupported(QCamera::WhiteBalanceMode mode) const
virtual bool isFlashModeSupported(QCamera::FlashMode mode) const
QCamera::TorchMode torchMode() const
virtual void setFocusDistance(float)
QCamera::Error error() const
virtual void setExposureMode(QCamera::ExposureMode)
QCameraFormat m_cameraFormat
virtual bool isTorchModeSupported(QCamera::TorchMode mode) const
float maxExposureTime() const
\inmodule QtCore\reentrant
Definition qpoint.h:217
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
The QVideoFrameFormat class specifies the stream format of a video presentation surface.
PixelFormat
Enumerates video data types.
ColorRange
Describes the color range used by the video data.
QCamera * camera
Definition camera.cpp:19
Combined button and popup list for selecting options.
DBusConnection const char DBusError * error
GLenum mode
#define Q_OBJECT
#define Q_SIGNALS