[libcamera-devel] [PATCH v4 2/2] libcamera: ipu3: Pass the BDS rectangle at IPA configure call
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Wed Mar 17 15:09:54 CET 2021
Hi Jean-Michel,
On Tue, Mar 16, 2021 at 04:40:23PM +0100, Jean-Michel Hautbois wrote:
> The IPU3 IPA will need the BDS configuration when the AWB/AGC algorithm
> will be integrated.
> In order to do that, the configure() interface needs to be modified.
>
> Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois at ideasonboard.com>
> Reviewed-by: Jacopo Mondi <jacopo at jmondi.org>
> Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
>
> ---
> v4:
> - get back to pipeConfig_ beeing private
> v3:
> - pass bds size to ipa->configure()
> v2:
> - rename bds => bdsOutputSize
> - use a libcamera::Size instead of libcamera::Rectangle
> ---
> include/libcamera/ipa/ipu3.mojom | 2 +-
> src/ipa/ipu3/ipu3.cpp | 7 +++++--
> src/libcamera/pipeline/ipu3/ipu3.cpp | 2 +-
> 3 files changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/include/libcamera/ipa/ipu3.mojom b/include/libcamera/ipa/ipu3.mojom
> index 6ee11333..5d13e7ea 100644
> --- a/include/libcamera/ipa/ipu3.mojom
> +++ b/include/libcamera/ipa/ipu3.mojom
> @@ -30,7 +30,7 @@ interface IPAIPU3Interface {
> start() => (int32 ret);
> stop();
>
> - configure(map<uint32, ControlInfoMap> entityControls) => ();
> + configure(map<uint32, ControlInfoMap> entityControls, Size bdsOutputSize) => ();
>
> mapBuffers(array<IPABuffer> buffers);
> unmapBuffers(array<uint32> ids);
> diff --git a/src/ipa/ipu3/ipu3.cpp b/src/ipa/ipu3/ipu3.cpp
> index b63e58be..be73a225 100644
> --- a/src/ipa/ipu3/ipu3.cpp
> +++ b/src/ipa/ipu3/ipu3.cpp
> @@ -35,7 +35,9 @@ public:
> int start() override { return 0; }
> void stop() override {}
>
> - void configure(const std::map<uint32_t, ControlInfoMap> &entityControls) override;
> + void configure(
> + const std::map<uint32_t, ControlInfoMap> &entityControls,
> + const Size &bdsOutputSize) override;
I forgot to mention, this should be
void configure(const std::map<uint32_t, ControlInfoMap> &entityControls,
const Size &bdsOutputSize) override;
to match the usual coding style. The rest looks good.
>
> void mapBuffers(const std::vector<IPABuffer> &buffers) override;
> void unmapBuffers(const std::vector<unsigned int> &ids) override;
> @@ -62,7 +64,8 @@ private:
> uint32_t maxGain_;
> };
>
> -void IPAIPU3::configure(const std::map<uint32_t, ControlInfoMap> &entityControls)
> +void IPAIPU3::configure(const std::map<uint32_t, ControlInfoMap> &entityControls,
> + [[maybe_unused]] const Size &bdsOutputSize)
> {
> if (entityControls.empty())
> return;
> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
> index bb61ef4a..c9e3c5ef 100644
> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp
> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
> @@ -635,7 +635,7 @@ int PipelineHandlerIPU3::configure(Camera *camera, CameraConfiguration *c)
>
> std::map<uint32_t, ControlInfoMap> entityControls;
> entityControls.emplace(0, data->cio2_.sensor()->controls());
> - data->ipa_->configure(entityControls);
> + data->ipa_->configure(entityControls, config->imguConfig().bds);
>
> return 0;
> }
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list