Message ID | 20250911135144.56586-4-mzamazal@redhat.com |
---|---|
State | Superseded |
Headers | show |
Series |
|
Related | show |
On 9/11/25 15:51, Milan Zamazal wrote: > The window of the image that should be debayered must be aligned to the > bayer pattern size (this is a requirement of the current debayering > implementation). This is already ensured for the window corner > coordinates but not for the window sizes. > > We can either make the window sizes aligned similarly to how the window > corner coordinates are aligned or reject an unaligned configuration. > This patches chooses the latter as using a different window size than > the requested output size could lead to artefacts. Since such a > situation is not expected to occur in correctly set up environments, the > change should have no negative impact. > > Reviewed-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com> > Signed-off-by: Milan Zamazal <mzamazal@redhat.com> > --- Reviewed-by: Maciej S. Szmigiero <mail@maciej.szmigiero.name> Thanks, Maciej
diff --git a/src/libcamera/software_isp/debayer_cpu.cpp b/src/libcamera/software_isp/debayer_cpu.cpp index 185edd814..3200b0c53 100644 --- a/src/libcamera/software_isp/debayer_cpu.cpp +++ b/src/libcamera/software_isp/debayer_cpu.cpp @@ -539,7 +539,17 @@ int DebayerCpu::configure(const StreamConfiguration &inputCfg, window_.y = ((inputCfg.size.height - outputCfg.size.height) / 2) & ~(inputConfig_.patternSize.height - 1); window_.width = outputCfg.size.width; + if (window_.width % inputConfig_.patternSize.width != 0) { + LOG(Debayer, Error) + << "Output width is not a multiple of the bayer pattern width"; + return -EINVAL; + } window_.height = outputCfg.size.height; + if (window_.height % inputConfig_.patternSize.height != 0) { + LOG(Debayer, Error) + << "Output height is not a multiple of the bayer pattern height"; + return -EINVAL; + } /* * Set the stats window to the whole processed window. Its coordinates are