diff options
-rw-r--r-- | include/libcamera/internal/meson.build | 1 | ||||
-rw-r--r-- | include/libcamera/internal/vector.h (renamed from src/ipa/libipa/vector.h) | 14 | ||||
-rw-r--r-- | src/ipa/ipu3/algorithms/awb.h | 2 | ||||
-rw-r--r-- | src/ipa/libipa/colours.h | 2 | ||||
-rw-r--r-- | src/ipa/libipa/meson.build | 2 | ||||
-rw-r--r-- | src/ipa/libipa/pwl.h | 2 | ||||
-rw-r--r-- | src/ipa/rkisp1/algorithms/agc.cpp | 6 | ||||
-rw-r--r-- | src/ipa/rkisp1/algorithms/awb.h | 3 | ||||
-rw-r--r-- | src/ipa/rkisp1/ipa_context.h | 2 | ||||
-rw-r--r-- | src/ipa/rpi/common/ipa_base.cpp | 18 | ||||
-rw-r--r-- | src/ipa/rpi/controller/rpi/agc_channel.cpp | 7 | ||||
-rw-r--r-- | src/libcamera/meson.build | 1 | ||||
-rw-r--r-- | src/libcamera/vector.cpp (renamed from src/ipa/libipa/vector.cpp) | 6 | ||||
-rw-r--r-- | test/ipa/libipa/meson.build | 1 | ||||
-rw-r--r-- | test/meson.build | 1 | ||||
-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 ®ion = 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)) { \ |