125 auto maybeControl = QPlatformMediaIntegration::instance()->createCamera(q);
127 qWarning() <<
"Failed to initialize QCamera" << maybeControl.error();
130 control = maybeControl.value();
131 cameraDevice = !device.isNull() ? device : QMediaDevices::defaultVideoInput();
132 if (cameraDevice.isNull())
133 control->updateError(QCamera::CameraError, QStringLiteral(
"No camera detected"));
134 control->setCamera(cameraDevice);
135 q->connect(control, &QPlatformVideoSource::activeChanged, q, &QCamera::activeChanged);
136 q->connect(control, &QPlatformCamera::errorChanged, q, &QCamera::errorChanged);
137 q->connect(control, &QPlatformCamera::errorOccurred, q, &QCamera::errorOccurred);
176QCamera::QCamera(QCameraDevice::Position position, QObject *parent)
177 : QObject(*
new QCameraPrivate, parent)
181 QCameraDevice device;
182 auto cameras = QMediaDevices::videoInputs();
183 for (
const auto &c : std::as_const(cameras)) {
184 if (c.position() == position) {
446void QCamera::setCameraDevice(
const QCameraDevice &cameraDevice)
450 if (!QPlatformMediaIntegration::instance()->isCameraSwitchingDuringRecordingSupported()
451 && d->captureSession && d->captureSession->recorder()
452 && d->captureSession->recorder()->recorderState() == QMediaRecorder::RecordingState) {
453 qWarning(
"This media backend does not support camera device switching during recording");
457 auto dev = cameraDevice;
459 dev = QMediaDevices::defaultVideoInput();
460 if (d->cameraDevice == dev)
462 d->cameraDevice = dev;
464 d->control->setCamera(d->cameraDevice);
465 emit cameraDeviceChanged();
1344void QCamera::setWhiteBalanceMode(QCamera::WhiteBalanceMode mode)
1349 if (!d->control->isWhiteBalanceModeSupported(mode))
1351 d->control->setWhiteBalanceMode(mode);
1352 if (mode == QCamera::WhiteBalanceManual)
1353 d->control->setColorTemperature(5600);
1405void QCamera::setColorTemperature(
int colorTemperature)
1410 if (colorTemperature < 0)
1411 colorTemperature = 0;
1412 if (colorTemperature == 0) {
1413 d->control->setWhiteBalanceMode(WhiteBalanceAuto);
1414 }
else if (!isWhiteBalanceModeSupported(WhiteBalanceManual)) {
1417 d->control->setWhiteBalanceMode(WhiteBalanceManual);
1419 d->control->setColorTemperature(colorTemperature);