media: v4l2: extend the CSC API to subdevice.
This patch extends the CSC API in video devices to be supported also on sub-devices. The flag V4L2_MBUS_FRAMEFMT_SET_CSC set by the application when calling VIDIOC_SUBDEV_S_FMT ioctl. The flags: V4L2_SUBDEV_MBUS_CODE_CSC_COLORSPACE, V4L2_SUBDEV_MBUS_CODE_CSC_XFER_FUNC, V4L2_SUBDEV_MBUS_CODE_CSC_YCBCR_ENC/V4L2_SUBDEV_MBUS_CODE_CSC_HSV_ENC V4L2_SUBDEV_MBUS_CODE_CSC_QUANTIZATION are set by the driver in the VIDIOC_SUBDEV_ENUM_MBUS_CODE ioctl. New 'flags' fields were added to the structs v4l2_subdev_mbus_code_enum, v4l2_mbus_framefmt which are borrowed from the 'reserved' field The patch also replaces the 'ycbcr_enc' field in 'struct v4l2_mbus_framefmt' with a union that includes 'hsv_enc' Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
parent
2f49146349
commit
62aacfa9bf
4 changed files with 157 additions and 14 deletions
|
|
@ -16,6 +16,8 @@
|
|||
#include <linux/types.h>
|
||||
#include <linux/videodev2.h>
|
||||
|
||||
#define V4L2_MBUS_FRAMEFMT_SET_CSC 0x0001
|
||||
|
||||
/**
|
||||
* struct v4l2_mbus_framefmt - frame format on the media bus
|
||||
* @width: image width
|
||||
|
|
@ -24,8 +26,11 @@
|
|||
* @field: used interlacing type (from enum v4l2_field)
|
||||
* @colorspace: colorspace of the data (from enum v4l2_colorspace)
|
||||
* @ycbcr_enc: YCbCr encoding of the data (from enum v4l2_ycbcr_encoding)
|
||||
* @hsv_enc: HSV encoding of the data (from enum v4l2_hsv_encoding)
|
||||
* @quantization: quantization of the data (from enum v4l2_quantization)
|
||||
* @xfer_func: transfer function of the data (from enum v4l2_xfer_func)
|
||||
* @flags: flags (V4L2_MBUS_FRAMEFMT_*)
|
||||
* @reserved: reserved bytes that can be later used
|
||||
*/
|
||||
struct v4l2_mbus_framefmt {
|
||||
__u32 width;
|
||||
|
|
@ -33,10 +38,16 @@ struct v4l2_mbus_framefmt {
|
|||
__u32 code;
|
||||
__u32 field;
|
||||
__u32 colorspace;
|
||||
__u16 ycbcr_enc;
|
||||
union {
|
||||
/* enum v4l2_ycbcr_encoding */
|
||||
__u16 ycbcr_enc;
|
||||
/* enum v4l2_hsv_encoding */
|
||||
__u16 hsv_enc;
|
||||
};
|
||||
__u16 quantization;
|
||||
__u16 xfer_func;
|
||||
__u16 reserved[11];
|
||||
__u16 flags;
|
||||
__u16 reserved[10];
|
||||
};
|
||||
|
||||
#ifndef __KERNEL__
|
||||
|
|
|
|||
|
|
@ -65,19 +65,27 @@ struct v4l2_subdev_crop {
|
|||
__u32 reserved[8];
|
||||
};
|
||||
|
||||
#define V4L2_SUBDEV_MBUS_CODE_CSC_COLORSPACE 0x00000001
|
||||
#define V4L2_SUBDEV_MBUS_CODE_CSC_XFER_FUNC 0x00000002
|
||||
#define V4L2_SUBDEV_MBUS_CODE_CSC_YCBCR_ENC 0x00000004
|
||||
#define V4L2_SUBDEV_MBUS_CODE_CSC_HSV_ENC V4L2_SUBDEV_MBUS_CODE_CSC_YCBCR_ENC
|
||||
#define V4L2_SUBDEV_MBUS_CODE_CSC_QUANTIZATION 0x00000008
|
||||
|
||||
/**
|
||||
* struct v4l2_subdev_mbus_code_enum - Media bus format enumeration
|
||||
* @pad: pad number, as reported by the media API
|
||||
* @index: format index during enumeration
|
||||
* @code: format code (MEDIA_BUS_FMT_ definitions)
|
||||
* @which: format type (from enum v4l2_subdev_format_whence)
|
||||
* @flags: flags set by the driver, (V4L2_SUBDEV_MBUS_CODE_*)
|
||||
*/
|
||||
struct v4l2_subdev_mbus_code_enum {
|
||||
__u32 pad;
|
||||
__u32 index;
|
||||
__u32 code;
|
||||
__u32 which;
|
||||
__u32 reserved[8];
|
||||
__u32 flags;
|
||||
__u32 reserved[7];
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue