[PATCH] pipeline: rpi: Avoid duplicating size range for the same pixel format
Jacopo Mondi
jacopo.mondi at ideasonboard.com
Fri Apr 26 15:06:04 CEST 2024
Hi David
On Thu, Apr 25, 2024 at 12:37:48PM +0100, Naushir Patuck wrote:
> 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).
Am I wrong or this mostly (only) apply to contiguous and non-contiguous
format versions ?
> >
> > 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()) {
Or
if (pf.isValid() && !deviceFormats.count(pf)) {
The change is anyway good!
Reviewed-by: Jacopo Mondi <jacopo.mondi at ideasonboard.com>
> > 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