[libcamera-devel] [PATCH v9 2/8] libcamera: Add ColorSpace fields to StreamConfiguration

Laurent Pinchart laurent.pinchart at ideasonboard.com
Tue Dec 7 14:35:59 CET 2021


Hi David,

Thank you for the patch.

The subject line should read

libcamera: stream: Add ColorSpace fields to StreamConfiguration

On Mon, Dec 06, 2021 at 10:50:25AM +0000, David Plowman wrote:
> This is so that applications can choose appropriate color spaces which
> will then be passed down to the V4L2 devices.
> 
> The ColorSpace field is actually optional. If it is not set you will
> get the driver's default color space.

s/driver/camera/ (from the point of view of the application, it doesn't
matter if the default comes from the driver or the pipeline handler)

> Signed-off-by: David Plowman <david.plowman at raspberrypi.com>
> Reviewed-by: Umang Jain <umang.jain at ideasonboard.com>
> Reviewed-by: Jacopo Mondi <jacopo at jmondi.org>

Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

> ---
>  include/libcamera/stream.h |  3 +++
>  src/libcamera/stream.cpp   | 20 ++++++++++++++++++++
>  2 files changed, 23 insertions(+)
> 
> diff --git a/include/libcamera/stream.h b/include/libcamera/stream.h
> index 41ec02b1..f0ae7e62 100644
> --- a/include/libcamera/stream.h
> +++ b/include/libcamera/stream.h
> @@ -12,6 +12,7 @@
>  #include <string>
>  #include <vector>
>  
> +#include <libcamera/color_space.h>
>  #include <libcamera/framebuffer.h>
>  #include <libcamera/geometry.h>
>  #include <libcamera/pixel_format.h>
> @@ -47,6 +48,8 @@ struct StreamConfiguration {
>  
>  	unsigned int bufferCount;
>  
> +	std::optional<ColorSpace> colorSpace;
> +
>  	Stream *stream() const { return stream_; }
>  	void setStream(Stream *stream) { stream_ = stream; }
>  	const StreamFormats &formats() const { return formats_; }
> diff --git a/src/libcamera/stream.cpp b/src/libcamera/stream.cpp
> index b421e17e..686e693b 100644
> --- a/src/libcamera/stream.cpp
> +++ b/src/libcamera/stream.cpp
> @@ -329,6 +329,26 @@ StreamConfiguration::StreamConfiguration(const StreamFormats &formats)
>   * \brief Requested number of buffers to allocate for the stream
>   */
>  
> +/**
> + * \var StreamConfiguration::colorSpace
> + * \brief The ColorSpace for this stream
> + *
> + * This field allows a ColorSpace to be selected for this Stream.
> + *
> + * The field is optional and an application can choose to leave it unset.
> + * Platforms that support the use of color spaces may provide default
> + * values through the generateConfiguration() method. An application can
> + * override these when necessary.
> + *
> + * If a specific ColorSpace is requested but the Camera cannot deliver it,
> + * then the StreamConfiguration will be adjusted to a value that can be
> + * delivered. In this case the validate() method will indicate via its
> + * return value that the CameraConfiguration has been adjusted.
> + *
> + * Note that platforms will typically have different constraints on what
> + * color spaces can be supported and in what combinations.
> + */
> +
>  /**
>   * \fn StreamConfiguration::stream()
>   * \brief Retrieve the stream associated with the configuration

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list