[PATCH v4 09/20] libcamera: converter: Add function to check if a stream was configured

Jacopo Mondi jacopo.mondi at ideasonboard.com
Mon Dec 16 19:08:46 CET 2024


Hi Stefan

On Mon, Dec 16, 2024 at 04:40:49PM +0100, Stefan Klug wrote:
> Add a isConfigured() function to be able to check if a given stream was
> configured in the converter. This is useful in pipelines to either query
> device or stream specific crop bounds depending on whether the stream is
> configured or not.
>
> Signed-off-by: Stefan Klug <stefan.klug at ideasonboard.com>

Reviewed-by: Jacopo Mondi <jacopo.mondi at ideasonboard.com>

Thanks
  j

>
> ---
>
> Changes in v4:
> - Added this patch
> ---
>  include/libcamera/internal/converter.h                    | 1 +
>  include/libcamera/internal/converter/converter_v4l2_m2m.h | 1 +
>  src/libcamera/converter.cpp                               | 7 +++++++
>  src/libcamera/converter/converter_v4l2_m2m.cpp            | 8 ++++++++
>  4 files changed, 17 insertions(+)
>
> diff --git a/include/libcamera/internal/converter.h b/include/libcamera/internal/converter.h
> index 04187a2a96e8..afea4624041b 100644
> --- a/include/libcamera/internal/converter.h
> +++ b/include/libcamera/internal/converter.h
> @@ -56,6 +56,7 @@ public:
>
>  	virtual int configure(const StreamConfiguration &inputCfg,
>  			      const std::vector<std::reference_wrapper<StreamConfiguration>> &outputCfgs) = 0;
> +	virtual bool isConfigured(const Stream *stream) const = 0;
>  	virtual int exportBuffers(const Stream *stream, unsigned int count,
>  				  std::vector<std::unique_ptr<FrameBuffer>> *buffers) = 0;
>
> diff --git a/include/libcamera/internal/converter/converter_v4l2_m2m.h b/include/libcamera/internal/converter/converter_v4l2_m2m.h
> index 402a803959b9..1ccbfc7c2d4e 100644
> --- a/include/libcamera/internal/converter/converter_v4l2_m2m.h
> +++ b/include/libcamera/internal/converter/converter_v4l2_m2m.h
> @@ -50,6 +50,7 @@ public:
>  	int configure(const StreamConfiguration &inputCfg,
>  		      const std::vector<std::reference_wrapper<StreamConfiguration>>
>  		      &outputCfg) override;
> +	bool isConfigured(const Stream *stream) const override;
>  	int exportBuffers(const Stream *stream, unsigned int count,
>  			  std::vector<std::unique_ptr<FrameBuffer>> *buffers) override;
>
> diff --git a/src/libcamera/converter.cpp b/src/libcamera/converter.cpp
> index 73c02fdcf4bb..09ebf4f57d12 100644
> --- a/src/libcamera/converter.cpp
> +++ b/src/libcamera/converter.cpp
> @@ -126,6 +126,13 @@ Converter::~Converter()
>   * \return 0 on success or a negative error code otherwise
>   */
>
> +/**
> + * \fn Converter::isConfigured()
> + * \brief Check if a given stream is configured
> + * \param[in] stream The output stream
> + * \return True if the \a stream is configured or false otherwise
> + */
> +
>  /**
>   * \fn Converter::exportBuffers()
>   * \brief Export buffers from the converter device
> diff --git a/src/libcamera/converter/converter_v4l2_m2m.cpp b/src/libcamera/converter/converter_v4l2_m2m.cpp
> index 342aa32dab52..83daca15b37e 100644
> --- a/src/libcamera/converter/converter_v4l2_m2m.cpp
> +++ b/src/libcamera/converter/converter_v4l2_m2m.cpp
> @@ -437,6 +437,14 @@ int V4L2M2MConverter::configure(const StreamConfiguration &inputCfg,
>  	return 0;
>  }
>
> +/**
> + * \copydoc libcamera::Converter::isConfigured
> + */
> +bool V4L2M2MConverter::isConfigured(const Stream *stream) const
> +{
> +	return streams_.find(stream) != streams_.end();
> +}
> +
>  /**
>   * \copydoc libcamera::Converter::exportBuffers
>   */
> --
> 2.43.0
>


More information about the libcamera-devel mailing list