| Message ID | 20260426193743.107637-1-marbe@gmx.de |
|---|---|
| State | New |
| Headers | show |
| Series |
|
| Related | show |
Quoting Marcel Berger (2026-04-26 20:37:43) > Signed-off-by: Marcel Berger <marbe@gmx.de> > --- > Changes in v2: I'm struggling to find v1 ... was it something posted to the list? https://patchwork.libcamera.org/project/libcamera/list/?submitter=268&archive=both&state=* shows that only this v2 patch is available from you, and I'm struggling to find a match with the OV02E10 keyword. https://patchwork.libcamera.org/project/libcamera/list/?state=%2A&q=OV02E10&series=&submitter=&delegate=&archive=both also only finds this patch. > - Update the OV02E10 analogue gain model. > - Treat gain code 0x10 as 1.0x, resulting in a 1.0x to 15.5x range. > - Keep the simple IPA YAML intentionally minimal; image tuning is left for follow-up work. I'm afraid - I think it would be better to keep the tuning file out of this or separate. > > src/ipa/libipa/camera_sensor_helper.cpp | 18 ++++++++++++++++++ > src/ipa/simple/data/ov02e10.yaml | 19 +++++++++++++++++++ > .../sensor/camera_sensor_properties.cpp | 12 ++++++++++++ > 3 files changed, 49 insertions(+) > create mode 100644 src/ipa/simple/data/ov02e10.yaml > > diff --git a/src/ipa/libipa/camera_sensor_helper.cpp b/src/ipa/libipa/camera_sensor_helper.cpp > index e3e3e535..bee50ec8 100644 > --- a/src/ipa/libipa/camera_sensor_helper.cpp > +++ b/src/ipa/libipa/camera_sensor_helper.cpp > @@ -653,6 +653,24 @@ public: > }; > REGISTER_CAMERA_SENSOR_HELPER("imx708", CameraSensorHelperImx708) > > +class CameraSensorHelperOv02e10 : public CameraSensorHelper > +{ > +public: > + CameraSensorHelperOv02e10() > + { > + /* > + * OV02E10 reports RAW10. The Intel IPU6 HAL configuration uses > + * SGRBG10 at 1928x1088 and exposure/gain lag of 2 frames. > + * > + * The analogue gain model is not yet datasheet-validated. > + * Use the common OmniVision 1/128 linear gain model as a > + * conservative first approximation. > + */ > + gain_ = AnalogueGainLinear{ 1, 0, 0, 16 }; > + } > +}; > +REGISTER_CAMERA_SENSOR_HELPER("ov02e10", CameraSensorHelperOv02e10) > + > class CameraSensorHelperOv2685 : public CameraSensorHelper > { > public: > diff --git a/src/ipa/simple/data/ov02e10.yaml b/src/ipa/simple/data/ov02e10.yaml > new file mode 100644 > index 00000000..fc90ca52 > --- /dev/null > +++ b/src/ipa/simple/data/ov02e10.yaml > @@ -0,0 +1,19 @@ > +# SPDX-License-Identifier: CC0-1.0 > +%YAML 1.1 > +--- > +version: 1 > +algorithms: > + - BlackLevel: > + - Awb: > + # Color correction matrices can be defined here. The CCM algorithm > + # has a significant performance impact, and should only be enabled > + # if tuned. > + # - Ccm: > + # ccms: > + # - ct: 6500 > + # ccm: [ 1, 0, 0, > + # 0, 1, 0, > + # 0, 0, 1] > + - Adjust: > + - Agc: > +... We shouldn't duplicate the uncalibrated just to stop a warning which doesn't add any value. Lets leave this out - and fall back to uncalibrated until someone has a correct tuning definition for the camera. Regards -- Kieran > diff --git a/src/libcamera/sensor/camera_sensor_properties.cpp b/src/libcamera/sensor/camera_sensor_properties.cpp > index b217363d..30638836 100644 > --- a/src/libcamera/sensor/camera_sensor_properties.cpp > +++ b/src/libcamera/sensor/camera_sensor_properties.cpp > @@ -325,6 +325,18 @@ const CameraSensorProperties *CameraSensorProperties::get(const std::string &sen > .hblankDelay = 3 > }, > } }, > + { "ov02e10", { > + .unitCellSize = { 1120, 1120 }, > + .testPatternModes = { > + { controls::draft::TestPatternModeOff, 0 }, > + }, > + .sensorDelays = { > + .exposureDelay = 2, > + .gainDelay = 2, > + .vblankDelay = 2, > + .hblankDelay = 2 > + }, > + } }, > { "ov2685", { > .unitCellSize = { 1750, 1750 }, > .testPatternModes = { > -- > 2.53.0 >
diff --git a/src/ipa/libipa/camera_sensor_helper.cpp b/src/ipa/libipa/camera_sensor_helper.cpp index e3e3e535..bee50ec8 100644 --- a/src/ipa/libipa/camera_sensor_helper.cpp +++ b/src/ipa/libipa/camera_sensor_helper.cpp @@ -653,6 +653,24 @@ public: }; REGISTER_CAMERA_SENSOR_HELPER("imx708", CameraSensorHelperImx708) +class CameraSensorHelperOv02e10 : public CameraSensorHelper +{ +public: + CameraSensorHelperOv02e10() + { + /* + * OV02E10 reports RAW10. The Intel IPU6 HAL configuration uses + * SGRBG10 at 1928x1088 and exposure/gain lag of 2 frames. + * + * The analogue gain model is not yet datasheet-validated. + * Use the common OmniVision 1/128 linear gain model as a + * conservative first approximation. + */ + gain_ = AnalogueGainLinear{ 1, 0, 0, 16 }; + } +}; +REGISTER_CAMERA_SENSOR_HELPER("ov02e10", CameraSensorHelperOv02e10) + class CameraSensorHelperOv2685 : public CameraSensorHelper { public: diff --git a/src/ipa/simple/data/ov02e10.yaml b/src/ipa/simple/data/ov02e10.yaml new file mode 100644 index 00000000..fc90ca52 --- /dev/null +++ b/src/ipa/simple/data/ov02e10.yaml @@ -0,0 +1,19 @@ +# SPDX-License-Identifier: CC0-1.0 +%YAML 1.1 +--- +version: 1 +algorithms: + - BlackLevel: + - Awb: + # Color correction matrices can be defined here. The CCM algorithm + # has a significant performance impact, and should only be enabled + # if tuned. + # - Ccm: + # ccms: + # - ct: 6500 + # ccm: [ 1, 0, 0, + # 0, 1, 0, + # 0, 0, 1] + - Adjust: + - Agc: +... diff --git a/src/libcamera/sensor/camera_sensor_properties.cpp b/src/libcamera/sensor/camera_sensor_properties.cpp index b217363d..30638836 100644 --- a/src/libcamera/sensor/camera_sensor_properties.cpp +++ b/src/libcamera/sensor/camera_sensor_properties.cpp @@ -325,6 +325,18 @@ const CameraSensorProperties *CameraSensorProperties::get(const std::string &sen .hblankDelay = 3 }, } }, + { "ov02e10", { + .unitCellSize = { 1120, 1120 }, + .testPatternModes = { + { controls::draft::TestPatternModeOff, 0 }, + }, + .sensorDelays = { + .exposureDelay = 2, + .gainDelay = 2, + .vblankDelay = 2, + .hblankDelay = 2 + }, + } }, { "ov2685", { .unitCellSize = { 1750, 1750 }, .testPatternModes = {
Signed-off-by: Marcel Berger <marbe@gmx.de> --- Changes in v2: - Update the OV02E10 analogue gain model. - Treat gain code 0x10 as 1.0x, resulting in a 1.0x to 15.5x range. - Keep the simple IPA YAML intentionally minimal; image tuning is left for follow-up work. src/ipa/libipa/camera_sensor_helper.cpp | 18 ++++++++++++++++++ src/ipa/simple/data/ov02e10.yaml | 19 +++++++++++++++++++ .../sensor/camera_sensor_properties.cpp | 12 ++++++++++++ 3 files changed, 49 insertions(+) create mode 100644 src/ipa/simple/data/ov02e10.yaml