[libcamera-devel] [PATCH v4 01/10] rkisp1: Add camera lens to PH and expose it to the IPA

Jacopo Mondi jacopo.mondi at ideasonboard.com
Mon Mar 20 20:15:31 CET 2023


Hi Daniel

On Tue, Mar 14, 2023 at 03:48:25PM +0100, Daniel Semkowicz wrote:
> Check in pipeline handler if camera lens exists, and expose its controls
> to the IPA.
>
> Signed-off-by: Daniel Semkowicz <dse at thaumatec.com>
> ---
> I did not include the "reviewed-by" markers from last review as there was
> a change in this commit. Code in IPA file has been moved a bit down to better
> fit with the changes from the next commit.

This still seems good to me

Reviewed-by: Jacopo Mondi <jacopo.mondi at ideasonboard.com>

Thanks
  j


>
>  include/libcamera/ipa/rkisp1.mojom       | 1 +
>  src/ipa/rkisp1/rkisp1.cpp                | 5 +++++
>  src/libcamera/pipeline/rkisp1/rkisp1.cpp | 5 +++++
>  3 files changed, 11 insertions(+)
>
> diff --git a/include/libcamera/ipa/rkisp1.mojom b/include/libcamera/ipa/rkisp1.mojom
> index 1009e970..bf6e9141 100644
> --- a/include/libcamera/ipa/rkisp1.mojom
> +++ b/include/libcamera/ipa/rkisp1.mojom
> @@ -11,6 +11,7 @@ import "include/libcamera/ipa/core.mojom";
>  struct IPAConfigInfo {
>  	libcamera.IPACameraSensorInfo sensorInfo;
>  	libcamera.ControlInfoMap sensorControls;
> +	libcamera.ControlInfoMap lensControls;
>  };
>
>  interface IPARkISP1Interface {
> diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp
> index 6544c925..248cf5e0 100644
> --- a/src/ipa/rkisp1/rkisp1.cpp
> +++ b/src/ipa/rkisp1/rkisp1.cpp
> @@ -7,6 +7,7 @@
>
>  #include <algorithm>
>  #include <math.h>
> +#include <optional>
>  #include <queue>
>  #include <stdint.h>
>  #include <string.h>
> @@ -80,6 +81,7 @@ private:
>  	std::map<unsigned int, MappedFrameBuffer> mappedBuffers_;
>
>  	ControlInfoMap sensorControls_;
> +	std::optional<ControlInfoMap> lensControls_;
>
>  	/* revision-specific data */
>  	rkisp1_cif_isp_version hwRevision_;
> @@ -265,6 +267,9 @@ int IPARkISP1::configure(const IPAConfigInfo &ipaConfig,
>  			return format.colourEncoding == PixelFormatInfo::ColourEncodingRAW;
>  		});
>
> +	if (!ipaConfig.lensControls.empty())
> +		lensControls_ = ipaConfig.lensControls;
> +
>  	for (auto const &a : algorithms()) {
>  		Algorithm *algo = static_cast<Algorithm *>(a.get());
>
> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
> index 8a30fe06..83fb6287 100644
> --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp
> +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
> @@ -32,6 +32,7 @@
>  #include <libcamera/ipa/rkisp1_ipa_proxy.h>
>
>  #include "libcamera/internal/camera.h"
> +#include "libcamera/internal/camera_lens.h"
>  #include "libcamera/internal/camera_sensor.h"
>  #include "libcamera/internal/delayed_controls.h"
>  #include "libcamera/internal/device_enumerator.h"
> @@ -812,6 +813,10 @@ int PipelineHandlerRkISP1::configure(Camera *camera, CameraConfiguration *c)
>
>  	ipaConfig.sensorControls = data->sensor_->controls();
>
> +	CameraLens *lens = data->sensor_->focusLens();
> +	if (lens)
> +		ipaConfig.lensControls = lens->controls();
> +
>  	ret = data->ipa_->configure(ipaConfig, streamConfig, &data->controlInfo_);
>  	if (ret) {
>  		LOG(RkISP1, Error) << "failed configuring IPA (" << ret << ")";
> --
> 2.39.2
>


More information about the libcamera-devel mailing list