[libcamera-devel] [PATCH v6 0/1] Provide multiple colorimetry for libcamerasrc.

Umang Jain umang.jain at ideasonboard.com
Mon Sep 19 07:45:09 CEST 2022


Hi Rishi,

Thank you for the test results

On 9/19/22 8:27 AM, Rishikesh Donadkar wrote:
> GStreamer pipeline supports passing multiple colorimetry as a comma
> separated list.
>
> For Example :
>
> gst-launch-1.0 libcamerasrc ! "video/x-raw,colorimetry={bt2020,bt709,sRGB}" ! glimagesink
>
> In this case, if supported by the camera one of bt2020, bt709, sRGB
> should be applied.
>
> This series aims to adds multiple colorimetry support to the libcamera
> gstreamer element.
>
> ---
> changes from v1 to v2:
> - Moved the function colorspace_from_colorimetry() from PATCH 1/2 to
>    PATCH 2/2.
>
> changes from v2 to v3:
> - Rebase on top of [v3 PATCH 4/4] gstreamer: Provide colorimetry <> ColorSpace mappings.
> - Use the comparator utility function gst_video_colorimetry_is_equal()
>    to cut down code.
> - Rename dup_stream_cfg to pristine_stream_cfg.
> - Log the colorimetry that is selected from the list.
> - Change the API for the function gst_libcamera_configure_stream_from_caps()
>    to pass pass state->config_ here instead of taking it in a holder
>    variable reference.
>
> changes from v3 to v4:
> - Discard the approach form expanding the colorimetry list through caps
>    normalization. Instead enumerate the colorimetry list and try out the
>    colorimetry.
> - Add error checking for invalid colorimetry.
>
> changes for v4 to v5:
> - Use gboolean instead of int. Return true/false.
> - Add else if for the mutually exclusive conditions.
> - Add final else to trace if anything other than a string or a list is
>    passed in the colorimetry field by the user.
>
> changes from v5 to v6:
> - Compare colorspace instead of colorimetry, this will reduce the
>    colorimetry<->colorspace conversion.
> - Compare the colorspace applied directly with the colorimetry requested
>    in the caps.
> ---
>
> ----
> Test results(on RPi 4 + OV5647):
> gst-launch-1.0 libcamerasrc ! "video/x-raw,colorimetry={bt2020,bt709,sRGB}" ! glimagesink
> Selected colorimetry bt709
>
> gst-launch-1.0 libcamerasrc ! "video/x-raw,colorimetry={sRGB,bt601,bt2020,bt709}" ! glimagesink
> Negotiation fails on bt601.
>
> gst-launch-1.0 libcamerasrc ! "video/x-raw,colorimetry={sRGB,bt601,bt2020,bt709,2:4:5:4}" ! glimagesink
> Selected colorimetry bt601.

This is confusing, are you sure this isn't a typo?

The test number results #2 and #3 have same initial colorimetry members 
(sRGB, bt601,...) , so should be parsed in the same way, how come one 
fails at bt601 and other one doesn't at bt601 ?

As mentioned earlier. bt601 doesn't have 1:1 mapping to the kernel 
colorspace[1], hence we need to look at it separately. I would avoid 
using that as the same for testing it, until we assess the scope of that 
work.

[1] 
https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/724/diffs
>
> gst-launch-1.0 libcamerasrc ! "video/x-raw,colorimetry={sRGB,bt709,bt2020,bt601}" ! glimagesink
> Selected colorimetry bt709
> ----
>
> Rishikesh Donadkar (1):
>    gstreamer: Provide multiple colorimetry support for libcamerasrc
>
>   src/gstreamer/gstlibcamera-utils.cpp | 49 +++++++++++++++++++++++-----
>   src/gstreamer/gstlibcamera-utils.h   |  4 ++-
>   src/gstreamer/gstlibcamerasrc.cpp    |  2 +-
>   3 files changed, 44 insertions(+), 11 deletions(-)
>



More information about the libcamera-devel mailing list