libcamera: pipeline: simple: Don't override stride at configure time
The stride (and frame size) calculation has been moved from configure time to configuration validate time by commit89fb1efac2("libcamera: simple: Fill stride and frameSize at config validation"). This change has however left one stray setting of the stride when configuring the converter. Fix it. While at it, turn the SimpleConverter::configure() output configuration argument to a const reference to emphasize it can't be null and isn't modified by the function, and rename it from cfg to outputCfg to make its purpose clearer. Fixes:89fb1efac2("libcamera: simple: Fill stride and frameSize at config validation") Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Tested-by: Phi-Bang Nguyen <pnguyen@baylibre.com> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
@@ -134,7 +134,7 @@ SizeRange SimpleConverter::sizes(const Size &input)
|
||||
}
|
||||
|
||||
int SimpleConverter::configure(PixelFormat inputFormat, const Size &inputSize,
|
||||
StreamConfiguration *cfg)
|
||||
const StreamConfiguration &outputCfg)
|
||||
{
|
||||
V4L2DeviceFormat format;
|
||||
int ret;
|
||||
@@ -157,10 +157,10 @@ int SimpleConverter::configure(PixelFormat inputFormat, const Size &inputSize,
|
||||
}
|
||||
|
||||
/* Set the pixel format and size on the output. */
|
||||
videoFormat = m2m_->capture()->toV4L2PixelFormat(cfg->pixelFormat);
|
||||
videoFormat = m2m_->capture()->toV4L2PixelFormat(outputCfg.pixelFormat);
|
||||
format = {};
|
||||
format.fourcc = videoFormat;
|
||||
format.size = cfg->size;
|
||||
format.size = outputCfg.size;
|
||||
|
||||
ret = m2m_->capture()->setFormat(&format);
|
||||
if (ret < 0) {
|
||||
@@ -169,14 +169,12 @@ int SimpleConverter::configure(PixelFormat inputFormat, const Size &inputSize,
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (format.fourcc != videoFormat || format.size != cfg->size) {
|
||||
if (format.fourcc != videoFormat || format.size != outputCfg.size) {
|
||||
LOG(SimplePipeline, Error)
|
||||
<< "Output format not supported";
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
cfg->stride = format.planes[0].bpl;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ public:
|
||||
SizeRange sizes(const Size &input);
|
||||
|
||||
int configure(PixelFormat inputFormat, const Size &inputSize,
|
||||
StreamConfiguration *cfg);
|
||||
const StreamConfiguration &outputCfg);
|
||||
int exportBuffers(unsigned int count,
|
||||
std::vector<std::unique_ptr<FrameBuffer>> *buffers);
|
||||
|
||||
|
||||
@@ -604,7 +604,7 @@ int SimplePipelineHandler::configure(Camera *camera, CameraConfiguration *c)
|
||||
|
||||
if (useConverter_) {
|
||||
ret = converter_->configure(pipeConfig.pixelFormat,
|
||||
pipeConfig.captureSize, &cfg);
|
||||
pipeConfig.captureSize, cfg);
|
||||
if (ret < 0) {
|
||||
LOG(SimplePipeline, Error)
|
||||
<< "Unable to configure converter";
|
||||
|
||||
Reference in New Issue
Block a user