[libcamera-devel] [PATCH v2] gstreamer: Support planar formats
Kieran Bingham
kieran.bingham at ideasonboard.com
Wed Sep 22 12:44:54 CEST 2021
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>
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Reviewed-by: Jean-Michel Hautbois <jeanmichel.hautbois at ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder at ideasonboard.com>
---
v2:
- Move Planar formats to after Semiplanar, and remove redundant
'Formats' description keyword.
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..e1af30c835c4 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 Planar */
+ { GST_VIDEO_FORMAT_I420, formats::YUV420 },
+ { GST_VIDEO_FORMAT_YV12, formats::YVU420 },
+ { GST_VIDEO_FORMAT_Y42B, formats::YUV422 },
+
+ /* 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 },
+
/* \todo NV42 is used in libcamera but is not mapped in GStreamer yet. */
};
--
2.30.2
More information about the libcamera-devel
mailing list