[libcamera-devel] [PATCH 04/20] libcamera: pipeline: simple: converter: Use StreamConfiguration for input configuration
paul.elder at ideasonboard.com
paul.elder at ideasonboard.com
Wed Feb 17 11:05:40 CET 2021
Hi Laurent,
On Mon, Feb 01, 2021 at 12:46:46AM +0200, Laurent Pinchart wrote:
> Group the configuration parameters for the converter input in a
> StreamConfiguration instance. This makes the configure() function
> signature cleaner, and will allow passing additional parameters (such as
> stride and buffer count).
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder at ideasonboard.com>
> ---
> src/libcamera/pipeline/simple/converter.cpp | 12 +++++++-----
> src/libcamera/pipeline/simple/converter.h | 2 +-
> src/libcamera/pipeline/simple/simple.cpp | 7 +++++--
> 3 files changed, 13 insertions(+), 8 deletions(-)
>
> diff --git a/src/libcamera/pipeline/simple/converter.cpp b/src/libcamera/pipeline/simple/converter.cpp
> index 8f54caaca983..6f4e41db2e00 100644
> --- a/src/libcamera/pipeline/simple/converter.cpp
> +++ b/src/libcamera/pipeline/simple/converter.cpp
> @@ -148,15 +148,17 @@ SimpleConverter::strideAndFrameSize(const PixelFormat &pixelFormat,
> return std::make_tuple(format.planes[0].bpl, format.planes[0].size);
> }
>
> -int SimpleConverter::configure(PixelFormat inputFormat, const Size &inputSize,
> +int SimpleConverter::configure(const StreamConfiguration &inputCfg,
> const StreamConfiguration &outputCfg)
> {
> - V4L2DeviceFormat format;
> int ret;
>
> - V4L2PixelFormat videoFormat = m2m_->output()->toV4L2PixelFormat(inputFormat);
> + V4L2PixelFormat videoFormat =
> + m2m_->output()->toV4L2PixelFormat(inputCfg.pixelFormat);
> +
> + V4L2DeviceFormat format;
> format.fourcc = videoFormat;
> - format.size = inputSize;
> + format.size = inputCfg.size;
>
> ret = m2m_->output()->setFormat(&format);
> if (ret < 0) {
> @@ -165,7 +167,7 @@ int SimpleConverter::configure(PixelFormat inputFormat, const Size &inputSize,
> return ret;
> }
>
> - if (format.fourcc != videoFormat || format.size != inputSize) {
> + if (format.fourcc != videoFormat || format.size != inputCfg.size) {
> LOG(SimplePipeline, Error)
> << "Input format not supported";
> return -EINVAL;
> diff --git a/src/libcamera/pipeline/simple/converter.h b/src/libcamera/pipeline/simple/converter.h
> index 07a632abd8f6..47a056e582d6 100644
> --- a/src/libcamera/pipeline/simple/converter.h
> +++ b/src/libcamera/pipeline/simple/converter.h
> @@ -38,7 +38,7 @@ public:
> std::tuple<unsigned int, unsigned int>
> strideAndFrameSize(const PixelFormat &pixelFormat, const Size &size);
>
> - int configure(PixelFormat inputFormat, const Size &inputSize,
> + int configure(const StreamConfiguration &inputCfg,
> 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 4e3127814b89..0a53fa934261 100644
> --- a/src/libcamera/pipeline/simple/simple.cpp
> +++ b/src/libcamera/pipeline/simple/simple.cpp
> @@ -603,8 +603,11 @@ int SimplePipelineHandler::configure(Camera *camera, CameraConfiguration *c)
> useConverter_ = config->needConversion();
>
> if (useConverter_) {
> - ret = converter_->configure(pipeConfig.pixelFormat,
> - pipeConfig.captureSize, cfg);
> + StreamConfiguration inputCfg;
> + inputCfg.pixelFormat = pipeConfig.pixelFormat;
> + inputCfg.size = pipeConfig.captureSize;
> +
> + ret = converter_->configure(inputCfg, cfg);
> if (ret < 0) {
> LOG(SimplePipeline, Error)
> << "Unable to configure converter";
> --
> Regards,
>
> Laurent Pinchart
>
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel at lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel
More information about the libcamera-devel
mailing list