[PATCH] pipeline: rpi: Avoid duplicating size range for the same pixel format
Naushir Patuck
naush at raspberrypi.com
Thu Apr 25 13:37:48 CEST 2024
Hi David,
Thank you for this patch.
On Thu, 25 Apr 2024 at 11:52, David Plowman
<david.plowman at raspberrypi.com> wrote:
>
> Some V4L2 formats translate to the same pixel format, e.g. YU12 and
> YM12 both produce YUV420. In this case our ISP driver advertises the
> same size range for both, but we must not record the same thing twice
> for the same pixel format (which will cause a failure later on).
>
> Instead, ignore the V4l2 format if the pixel format has already been
> seen.
>
> Signed-off-by: David Plowman <david.plowman at raspberrypi.com>
Reviewed-by: Naushir Patuck <naush at raspberrypi.com>
> ---
> src/libcamera/pipeline/rpi/common/pipeline_base.cpp | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp
> index 7e420b3f..0034e06d 100644
> --- a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp
> +++ b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp
> @@ -474,7 +474,11 @@ PipelineHandlerBase::generateConfiguration(Camera *camera, Span<const StreamRole
> */
> for (const auto &format : fmts) {
> PixelFormat pf = format.first.toPixelFormat();
> - if (pf.isValid()) {
> + /*
> + * Some V4L2 formats translate to the same pixel format (e.g. YU12, YM12
> + * both give YUV420). We must avoid duplicating the range in this case.
> + */
> + if (pf.isValid() && deviceFormats.find(pf) == deviceFormats.end()) {
> const SizeRange &ispSizes = format.second[0];
> deviceFormats[pf].emplace_back(ispSizes.min, sensorSize,
> ispSizes.hStep, ispSizes.vStep);
> --
> 2.39.2
>
More information about the libcamera-devel
mailing list