Message ID | 20230314144834.85193-2-dse@thaumatec.com |
---|---|
State | Superseded |
Headers | show |
Series |
|
Related | show |
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@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@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 >
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 << ")";
Check in pipeline handler if camera lens exists, and expose its controls to the IPA. Signed-off-by: Daniel Semkowicz <dse@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. include/libcamera/ipa/rkisp1.mojom | 1 + src/ipa/rkisp1/rkisp1.cpp | 5 +++++ src/libcamera/pipeline/rkisp1/rkisp1.cpp | 5 +++++ 3 files changed, 11 insertions(+)