From: Hans Verkuil <hans.verkuil@xxxxxxxxx> Signed-off-by: Hans Verkuil <hans.verkuil@xxxxxxxxx> --- drivers/media/v4l2-core/v4l2-ctrls.c | 24 ++++++++++++++++++++++++ include/uapi/linux/v4l2-controls.h | 7 ++++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-core/v4l2-ctrls.c index 21560b0..af76bda 100644 --- a/drivers/media/v4l2-core/v4l2-ctrls.c +++ b/drivers/media/v4l2-core/v4l2-ctrls.c @@ -643,6 +643,10 @@ const char *v4l2_ctrl_get_name(u32 id) case V4L2_CID_MIN_BUFFERS_FOR_OUTPUT: return "Min Number of Output Buffers"; case V4L2_CID_ALPHA_COMPONENT: return "Alpha Component"; case V4L2_CID_COLORFX_CBCR: return "Color Effects, CbCr"; + case V4L2_CID_CAPTURE_CROP: return "Capture Crop Selections"; + case V4L2_CID_CAPTURE_COMPOSE: return "Capture Compose Selections"; + case V4L2_CID_OUTPUT_CROP: return "Output Crop Selections"; + case V4L2_CID_OUTPUT_COMPOSE: return "Output Compose Selections"; /* Codec controls */ /* The MPEG controls are applicable to all codec controls @@ -1122,6 +1126,13 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type, case V4L2_CID_RDS_TX_ALT_FREQS: *type = V4L2_CTRL_TYPE_U32; break; + case V4L2_CID_CAPTURE_CROP: + case V4L2_CID_CAPTURE_COMPOSE: + case V4L2_CID_OUTPUT_CROP: + case V4L2_CID_OUTPUT_COMPOSE: + *type = V4L2_CTRL_TYPE_SELECTION; + *min = *max = *step = *def = 0; + break; default: *type = V4L2_CTRL_TYPE_INTEGER; break; @@ -1336,6 +1347,12 @@ static void std_log(const struct v4l2_ctrl *ctrl) case V4L2_CTRL_TYPE_U32: pr_cont("%u", (unsigned)*ptr.p_u32); break; + case V4L2_CTRL_TYPE_SELECTION: + pr_cont("%ux%u@%dx%d (0x%x)", + ptr.p_sel->r.width, ptr.p_sel->r.height, + ptr.p_sel->r.left, ptr.p_sel->r.top, + ptr.p_sel->flags); + break; default: pr_cont("unknown type %d", ctrl->type); break; @@ -1429,6 +1446,10 @@ static int std_validate(const struct v4l2_ctrl *ctrl, u32 idx, return -ERANGE; return 0; + case V4L2_CTRL_TYPE_SELECTION: + /* TODO: check for valid rectangle */ + return 0; + default: return -EINVAL; } @@ -1998,6 +2019,9 @@ static struct v4l2_ctrl *v4l2_ctrl_new(struct v4l2_ctrl_handler *hdl, case V4L2_CTRL_TYPE_U32: elem_size = sizeof(u32); break; + case V4L2_CTRL_TYPE_SELECTION: + elem_size = sizeof(struct v4l2_ctrl_selection); + break; default: if (type < V4L2_CTRL_COMPOUND_TYPES) elem_size = sizeof(s32); diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-controls.h index 8b93021..1c2fbf3 100644 --- a/include/uapi/linux/v4l2-controls.h +++ b/include/uapi/linux/v4l2-controls.h @@ -140,8 +140,13 @@ enum v4l2_colorfx { #define V4L2_CID_ALPHA_COMPONENT (V4L2_CID_BASE+41) #define V4L2_CID_COLORFX_CBCR (V4L2_CID_BASE+42) +#define V4L2_CID_CAPTURE_CROP (V4L2_CID_BASE+43) +#define V4L2_CID_CAPTURE_COMPOSE (V4L2_CID_BASE+44) +#define V4L2_CID_OUTPUT_CROP (V4L2_CID_BASE+45) +#define V4L2_CID_OUTPUT_COMPOSE (V4L2_CID_BASE+46) + /* last CID + 1 */ -#define V4L2_CID_LASTP1 (V4L2_CID_BASE+43) +#define V4L2_CID_LASTP1 (V4L2_CID_BASE+47) /* USER-class private control IDs */ -- 2.1.0 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html