[libcamera-devel] [PATCH v2 2/4] gstreamer: Update the obtained colorimetry in caps.

Vedant Paranjape vedantparanjape160201 at gmail.com
Thu Jul 7 14:17:18 CEST 2022


Hello Rishikesh,

On Thu, Jul 7, 2022 at 11:45 AM Rishikesh Donadkar
<rishikeshdonadkar at gmail.com> wrote:
>
> If the colorspace is set in the StreamConfiguration, get the colorimetry as
> a result of conversion from the previous patch and update it into the caps.
>
> If the colorimetry corresponding to the colorspace set in the
> StreamConfiguration is not available in GStreamer set the colorimetry
> field to nullptr in the caps (this will fail the negotiation).
>
> Signed-off-by: Rishikesh Donadkar <rishikeshdonadkar at gmail.com>
> ---
>  src/gstreamer/gstlibcamera-utils.cpp | 15 +++++++++++++++
>  1 file changed, 15 insertions(+)
>
> diff --git a/src/gstreamer/gstlibcamera-utils.cpp b/src/gstreamer/gstlibcamera-utils.cpp
> index 60ac8c8e..eb9c49da 100644
> --- a/src/gstreamer/gstlibcamera-utils.cpp
> +++ b/src/gstreamer/gstlibcamera-utils.cpp
> @@ -166,11 +166,26 @@ gst_libcamera_stream_configuration_to_caps(const StreamConfiguration &stream_cfg
>  {
>         GstCaps *caps = gst_caps_new_empty();
>         GstStructure *s = bare_structure_from_format(stream_cfg.pixelFormat);
> +       gchar *colorimetry = nullptr;
> +       std::optional<ColorSpace> colorspace = stream_cfg.colorSpace;
>
>         gst_structure_set(s,
>                           "width", G_TYPE_INT, stream_cfg.size.width,
>                           "height", G_TYPE_INT, stream_cfg.size.height,
>                           nullptr);
> +
> +       if (colorspace) {
> +               colorimetry = colorimerty_from_colorspace(colorspace);

s/colorimerty_from_colorspace/colorimetry_from_colorspace

> +               if (colorimetry) {
> +                       gst_structure_set(s, "colorimetry", G_TYPE_STRING, colorimetry, nullptr);
> +               } else {
> +                       gst_structure_set(s, "colorimetry", G_TYPE_STRING, nullptr, nullptr);
> +                       g_free(colorimetry);
> +               }
> +       } else {
> +               g_free(colorimetry);
> +       }
> +
>         gst_caps_append_structure(caps, s);
>
>         return caps;
> --
> 2.25.1
>


More information about the libcamera-devel mailing list