[libcamera-devel] [PATCH v2] libcamera: Add support for OmniVision OV8858
Kieran Bingham
kieran.bingham at ideasonboard.com
Wed Jan 25 11:54:26 CET 2023
Quoting Jacopo Mondi via libcamera-devel (2023-01-25 09:05:28)
> From: Nicholas Roth <nicholas at rothemail.net>
>
> Support for the OmniVision OV8858 sensor is scheduled for inclusion in
> the Linux kernel in version v6.3.
>
> Add support for the sensor in libcamera by providing static properties
> and a camera sensor helper in libipa.
>
> The camera sensor helper expresses analogue gain increments in 1/128
> step which differs from what is reported in the sensor documentation in
> section "5.8 manual exposure compensation/ manual gain compensation" [0]
>
> A more detailed analysis of the sensor gain model is reported at:
> https://patchwork.linuxtv.org/project/linux-media/patch/20221106171129.166892-2-nicholas@rothemail.net/#142267
>
> Record with a \todo note a reference to discussion on the gain model
> implementation.
>
> Signed-off-by: Nicholas Roth <nicholas at rothemail.net>
> Signed-off-by: Jacopo Mondi <jacopo.mondi at ideasonboard.com>
> ---
>
> Compared to initial Nicholas' submission:
> - Change gain step to 128 (link to the driver discussion)
> - Add fadeToGray test patter and adjust comment
>
> ---
> src/ipa/libipa/camera_sensor_helper.cpp | 18 ++++++++++++++++++
> src/libcamera/camera_sensor_properties.cpp | 13 +++++++++++++
> 2 files changed, 31 insertions(+)
>
> diff --git a/src/ipa/libipa/camera_sensor_helper.cpp b/src/ipa/libipa/camera_sensor_helper.cpp
> index 3d8a2835fa28..52e11dfb8ca2 100644
> --- a/src/ipa/libipa/camera_sensor_helper.cpp
> +++ b/src/ipa/libipa/camera_sensor_helper.cpp
> @@ -505,6 +505,24 @@ public:
> };
> REGISTER_CAMERA_SENSOR_HELPER("ov5693", CameraSensorHelperOv5693)
>
> +class CameraSensorHelperOv8858 : public CameraSensorHelper
> +{
> +public:
> + CameraSensorHelperOv8858()
> + {
> + gainType_ = AnalogueGainLinear;
> +
> + /*
> + * \todo Use an increment step of 1/128 which differs from
> + * what the sensor manual describes.
This sounds like the todo is to *use* a step of 128, but isn't that what
it's already doing?
> + *
> + * See: https://patchwork.linuxtv.org/project/linux-media/patch/20221106171129.166892-2-nicholas@rothemail.net/#142267
> + */
> + gainConstants_.linear = { 1, 0, 0, 128 };
> + }
> +};
> +REGISTER_CAMERA_SENSOR_HELPER("ov8858", CameraSensorHelperOv8858)
> +
> class CameraSensorHelperOv8865 : public CameraSensorHelper
> {
> public:
> diff --git a/src/libcamera/camera_sensor_properties.cpp b/src/libcamera/camera_sensor_properties.cpp
> index c3c2caced906..7f6816e72773 100644
> --- a/src/libcamera/camera_sensor_properties.cpp
> +++ b/src/libcamera/camera_sensor_properties.cpp
> @@ -167,6 +167,19 @@ const CameraSensorProperties *CameraSensorProperties::get(const std::string &sen
> */
> },
> } },
> + { "ov8858", {
> + .unitCellSize = { 1120, 1120 },
> + .testPatternModes = {
> + { controls::draft::TestPatternModeOff, 0 },
> + { controls::draft::TestPatternModeColorBars, 1 },
> + { controls::draft::TestPatternModeColorBarsFadeToGray, 2 },
> + /*
> + * No corresponding test patter mode
s/patter/pattern/
> + * 3: "Vertical Color Bar Type 3",
> + * 4: "Vertical Color Bar Type 4"
> + */
> + },
> + } },
> { "ov8865", {
> .unitCellSize = { 1400, 1400 },
> .testPatternModes = {
> --
> 2.39.0
>
More information about the libcamera-devel
mailing list