@@ -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
The window of the image that should be debayered must be aligned to the bayer pattern size. 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. Signed-off-by: Milan Zamazal <mzamazal@redhat.com> --- src/libcamera/software_isp/debayer_cpu.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+)