aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorSylwester Nawrocki <sylvester.nawrocki@gmail.com>2013-01-19 13:51:55 -0500
committerMauro Carvalho Chehab <mchehab@redhat.com>2013-02-05 12:04:06 -0500
commit2ccbe779bcdee130ea7f1525670dc9d60318a981 (patch)
treef667acca6ab42a0565b062616b3a6f176508e874 /include
parentaf9bb33aa33d4beb5d0ac505d48530a56856f66c (diff)
[media] v4l2-ctrl: Add helper function for the controls range update
This patch adds a helper function that allows to modify range, i.e. minimum, maximum, step and default value of a v4l2 control, after the control has been created and initialized. This is helpful in situations when range of a control depends on user configurable parameters, e.g. camera sensor absolute exposure time depending on an output image resolution and frame rate. v4l2_ctrl_modify_range() function allows to modify range of an INTEGER, BOOL, MENU, INTEGER_MENU and BITMASK type controls. Based on a patch from Hans Verkuil http://patchwork.linuxtv.org/patch/8654. Signed-off-by: Sylwester Nawrocki <sylvester.nawrocki@gmail.com> Acked-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'include')
-rw-r--r--include/media/v4l2-ctrls.h20
-rw-r--r--include/uapi/linux/videodev2.h1
2 files changed, 21 insertions, 0 deletions
diff --git a/include/media/v4l2-ctrls.h b/include/media/v4l2-ctrls.h
index c4cc04136074..91125b6f05a5 100644
--- a/include/media/v4l2-ctrls.h
+++ b/include/media/v4l2-ctrls.h
@@ -518,6 +518,26 @@ void v4l2_ctrl_activate(struct v4l2_ctrl *ctrl, bool active);
518 */ 518 */
519void v4l2_ctrl_grab(struct v4l2_ctrl *ctrl, bool grabbed); 519void v4l2_ctrl_grab(struct v4l2_ctrl *ctrl, bool grabbed);
520 520
521/** v4l2_ctrl_modify_range() - Update the range of a control.
522 * @ctrl: The control to update.
523 * @min: The control's minimum value.
524 * @max: The control's maximum value.
525 * @step: The control's step value
526 * @def: The control's default value.
527 *
528 * Update the range of a control on the fly. This works for control types
529 * INTEGER, BOOLEAN, MENU, INTEGER MENU and BITMASK. For menu controls the
530 * @step value is interpreted as a menu_skip_mask.
531 *
532 * An error is returned if one of the range arguments is invalid for this
533 * control type.
534 *
535 * This function assumes that the control handler is not locked and will
536 * take the lock itself.
537 */
538int v4l2_ctrl_modify_range(struct v4l2_ctrl *ctrl,
539 s32 min, s32 max, u32 step, s32 def);
540
521/** v4l2_ctrl_lock() - Helper function to lock the handler 541/** v4l2_ctrl_lock() - Helper function to lock the handler
522 * associated with the control. 542 * associated with the control.
523 * @ctrl: The control to lock. 543 * @ctrl: The control to lock.
diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
index 94cbe26e9f00..928799c2e2d9 100644
--- a/include/uapi/linux/videodev2.h
+++ b/include/uapi/linux/videodev2.h
@@ -1822,6 +1822,7 @@ struct v4l2_event_vsync {
1822/* Payload for V4L2_EVENT_CTRL */ 1822/* Payload for V4L2_EVENT_CTRL */
1823#define V4L2_EVENT_CTRL_CH_VALUE (1 << 0) 1823#define V4L2_EVENT_CTRL_CH_VALUE (1 << 0)
1824#define V4L2_EVENT_CTRL_CH_FLAGS (1 << 1) 1824#define V4L2_EVENT_CTRL_CH_FLAGS (1 << 1)
1825#define V4L2_EVENT_CTRL_CH_RANGE (1 << 2)
1825 1826
1826struct v4l2_event_ctrl { 1827struct v4l2_event_ctrl {
1827 __u32 changes; 1828 __u32 changes;