[libcamera-devel] [PATCH 02/20] libcamera: pipeline: simple: Don't override stride at configure time
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Sun Jan 31 23:46:44 CET 2021
The stride (and frame size) calculation has been moved from configure
time to configuration validate time by commit 89fb1efac240 ("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: 89fb1efac240 ("libcamera: simple: Fill stride and frameSize at config validation")
Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
---
src/libcamera/pipeline/simple/converter.cpp | 10 ++++------
src/libcamera/pipeline/simple/converter.h | 2 +-
src/libcamera/pipeline/simple/simple.cpp | 2 +-
3 files changed, 6 insertions(+), 8 deletions(-)
diff --git a/src/libcamera/pipeline/simple/converter.cpp b/src/libcamera/pipeline/simple/converter.cpp
index a6a8e139cb3e..87d15c781ed8 100644
--- a/src/libcamera/pipeline/simple/converter.cpp
+++ b/src/libcamera/pipeline/simple/converter.cpp
@@ -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;
}
diff --git a/src/libcamera/pipeline/simple/converter.h b/src/libcamera/pipeline/simple/converter.h
index a3c4d899cfc8..06d66f8caba7 100644
--- a/src/libcamera/pipeline/simple/converter.h
+++ b/src/libcamera/pipeline/simple/converter.h
@@ -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);
diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp
index b7aa3d034568..a97b8442d9a4 100644
--- a/src/libcamera/pipeline/simple/simple.cpp
+++ b/src/libcamera/pipeline/simple/simple.cpp
@@ -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";
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list