49 virtual void setCamera(
const QCameraDevice &camera) = 0;
50 virtual bool setCameraFormat(
const QCameraFormat &) {
return false; }
51 QCameraFormat cameraFormat()
const {
return m_cameraFormat; }
57 virtual bool isFocusModeSupported(QCamera::FocusMode mode)
const {
return mode == QCamera::FocusModeAuto; }
72 virtual void setFocusMode(QCamera::FocusMode ) {}
74 virtual void setCustomFocusPoint(
const QPointF &) {}
92 virtual void setFocusDistance(
float) {}
95 virtual void zoomTo(
float ,
float = -1.) {}
97 virtual void setFlashMode(QCamera::FlashMode ) {}
98 virtual bool isFlashModeSupported(QCamera::FlashMode mode)
const {
return mode == QCamera::FlashOff; }
99 virtual bool isFlashReady()
const {
return false; }
101 virtual void setTorchMode(QCamera::TorchMode ) {}
102 virtual bool isTorchModeSupported(QCamera::TorchMode mode)
const {
return mode == QCamera::TorchOff; }
104 virtual void setExposureMode(QCamera::ExposureMode) {}
105 virtual bool isExposureModeSupported(QCamera::ExposureMode mode)
const {
return mode == QCamera::ExposureAuto; }
106 virtual void setExposureCompensation(
float) {}
107 virtual int isoSensitivity()
const {
return 100; }
108 virtual void setManualIsoSensitivity(
int) {}
109 virtual void setManualExposureTime(
float) {}
110 virtual float exposureTime()
const {
return -1.; }
112 virtual bool isWhiteBalanceModeSupported(QCamera::WhiteBalanceMode mode)
const {
return mode == QCamera::WhiteBalanceAuto; }
113 virtual void setWhiteBalanceMode(QCamera::WhiteBalanceMode ) {}
114 virtual void setColorTemperature(
int ) {}
116 QVideoFrameFormat frameFormat()
const override;
121 QCamera::Features supportedFeatures()
const {
return m_supportedFeatures; }
123 QCamera::FocusMode focusMode()
const {
return m_focusMode; }
124 QPointF focusPoint()
const {
return m_customFocusPoint; }
126 float minZoomFactor()
const {
return m_minZoom; }
127 float maxZoomFactor()
const {
return m_maxZoom; }
128 float zoomFactor()
const {
return m_zoomFactor; }
129 QPointF customFocusPoint()
const {
return m_customFocusPoint; }
130 float focusDistance()
const {
return m_focusDistance; }
132 QCamera::FlashMode flashMode()
const {
return m_flashMode; }
133 QCamera::TorchMode torchMode()
const {
return m_torchMode; }
135 QCamera::ExposureMode exposureMode()
const {
return m_exposureMode; }
136 float exposureCompensation()
const {
return m_exposureCompensation; }
137 int manualIsoSensitivity()
const {
return m_iso; }
138 int minIso()
const {
return m_minIso; }
139 int maxIso()
const {
return m_maxIso; }
140 float manualExposureTime()
const {
return m_exposureTime; }
141 float minExposureTime()
const {
return m_minExposureTime; }
142 float maxExposureTime()
const {
return m_maxExposureTime; }
143 QCamera::WhiteBalanceMode whiteBalanceMode()
const {
return m_whiteBalance; }
144 int colorTemperature()
const {
return m_colorTemperature; }
146 void supportedFeaturesChanged(QCamera::Features);
147 void minimumZoomFactorChanged(
float factor);
148 void maximumZoomFactorChanged(
float);
149 void focusModeChanged(QCamera::FocusMode mode);
150 void customFocusPointChanged(
const QPointF &point);
151 void focusDistanceChanged(
float d);
152 void zoomFactorChanged(
float zoom);
153 void flashReadyChanged(
bool);
154 void flashModeChanged(QCamera::FlashMode mode);
155 void torchModeChanged(QCamera::TorchMode mode);
156 void exposureModeChanged(QCamera::ExposureMode mode);
157 void exposureCompensationChanged(
float compensation);
158 void exposureCompensationRangeChanged(
float min,
float max);
159 void isoSensitivityChanged(
int iso);
160 void minIsoChanged(
int iso) { m_minIso = iso; }
161 void maxIsoChanged(
int iso) { m_maxIso = iso; }
162 void exposureTimeChanged(
float speed);
163 void minExposureTimeChanged(
float secs) { m_minExposureTime = secs; }
164 void maxExposureTimeChanged(
float secs) { m_maxExposureTime = secs; }
165 void whiteBalanceModeChanged(QCamera::WhiteBalanceMode mode);
166 void colorTemperatureChanged(
int temperature);
168 static int colorTemperatureForWhiteBalance(QCamera::WhiteBalanceMode mode);
170 QCamera::Error error()
const {
return m_error.code(); }
171 QString errorString()
const final {
return m_error.description(); }
173 void updateError(QCamera::Error error,
const QString &errorString);
176 void errorOccurred(QCamera::Error error,
const QString &errorString);
179 explicit QPlatformCamera(QCamera *parent);
181 virtual int cameraPixelFormatScore(QVideoFrameFormat::PixelFormat ,
182 QVideoFrameFormat::ColorRange )
const
187 QCameraFormat findBestCameraFormat(
const QCameraDevice &camera)
const;
188 QCameraFormat m_cameraFormat;
189 QVideoFrameFormat::PixelFormat m_framePixelFormat = QVideoFrameFormat::Format_Invalid;
193 static constexpr int defaultColorTemperature() {
return 0; }
194 static constexpr QPointF defaultCustomFocusPoint() {
return { -1, -1 }; }
195 static constexpr float defaultExposureCompensation() {
return 0.f; }
196 static constexpr QCamera::ExposureMode defaultExposureMode() {
return QCamera::ExposureAuto; }
197 static constexpr float defaultExposureTime() {
return -1.f; }
198 static constexpr QCamera::FlashMode defaultFlashMode() {
return QCamera::FlashOff; }
199 static constexpr bool defaultFlashReady() {
return false; }
200 static constexpr float defaultFocusDistance() {
return 1.f; }
201 static constexpr QCamera::FocusMode defaultFocusMode() {
return QCamera::FocusModeAuto; }
202 static constexpr int defaultIso() {
return -1; }
203 static constexpr QCamera::TorchMode defaultTorchMode() {
return QCamera::TorchOff; }
204 static constexpr QCamera::WhiteBalanceMode defaultWhiteBalanceMode() {
return QCamera::WhiteBalanceAuto; }
205 static constexpr float defaultZoomFactor() {
return 1.f; }
208 QCamera *m_camera =
nullptr;
209 QCamera::Features m_supportedFeatures = {};
210 QCamera::FocusMode m_focusMode = defaultFocusMode();
211 float m_minZoom = 1.;
212 float m_maxZoom = 1.;
213 float m_zoomFactor = defaultZoomFactor();
214 float m_focusDistance = defaultFocusDistance();
215 QPointF m_customFocusPoint = defaultCustomFocusPoint();
216 bool m_flashReady = defaultFlashReady();
217 QCamera::FlashMode m_flashMode = defaultFlashMode();
218 QCamera::TorchMode m_torchMode = defaultTorchMode();
219 QCamera::ExposureMode m_exposureMode = defaultExposureMode();
220 float m_exposureCompensation = defaultExposureCompensation();
221 float m_minExposureCompensation = 0.;
222 float m_maxExposureCompensation = 0.;
223 int m_iso = defaultIso();
226 float m_exposureTime = defaultExposureTime();
227 float m_minExposureTime = -1.;
228 float m_maxExposureTime = -1.;
229 QCamera::WhiteBalanceMode m_whiteBalance = defaultWhiteBalanceMode();
230 int m_colorTemperature = defaultColorTemperature();
231 QErrorInfo<QCamera::Error> m_error;