Message ID | 1471858087-24528-1-git-send-email-ricardo.ribalda@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 08/22/16 11:28, Ricardo Ribalda Delgado wrote: > 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> > --- > > v5_2: s/s_rgb_or_yuv/s_rgb_or_hsv/ > Thanks Hans!! > include/uapi/linux/videodev2.h | 32 +++++++++++++++++++++++++++----- > 1 file changed, 27 insertions(+), 5 deletions(-) > > diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h > index 58ed8aedc196..baa874d91299 100644 > --- 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) || \ > (colsp) == V4L2_COLORSPACE_ADOBERGB || (colsp) == V4L2_COLORSPACE_SRGB ? \ > V4L2_QUANTIZATION_FULL_RANGE : V4L2_QUANTIZATION_LIM_RANGE)) > @@ -460,7 +474,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 */ > }; > @@ -1993,7 +2012,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]; > -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h index 58ed8aedc196..baa874d91299 100644 --- 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) || \ (colsp) == V4L2_COLORSPACE_ADOBERGB || (colsp) == V4L2_COLORSPACE_SRGB ? \ V4L2_QUANTIZATION_FULL_RANGE : V4L2_QUANTIZATION_LIM_RANGE)) @@ -460,7 +474,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 */ }; @@ -1993,7 +2012,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];
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> --- v5_2: s/s_rgb_or_yuv/s_rgb_or_hsv/ Thanks Hans!! include/uapi/linux/videodev2.h | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-)