summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-12-26 23:45:04 +0200
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2021-03-03 00:58:59 +0200
commit29bd5583c4ebbd62583c12d76d5d0aceb300b649 (patch)
treef7ea877006e96b34cef9fc2dee1bd6a09f1951f4 /src
parent96bcf66ac7c079f5a5a6edfe075aed7529a683c9 (diff)
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 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@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>
Diffstat (limited to 'src')
-rw-r--r--src/libcamera/pipeline/simple/converter.cpp10
-rw-r--r--src/libcamera/pipeline/simple/converter.h2
-rw-r--r--src/libcamera/pipeline/simple/simple.cpp2
3 files changed, 6 insertions, 8 deletions
diff --git a/src/libcamera/pipeline/simple/converter.cpp b/src/libcamera/pipeline/simple/converter.cpp
index a6a8e139..87d15c78 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 a3c4d899..06d66f8c 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 ea1a2314..1f396612 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";