summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/libcamera/internal/meson.build1
-rw-r--r--include/libcamera/internal/vector.h (renamed from src/ipa/libipa/vector.h)14
-rw-r--r--src/ipa/ipu3/algorithms/awb.h2
-rw-r--r--src/ipa/libipa/colours.h2
-rw-r--r--src/ipa/libipa/meson.build2
-rw-r--r--src/ipa/libipa/pwl.h2
-rw-r--r--src/ipa/rkisp1/algorithms/agc.cpp6
-rw-r--r--src/ipa/rkisp1/algorithms/awb.h3
-rw-r--r--src/ipa/rkisp1/ipa_context.h2
-rw-r--r--src/ipa/rpi/common/ipa_base.cpp18
-rw-r--r--src/ipa/rpi/controller/rpi/agc_channel.cpp7
-rw-r--r--src/libcamera/meson.build1
-rw-r--r--src/libcamera/vector.cpp (renamed from src/ipa/libipa/vector.cpp)6
-rw-r--r--test/ipa/libipa/meson.build1
-rw-r--r--test/meson.build1
-rw-r--r--test/vector.cpp (renamed from test/ipa/libipa/vector.cpp)4
16 files changed, 36 insertions, 36 deletions
diff --git a/include/libcamera/internal/meson.build b/include/libcamera/internal/meson.build
index 7d6aa8b7..45408b31 100644
--- a/include/libcamera/internal/meson.build
+++ b/include/libcamera/internal/meson.build
@@ -43,6 +43,7 @@ libcamera_internal_headers = files([
'v4l2_pixelformat.h',
'v4l2_subdevice.h',
'v4l2_videodevice.h',
+ 'vector.h',
'yaml_parser.h',
])
diff --git a/src/ipa/libipa/vector.h b/include/libcamera/internal/vector.h
index fe33c9d6..a67a0947 100644
--- a/src/ipa/libipa/vector.h
+++ b/include/libcamera/internal/vector.h
@@ -24,8 +24,6 @@ namespace libcamera {
LOG_DECLARE_CATEGORY(Vector)
-namespace ipa {
-
#ifndef __DOXYGEN__
template<typename T, unsigned int Rows,
std::enable_if_t<std::is_arithmetic_v<T>> * = nullptr>
@@ -329,11 +327,9 @@ bool operator!=(const Vector<T, Rows> &lhs, const Vector<T, Rows> &rhs)
bool vectorValidateYaml(const YamlObject &obj, unsigned int size);
#endif /* __DOXYGEN__ */
-} /* namespace ipa */
-
#ifndef __DOXYGEN__
template<typename T, unsigned int Rows>
-std::ostream &operator<<(std::ostream &out, const ipa::Vector<T, Rows> &v)
+std::ostream &operator<<(std::ostream &out, const Vector<T, Rows> &v)
{
out << "Vector { ";
for (unsigned int i = 0; i < Rows; i++) {
@@ -346,13 +342,13 @@ std::ostream &operator<<(std::ostream &out, const ipa::Vector<T, Rows> &v)
}
template<typename T, unsigned int Rows>
-struct YamlObject::Getter<ipa::Vector<T, Rows>> {
- std::optional<ipa::Vector<T, Rows>> get(const YamlObject &obj) const
+struct YamlObject::Getter<Vector<T, Rows>> {
+ std::optional<Vector<T, Rows>> get(const YamlObject &obj) const
{
- if (!ipa::vectorValidateYaml(obj, Rows))
+ if (!vectorValidateYaml(obj, Rows))
return std::nullopt;
- ipa::Vector<T, Rows> vector;
+ Vector<T, Rows> vector;
unsigned int i = 0;
for (const YamlObject &entry : obj.asList()) {
diff --git a/src/ipa/ipu3/algorithms/awb.h b/src/ipa/ipu3/algorithms/awb.h
index 1916990a..dbf69c90 100644
--- a/src/ipa/ipu3/algorithms/awb.h
+++ b/src/ipa/ipu3/algorithms/awb.h
@@ -13,7 +13,7 @@
#include <libcamera/geometry.h>
-#include "libipa/vector.h"
+#include "libcamera/internal/vector.h"
#include "algorithm.h"
diff --git a/src/ipa/libipa/colours.h b/src/ipa/libipa/colours.h
index fa6a8b57..d39b2ca8 100644
--- a/src/ipa/libipa/colours.h
+++ b/src/ipa/libipa/colours.h
@@ -9,7 +9,7 @@
#include <stdint.h>
-#include "vector.h"
+#include "libcamera/internal/vector.h"
namespace libcamera {
diff --git a/src/ipa/libipa/meson.build b/src/ipa/libipa/meson.build
index f2b2f4be..12d8d15b 100644
--- a/src/ipa/libipa/meson.build
+++ b/src/ipa/libipa/meson.build
@@ -14,7 +14,6 @@ libipa_headers = files([
'lux.h',
'module.h',
'pwl.h',
- 'vector.h',
])
libipa_sources = files([
@@ -31,7 +30,6 @@ libipa_sources = files([
'lux.cpp',
'module.cpp',
'pwl.cpp',
- 'vector.cpp',
])
libipa_includes = include_directories('..')
diff --git a/src/ipa/libipa/pwl.h b/src/ipa/libipa/pwl.h
index d4ec9f4f..8fdc7053 100644
--- a/src/ipa/libipa/pwl.h
+++ b/src/ipa/libipa/pwl.h
@@ -12,7 +12,7 @@
#include <utility>
#include <vector>
-#include "vector.h"
+#include "libcamera/internal/vector.h"
namespace libcamera {
diff --git a/src/ipa/rkisp1/algorithms/agc.cpp b/src/ipa/rkisp1/algorithms/agc.cpp
index e7c6de75..9a558a1c 100644
--- a/src/ipa/rkisp1/algorithms/agc.cpp
+++ b/src/ipa/rkisp1/algorithms/agc.cpp
@@ -151,11 +151,11 @@ int Agc::init(IPAContext &context, const YamlObject &tuningData)
context.ctrlMap[&controls::ExposureTimeMode] =
ControlInfo({ { ControlValue(controls::ExposureTimeModeAuto),
ControlValue(controls::ExposureTimeModeManual) } },
- controls::ExposureTimeModeAuto);
+ ControlValue(controls::ExposureTimeModeAuto));
context.ctrlMap[&controls::AnalogueGainMode] =
ControlInfo({ { ControlValue(controls::AnalogueGainModeAuto),
ControlValue(controls::AnalogueGainModeManual) } },
- controls::AnalogueGainModeAuto);
+ ControlValue(controls::AnalogueGainModeAuto));
/* \todo Move this to the Camera class */
context.ctrlMap[&controls::AeEnable] = ControlInfo(false, true, true);
context.ctrlMap.merge(controls());
@@ -466,7 +466,7 @@ void Agc::process(IPAContext &context, [[maybe_unused]] const uint32_t frame,
fillMetadata(context, frameContext, metadata);
return;
}
-
+
if (!(stats->meas_type & RKISP1_CIF_ISP_STAT_AUTOEXP)) {
fillMetadata(context, frameContext, metadata);
LOG(RkISP1Agc, Error) << "AUTOEXP data is missing in statistics";
diff --git a/src/ipa/rkisp1/algorithms/awb.h b/src/ipa/rkisp1/algorithms/awb.h
index e4248048..34ec42cb 100644
--- a/src/ipa/rkisp1/algorithms/awb.h
+++ b/src/ipa/rkisp1/algorithms/awb.h
@@ -9,8 +9,9 @@
#include <optional>
+#include "libcamera/internal/vector.h"
+
#include "libipa/interpolator.h"
-#include "libipa/vector.h"
#include "algorithm.h"
diff --git a/src/ipa/rkisp1/ipa_context.h b/src/ipa/rkisp1/ipa_context.h
index 5d5b79fa..c765b928 100644
--- a/src/ipa/rkisp1/ipa_context.h
+++ b/src/ipa/rkisp1/ipa_context.h
@@ -22,10 +22,10 @@
#include "libcamera/internal/debug_controls.h"
#include "libcamera/internal/matrix.h"
+#include "libcamera/internal/vector.h"
#include <libipa/camera_sensor_helper.h>
#include <libipa/fc_queue.h>
-#include <libipa/vector.h>
namespace libcamera {
diff --git a/src/ipa/rpi/common/ipa_base.cpp b/src/ipa/rpi/common/ipa_base.cpp
index bd3c2200..6734c32e 100644
--- a/src/ipa/rpi/common/ipa_base.cpp
+++ b/src/ipa/rpi/common/ipa_base.cpp
@@ -61,12 +61,13 @@ const ControlInfoMap::Map ipaControls{
ControlInfo(static_cast<int32_t>(controls::ExposureTimeModeAuto),
static_cast<int32_t>(controls::ExposureTimeModeManual),
static_cast<int32_t>(controls::ExposureTimeModeAuto)) },
- { &controls::ExposureTime, ControlInfo(0, 66666) },
+ { &controls::ExposureTime,
+ ControlInfo(1, 66666, static_cast<int32_t>(defaultExposureTime.get<std::micro>())) },
{ &controls::AnalogueGainMode,
ControlInfo(static_cast<int32_t>(controls::AnalogueGainModeAuto),
static_cast<int32_t>(controls::AnalogueGainModeManual),
static_cast<int32_t>(controls::AnalogueGainModeAuto)) },
- { &controls::AnalogueGain, ControlInfo(1.0f, 16.0f) },
+ { &controls::AnalogueGain, ControlInfo(1.0f, 16.0f, 1.0f) },
{ &controls::AeMeteringMode, ControlInfo(controls::AeMeteringModeValues) },
{ &controls::AeConstraintMode, ControlInfo(controls::AeConstraintModeValues) },
{ &controls::AeExposureMode, ControlInfo(controls::AeExposureModeValues) },
@@ -80,7 +81,9 @@ const ControlInfoMap::Map ipaControls{
{ &controls::HdrMode, ControlInfo(controls::HdrModeValues) },
{ &controls::Sharpness, ControlInfo(0.0f, 16.0f, 1.0f) },
{ &controls::ScalerCrop, ControlInfo(Rectangle{}, Rectangle(65535, 65535, 65535, 65535), Rectangle{}) },
- { &controls::FrameDurationLimits, ControlInfo(INT64_C(33333), INT64_C(120000)) },
+ { &controls::FrameDurationLimits,
+ ControlInfo(INT64_C(33333), INT64_C(120000),
+ static_cast<int64_t>(defaultMinFrameDuration.get<std::micro>())) },
{ &controls::draft::NoiseReductionMode, ControlInfo(controls::draft::NoiseReductionModeValues) },
{ &controls::rpi::StatsOutputEnable, ControlInfo(false, true, false) },
};
@@ -259,15 +262,18 @@ int32_t IpaBase::configure(const IPACameraSensorInfo &sensorInfo, const ConfigPa
ControlInfoMap::Map ctrlMap = ipaControls;
ctrlMap[&controls::FrameDurationLimits] =
ControlInfo(static_cast<int64_t>(mode_.minFrameDuration.get<std::micro>()),
- static_cast<int64_t>(mode_.maxFrameDuration.get<std::micro>()));
+ static_cast<int64_t>(mode_.maxFrameDuration.get<std::micro>()),
+ static_cast<int64_t>(defaultMinFrameDuration.get<std::micro>()));
ctrlMap[&controls::AnalogueGain] =
ControlInfo(static_cast<float>(mode_.minAnalogueGain),
- static_cast<float>(mode_.maxAnalogueGain));
+ static_cast<float>(mode_.maxAnalogueGain),
+ static_cast<float>(defaultAnalogueGain));
ctrlMap[&controls::ExposureTime] =
ControlInfo(static_cast<int32_t>(mode_.minExposureTime.get<std::micro>()),
- static_cast<int32_t>(mode_.maxExposureTime.get<std::micro>()));
+ static_cast<int32_t>(mode_.maxExposureTime.get<std::micro>()),
+ static_cast<int32_t>(defaultExposureTime.get<std::micro>()));
/* Declare colour processing related controls for non-mono sensors. */
if (!monoSensor_)
diff --git a/src/ipa/rpi/controller/rpi/agc_channel.cpp b/src/ipa/rpi/controller/rpi/agc_channel.cpp
index e79184b7..a5562760 100644
--- a/src/ipa/rpi/controller/rpi/agc_channel.cpp
+++ b/src/ipa/rpi/controller/rpi/agc_channel.cpp
@@ -12,8 +12,9 @@
#include <libcamera/base/log.h>
+#include "libcamera/internal/vector.h"
+
#include "libipa/colours.h"
-#include "libipa/vector.h"
#include "../awb_status.h"
#include "../device_status.h"
@@ -700,7 +701,7 @@ static double computeInitialY(StatisticsPtr &stats, AwbStatus const &awb,
* Note that the weights are applied by the IPA to the statistics directly,
* before they are given to us here.
*/
- ipa::RGB<double> sum{ 0.0 };
+ RGB<double> sum{ 0.0 };
double pixelSum = 0;
for (unsigned int i = 0; i < stats->agcRegions.numRegions(); i++) {
auto &region = stats->agcRegions.get(i);
@@ -716,7 +717,7 @@ static double computeInitialY(StatisticsPtr &stats, AwbStatus const &awb,
/* Factor in the AWB correction if needed. */
if (stats->agcStatsPos == Statistics::AgcStatsPos::PreWb)
- sum *= ipa::RGB<double>{{ awb.gainR, awb.gainR, awb.gainB }};
+ sum *= RGB<double>{ { awb.gainR, awb.gainR, awb.gainB } };
double ySum = ipa::rec601LuminanceFromRGB(sum);
diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build
index 57fde8a8..de22b8e6 100644
--- a/src/libcamera/meson.build
+++ b/src/libcamera/meson.build
@@ -53,6 +53,7 @@ libcamera_internal_sources = files([
'v4l2_pixelformat.cpp',
'v4l2_subdevice.cpp',
'v4l2_videodevice.cpp',
+ 'vector.cpp',
'yaml_parser.cpp',
])
diff --git a/src/ipa/libipa/vector.cpp b/src/libcamera/vector.cpp
index 8019f8cf..85ca2208 100644
--- a/src/ipa/libipa/vector.cpp
+++ b/src/libcamera/vector.cpp
@@ -5,7 +5,7 @@
* Vector and related operations
*/
-#include "vector.h"
+#include "libcamera/internal/vector.h"
#include <libcamera/base/log.h>
@@ -18,8 +18,6 @@ namespace libcamera {
LOG_DEFINE_CATEGORY(Vector)
-namespace ipa {
-
/**
* \class Vector
* \brief Vector class
@@ -346,6 +344,4 @@ bool vectorValidateYaml(const YamlObject &obj, unsigned int size)
}
#endif /* __DOXYGEN__ */
-} /* namespace ipa */
-
} /* namespace libcamera */
diff --git a/test/ipa/libipa/meson.build b/test/ipa/libipa/meson.build
index 0f4155d2..eaf4b49a 100644
--- a/test/ipa/libipa/meson.build
+++ b/test/ipa/libipa/meson.build
@@ -3,7 +3,6 @@
libipa_test = [
{'name': 'fixedpoint', 'sources': ['fixedpoint.cpp']},
{'name': 'interpolator', 'sources': ['interpolator.cpp']},
- {'name': 'vector', 'sources': ['vector.cpp']},
]
foreach test : libipa_test
diff --git a/test/meson.build b/test/meson.build
index 5ed052ed..40956649 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -73,6 +73,7 @@ internal_tests = [
{'name': 'timer-thread', 'sources': ['timer-thread.cpp']},
{'name': 'unique-fd', 'sources': ['unique-fd.cpp']},
{'name': 'utils', 'sources': ['utils.cpp']},
+ {'name': 'vector', 'sources': ['vector.cpp']},
{'name': 'yaml-parser', 'sources': ['yaml-parser.cpp']},
]
diff --git a/test/ipa/libipa/vector.cpp b/test/vector.cpp
index 8e4ec77d..4fae960d 100644
--- a/test/ipa/libipa/vector.cpp
+++ b/test/vector.cpp
@@ -5,14 +5,14 @@
* Vector tests
*/
-#include "../src/ipa/libipa/vector.h"
+#include "libcamera/internal/vector.h"
#include <cmath>
#include <iostream>
#include "test.h"
-using namespace libcamera::ipa;
+using namespace libcamera;
#define ASSERT_EQ(a, b) \
if ((a) != (b)) { \