summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libcamera/camera_sensor.cpp15
-rw-r--r--src/libcamera/camera_sensor_properties.cpp52
2 files changed, 39 insertions, 28 deletions
diff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp
index 87668509..9fdb8c09 100644
--- a/src/libcamera/camera_sensor.cpp
+++ b/src/libcamera/camera_sensor.cpp
@@ -320,11 +320,22 @@ void CameraSensor::initTestPatternModes(
return;
}
+ /*
+ * Create a map that associates the V4L2 control index to the test
+ * pattern mode by reversing the testPatternModes map provided by the
+ * camera sensor properties. This makes it easier to verify if the
+ * control index is supported in the below for loop that creates the
+ * list of supported test patterns.
+ */
+ std::map<int32_t, int32_t> indexToTestPatternMode;
+ for (const auto &it : testPatternModes)
+ indexToTestPatternMode[it.second] = it.first;
+
for (const ControlValue &value : v4l2TestPattern->second.values()) {
const int32_t index = value.get<int32_t>();
- const auto it = testPatternModes.find(index);
- if (it == testPatternModes.end()) {
+ const auto it = indexToTestPatternMode.find(index);
+ if (it == indexToTestPatternMode.end()) {
LOG(CameraSensor, Debug)
<< "Test pattern mode " << index << " ignored";
continue;
diff --git a/src/libcamera/camera_sensor_properties.cpp b/src/libcamera/camera_sensor_properties.cpp
index 39bb282d..48305ac4 100644
--- a/src/libcamera/camera_sensor_properties.cpp
+++ b/src/libcamera/camera_sensor_properties.cpp
@@ -38,9 +38,9 @@ LOG_DEFINE_CATEGORY(CameraSensorProperties)
* \brief The physical size of a pixel, including pixel edges, in nanometers.
*
* \var CameraSensorProperties::testPatternModes
- * \brief Map that associates the indexes of the sensor test pattern modes as
- * returned by V4L2_CID_TEST_PATTERN with the corresponding TestPattern
- * control value
+ * \brief Map that associates the TestPattern control value with the indexes of
+ * the corresponding sensor test pattern modes as returned by
+ * V4L2_CID_TEST_PATTERN.
*/
/**
@@ -55,11 +55,11 @@ const CameraSensorProperties *CameraSensorProperties::get(const std::string &sen
{ "hi846", {
.unitCellSize = { 1120, 1120 },
.testPatternModes = {
- { 0, controls::draft::TestPatternModeOff },
- { 1, controls::draft::TestPatternModeSolidColor },
- { 2, controls::draft::TestPatternModeColorBars },
- { 3, controls::draft::TestPatternModeColorBarsFadeToGray },
- { 4, controls::draft::TestPatternModePn9 },
+ { controls::draft::TestPatternModeOff, 0 },
+ { controls::draft::TestPatternModeSolidColor, 1 },
+ { controls::draft::TestPatternModeColorBars, 2 },
+ { controls::draft::TestPatternModeColorBarsFadeToGray, 3 },
+ { controls::draft::TestPatternModePn9, 4 },
/*
* No corresponding test pattern mode for:
* 5: "Gradient Horizontal"
@@ -73,21 +73,21 @@ const CameraSensorProperties *CameraSensorProperties::get(const std::string &sen
{ "imx219", {
.unitCellSize = { 1120, 1120 },
.testPatternModes = {
- { 0, controls::draft::TestPatternModeOff },
- { 1, controls::draft::TestPatternModeColorBars },
- { 2, controls::draft::TestPatternModeSolidColor },
- { 3, controls::draft::TestPatternModeColorBarsFadeToGray },
- { 4, controls::draft::TestPatternModePn9 },
+ { controls::draft::TestPatternModeOff, 0 },
+ { controls::draft::TestPatternModeColorBars, 1 },
+ { controls::draft::TestPatternModeSolidColor, 2 },
+ { controls::draft::TestPatternModeColorBarsFadeToGray, 3 },
+ { controls::draft::TestPatternModePn9, 4 },
},
} },
{ "imx258", {
.unitCellSize = { 1120, 1120 },
.testPatternModes = {
- { 0, controls::draft::TestPatternModeOff },
- { 1, controls::draft::TestPatternModeSolidColor },
- { 2, controls::draft::TestPatternModeColorBars },
- { 3, controls::draft::TestPatternModeColorBarsFadeToGray },
- { 4, controls::draft::TestPatternModePn9 },
+ { controls::draft::TestPatternModeOff, 0 },
+ { controls::draft::TestPatternModeSolidColor, 1 },
+ { controls::draft::TestPatternModeColorBars, 2 },
+ { controls::draft::TestPatternModeColorBarsFadeToGray, 3 },
+ { controls::draft::TestPatternModePn9, 4 },
},
} },
{ "ov5647", {
@@ -97,15 +97,15 @@ const CameraSensorProperties *CameraSensorProperties::get(const std::string &sen
{ "ov5670", {
.unitCellSize = { 1120, 1120 },
.testPatternModes = {
- { 0, controls::draft::TestPatternModeOff },
- { 1, controls::draft::TestPatternModeColorBars },
+ { controls::draft::TestPatternModeOff, 0 },
+ { controls::draft::TestPatternModeColorBars, 1 },
},
} },
{ "ov5693", {
.unitCellSize = { 1400, 1400 },
.testPatternModes = {
- { 0, controls::draft::TestPatternModeOff },
- { 2, controls::draft::TestPatternModeColorBars },
+ { controls::draft::TestPatternModeOff, 0 },
+ { controls::draft::TestPatternModeColorBars, 2 },
/*
* No corresponding test pattern mode for
* 1: "Random data" and 3: "Colour Bars with
@@ -116,8 +116,8 @@ const CameraSensorProperties *CameraSensorProperties::get(const std::string &sen
{ "ov8865", {
.unitCellSize = { 1400, 1400 },
.testPatternModes = {
- { 0, controls::draft::TestPatternModeOff },
- { 2, controls::draft::TestPatternModeColorBars },
+ { controls::draft::TestPatternModeOff, 0 },
+ { controls::draft::TestPatternModeColorBars, 2 },
/*
* No corresponding test pattern mode for:
* 1: "Random data"
@@ -130,8 +130,8 @@ const CameraSensorProperties *CameraSensorProperties::get(const std::string &sen
{ "ov13858", {
.unitCellSize = { 1120, 1120 },
.testPatternModes = {
- { 0, controls::draft::TestPatternModeOff },
- { 1, controls::draft::TestPatternModeColorBars },
+ { controls::draft::TestPatternModeOff, 0 },
+ { controls::draft::TestPatternModeColorBars, 1 },
},
} },
};