[PATCH v1 0/7] Raspberry Pi: Add controls::rpi::ScalerCrops
Naushir Patuck
naush at raspberrypi.com
Tue Aug 27 09:32:32 CEST 2024
Hi all,
Gentle ping for any feedback on this please?
Thanks,
Naush
On Thu, 8 Aug 2024 at 11:23, Naushir Patuck <naush at raspberrypi.com> wrote:
>
> Hi,
>
> This patch series adds preliminary support for setting individual crop
> rectangles for each ISP output stream. The current ScalerCrop control takes a
> single rectangle and applies it to all output streams. In this series, we define
> a new rpi::ScalerCrops vendor control that takes a span of rectangles, one for
> each output stream. The behaviour of the existing ScalerCrop control remains
> unchanged.
>
> One example of the use of this feature is when generating low resolution images
> for AI inferencing. Typically, vision neural network models are trained on
> square dimension image with 1:1 aspect ratio (e.g. 640x640 or 320x320). If an
> application requests, say, a 1920x1080 (16:9) output stream + 640x640 (1:1)
> inference stream, then the latter images end up squished and distorted. This
> affects the performance of the neural network. By allowing separate crops on
> each stream, the inference stream can preserve the pixel aspect ratio for any
> requested resolution.
>
> Note that VC4 based platforms cannot apply different crops to each output,
> whereas the PiSP/Pi5 platform can. However, all the infrastructure for this
> change lives in the core pipeline handler shared by both platforms.
>
> Thanks,
> Naush
>
> Naushir Patuck (7):
> controls: rpi: Add a vendor rpi::ScalerCrops control
> pipeline: rpi: Remove CameraData::scalerCrop_
> pipeline: rpi: Pass crop rectangle as a parameter to
> platformSetIspCrop()
> pipeline: rpi: Introduce CameraData::CropParams
> pipeline: rpi: Track which ISP output is configured for a stream
> pipeline: rpi: Pass ISP output index into platformSetIspCrop()
> pipeline: rpi: Handler controls::rpi::ScalerCrops
>
> src/ipa/rpi/common/ipa_base.cpp | 2 +
> src/libcamera/control_ids_rpi.yaml | 15 ++++
> .../pipeline/rpi/common/pipeline_base.cpp | 84 +++++++++++++------
> .../pipeline/rpi/common/pipeline_base.h | 26 +++++-
> src/libcamera/pipeline/rpi/vc4/vc4.cpp | 18 ++--
> 5 files changed, 112 insertions(+), 33 deletions(-)
>
> --
> 2.34.1
>
More information about the libcamera-devel
mailing list