[libcamera-devel] [PATCH v2] pipeline: raspberrypi: Fix incorrect advertising of ScalerCrop

David Plowman david.plowman at raspberrypi.com
Tue Jul 5 16:01:41 CEST 2022


Hi Naush

Thanks for the new version!

On Tue, 5 Jul 2022 at 14:59, Naushir Patuck <naush at raspberrypi.com> wrote:
>
> The controls::ScalerCrop in the ControlInfoMap was advertised based on the ISP
> output Rectangle. This is incorrect, it needs to be set based on the sensor
> output Rectangle. Fix this.
>
> Additionally, do not use emplace to be consistent with the other controls set
> in the ControlInfoMap.
>
> Fixes: 9dacde0d651d (pipeline: raspberrypi: Advertise ScalerCrop from the pipeline handler)
> Reported-by: David Plowman <david.plowman at raspberrypi.com>
> Signed-off-by: Naushir Patuck <naush at raspberrypi.com>
> ---
>  src/libcamera/pipeline/raspberrypi/raspberrypi.cpp | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
> index 66a84b1dfb97..fdc24cd530c2 100644
> --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
> +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
> @@ -946,8 +946,9 @@ int PipelineHandlerRPi::configure(Camera *camera, CameraConfiguration *config)
>                 ctrlMap.emplace(c.first, c.second);
>
>         /* Add the ScalerCrop control limits based on the current mode. */
> -       ctrlMap.emplace(&controls::ScalerCrop,
> -                       ControlInfo(Rectangle(data->ispMinCropSize_), Rectangle(data->sensorInfo_.outputSize)));
> +       Rectangle ispMinCrop(data->ispMinCropSize_);
> +       ispMinCrop.scaleBy(data->sensorInfo_.analogCrop.size(), data->sensorInfo_.outputSize);
> +       ctrlMap[&controls::ScalerCrop] = ControlInfo(ispMinCrop, Rectangle(data->sensorInfo_.analogCrop.size()));

Yep, I think I'm good with this now!

Reviewed-by: David Plowman <david.plowman at raspberrypi.com>
Tested-by: David Plowman <david.plowman at raspberrypi.com>

Thanks
David

>
>         data->controlInfo_ = ControlInfoMap(std::move(ctrlMap), result.controlInfo.idmap());
>
> --
> 2.25.1
>


More information about the libcamera-devel mailing list