Commit 718d2153 authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Mauro Carvalho Chehab
Browse files

media: v4l2: Make colorspace validity checks more future-proof



The helper functions that test validity of colorspace-related fields
use the last value of the corresponding enums. This isn't very
future-proof, as there's a high chance someone adding a new value may
forget to update the helpers. Add new "LAST" entries to the enumerations
to improve this, and keep them private to the kernel.

Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
Reviewed-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
parent b0afed23
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -563,19 +563,19 @@ static inline void v4l2_buffer_set_timestamp(struct v4l2_buffer *buf,
static inline bool v4l2_is_colorspace_valid(__u32 colorspace)
{
	return colorspace > V4L2_COLORSPACE_DEFAULT &&
	       colorspace <= V4L2_COLORSPACE_DCI_P3;
	       colorspace < V4L2_COLORSPACE_LAST;
}

static inline bool v4l2_is_xfer_func_valid(__u32 xfer_func)
{
	return xfer_func > V4L2_XFER_FUNC_DEFAULT &&
	       xfer_func <= V4L2_XFER_FUNC_SMPTE2084;
	       xfer_func < V4L2_XFER_FUNC_LAST;
}

static inline bool v4l2_is_ycbcr_enc_valid(__u8 ycbcr_enc)
{
	return ycbcr_enc > V4L2_YCBCR_ENC_DEFAULT &&
	       ycbcr_enc <= V4L2_YCBCR_ENC_SMPTE240M;
	       ycbcr_enc < V4L2_YCBCR_ENC_LAST;
}

static inline bool v4l2_is_hsv_enc_valid(__u8 hsv_enc)
+22 −0
Original line number Diff line number Diff line
@@ -245,6 +245,14 @@ enum v4l2_colorspace {

	/* DCI-P3 colorspace, used by cinema projectors */
	V4L2_COLORSPACE_DCI_P3        = 12,

#ifdef __KERNEL__
	/*
	 * Largest supported colorspace value, assigned by the compiler, used
	 * by the framework to check for invalid values.
	 */
	V4L2_COLORSPACE_LAST,
#endif
};

/*
@@ -283,6 +291,13 @@ enum v4l2_xfer_func {
	V4L2_XFER_FUNC_NONE        = 5,
	V4L2_XFER_FUNC_DCI_P3      = 6,
	V4L2_XFER_FUNC_SMPTE2084   = 7,
#ifdef __KERNEL__
	/*
	 * Largest supported transfer function value, assigned by the compiler,
	 * used by the framework to check for invalid values.
	 */
	V4L2_XFER_FUNC_LAST,
#endif
};

/*
@@ -343,6 +358,13 @@ enum v4l2_ycbcr_encoding {

	/* SMPTE 240M -- Obsolete HDTV */
	V4L2_YCBCR_ENC_SMPTE240M      = 8,
#ifdef __KERNEL__
	/*
	 * Largest supported encoding value, assigned by the compiler, used by
	 * the framework to check for invalid values.
	 */
	V4L2_YCBCR_ENC_LAST,
#endif
};

/*