[PATCH 3/4] gstreamer: Enable bayer formats with 10/12/14/16 bits

Nicolas Dufresne nicolas at ndufresne.ca
Tue Apr 22 16:38:21 CEST 2025


Le mardi 22 avril 2025 à 16:11 +0200, Jaslo Ziska a écrit :
> GStreamer supports 10/12/14/16-bit bayer formats since version 1.24.
> 
> Signed-off-by: Jaslo Ziska <jaslo at ziska.de>
> ---
>  src/gstreamer/gstlibcamera-utils.cpp | 18 +++++++++++++++++-
>  1 file changed, 17 insertions(+), 1 deletion(-)
> 
> diff --git a/src/gstreamer/gstlibcamera-utils.cpp
> b/src/gstreamer/gstlibcamera-utils.cpp
> index 41eea7d8..ddbeb578 100644
> --- a/src/gstreamer/gstlibcamera-utils.cpp
> +++ b/src/gstreamer/gstlibcamera-utils.cpp
> @@ -20,7 +20,7 @@ static struct {
>  	/* Compressed */
>  	{ GST_VIDEO_FORMAT_ENCODED, formats::MJPEG },
>  
> -	/* Bayer formats, gstreamer only supports 8-bit */
> +	/* Bayer formats */
>  	{ GST_VIDEO_FORMAT_ENCODED, formats::SBGGR8 },
>  	{ GST_VIDEO_FORMAT_ENCODED, formats::SGBRG8 },
>  	{ GST_VIDEO_FORMAT_ENCODED, formats::SGRBG8 },
> @@ -325,6 +325,22 @@ bare_structure_from_format(const PixelFormat
> &format)
>  	case formats::SGBRG8:
>  	case formats::SGRBG8:
>  	case formats::SRGGB8:
> +	case formats::SBGGR10:
> +	case formats::SGBRG10:
> +	case formats::SGRBG10:
> +	case formats::SRGGB10:
> +	case formats::SBGGR12:
> +	case formats::SGBRG12:
> +	case formats::SGRBG12:
> +	case formats::SRGGB12:
> +	case formats::SBGGR14:
> +	case formats::SGBRG14:
> +	case formats::SGRBG14:
> +	case formats::SRGGB14:
> +	case formats::SBGGR16:
> +	case formats::SGBRG16:
> +	case formats::SGRBG16:
> +	case formats::SRGGB16:
>  		return gst_structure_new("video/x-bayer", "format",
> G_TYPE_STRING,
>  					
> bayer_format_to_string(format), nullptr);

May I suggest to make bayer the default case ? That simply mean that we
need to handle the case where bayer_format_to_string() returns nullptr.
And this way we don't have to update things in two places.

Nicolas


More information about the libcamera-devel mailing list