|
|
@@ -334,6 +334,19 @@ enum v4l2_ycbcr_encoding {
|
|
|
V4L2_YCBCR_ENC_SMPTE240M = 8,
|
|
|
};
|
|
|
|
|
|
+/*
|
|
|
+ * 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) || \
|
|
|
(colsp) == V4L2_COLORSPACE_ADOBERGB || (colsp) == V4L2_COLORSPACE_SRGB ? \
|
|
|
V4L2_QUANTIZATION_FULL_RANGE : V4L2_QUANTIZATION_LIM_RANGE))
|
|
|
@@ -462,7 +476,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 */
|
|
|
};
|
|
|
@@ -2012,7 +2031,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];
|