From 3e743ee8ebb13cadbc18175ced0462e99054d0d0 Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Sat, 26 Dec 2020 23:45:04 +0200 Subject: libcamera: pipeline: simple: converter: Configure input stride Use the stride of the video capture device to configure the converter input. This ensures that no stride mismatch occurs inadvertently along the pipeline. Signed-off-by: Laurent Pinchart Tested-by: Phi-Bang Nguyen Reviewed-by: Paul Elder Reviewed-by: Kieran Bingham --- src/libcamera/pipeline/simple/converter.cpp | 5 ++++- src/libcamera/pipeline/simple/simple.cpp | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'src/libcamera/pipeline/simple') diff --git a/src/libcamera/pipeline/simple/converter.cpp b/src/libcamera/pipeline/simple/converter.cpp index 6f4e41db..550b2bcf 100644 --- a/src/libcamera/pipeline/simple/converter.cpp +++ b/src/libcamera/pipeline/simple/converter.cpp @@ -159,6 +159,8 @@ int SimpleConverter::configure(const StreamConfiguration &inputCfg, V4L2DeviceFormat format; format.fourcc = videoFormat; format.size = inputCfg.size; + format.planesCount = 1; + format.planes[0].bpl = inputCfg.stride; ret = m2m_->output()->setFormat(&format); if (ret < 0) { @@ -167,7 +169,8 @@ int SimpleConverter::configure(const StreamConfiguration &inputCfg, return ret; } - if (format.fourcc != videoFormat || format.size != inputCfg.size) { + if (format.fourcc != videoFormat || format.size != inputCfg.size || + format.planes[0].bpl != inputCfg.stride) { LOG(SimplePipeline, Error) << "Input format not supported"; return -EINVAL; diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp index cb8309ca..2f6dff16 100644 --- a/src/libcamera/pipeline/simple/simple.cpp +++ b/src/libcamera/pipeline/simple/simple.cpp @@ -606,6 +606,7 @@ int SimplePipelineHandler::configure(Camera *camera, CameraConfiguration *c) StreamConfiguration inputCfg; inputCfg.pixelFormat = pipeConfig.pixelFormat; inputCfg.size = pipeConfig.captureSize; + inputCfg.stride = captureFormat.planes[0].bpl; ret = converter_->configure(inputCfg, cfg); if (ret < 0) { -- cgit v1.2.1