gstreamer: Add Y444 format support to the YUV list
diff mbox series

Message ID 20250317161050.2008382-1-antoine.bouyer@nxp.com
State New
Headers show
Series
  • gstreamer: Add Y444 format support to the YUV list
Related show

Commit Message

Antoine Bouyer March 17, 2025, 4:10 p.m. UTC
'imx8-isi' pipeline provides support for 'YUV444' PixelFormat with YUV
streams, but it cannot be played with gstreamer adapter whereas
gstreamer's video format 'Y444' value suggests that it also supports
this format.

To add support of Planar 4:4:4 YUV format in gstreamer adapter, this patch
maps 'Y444' gstreamer video format with 'YUV444' libcamera PixelFormat.

Then below command example can be used to capture a stream with imx8-isi
pipeline:

  gst-launch-1.0 \
      libcamerasrc camera-name=<your_camera_name> ! \
      video/x-raw, format=Y444, width=1280, height=800 ! \
      queue ! \
      filesink location=/tmp/output

Signed-off-by: Antoine Bouyer <antoine.bouyer@nxp.com>
---
 src/gstreamer/gstlibcamera-utils.cpp | 1 +
 1 file changed, 1 insertion(+)

Comments

Kieran Bingham March 17, 2025, 5:52 p.m. UTC | #1
Quoting Antoine Bouyer (2025-03-17 16:10:50)
> 'imx8-isi' pipeline provides support for 'YUV444' PixelFormat with YUV
> streams, but it cannot be played with gstreamer adapter whereas
> gstreamer's video format 'Y444' value suggests that it also supports
> this format.

'Suggests'? I think we can be a bit more confident in the wording that
we expect Y444 from gstreamer to be mapped to the YUV444 from libcamera.

I assume you have tested this as well, so we can 'confirm' that this is
indeed the correct format mappings ?

> 
> To add support of Planar 4:4:4 YUV format in gstreamer adapter, this patch
> maps 'Y444' gstreamer video format with 'YUV444' libcamera PixelFormat.
> 
> Then below command example can be used to capture a stream with imx8-isi
> pipeline:
> 
>   gst-launch-1.0 \
>       libcamerasrc camera-name=<your_camera_name> ! \
>       video/x-raw, format=Y444, width=1280, height=800 ! \
>       queue ! \
>       filesink location=/tmp/output

Not always something we would have in the commit message, but I think
clearly stating how this is tested here is useful!

> 
> Signed-off-by: Antoine Bouyer <antoine.bouyer@nxp.com>

Overall, that's an easy one :-)

Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>

> ---
>  src/gstreamer/gstlibcamera-utils.cpp | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/src/gstreamer/gstlibcamera-utils.cpp b/src/gstreamer/gstlibcamera-utils.cpp
> index a466b30..41eea7d 100644
> --- a/src/gstreamer/gstlibcamera-utils.cpp
> +++ b/src/gstreamer/gstlibcamera-utils.cpp
> @@ -74,6 +74,7 @@ static struct {
>         { GST_VIDEO_FORMAT_I420, formats::YUV420 },
>         { GST_VIDEO_FORMAT_YV12, formats::YVU420 },
>         { GST_VIDEO_FORMAT_Y42B, formats::YUV422 },
> +       { GST_VIDEO_FORMAT_Y444, formats::YUV444 },
>  
>         /* YUV Packed */
>         { GST_VIDEO_FORMAT_UYVY, formats::UYVY },
> -- 
> 2.34.1
>

Patch
diff mbox series

diff --git a/src/gstreamer/gstlibcamera-utils.cpp b/src/gstreamer/gstlibcamera-utils.cpp
index a466b30..41eea7d 100644
--- a/src/gstreamer/gstlibcamera-utils.cpp
+++ b/src/gstreamer/gstlibcamera-utils.cpp
@@ -74,6 +74,7 @@  static struct {
 	{ GST_VIDEO_FORMAT_I420, formats::YUV420 },
 	{ GST_VIDEO_FORMAT_YV12, formats::YVU420 },
 	{ GST_VIDEO_FORMAT_Y42B, formats::YUV422 },
+	{ GST_VIDEO_FORMAT_Y444, formats::YUV444 },
 
 	/* YUV Packed */
 	{ GST_VIDEO_FORMAT_UYVY, formats::UYVY },