53 virtual void setCamera(
const QCameraDevice &camera) = 0;
54 virtual bool setCameraFormat(
const QCameraFormat &) {
return false; }
55 QCameraFormat cameraFormat()
const {
return m_cameraFormat; }
61 virtual bool isFocusModeSupported(QCamera::FocusMode mode)
const {
return mode == QCamera::FocusModeAuto; }
76 virtual void setFocusMode(QCamera::FocusMode ) {}
78 virtual void setCustomFocusPoint(
const QPointF &) {}
96 virtual void setFocusDistance(
float) {}
99 virtual void zoomTo(
float ,
float = -1.) {}
101 virtual void setFlashMode(QCamera::FlashMode ) {}
102 virtual bool isFlashModeSupported(QCamera::FlashMode mode)
const {
return mode == QCamera::FlashOff; }
103 virtual bool isFlashReady()
const {
return false; }
105 virtual void setTorchMode(QCamera::TorchMode ) {}
106 virtual bool isTorchModeSupported(QCamera::TorchMode mode)
const {
return mode == QCamera::TorchOff; }
108 virtual void setExposureMode(QCamera::ExposureMode) {}
109 virtual bool isExposureModeSupported(QCamera::ExposureMode mode)
const {
return mode == QCamera::ExposureAuto; }
110 virtual void setExposureCompensation(
float) {}
111 virtual int isoSensitivity()
const {
return 100; }
112 virtual void setManualIsoSensitivity(
int) {}
113 virtual void setManualExposureTime(
float) {}
114 virtual float exposureTime()
const {
return -1.; }
116 virtual bool isWhiteBalanceModeSupported(QCamera::WhiteBalanceMode mode)
const {
return mode == QCamera::WhiteBalanceAuto; }
117 virtual void setWhiteBalanceMode(QCamera::WhiteBalanceMode ) {}
118 virtual void setColorTemperature(
int ) {}
120#if QT_CONFIG(gstreamer_qt_api)
121 virtual GstElement *rawGstElement()
const {
return nullptr; }
124 QVideoFrameFormat frameFormat()
const override;
129 QCamera::Features supportedFeatures()
const {
return m_supportedFeatures; }
131 QCamera::FocusMode focusMode()
const {
return m_focusMode; }
132 QPointF focusPoint()
const {
return m_customFocusPoint; }
134 float minZoomFactor()
const {
return m_minZoom; }
135 float maxZoomFactor()
const {
return m_maxZoom; }
136 float zoomFactor()
const {
return m_zoomFactor; }
137 QPointF customFocusPoint()
const {
return m_customFocusPoint; }
138 float focusDistance()
const {
return m_focusDistance; }
140 QCamera::FlashMode flashMode()
const {
return m_flashMode; }
141 QCamera::TorchMode torchMode()
const {
return m_torchMode; }
143 QCamera::ExposureMode exposureMode()
const {
return m_exposureMode; }
144 float exposureCompensation()
const {
return m_exposureCompensation; }
145 int manualIsoSensitivity()
const {
return m_iso; }
146 int minIso()
const {
return m_minIso; }
147 int maxIso()
const {
return m_maxIso; }
148 float manualExposureTime()
const {
return m_exposureTime; }
149 float minExposureTime()
const {
return m_minExposureTime; }
150 float maxExposureTime()
const {
return m_maxExposureTime; }
151 QCamera::WhiteBalanceMode whiteBalanceMode()
const {
return m_whiteBalance; }
152 int colorTemperature()
const {
return m_colorTemperature; }
154 void supportedFeaturesChanged(QCamera::Features);
155 void minimumZoomFactorChanged(
float factor);
156 void maximumZoomFactorChanged(
float);
157 void focusModeChanged(QCamera::FocusMode mode);
158 void customFocusPointChanged(
const QPointF &point);
159 void focusDistanceChanged(
float d);
160 void zoomFactorChanged(
float zoom);
161 void flashReadyChanged(
bool);
162 void flashModeChanged(QCamera::FlashMode mode);
163 void torchModeChanged(QCamera::TorchMode mode);
164 void exposureModeChanged(QCamera::ExposureMode mode);
165 void exposureCompensationChanged(
float compensation);
166 void exposureCompensationRangeChanged(
float min,
float max);
167 void isoSensitivityChanged(
int iso);
168 void minIsoChanged(
int iso) { m_minIso = iso; }
169 void maxIsoChanged(
int iso) { m_maxIso = iso; }
170 void exposureTimeChanged(
float speed);
171 void minExposureTimeChanged(
float secs) { m_minExposureTime = secs; }
172 void maxExposureTimeChanged(
float secs) { m_maxExposureTime = secs; }
173 void whiteBalanceModeChanged(QCamera::WhiteBalanceMode mode);
174 void colorTemperatureChanged(
int temperature);
176 static int colorTemperatureForWhiteBalance(QCamera::WhiteBalanceMode mode);
178 QCamera::Error error()
const {
return m_error.code(); }
179 QString errorString()
const final {
return m_error.description(); }
181 void updateError(QCamera::Error error,
const QString &errorString);
184 void errorOccurred(QCamera::Error error,
const QString &errorString);
187 explicit QPlatformCamera(QObject *parent);
189 virtual int cameraPixelFormatScore(QVideoFrameFormat::PixelFormat ,
190 QVideoFrameFormat::ColorRange )
const
195 QCameraFormat findBestCameraFormat(
const QCameraDevice &camera)
const;
196 QCameraFormat m_cameraFormat;
197 QVideoFrameFormat::PixelFormat m_framePixelFormat = QVideoFrameFormat::Format_Invalid;
201 static constexpr int defaultColorTemperature() {
return 0; }
202 static constexpr QPointF defaultCustomFocusPoint() {
return { -1, -1 }; }
203 static constexpr float defaultExposureCompensation() {
return 0.f; }
204 static constexpr QCamera::ExposureMode defaultExposureMode() {
return QCamera::ExposureAuto; }
205 static constexpr float defaultExposureTime() {
return -1.f; }
206 static constexpr QCamera::FlashMode defaultFlashMode() {
return QCamera::FlashOff; }
207 static constexpr bool defaultFlashReady() {
return false; }
208 static constexpr float defaultFocusDistance() {
return 1.f; }
209 static constexpr QCamera::FocusMode defaultFocusMode() {
return QCamera::FocusModeAuto; }
210 static constexpr int defaultIso() {
return -1; }
211 static constexpr QCamera::TorchMode defaultTorchMode() {
return QCamera::TorchOff; }
212 static constexpr QCamera::WhiteBalanceMode defaultWhiteBalanceMode() {
return QCamera::WhiteBalanceAuto; }
213 static constexpr float defaultZoomFactor() {
return 1.f; }
216 QCamera *m_camera =
nullptr;
217 QCamera::Features m_supportedFeatures = {};
218 QCamera::FocusMode m_focusMode = defaultFocusMode();
219 float m_minZoom = 1.;
220 float m_maxZoom = 1.;
221 float m_zoomFactor = defaultZoomFactor();
222 float m_focusDistance = defaultFocusDistance();
223 QPointF m_customFocusPoint = defaultCustomFocusPoint();
224 bool m_flashReady = defaultFlashReady();
225 QCamera::FlashMode m_flashMode = defaultFlashMode();
226 QCamera::TorchMode m_torchMode = defaultTorchMode();
227 QCamera::ExposureMode m_exposureMode = defaultExposureMode();
228 float m_exposureCompensation = defaultExposureCompensation();
229 float m_minExposureCompensation = 0.;
230 float m_maxExposureCompensation = 0.;
231 int m_iso = defaultIso();
234 float m_exposureTime = defaultExposureTime();
235 float m_minExposureTime = -1.;
236 float m_maxExposureTime = -1.;
237 QCamera::WhiteBalanceMode m_whiteBalance = defaultWhiteBalanceMode();
238 int m_colorTemperature = defaultColorTemperature();
239 QErrorInfo<QCamera::Error> m_error;