Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qlibcamera_controls.cpp
Go to the documentation of this file.
1
// Copyright (C) 2026 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
#
include
"qlibcamera_controls_p.h"
5
6
#
include
<
libcamera
/
control_ids
.
h
>
7
#
include
<
libcamera
/
controls
.
h
>
8
#
include
<
libcamera
/
geometry
.
h
>
9
10
QT_BEGIN_NAMESPACE
11
12
namespace
QLibCamera
{
13
14
using
namespace
libcamera
;
15
16
namespace
QLibCameraControls
{
17
18
QCamera
::
Features
detectSupportedFeatures
(
const
ControlInfoMap &controls)
19
{
20
QCamera::Features features;
21
22
if
(controls.find(&libcamera::controls::ColourTemperature) != controls.end())
23
features |= QCamera::Feature::ColorTemperature;
24
if
(controls.find(&libcamera::controls::ExposureValue) != controls.end())
25
features |= QCamera::Feature::ExposureCompensation;
26
if
(controls.find(&libcamera::controls::AnalogueGain) != controls.end())
27
features |= QCamera::Feature::IsoSensitivity;
28
if
(controls.find(&libcamera::controls::ExposureTime) != controls.end())
29
features |= QCamera::Feature::ManualExposureTime;
30
if
(controls.find(&libcamera::controls::LensPosition) != controls.end())
31
features |= QCamera::Feature::FocusDistance;
32
33
return
features;
34
}
35
36
void
setAeEnable
(ControlList &pending,
bool
enable)
37
{
38
pending.set(libcamera::controls::AeEnable, enable);
39
}
40
41
void
setManualExposureTime
(ControlList &pending,
float
seconds)
42
{
43
// libcamera::controls::ExposureTime is in microseconds.
44
pending.set(libcamera::controls::AeEnable,
false
);
45
pending.set(libcamera::controls::ExposureTime, int32_t(seconds * 1'000'000.f));
46
}
47
48
void
setExposureCompensation
(ControlList &pending,
float
stops)
49
{
50
pending.set(libcamera::controls::ExposureValue, stops);
51
}
52
53
void
setAnalogueGainForIso
(ControlList &pending,
int
iso)
54
{
55
// ISO 100 is conventionally analogue gain 1.0.
56
pending.set(libcamera::controls::AeEnable,
false
);
57
pending.set(libcamera::controls::AnalogueGain,
float
(iso) / 100.f);
58
}
59
60
void
setAwbEnable
(ControlList &pending,
bool
enable)
61
{
62
pending.set(libcamera::controls::AwbEnable, enable);
63
}
64
65
void
setColorTemperature
(ControlList &pending,
int
kelvin)
66
{
67
pending.set(libcamera::controls::AwbEnable,
false
);
68
pending.set(libcamera::controls::ColourTemperature, kelvin);
69
}
70
71
void
setZoomFactor
(ControlList &pending,
const
ControlInfoMap &controls,
float
zoomFactor)
72
{
73
const
auto
it = controls.find(&libcamera::controls::ScalerCrop);
74
if
(it == controls.end())
75
return
;
76
77
const
Rectangle maxCrop = it->second.max().get<Rectangle>();
78
if
(maxCrop.isNull() || zoomFactor <= 1.f)
79
return
;
80
81
const
unsigned
int
width = std::max(1u,
static_cast
<
unsigned
int
>(maxCrop.width / zoomFactor));
82
const
unsigned
int
height =
83
std::max(1u,
static_cast
<
unsigned
int
>(maxCrop.height / zoomFactor));
84
const
int
x = maxCrop.x +
int
(maxCrop.width - width) / 2;
85
const
int
y = maxCrop.y +
int
(maxCrop.height - height) / 2;
86
87
pending.set(libcamera::controls::ScalerCrop, Rectangle(x, y, width, height));
88
}
89
90
}
// namespace QLibCameraControls
91
92
}
// namespace QLibCamera
93
94
QT_END_NAMESPACE
QLibCamera::QLibCameraControls
Definition
qlibcamera_controls.cpp:16
QLibCamera::QLibCameraControls::setExposureCompensation
void setExposureCompensation(ControlList &pending, float stops)
Definition
qlibcamera_controls.cpp:48
QLibCamera::QLibCameraControls::setAnalogueGainForIso
void setAnalogueGainForIso(ControlList &pending, int iso)
Definition
qlibcamera_controls.cpp:53
QLibCamera::QLibCameraControls::setAwbEnable
void setAwbEnable(ControlList &pending, bool enable)
Definition
qlibcamera_controls.cpp:60
QLibCamera::QLibCameraControls::setZoomFactor
void setZoomFactor(ControlList &pending, const ControlInfoMap &controls, float zoomFactor)
Definition
qlibcamera_controls.cpp:71
QLibCamera::QLibCameraControls::setColorTemperature
void setColorTemperature(ControlList &pending, int kelvin)
Definition
qlibcamera_controls.cpp:65
QLibCamera::QLibCameraControls::setManualExposureTime
void setManualExposureTime(ControlList &pending, float seconds)
Definition
qlibcamera_controls.cpp:41
QLibCamera::QLibCameraControls::setAeEnable
void setAeEnable(ControlList &pending, bool enable)
Definition
qlibcamera_controls.cpp:36
QLibCamera::QLibCameraControls::detectSupportedFeatures
QCamera::Features detectSupportedFeatures(const ControlInfoMap &controls)
Definition
qlibcamera_controls.cpp:18
QLibCamera
Definition
qplatformlibcameraintegration.cpp:13
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
libcamera
Definition
qlibcamera_camera_p.h:27
qtmultimedia
src
plugins
libcamera
qlibcamera_controls.cpp
Generated on
for Qt by
1.18.0