Commit fc162a09 authored by Sylwester Nawrocki's avatar Sylwester Nawrocki Committed by Mauro Carvalho Chehab

[media] V4L: Add camera 3A lock control

The V4L2_CID_3A_LOCK bitmask control allows applications to pause
or resume the automatic exposure, focus and wite balance adjustments.
It can be used, for example, to lock the 3A adjustments right before
a still image is captured, for pre-focus, etc.
The applications can control each of the algorithms independently,
through a corresponding control bit, if driver allows that.
Signed-off-by: default avatarSylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 0bf6b7dc
...@@ -3301,6 +3301,45 @@ lens-distortion correction.</entry> ...@@ -3301,6 +3301,45 @@ lens-distortion correction.</entry>
</row> </row>
<row><entry></entry></row> <row><entry></entry></row>
<row>
<entry spanname="id"><constant>V4L2_CID_3A_LOCK</constant></entry>
<entry>bitmask</entry>
</row>
<row>
<entry spanname="descr">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:
</entry>
</row>
<row>
<entrytbl spanname="descr" cols="2">
<tbody valign="top">
<row>
<entry><constant>V4L2_LOCK_EXPOSURE</constant></entry>
<entry>Automatic exposure adjustments lock.</entry>
</row>
<row>
<entry><constant>V4L2_LOCK_WHITE_BALANCE</constant></entry>
<entry>Automatic white balance adjustments lock.</entry>
</row>
<row>
<entry><constant>V4L2_LOCK_FOCUS</constant></entry>
<entry>Automatic focus lock.</entry>
</row>
</tbody>
</entrytbl>
</row>
<row><entry spanname="descr">
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 <constant>V4L2_LOCK_WHITE_BALANCE</constant> when the
<constant>V4L2_CID_AUTO_WHITE_BALANCE</constant> control is set to
<constant>FALSE</constant>. The value of this control may be changed
by exposure, white balance or focus controls.</entry>
</row>
<row><entry></entry></row>
</tbody> </tbody>
</tgroup> </tgroup>
</table> </table>
......
...@@ -661,6 +661,7 @@ const char *v4l2_ctrl_get_name(u32 id) ...@@ -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_ISO_SENSITIVITY_AUTO: return "ISO Sensitivity, Auto";
case V4L2_CID_EXPOSURE_METERING: return "Exposure, Metering Mode"; case V4L2_CID_EXPOSURE_METERING: return "Exposure, Metering Mode";
case V4L2_CID_SCENE_MODE: return "Scene Mode"; case V4L2_CID_SCENE_MODE: return "Scene Mode";
case V4L2_CID_3A_LOCK: return "3A Lock";
/* FM Radio Modulator control */ /* FM Radio Modulator control */
/* Keep the order of the 'case's the same as in videodev2.h! */ /* 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, ...@@ -849,6 +850,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
break; break;
case V4L2_CID_FLASH_FAULT: case V4L2_CID_FLASH_FAULT:
case V4L2_CID_JPEG_ACTIVE_MARKER: case V4L2_CID_JPEG_ACTIVE_MARKER:
case V4L2_CID_3A_LOCK:
*type = V4L2_CTRL_TYPE_BITMASK; *type = V4L2_CTRL_TYPE_BITMASK;
break; break;
case V4L2_CID_MIN_BUFFERS_FOR_CAPTURE: case V4L2_CID_MIN_BUFFERS_FOR_CAPTURE:
......
...@@ -1758,6 +1758,11 @@ enum v4l2_scene_mode { ...@@ -1758,6 +1758,11 @@ enum v4l2_scene_mode {
V4L2_SCENE_MODE_TEXT = 13, 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 */ /* FM Modulator class control IDs */
#define V4L2_CID_FM_TX_CLASS_BASE (V4L2_CTRL_CLASS_FM_TX | 0x900) #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) #define V4L2_CID_FM_TX_CLASS (V4L2_CTRL_CLASS_FM_TX | 1)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment