[libcamera-devel] [PATCH] gstreamer: Support planar formats

Laurent Pinchart laurent.pinchart at ideasonboard.com
Tue Sep 21 18:51:16 CEST 2021


On Tue, Sep 21, 2021 at 06:44:10PM +0200, Jean-Michel Hautbois wrote:
> On 21/09/2021 18:40, Laurent Pinchart wrote:
> > On Tue, Sep 21, 2021 at 04:35:15PM +0100, Kieran Bingham wrote:
> >> Existing pipeline handlers already support planar YUV formats.
> >> Extend the gstreamer format map to incorporate them.
> >>
> >> While here, split the formats into distinct groups.
> >>
> >> Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> >> ---
> >>  src/gstreamer/gstlibcamera-utils.cpp | 13 +++++++++++++
> >>  1 file changed, 13 insertions(+)
> >>
> >> diff --git a/src/gstreamer/gstlibcamera-utils.cpp b/src/gstreamer/gstlibcamera-utils.cpp
> >> index 0af91c1acb67..5636f3e7e1a6 100644
> >> --- a/src/gstreamer/gstlibcamera-utils.cpp
> >> +++ b/src/gstreamer/gstlibcamera-utils.cpp
> >> @@ -16,19 +16,32 @@ static struct {
> >>  	GstVideoFormat gst_format;
> >>  	PixelFormat format;
> >>  } format_map[] = {
> >> +	/* Compressed */
> >>  	{ GST_VIDEO_FORMAT_ENCODED, formats::MJPEG },
> >> +
> >> +	/* RGB */
> >>  	{ GST_VIDEO_FORMAT_RGB, formats::BGR888 },
> >>  	{ GST_VIDEO_FORMAT_BGR, formats::RGB888 },
> >>  	{ GST_VIDEO_FORMAT_ARGB, formats::BGRA8888 },
> >> +
> >> +	/* YUV Semiplanar */
> >>  	{ GST_VIDEO_FORMAT_NV12, formats::NV12 },
> >>  	{ GST_VIDEO_FORMAT_NV21, formats::NV21 },
> >>  	{ GST_VIDEO_FORMAT_NV16, formats::NV16 },
> >>  	{ GST_VIDEO_FORMAT_NV61, formats::NV61 },
> >>  	{ GST_VIDEO_FORMAT_NV24, formats::NV24 },
> >> +
> >> +	/* YUV Packed */
> >>  	{ GST_VIDEO_FORMAT_UYVY, formats::UYVY },
> >>  	{ GST_VIDEO_FORMAT_VYUY, formats::VYUY },
> >>  	{ GST_VIDEO_FORMAT_YUY2, formats::YUYV },
> >>  	{ GST_VIDEO_FORMAT_YVYU, formats::YVYU },
> >> +
> >> +	/* Planar Formats */
> >> +	{ GST_VIDEO_FORMAT_I420, formats::YUV420 },
> >> +	{ GST_VIDEO_FORMAT_YV12, formats::YVU420 },
> >> +	{ GST_VIDEO_FORMAT_Y42B, formats::YUV422 },
> > 
> > I would have put the planar formats just after the semi-planar, but that
> > doesn't matter much.
> > 
> > Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> > 
> >> +
> >>  	/* \todo NV42 is used in libcamera but is not mapped in GStreamer yet. */
> 
> Isn't it the right time for it ? Or is there a big issue to solve to
> remove this todo ?

As far as I know, GStreamer doesn't have a semi-planar YUV 4:4:4 format
with the chroma data interleaved in VU order
(https://gstreamer.freedesktop.org/documentation/video/video-format.html).

> For the patch:
> Reviewed-by: Jean-Michel Hautbois <jeanmichel.hautbois at ideasonboard.com>
> 
> >>  };
> >>  

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list