diff --git a/sys/v4l2/gstv4l2object.c b/sys/v4l2/gstv4l2object.c index 9f7deafffa..59c04e1a6e 100644 --- a/sys/v4l2/gstv4l2object.c +++ b/sys/v4l2/gstv4l2object.c @@ -1303,6 +1303,41 @@ gst_v4l2_object_v4l2fourcc_to_video_format (guint32 fourcc) return format; } +static gboolean +gst_v4l2_object_v4l2fourcc_is_yuv (guint32 fourcc) +{ + gboolean ret = FALSE; + + switch (fourcc) { + case V4L2_PIX_FMT_NV12: + case V4L2_PIX_FMT_NV12M: + case V4L2_PIX_FMT_NV12MT: + case V4L2_PIX_FMT_NV21: + case V4L2_PIX_FMT_NV21M: + case V4L2_PIX_FMT_YVU410: + case V4L2_PIX_FMT_YUV410: + case V4L2_PIX_FMT_YUV420: + case V4L2_PIX_FMT_YUV420M: + case V4L2_PIX_FMT_YUYV: + case V4L2_PIX_FMT_YVU420: + case V4L2_PIX_FMT_UYVY: + case V4L2_PIX_FMT_YUV411P: + case V4L2_PIX_FMT_YUV422P: + case V4L2_PIX_FMT_YVYU: + case V4L2_PIX_FMT_NV16: + case V4L2_PIX_FMT_NV16M: + case V4L2_PIX_FMT_NV61: + case V4L2_PIX_FMT_NV61M: + case V4L2_PIX_FMT_NV24: + ret = TRUE; + break; + default: + break; + } + + return ret; +} + static GstStructure * gst_v4l2_object_v4l2fourcc_to_bare_struct (guint32 fourcc) { @@ -2092,6 +2127,10 @@ gst_v4l2_object_add_colorspace (GstV4l2Object * v4l2object, GstStructure * s, GValue colorimetry = G_VALUE_INIT; GstVideoColorimetry cinfo; + /* Don't expose colorimetry unless this is a YUV format */ + if (!gst_v4l2_object_v4l2fourcc_is_yuv (pixelformat)) + return; + memset (&fmt, 0, sizeof (fmt)); fmt.type = v4l2object->type; fmt.fmt.pix.width = width;