1b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphypage.title=3A Modes and State Transition
2b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy@jd:body
3b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy
4b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy<!--
5b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    Copyright 2013 The Android Open Source Project
6b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy
7b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    Licensed under the Apache License, Version 2.0 (the "License");
8b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    you may not use this file except in compliance with the License.
9b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    You may obtain a copy of the License at
10b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy
11b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy        http://www.apache.org/licenses/LICENSE-2.0
12b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy
13b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    Unless required by applicable law or agreed to in writing, software
14b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    distributed under the License is distributed on an "AS IS" BASIS,
15b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    See the License for the specific language governing permissions and
17b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    limitations under the License.
18b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy-->
19b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy<div id="qv-wrapper">
20b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <div id="qv">
21b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <h2>In this document</h2>
22b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <ol id="auto-toc">
23b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    </ol>
24b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </div>
25b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy</div>
26b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy
27b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy<p>
28b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  While the actual 3A algorithms are up to the HAL implementation, a high-level 
29b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  state machine description is defined by the HAL interface to allow the HAL 
30b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  device and the framework to communicate about the current state of 3A and 
31b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  trigger 3A events.</p>
32b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy<p>When the device is opened, all the individual 3A states must be STATE_INACTIVE. 
33b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  Stream configuration does not reset 3A. For example, locked focus must be 
34b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  maintained across the configure() call.</p>
35b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy<p>Triggering a 3A action involves simply setting the relevant trigger entry in the 
36b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  settings for the next request to indicate start of trigger. For example, the 
37b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  trigger for starting an autofocus scan is setting the entry 
38b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  ANDROID_CONTROL_AF_TRIGGER to ANDROID_CONTROL_AF_TRIGGER_START for one request; 
39b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  and cancelling an autofocus scan is triggered by setting 
40b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  ANDROID_CONTROL_AF_TRIGGER to ANDROID_CONTRL_AF_TRIGGER_CANCEL. Otherwise, the 
41b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  entry will not exist or be set to ANDROID_CONTROL_AF_TRIGGER_IDLE. Each request 
42b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  with a trigger entry set to a non-IDLE value will be treated as an independent 
43b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  triggering event.</p>
44b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy<p>At the top level, 3A is controlled by the ANDROID_CONTROL_MODE setting. It 
45b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  selects between no 3A (ANDROID_CONTROL_MODE_OFF), normal AUTO mode 
46b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  (ANDROID_CONTROL_MODE_AUTO), and using the scene mode setting 
47b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  (ANDROID_CONTROL_USE_SCENE_MODE):</p>
48b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy<ul>
49b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <li>In OFF mode, each of the individual Auto-focus(AF), auto-exposure (AE), and 
50b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    auto-whitebalance (AWB) modes are effectively OFF, and none of the capture 
51b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    controls may be overridden by the 3A routines.</li>
52b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <li>In AUTO mode, AF, AE, and AWB modes all run their own independent algorithms, 
53b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    and have their own mode, state, and trigger metadata entries, as listed in the 
54b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    next section.</li>
55b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <li>In USE_SCENE_MODE, the value of the ANDROID_CONTROL_SCENE_MODE entry must be 
56b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    used to determine the behavior of 3A routines. In SCENE_MODEs other than 
57b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    FACE_PRIORITY, the HAL must override the values of 
58b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    ANDROID_CONTROL_AE/AWB/AF_MODE to be the mode it prefers for the selected 
59b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    SCENE_MODE. For example, the HAL may prefer SCENE_MODE_NIGHT to use 
60b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    CONTINUOUS_FOCUS AF mode. Any user selection of AE/AWB/AF_MODE when scene must 
61b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    be ignored for these scene modes.</li>
62b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <li>For SCENE_MODE_FACE_PRIORITY, the AE/AWB/AFMODE controls work as in 
63b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    ANDROID_CONTROL_MODE_AUTO, but the 3A routines must bias toward metering and 
64b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    focusing on any detected faces in the scene.</li>
65b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy</ul>
66b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy<h2 id="auto-focus">Auto-focus settings and result entries</h2>
67b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy<p>Main metadata entries:<br/>
68b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  ANDROID_CONTROL_AF_MODE: Control for selecting the current autofocus mode. Set 
69b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  by the framework in the request settings.<br/>
70b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AF_MODE_OFF: AF is disabled; the framework/app directly controls lens position.<br/>
71b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AF_MODE_AUTO: Single-sweep autofocus. No lens movement unless AF is triggered.<br/>
72b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AF_MODE_MACRO: Single-sweep up-close autofocus. No lens movement unless AF is 
73b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  triggered.<br/>
74b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AF_MODE_CONTINUOUS_VIDEO: Smooth continuous focusing, for recording video. 
75b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  Triggering immediately locks focus in current position. Canceling resumes 
76b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  cotinuous focusing.<br/>
77b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AF_MODE_CONTINUOUS_PICTURE: Fast continuous focusing, for zero-shutter-lag still 
78b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  capture. Triggering locks focus once currently active sweep concludes. Canceling 
79b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  resumes continuous focusing.<br/>
80b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AF_MODE_EDOF: Advanced extended depth of field focusing. There is no autofocus 
81b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  scan, so triggering one or canceling one has no effect. Images are focused 
82b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  automatically by the HAL.<br/>
83b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  ANDROID_CONTROL_AF_STATE: Dynamic metadata describing the current AF algorithm 
84b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  state, reported by the HAL in the result metadata.<br/>
85b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AF_STATE_INACTIVE: No focusing has been done, or algorithm was reset. Lens is 
86b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  not moving. Always the state for MODE_OFF or MODE_EDOF. When the device is 
87b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  opened, it must start in this state.<br/>
88b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AF_STATE_PASSIVE_SCAN: A continuous focus algorithm is currently scanning for 
89b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  good focus. The lens is moving.<br/>
90b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AF_STATE_PASSIVE_FOCUSED: A continuous focus algorithm believes it is well 
91b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  focused. The lens is not moving. The HAL may spontaneously leave this state.<br/>
92b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AF_STATE_PASSIVE_UNFOCUSED: A continuous focus algorithm believes it is not well 
93b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  focused. The lens is not moving. The HAL may spontaneously leave this state.<br/>
94b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AF_STATE_ACTIVE_SCAN: A scan triggered by the user is underway.<br/>
95b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AF_STATE_FOCUSED_LOCKED: The AF algorithm believes it is focused. The lens is 
96b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  not moving.<br/>
97b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AF_STATE_NOT_FOCUSED_LOCKED: The AF algorithm has been unable to focus. The lens 
98b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  is not moving.<br/>
99b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  ANDROID_CONTROL_AFTRIGGER: Control for starting an autofocus scan, the meaning 
100b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  of which depends on mode and state. Set by the framework in the request 
101b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  settings.<br/>
102b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AF_TRIGGER_IDLE: No current trigger.<br/>
103b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AF_TRIGGER_START: Trigger start of AF scan. Effect depends on mode and state.<br/>
104b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AF_TRIGGER_CANCEL: Cancel current AF scan if any, and reset algorithm to 
105b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  default.<br/>
106b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  Additional metadata entries:<br/>
107b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  ANDROID_CONTROL_AF_REGIONS: Control for selecting the regions of the field of 
108b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  view (FOV) that should be used to determine good focus. This applies to all AF 
109b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  modes that scan for focus. Set by the framework in the request settings.</p>
110b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy<h2 id="auto-exposure">Auto-exposure settings and result entries</h2>
111b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy<p>Main metadata entries:<br/>
112b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  ANDROID_CONTROL_AE_MODE: Control for selecting the current auto-exposure mode. 
113b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  Set by the framework in the request settings.<br/>
114b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AE_MODE_OFF: Autoexposure is disabled; the user controls exposure, gain, frame 
115b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  duration, and flash.<br/>
116b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AE_MODE_ON: Standard autoexposure, with flash control disabled. User may set 
117b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  flash to fire or to torch mode.<br/>
118b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AE_MODE_ON_AUTO_FLASH: Standard autoexposure, with flash on at HAL's discretion 
119b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  for precapture and still capture. User control of flash disabled.<br/>
120b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AE_MODE_ON_ALWAYS_FLASH: Standard autoexposure, with flash always fired for 
121b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  capture, and at HAL's discretion for precapture. User control of flash disabled.<br/>
122b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AE_MODE_ON_AUTO_FLASH_REDEYE: Standard autoexposure, with flash on at HAL's 
123b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  discretion for precapture and still capture. Use a flash burst at end of 
124b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  precapture sequence to reduce redeye in the final picture. User control of flash 
125b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  disabled.<br/>
126b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  ANDROID_CONTROL_AE_STATE: Dynamic metadata describing the current AE algorithm 
127b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  state, reported by the HAL in the result metadata.<br/>
128b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AE_STATE_INACTIVE: Initial AE state after mode switch. When the device is 
129b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  opened, it must start in this state.<br/>
130b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AE_STATE_SEARCHING: AE is not converged to a good value and is adjusting 
131b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  exposure parameters.<br/>
132b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AE_STATE_CONVERGED: AE has found good exposure values for the current scene, and 
133b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  the exposure parameters are not changing. HAL may spontaneously leave this state 
134b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  to search for a better solution.<br/>
135b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AE_STATE_LOCKED: AE has been locked with the AE_LOCK control. Exposure values 
136b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  are not changing.<br/>
137b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AE_STATE_FLASH_REQUIRED: The HAL has converged exposure but believes flash is 
138b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  required for a sufficiently bright picture. Used for determining if a 
139b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  zero-shutter-lag frame can be used.<br/>
140b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AE_STATE_PRECAPTURE: The HAL is in the middle of a precapture sequence. 
141b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  Depending on AE mode, this mode may involve firing the flash for metering or a 
142b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  burst of flash pulses for redeye reduction.<br/>
143b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER: Control for starting a metering sequence 
144b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  before capturing a high-quality image. Set by the framework in the request 
145b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  settings.<br/>
146b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  PRECAPTURE_TRIGGER_IDLE: No current trigger.<br/>
147b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  PRECAPTURE_TRIGGER_START: Start a precapture sequence. The HAL should use the 
148b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  subsequent requests to measure good exposure/white balance for an upcoming 
149b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  high-resolution capture.<br/>
150b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  Additional metadata entries:<br/>
151b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  ANDROID_CONTROL_AE_LOCK: Control for locking AE controls to their current 
152b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  values.<br/>
153b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION: Control for adjusting AE algorithm 
154b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  target brightness point.<br/>
155b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  ANDROID_CONTROL_AE_TARGET_FPS_RANGE: Control for selecting the target frame rate 
156b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  range for the AE algorithm. The AE routine cannot change the frame rate to be 
157b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  outside these bounds.<br/>
158b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  ANDROID_CONTROL_AE_REGIONS: Control for selecting the regions of the FOV that 
159b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  should be used to determine good exposure levels. This applies to all AE modes 
160b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  besides OFF.</p>
161b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy<h2 id="auto-wb">Auto-whitebalance settings and result entries</h2>
162b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy<p>Main metadata entries:<br/>
163b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  ANDROID_CONTROL_AWB_MODE: Control for selecting the current white-balance mode.<br/>
164b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AWB_MODE_OFF: Auto-whitebalance is disabled. User controls color matrix.<br/>
165b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AWB_MODE_AUTO: Automatic white balance is enabled; 3A controls color transform, 
166b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  possibly using more complex transforms than a simple matrix.<br/>
167b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AWB_MODE_INCANDESCENT: Fixed white balance settings good for indoor incandescent 
168b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  (tungsten) lighting, roughly 2700K.<br/>
169b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AWB_MODE_FLUORESCENT: Fixed white balance settings good for fluorescent 
170b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  lighting, roughly 5000K.<br/>
171b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AWB_MODE_WARM_FLUORESCENT: Fixed white balance settings good for fluorescent 
172b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  lighting, roughly 3000K.<br/>
173b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AWB_MODE_DAYLIGHT: Fixed white balance settings good for daylight, roughly 
174b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  5500K.<br/>
175b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AWB_MODE_CLOUDY_DAYLIGHT: Fixed white balance settings good for clouded 
176b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  daylight, roughly 6500K.<br/>
177b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AWB_MODE_TWILIGHT: Fixed white balance settings good for near-sunset/sunrise, 
178b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  roughly 15000K.<br/>
179b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AWB_MODE_SHADE: Fixed white balance settings good for areas indirectly lit by 
180b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  the sun, roughly 7500K.<br/>
181b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  ANDROID_CONTROL_AWB_STATE: Dynamic metadata describing the current AWB algorithm 
182b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  state, reported by the HAL in the result metadata.<br/>
183b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AWB_STATE_INACTIVE: Initial AWB state after mode switch. When the device is 
184b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  opened, it must start in this state.<br/>
185b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AWB_STATE_SEARCHING: AWB is not converged to a good value and is changing color 
186b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  adjustment parameters.<br/>
187b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AWB_STATE_CONVERGED: AWB has found good color adjustment values for the current 
188b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  scene, and the parameters are not changing. HAL may spontaneously leave this 
189b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  state to search for a better solution.<br/>
190b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  AWB_STATE_LOCKED: AWB has been locked with the AWB_LOCK control. Color 
191b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  adjustment values are not changing.<br/>
192b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  Additional metadata entries:<br/>
193b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  ANDROID_CONTROL_AWB_LOCK: Control for locking AWB color adjustments to their 
194b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  current values.<br/>
195b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  ANDROID_CONTROL_AWB_REGIONS: Control for selecting the regions of the FOV that 
196b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  should be used to determine good color balance. This applies only to 
197b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  auto-whitebalance mode.</p>
198b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy<h2 id="state-transition">General state machine transition notes</h2>
199b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy<p>Switching between AF, AE, or AWB modes always resets the algorithm's state to 
200b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  INACTIVE. Similarly, switching between CONTROL_MODE or CONTROL_SCENE_MODE if 
201b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  CONTROL_MODE == USE_SCENE_MODE resets all the algorithm states to INACTIVE.<br/>
202b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  The tables below are per-mode.</p>
203b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy<h2 id="af-state">AF state machines</h2>
204b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy<table>
205b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
206b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td><strong>mode = AF_MODE_OFF or AF_MODE_EDOF</strong></td>
207b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td></td>
208b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td></td>
209b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td></td>
210b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
211b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
212b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <th>State</th>
213b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <th>Transformation cause</th>
214b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <th>New state</th>
215b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <th>Notes</th>
216b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
217b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
218b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>INACTIVE</td>
219b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td></td>
220b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td></td>
221b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AF is disabled</td>
222b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
223b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
224b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td><strong>mode = AF_MODE_AUTO or AF_MODE_MACRO</strong></td>
225b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td></td>
226b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td></td>
227b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td></td>
228b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
229b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
230b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <th>State</th>
231b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <th>Transformation cause</th>
232b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <th>New state</th>
233b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <th>Notes</th>
234b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
235b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
236b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>INACTIVE</td>
237b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AF_TRIGGER</td>
238b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>ACTIVE_SCAN</td>
239b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Start AF sweep
240b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy      Lens now moving</td>
241b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
242b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
243b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>ACTIVE_SCAN</td>
244b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AF sweep done</td>
245b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>FOCUSED_LOCKED</td>
246b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>If AF successful
247b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy      Lens now locked</td>
248b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
249b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
250b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>ACTIVE_SCAN</td>
251b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AF sweep done</td>
252b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>NOT_FOCUSED_LOCKED</td>
253b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>If AF successful
254b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy      Lens now locked</td>
255b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
256b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
257b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>ACTIVE_SCAN</td>
258b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AF_CANCEL</td>
259b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>INACTIVE</td>
260b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Cancel/reset AF
261b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy      Lens now locked</td>
262b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
263b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
264b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>FOCUSED_LOCKED</td>
265b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AF_CANCEL</td>
266b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>INACTIVE</td>
267b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Cancel/reset AF</td>
268b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
269b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
270b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>FOCUSED_LOCKED</td>
271b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AF_TRIGGER</td>
272b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>ACTIVE_SCAN</td>
273b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Start new sweep
274b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy      Lens now moving</td>
275b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
276b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
277b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>NOT_FOCUSED_LOCKED</td>
278b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AF_CANCEL</td>
279b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>INACTIVE</td>
280b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Cancel/reset AF</td>
281b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
282b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
283b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>NOT_FOCUSED_LOCKED</td>
284b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AF_TRIGGER</td>
285b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>ACTIVE_SCAN</td>
286b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Start new sweep
287b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy      Lens now moving</td>
288b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
289b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
290b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>All states</td>
291b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>mode change</td>
292b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>INACTIVE</td>
293b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td></td>
294b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
295b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
296b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td><strong>mode = AF_MODE_CONTINUOUS_VIDEO</strong></td>
297b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td></td>
298b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td></td>
299b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td></td>
300b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
301b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
302b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <th>State</th>
303b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <th>Transformation cause</th>
304b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <th>New state</th>
305b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <th>Notes</th>
306b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
307b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
308b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>INACTIVE</td>
309b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>HAL initiates new scan</td>
310b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>PASSIVE_SCAN</td>
311b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Start AF sweep
312b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy      Lens now moving</td>
313b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
314b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
315b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>INACTIVE</td>
316b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AF_TRIGGER</td>
317b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>NOT_FOCUSED_LOCKED</td>
318b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AF state query 
319b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy      Lens now locked</td>
320b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
321b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
322b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>PASSIVE_SCAN</td>
323b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>HAL completes current scan</td>
324b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>PASSIVE_FOCUSED</td>
325b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>End AF scan
326b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy      Lens now locked </td>
327b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
328b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
329b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>PASSIVE_SCAN</td>
330b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AF_TRIGGER</td>
331b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>FOCUSED_LOCKED</td>
332b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Immediate transformation
333b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy      if focus is good
334b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy      Lens now locked</td>
335b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
336b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
337b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>PASSIVE_SCAN</td>
338b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AF_TRIGGER</td>
339b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>NOT_FOCUSED_LOCKED</td>
340b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Immediate transformation
341b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy      if focus is bad
342b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy      Lens now locked</td>
343b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
344b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
345b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>PASSIVE_SCAN</td>
346b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AF_CANCEL</td>
347b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>INACTIVE</td>
348b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Reset lens position
349b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy      Lens now locked</td>
350b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
351b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
352b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>PASSIVE_FOCUSED</td>
353b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>HAL initiates new scan</td>
354b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>PASSIVE_SCAN</td>
355b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Start AF scan
356b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy      Lens now moving</td>
357b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
358b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
359b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>PASSIVE_FOCUSED</td>
360b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AF_TRIGGER</td>
361b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>FOCUSED_LOCKED</td>
362b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Immediate transformation
363b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy      if focus is good
364b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy      Lens now locked</td>
365b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
366b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
367b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>PASSIVE_FOCUSED</td>
368b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AF_TRIGGER</td>
369b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>NOT_FOCUSED_LOCKED</td>
370b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Immediate transformation
371b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy      if focus is bad
372b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy      Lens now locked</td>
373b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
374b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
375b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>FOCUSED_LOCKED</td>
376b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AF_TRIGGER</td>
377b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>FOCUSED_LOCKED</td>
378b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>No effect</td>
379b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
380b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
381b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>FOCUSED_LOCKED</td>
382b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AF_CANCEL</td>
383b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>INACTIVE</td>
384b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Restart AF scan</td>
385b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
386b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
387b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>NOT_FOCUSED_LOCKED</td>
388b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AF_TRIGGER</td>
389b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>NOT_FOCUSED_LOCKED</td>
390b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>No effect</td>
391b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
392b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
393b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>NOT_FOCUSED_LOCKED</td>
394b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AF_CANCEL</td>
395b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>INACTIVE</td>
396b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Restart AF scan</td>
397b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
398b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
399b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td><strong>mode = AF_MODE_CONTINUOUS_PICTURE</strong></td>
400b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td></td>
401b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td></td>
402b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td></td>
403b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
404b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
405b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <th>State</th>
406b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <th>Transformation cause</th>
407b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <th>New state</th>
408b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <th>Notes</th>
409b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
410b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
411b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>INACTIVE</td>
412b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>HAL initiates new scan</td>
413b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>PASSIVE_SCAN</td>
414b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Start AF scan
415b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy      Lens now moving</td>
416b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
417b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
418b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>INACTIVE</td>
419b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AF_TRIGGER</td>
420b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>NOT_FOCUSED_LOCKED</td>
421b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AF state query
422b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy      Lens now locked</td>
423b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
424b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
425b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>PASSIVE_SCAN</td>
426b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>HAL completes current scan</td>
427b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>PASSIVE_FOCUSED</td>
428b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>End AF scan
429b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy      Lens now locked</td>
430b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
431b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
432b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>PASSIVE_SCAN</td>
433b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AF_TRIGGER</td>
434b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>FOCUSED_LOCKED</td>
435b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Eventual transformation once focus good
436b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy      Lens now locked</td>
437b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
438b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
439b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>PASSIVE_SCAN</td>
440b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AF_TRIGGER</td>
441b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>NOT_FOCUSED_LOCKED</td>
442b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Eventual transformation if cannot focus
443b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy      Lens now locked</td>
444b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
445b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
446b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>PASSIVE_SCAN</td>
447b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AF_CANCEL</td>
448b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>INACTIVE</td>
449b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Reset lens position
450b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy      Lens now locked</td>
451b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
452b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
453b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>PASSIVE_FOCUSED</td>
454b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>HAL initiates new scan</td>
455b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>PASSIVE_SCAN</td>
456b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Start AF scan
457b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy      Lens now moving</td>
458b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
459b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
460b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>PASSIVE_FOCUSED</td>
461b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AF_TRIGGER</td>
462b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>FOCUSED_LOCKED</td>
463b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Immediate transformation if focus is good
464b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy      Lens now locked</td>
465b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
466b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
467b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>PASSIVE_FOCUSED</td>
468b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AF_TRIGGER</td>
469b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>NOT_FOCUSED_LOCKED</td>
470b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Immediate transformation if focus is bad
471b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy      Lens now locked</td>
472b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
473b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
474b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>FOCUSED_LOCKED</td>
475b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AF_TRIGGER</td>
476b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>FOCUSED_LOCKED</td>
477b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>No effect</td>
478b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
479b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
480b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>FOCUSED_LOCKED</td>
481b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AF_CANCEL</td>
482b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>INACTIVE</td>
483b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Restart AF scan</td>
484b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
485b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
486b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>NOT_FOCUSED_LOCKED</td>
487b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AF_TRIGGER</td>
488b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>NOT_FOCUSED_LOCKED</td>
489b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>No effect</td>
490b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
491b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
492b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>NOT_FOCUSED_LOCKED</td>
493b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AF_CANCEL</td>
494b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>INACTIVE</td>
495b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Restart AF scan</td>
496b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
497b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy</table>
498b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy<h2 id="ae-wb">AE and AWB state machines</h2>
499b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy<p>The AE and AWB state machines are mostly identical. AE has additional 
500b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  FLASH_REQUIRED and PRECAPTURE states. So rows below that refer to those two 
501b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  states should be ignored for the AWB state machine.</p>
502b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy<table>
503b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
504b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td><strong>mode = AE_MODE_OFF / AWB mode not AUTO</strong></td>
505b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td></td>
506b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td></td>
507b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td></td>
508b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
509b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
510b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <th>State</th>
511b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <th>Transformation cause</th>
512b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <th>New state</th>
513b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <th>Notes</th>
514b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
515b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
516b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>INACTIVE</td>
517b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td></td>
518b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td></td>
519b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AE/AWB disabled</td>
520b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
521b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
522b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td><strong>mode = AE_MODE_ON_* / AWB_MODE_AUTO</strong></td>
523b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td></td>
524b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td></td>
525b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td></td>
526b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
527b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
528b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <th>State</th>
529b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <th>Transformation cause</th>
530b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <th>New state</th>
531b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <th>Notes</th>
532b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
533b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
534b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>INACTIVE</td>
535b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>HAL initiates AE/AWB scan</td>
536b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>SEARCHING</td>
537b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td></td>
538b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
539b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
540b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>INACTIVE</td>
541b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AE/AWB_LOCK on</td>
542b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>LOCKED</td>
543b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Values locked</td>
544b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
545b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
546b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>SEARCHING</td>
547b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>HAL finishes AE/AWB scan</td>
548b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>CONVERGED</td>
549b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Good values, not changing</td>
550b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
551b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
552b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>SEARCHING</td>
553b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>HAL finishes AE scan</td>
554b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>FLASH_REQUIRED</td>
555b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Converged but too dark without flash</td>
556b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
557b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
558b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>SEARCHING</td>
559b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AE/AWB_LOCK on</td>
560b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>LOCKED</td>
561b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Values locked</td>
562b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
563b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
564b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>CONVERGED</td>
565b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>HAL initiates AE/AWB scan</td>
566b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>SEARCHING</td>
567b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Values locked</td>
568b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
569b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
570b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>CONVERGED</td>
571b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AE/AWB_LOCK on</td>
572b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>LOCKED</td>
573b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Values locked</td>
574b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
575b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
576b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>FLASH_REQUIRED</td>
577b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>HAL initiates AE/AWB scan</td>
578b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>SEARCHING</td>
579b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Values locked</td>
580b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
581b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
582b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>FLASH_REQUIRED</td>
583b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AE/AWB_LOCK on</td>
584b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>LOCKED</td>
585b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Values locked</td>
586b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
587b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
588b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>LOCKED</td>
589b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AE/AWB_LOCK off</td>
590b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>SEARCHING</td>
591b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Values not good after unlock</td>
592b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
593b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
594b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>LOCKED</td>
595b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AE/AWB_LOCK off</td>
596b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>CONVERGED</td>
597b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Values good after unlock</td>
598b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
599b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
600b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>LOCKED</td>
601b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>AE_LOCK off</td>
602b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>FLASH_REQUIRED</td>
603b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Exposure good, but too dark</td>
604b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
605b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
606b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>All AE states</td>
607b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>PRECAPTURE_START</td>
608b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>PRECAPTURE</td>
609b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Start precapture sequence</td>
610b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
611b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
612b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>PRECAPTURE</td>
613b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Sequence done, AE_LOCK off</td>
614b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>CONVERGED</td>
615b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Ready for high-quality capture</td>
616b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
617b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
618b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>PRECAPTURE</td>
619b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Sequence done, AE_LOCK on</td>
620b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>LOCKED</td>
621b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>Ready for high-quality capture</td>
622b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
623b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy</table>
624b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy<h2 id="manual-control">Enabling manual control</h2>
625b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy<p>Several controls are also involved in configuring the device 3A blocks to allow 
626b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  for direct application control.</p>
627b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy<p>The HAL model for 3A control is that for each request, the HAL inspects the 
628b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  state of the 3A control fields. If any 3A routine is enabled, then that routine 
629b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  overrides the control variables that relate to that routine, and these override 
630b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  values are then available in the result metadata for that capture.  So for 
631b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  example, if auto-exposure is enabled in a request, the HAL should overwrite the 
632b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  exposure, gain, and frame duration fields (and potentially the flash fields, 
633b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  depending on AE mode) of the request. The list of relevant controls is:</p>
634b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy<table>
635b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
636b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <th>Control name</th>
637b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <th>Unit</th>
638b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <th>Notes</th>
639b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
640b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
641b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>android.control.mode</td>
642b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>enum: OFF, AUTO, USE_SCENE_MODE</td>
643b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>High-level 3A control. When set to OFF, all 3A control by the HAL is disabled. The application must set the fields for capture parameters itself.
644b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy      When set to AUTO, the individual algorithm controls in android.control.* are in effect, such as android.control.afMode.
645b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy      When set to USE_SCENE_MODE, the individual controls in android.control.* are mostly disabled, and the HAL implements one of the scene mode settings (such as ACTION, SUNSET, or PARTY) as it wishes.</td>
646b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
647b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
648b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>android.control.afMode</td>
649b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>enum</td>
650b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>OFF means manual control of lens focusing through android.lens.focusDistance.</td>
651b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
652b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
653b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>android.control.aeMode</td>
654b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>enum</td>
655b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>OFF means manual control of exposure/gain/frame duration through android.sensor.exposureTime / .sensitivity / .frameDuration</td>
656b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
657b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  <tr>
658b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>android.control.awbMode</td>
659b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>enum</td>
660b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy    <td>OFF means manual control of white balance. </td>
661b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy  </tr>
662b6e5f5b62a2ec10678892b11b8725929dbd75a2dClay Murphy</table>
663