Message ID | 20211206105032.13876-3-david.plowman@raspberrypi.com |
---|---|
State | Superseded |
Headers | show |
Series |
|
Related | show |
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@raspberrypi.com> > Reviewed-by: Umang Jain <umang.jain@ideasonboard.com> > Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@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
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