| From f4b4deb8ecebeb058629d1c33c0121860002da2a Mon Sep 17 00:00:00 2001 |
| From: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com> |
| Date: Mon, 22 Aug 2016 06:28:07 -0300 |
| Subject: [PATCH 158/299] [media] videodev2.h Add HSV encoding |
| |
| Some hardware maps the Hue between 0 and 255 instead of 0-179. Support |
| this format with a new field hsv_enc. |
| |
| Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com> |
| Acked-by: Hans Verkuil <hans.verkuil@cisco.com> |
| Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com> |
| (cherry picked from commit 8a0d62af93026de424d75906e3651ba653197668) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| --- |
| include/uapi/linux/videodev2.h | 32 +++++++++++++++++++++++++++----- |
| 1 file changed, 27 insertions(+), 5 deletions(-) |
| |
| --- a/include/uapi/linux/videodev2.h |
| +++ b/include/uapi/linux/videodev2.h |
| @@ -335,6 +335,19 @@ enum v4l2_ycbcr_encoding { |
| }; |
| |
| /* |
| + * enum v4l2_hsv_encoding values should not collide with the ones from |
| + * enum v4l2_ycbcr_encoding. |
| + */ |
| +enum v4l2_hsv_encoding { |
| + |
| + /* Hue mapped to 0 - 179 */ |
| + V4L2_HSV_ENC_180 = 128, |
| + |
| + /* Hue mapped to 0-255 */ |
| + V4L2_HSV_ENC_256 = 129, |
| +}; |
| + |
| +/* |
| * Determine how YCBCR_ENC_DEFAULT should map to a proper Y'CbCr encoding. |
| * This depends on the colorspace. |
| */ |
| @@ -362,9 +375,10 @@ enum v4l2_quantization { |
| * This depends on whether the image is RGB or not, the colorspace and the |
| * Y'CbCr encoding. |
| */ |
| -#define V4L2_MAP_QUANTIZATION_DEFAULT(is_rgb, colsp, ycbcr_enc) \ |
| - (((is_rgb) && (colsp) == V4L2_COLORSPACE_BT2020) ? V4L2_QUANTIZATION_LIM_RANGE : \ |
| - (((is_rgb) || (ycbcr_enc) == V4L2_YCBCR_ENC_XV601 || \ |
| +#define V4L2_MAP_QUANTIZATION_DEFAULT(is_rgb_or_hsv, colsp, ycbcr_enc) \ |
| + (((is_rgb_or_hsv) && (colsp) == V4L2_COLORSPACE_BT2020) ? \ |
| + V4L2_QUANTIZATION_LIM_RANGE : \ |
| + (((is_rgb_or_hsv) || (ycbcr_enc) == V4L2_YCBCR_ENC_XV601 || \ |
| (ycbcr_enc) == V4L2_YCBCR_ENC_XV709 || (colsp) == V4L2_COLORSPACE_JPEG) ? \ |
| V4L2_QUANTIZATION_FULL_RANGE : V4L2_QUANTIZATION_LIM_RANGE)) |
| |
| @@ -461,7 +475,12 @@ struct v4l2_pix_format { |
| __u32 colorspace; /* enum v4l2_colorspace */ |
| __u32 priv; /* private data, depends on pixelformat */ |
| __u32 flags; /* format flags (V4L2_PIX_FMT_FLAG_*) */ |
| - __u32 ycbcr_enc; /* enum v4l2_ycbcr_encoding */ |
| + union { |
| + /* enum v4l2_ycbcr_encoding */ |
| + __u32 ycbcr_enc; |
| + /* enum v4l2_hsv_encoding */ |
| + __u32 hsv_enc; |
| + }; |
| __u32 quantization; /* enum v4l2_quantization */ |
| __u32 xfer_func; /* enum v4l2_xfer_func */ |
| }; |
| @@ -2009,7 +2028,10 @@ struct v4l2_pix_format_mplane { |
| struct v4l2_plane_pix_format plane_fmt[VIDEO_MAX_PLANES]; |
| __u8 num_planes; |
| __u8 flags; |
| - __u8 ycbcr_enc; |
| + union { |
| + __u8 ycbcr_enc; |
| + __u8 hsv_enc; |
| + }; |
| __u8 quantization; |
| __u8 xfer_func; |
| __u8 reserved[7]; |