From e6b86540bd6ea976e2e7b672917a1ebdb931df1d Mon Sep 17 00:00:00 2001 From: Sylwester Nawrocki Date: Wed, 2 May 2012 06:24:33 -0300 Subject: [PATCH] --- yaml --- r: 306364 b: refs/heads/master c: fc162a099e7b34bfe3501028c919ff5d43e5e3d3 h: refs/heads/master v: v3 --- [refs] | 2 +- .../DocBook/media/v4l/controls.xml | 39 +++++++++++++++++++ trunk/drivers/media/video/v4l2-ctrls.c | 2 + trunk/include/linux/videodev2.h | 5 +++ 4 files changed, 47 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 305502a9db98..73917222a541 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0bf6b7dc5fd1e60e93657d4fe4b3d788216b9d5e +refs/heads/master: fc162a099e7b34bfe3501028c919ff5d43e5e3d3 diff --git a/trunk/Documentation/DocBook/media/v4l/controls.xml b/trunk/Documentation/DocBook/media/v4l/controls.xml index ad0d53d3ffdd..f38f06169795 100644 --- a/trunk/Documentation/DocBook/media/v4l/controls.xml +++ b/trunk/Documentation/DocBook/media/v4l/controls.xml @@ -3301,6 +3301,45 @@ lens-distortion correction. + + V4L2_CID_3A_LOCK + bitmask + + + This control locks or unlocks the automatic +focus, exposure and white balance. The automatic adjustments can be paused +independently by setting the corresponding lock bit to 1. The camera then retains +the settings until the lock bit is cleared. The following lock bits are defined: + + + + + + + V4L2_LOCK_EXPOSURE + Automatic exposure adjustments lock. + + + V4L2_LOCK_WHITE_BALANCE + Automatic white balance adjustments lock. + + + V4L2_LOCK_FOCUS + Automatic focus lock. + + + + + +When a given algorithm is not enabled, drivers should ignore requests +to lock it and should return no error. An example might be an application +setting bit V4L2_LOCK_WHITE_BALANCE when the +V4L2_CID_AUTO_WHITE_BALANCE control is set to +FALSE. The value of this control may be changed +by exposure, white balance or focus controls. + + + diff --git a/trunk/drivers/media/video/v4l2-ctrls.c b/trunk/drivers/media/video/v4l2-ctrls.c index d4dc8ba7b755..a47b29270ba3 100644 --- a/trunk/drivers/media/video/v4l2-ctrls.c +++ b/trunk/drivers/media/video/v4l2-ctrls.c @@ -661,6 +661,7 @@ const char *v4l2_ctrl_get_name(u32 id) case V4L2_CID_ISO_SENSITIVITY_AUTO: return "ISO Sensitivity, Auto"; case V4L2_CID_EXPOSURE_METERING: return "Exposure, Metering Mode"; case V4L2_CID_SCENE_MODE: return "Scene Mode"; + case V4L2_CID_3A_LOCK: return "3A Lock"; /* FM Radio Modulator control */ /* Keep the order of the 'case's the same as in videodev2.h! */ @@ -849,6 +850,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type, break; case V4L2_CID_FLASH_FAULT: case V4L2_CID_JPEG_ACTIVE_MARKER: + case V4L2_CID_3A_LOCK: *type = V4L2_CTRL_TYPE_BITMASK; break; case V4L2_CID_MIN_BUFFERS_FOR_CAPTURE: diff --git a/trunk/include/linux/videodev2.h b/trunk/include/linux/videodev2.h index 092bf5aaf348..a9b03ae44037 100644 --- a/trunk/include/linux/videodev2.h +++ b/trunk/include/linux/videodev2.h @@ -1758,6 +1758,11 @@ enum v4l2_scene_mode { V4L2_SCENE_MODE_TEXT = 13, }; +#define V4L2_CID_3A_LOCK (V4L2_CID_CAMERA_CLASS_BASE+27) +#define V4L2_LOCK_EXPOSURE (1 << 0) +#define V4L2_LOCK_WHITE_BALANCE (1 << 1) +#define V4L2_LOCK_FOCUS (1 << 2) + /* FM Modulator class control IDs */ #define V4L2_CID_FM_TX_CLASS_BASE (V4L2_CTRL_CLASS_FM_TX | 0x900) #define V4L2_CID_FM_TX_CLASS (V4L2_CTRL_CLASS_FM_TX | 1)