[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: Sylwester Nawrocki <s.nawrocki@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
Родитель
0bf6b7dc5f
Коммит
fc162a099e
|
@ -3301,6 +3301,45 @@ lens-distortion correction.</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>
|
||||
</tgroup>
|
||||
</table>
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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)
|
||||
|
|
Загрузка…
Ссылка в новой задаче