page.title=3A Modes and State Transition
@jd:body

<!--
    Copyright 2013 The Android Open Source Project

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->
<div id="qv-wrapper">
  <div id="qv">
    <h2>In this document</h2>
    <ol id="auto-toc">
    </ol>
  </div>
</div>

<p>
  While the actual 3A algorithms are up to the HAL implementation, a high-level 
  state machine description is defined by the HAL interface to allow the HAL 
  device and the framework to communicate about the current state of 3A and 
  trigger 3A events.</p>
<p>When the device is opened, all the individual 3A states must be STATE_INACTIVE. 
  Stream configuration does not reset 3A. For example, locked focus must be 
  maintained across the configure() call.</p>
<p>Triggering a 3A action involves simply setting the relevant trigger entry in the 
  settings for the next request to indicate start of trigger. For example, the 
  trigger for starting an autofocus scan is setting the entry 
  ANDROID_CONTROL_AF_TRIGGER to ANDROID_CONTROL_AF_TRIGGER_START for one request; 
  and cancelling an autofocus scan is triggered by setting 
  ANDROID_CONTROL_AF_TRIGGER to ANDROID_CONTRL_AF_TRIGGER_CANCEL. Otherwise, the 
  entry will not exist or be set to ANDROID_CONTROL_AF_TRIGGER_IDLE. Each request 
  with a trigger entry set to a non-IDLE value will be treated as an independent 
  triggering event.</p>
<p>At the top level, 3A is controlled by the ANDROID_CONTROL_MODE setting. It 
  selects between no 3A (ANDROID_CONTROL_MODE_OFF), normal AUTO mode 
  (ANDROID_CONTROL_MODE_AUTO), and using the scene mode setting 
  (ANDROID_CONTROL_USE_SCENE_MODE):</p>
<ul>
  <li>In OFF mode, each of the individual Auto-focus(AF), auto-exposure (AE), and 
    auto-whitebalance (AWB) modes are effectively OFF, and none of the capture 
    controls may be overridden by the 3A routines.</li>
  <li>In AUTO mode, AF, AE, and AWB modes all run their own independent algorithms, 
    and have their own mode, state, and trigger metadata entries, as listed in the 
    next section.</li>
  <li>In USE_SCENE_MODE, the value of the ANDROID_CONTROL_SCENE_MODE entry must be 
    used to determine the behavior of 3A routines. In SCENE_MODEs other than 
    FACE_PRIORITY, the HAL must override the values of 
    ANDROID_CONTROL_AE/AWB/AF_MODE to be the mode it prefers for the selected 
    SCENE_MODE. For example, the HAL may prefer SCENE_MODE_NIGHT to use 
    CONTINUOUS_FOCUS AF mode. Any user selection of AE/AWB/AF_MODE when scene must 
    be ignored for these scene modes.</li>
  <li>For SCENE_MODE_FACE_PRIORITY, the AE/AWB/AFMODE controls work as in 
    ANDROID_CONTROL_MODE_AUTO, but the 3A routines must bias toward metering and 
    focusing on any detected faces in the scene.</li>
</ul>
<h2 id="auto-focus">Auto-focus settings and result entries</h2>
<p>Main metadata entries:<br/>
  ANDROID_CONTROL_AF_MODE: Control for selecting the current autofocus mode. Set 
  by the framework in the request settings.<br/>
  AF_MODE_OFF: AF is disabled; the framework/app directly controls lens position.<br/>
  AF_MODE_AUTO: Single-sweep autofocus. No lens movement unless AF is triggered.<br/>
  AF_MODE_MACRO: Single-sweep up-close autofocus. No lens movement unless AF is 
  triggered.<br/>
  AF_MODE_CONTINUOUS_VIDEO: Smooth continuous focusing, for recording video. 
  Triggering immediately locks focus in current position. Canceling resumes 
  cotinuous focusing.<br/>
  AF_MODE_CONTINUOUS_PICTURE: Fast continuous focusing, for zero-shutter-lag still 
  capture. Triggering locks focus once currently active sweep concludes. Canceling 
  resumes continuous focusing.<br/>
  AF_MODE_EDOF: Advanced extended depth of field focusing. There is no autofocus 
  scan, so triggering one or canceling one has no effect. Images are focused 
  automatically by the HAL.<br/>
  ANDROID_CONTROL_AF_STATE: Dynamic metadata describing the current AF algorithm 
  state, reported by the HAL in the result metadata.<br/>
  AF_STATE_INACTIVE: No focusing has been done, or algorithm was reset. Lens is 
  not moving. Always the state for MODE_OFF or MODE_EDOF. When the device is 
  opened, it must start in this state.<br/>
  AF_STATE_PASSIVE_SCAN: A continuous focus algorithm is currently scanning for 
  good focus. The lens is moving.<br/>
  AF_STATE_PASSIVE_FOCUSED: A continuous focus algorithm believes it is well 
  focused. The lens is not moving. The HAL may spontaneously leave this state.<br/>
  AF_STATE_PASSIVE_UNFOCUSED: A continuous focus algorithm believes it is not well 
  focused. The lens is not moving. The HAL may spontaneously leave this state.<br/>
  AF_STATE_ACTIVE_SCAN: A scan triggered by the user is underway.<br/>
  AF_STATE_FOCUSED_LOCKED: The AF algorithm believes it is focused. The lens is 
  not moving.<br/>
  AF_STATE_NOT_FOCUSED_LOCKED: The AF algorithm has been unable to focus. The lens 
  is not moving.<br/>
  ANDROID_CONTROL_AFTRIGGER: Control for starting an autofocus scan, the meaning 
  of which depends on mode and state. Set by the framework in the request 
  settings.<br/>
  AF_TRIGGER_IDLE: No current trigger.<br/>
  AF_TRIGGER_START: Trigger start of AF scan. Effect depends on mode and state.<br/>
  AF_TRIGGER_CANCEL: Cancel current AF scan if any, and reset algorithm to 
  default.<br/>
  Additional metadata entries:<br/>
  ANDROID_CONTROL_AF_REGIONS: Control for selecting the regions of the field of 
  view (FOV) that should be used to determine good focus. This applies to all AF 
  modes that scan for focus. Set by the framework in the request settings.</p>
<h2 id="auto-exposure">Auto-exposure settings and result entries</h2>
<p>Main metadata entries:<br/>
  ANDROID_CONTROL_AE_MODE: Control for selecting the current auto-exposure mode. 
  Set by the framework in the request settings.<br/>
  AE_MODE_OFF: Autoexposure is disabled; the user controls exposure, gain, frame 
  duration, and flash.<br/>
  AE_MODE_ON: Standard autoexposure, with flash control disabled. User may set 
  flash to fire or to torch mode.<br/>
  AE_MODE_ON_AUTO_FLASH: Standard autoexposure, with flash on at HAL's discretion 
  for precapture and still capture. User control of flash disabled.<br/>
  AE_MODE_ON_ALWAYS_FLASH: Standard autoexposure, with flash always fired for 
  capture, and at HAL's discretion for precapture. User control of flash disabled.<br/>
  AE_MODE_ON_AUTO_FLASH_REDEYE: Standard autoexposure, with flash on at HAL's 
  discretion for precapture and still capture. Use a flash burst at end of 
  precapture sequence to reduce redeye in the final picture. User control of flash 
  disabled.<br/>
  ANDROID_CONTROL_AE_STATE: Dynamic metadata describing the current AE algorithm 
  state, reported by the HAL in the result metadata.<br/>
  AE_STATE_INACTIVE: Initial AE state after mode switch. When the device is 
  opened, it must start in this state.<br/>
  AE_STATE_SEARCHING: AE is not converged to a good value and is adjusting 
  exposure parameters.<br/>
  AE_STATE_CONVERGED: AE has found good exposure values for the current scene, and 
  the exposure parameters are not changing. HAL may spontaneously leave this state 
  to search for a better solution.<br/>
  AE_STATE_LOCKED: AE has been locked with the AE_LOCK control. Exposure values 
  are not changing.<br/>
  AE_STATE_FLASH_REQUIRED: The HAL has converged exposure but believes flash is 
  required for a sufficiently bright picture. Used for determining if a 
  zero-shutter-lag frame can be used.<br/>
  AE_STATE_PRECAPTURE: The HAL is in the middle of a precapture sequence. 
  Depending on AE mode, this mode may involve firing the flash for metering or a 
  burst of flash pulses for redeye reduction.<br/>
  ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER: Control for starting a metering sequence 
  before capturing a high-quality image. Set by the framework in the request 
  settings.<br/>
  PRECAPTURE_TRIGGER_IDLE: No current trigger.<br/>
  PRECAPTURE_TRIGGER_START: Start a precapture sequence. The HAL should use the 
  subsequent requests to measure good exposure/white balance for an upcoming 
  high-resolution capture.<br/>
  Additional metadata entries:<br/>
  ANDROID_CONTROL_AE_LOCK: Control for locking AE controls to their current 
  values.<br/>
  ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION: Control for adjusting AE algorithm 
  target brightness point.<br/>
  ANDROID_CONTROL_AE_TARGET_FPS_RANGE: Control for selecting the target frame rate 
  range for the AE algorithm. The AE routine cannot change the frame rate to be 
  outside these bounds.<br/>
  ANDROID_CONTROL_AE_REGIONS: Control for selecting the regions of the FOV that 
  should be used to determine good exposure levels. This applies to all AE modes 
  besides OFF.</p>
<h2 id="auto-wb">Auto-whitebalance settings and result entries</h2>
<p>Main metadata entries:<br/>
  ANDROID_CONTROL_AWB_MODE: Control for selecting the current white-balance mode.<br/>
  AWB_MODE_OFF: Auto-whitebalance is disabled. User controls color matrix.<br/>
  AWB_MODE_AUTO: Automatic white balance is enabled; 3A controls color transform, 
  possibly using more complex transforms than a simple matrix.<br/>
  AWB_MODE_INCANDESCENT: Fixed white balance settings good for indoor incandescent 
  (tungsten) lighting, roughly 2700K.<br/>
  AWB_MODE_FLUORESCENT: Fixed white balance settings good for fluorescent 
  lighting, roughly 5000K.<br/>
  AWB_MODE_WARM_FLUORESCENT: Fixed white balance settings good for fluorescent 
  lighting, roughly 3000K.<br/>
  AWB_MODE_DAYLIGHT: Fixed white balance settings good for daylight, roughly 
  5500K.<br/>
  AWB_MODE_CLOUDY_DAYLIGHT: Fixed white balance settings good for clouded 
  daylight, roughly 6500K.<br/>
  AWB_MODE_TWILIGHT: Fixed white balance settings good for near-sunset/sunrise, 
  roughly 15000K.<br/>
  AWB_MODE_SHADE: Fixed white balance settings good for areas indirectly lit by 
  the sun, roughly 7500K.<br/>
  ANDROID_CONTROL_AWB_STATE: Dynamic metadata describing the current AWB algorithm 
  state, reported by the HAL in the result metadata.<br/>
  AWB_STATE_INACTIVE: Initial AWB state after mode switch. When the device is 
  opened, it must start in this state.<br/>
  AWB_STATE_SEARCHING: AWB is not converged to a good value and is changing color 
  adjustment parameters.<br/>
  AWB_STATE_CONVERGED: AWB has found good color adjustment values for the current 
  scene, and the parameters are not changing. HAL may spontaneously leave this 
  state to search for a better solution.<br/>
  AWB_STATE_LOCKED: AWB has been locked with the AWB_LOCK control. Color 
  adjustment values are not changing.<br/>
  Additional metadata entries:<br/>
  ANDROID_CONTROL_AWB_LOCK: Control for locking AWB color adjustments to their 
  current values.<br/>
  ANDROID_CONTROL_AWB_REGIONS: Control for selecting the regions of the FOV that 
  should be used to determine good color balance. This applies only to 
  auto-whitebalance mode.</p>
<h2 id="state-transition">General state machine transition notes</h2>
<p>Switching between AF, AE, or AWB modes always resets the algorithm's state to 
  INACTIVE. Similarly, switching between CONTROL_MODE or CONTROL_SCENE_MODE if 
  CONTROL_MODE == USE_SCENE_MODE resets all the algorithm states to INACTIVE.<br/>
  The tables below are per-mode.</p>
<h2 id="af-state">AF state machines</h2>
<table>
  <tr>
    <td><strong>mode = AF_MODE_OFF or AF_MODE_EDOF</strong></td>
    <td></td>
    <td></td>
    <td></td>
  </tr>
  <tr>
    <th>State</th>
    <th>Transformation cause</th>
    <th>New state</th>
    <th>Notes</th>
  </tr>
  <tr>
    <td>INACTIVE</td>
    <td></td>
    <td></td>
    <td>AF is disabled</td>
  </tr>
  <tr>
    <td><strong>mode = AF_MODE_AUTO or AF_MODE_MACRO</strong></td>
    <td></td>
    <td></td>
    <td></td>
  </tr>
  <tr>
    <th>State</th>
    <th>Transformation cause</th>
    <th>New state</th>
    <th>Notes</th>
  </tr>
  <tr>
    <td>INACTIVE</td>
    <td>AF_TRIGGER</td>
    <td>ACTIVE_SCAN</td>
    <td>Start AF sweep
      Lens now moving</td>
  </tr>
  <tr>
    <td>ACTIVE_SCAN</td>
    <td>AF sweep done</td>
    <td>FOCUSED_LOCKED</td>
    <td>If AF successful
      Lens now locked</td>
  </tr>
  <tr>
    <td>ACTIVE_SCAN</td>
    <td>AF sweep done</td>
    <td>NOT_FOCUSED_LOCKED</td>
    <td>If AF successful
      Lens now locked</td>
  </tr>
  <tr>
    <td>ACTIVE_SCAN</td>
    <td>AF_CANCEL</td>
    <td>INACTIVE</td>
    <td>Cancel/reset AF
      Lens now locked</td>
  </tr>
  <tr>
    <td>FOCUSED_LOCKED</td>
    <td>AF_CANCEL</td>
    <td>INACTIVE</td>
    <td>Cancel/reset AF</td>
  </tr>
  <tr>
    <td>FOCUSED_LOCKED</td>
    <td>AF_TRIGGER</td>
    <td>ACTIVE_SCAN</td>
    <td>Start new sweep
      Lens now moving</td>
  </tr>
  <tr>
    <td>NOT_FOCUSED_LOCKED</td>
    <td>AF_CANCEL</td>
    <td>INACTIVE</td>
    <td>Cancel/reset AF</td>
  </tr>
  <tr>
    <td>NOT_FOCUSED_LOCKED</td>
    <td>AF_TRIGGER</td>
    <td>ACTIVE_SCAN</td>
    <td>Start new sweep
      Lens now moving</td>
  </tr>
  <tr>
    <td>All states</td>
    <td>mode change</td>
    <td>INACTIVE</td>
    <td></td>
  </tr>
  <tr>
    <td><strong>mode = AF_MODE_CONTINUOUS_VIDEO</strong></td>
    <td></td>
    <td></td>
    <td></td>
  </tr>
  <tr>
    <th>State</th>
    <th>Transformation cause</th>
    <th>New state</th>
    <th>Notes</th>
  </tr>
  <tr>
    <td>INACTIVE</td>
    <td>HAL initiates new scan</td>
    <td>PASSIVE_SCAN</td>
    <td>Start AF sweep
      Lens now moving</td>
  </tr>
  <tr>
    <td>INACTIVE</td>
    <td>AF_TRIGGER</td>
    <td>NOT_FOCUSED_LOCKED</td>
    <td>AF state query 
      Lens now locked</td>
  </tr>
  <tr>
    <td>PASSIVE_SCAN</td>
    <td>HAL completes current scan</td>
    <td>PASSIVE_FOCUSED</td>
    <td>End AF scan
      Lens now locked </td>
  </tr>
  <tr>
    <td>PASSIVE_SCAN</td>
    <td>AF_TRIGGER</td>
    <td>FOCUSED_LOCKED</td>
    <td>Immediate transformation
      if focus is good
      Lens now locked</td>
  </tr>
  <tr>
    <td>PASSIVE_SCAN</td>
    <td>AF_TRIGGER</td>
    <td>NOT_FOCUSED_LOCKED</td>
    <td>Immediate transformation
      if focus is bad
      Lens now locked</td>
  </tr>
  <tr>
    <td>PASSIVE_SCAN</td>
    <td>AF_CANCEL</td>
    <td>INACTIVE</td>
    <td>Reset lens position
      Lens now locked</td>
  </tr>
  <tr>
    <td>PASSIVE_FOCUSED</td>
    <td>HAL initiates new scan</td>
    <td>PASSIVE_SCAN</td>
    <td>Start AF scan
      Lens now moving</td>
  </tr>
  <tr>
    <td>PASSIVE_FOCUSED</td>
    <td>AF_TRIGGER</td>
    <td>FOCUSED_LOCKED</td>
    <td>Immediate transformation
      if focus is good
      Lens now locked</td>
  </tr>
  <tr>
    <td>PASSIVE_FOCUSED</td>
    <td>AF_TRIGGER</td>
    <td>NOT_FOCUSED_LOCKED</td>
    <td>Immediate transformation
      if focus is bad
      Lens now locked</td>
  </tr>
  <tr>
    <td>FOCUSED_LOCKED</td>
    <td>AF_TRIGGER</td>
    <td>FOCUSED_LOCKED</td>
    <td>No effect</td>
  </tr>
  <tr>
    <td>FOCUSED_LOCKED</td>
    <td>AF_CANCEL</td>
    <td>INACTIVE</td>
    <td>Restart AF scan</td>
  </tr>
  <tr>
    <td>NOT_FOCUSED_LOCKED</td>
    <td>AF_TRIGGER</td>
    <td>NOT_FOCUSED_LOCKED</td>
    <td>No effect</td>
  </tr>
  <tr>
    <td>NOT_FOCUSED_LOCKED</td>
    <td>AF_CANCEL</td>
    <td>INACTIVE</td>
    <td>Restart AF scan</td>
  </tr>
  <tr>
    <td><strong>mode = AF_MODE_CONTINUOUS_PICTURE</strong></td>
    <td></td>
    <td></td>
    <td></td>
  </tr>
  <tr>
    <th>State</th>
    <th>Transformation cause</th>
    <th>New state</th>
    <th>Notes</th>
  </tr>
  <tr>
    <td>INACTIVE</td>
    <td>HAL initiates new scan</td>
    <td>PASSIVE_SCAN</td>
    <td>Start AF scan
      Lens now moving</td>
  </tr>
  <tr>
    <td>INACTIVE</td>
    <td>AF_TRIGGER</td>
    <td>NOT_FOCUSED_LOCKED</td>
    <td>AF state query
      Lens now locked</td>
  </tr>
  <tr>
    <td>PASSIVE_SCAN</td>
    <td>HAL completes current scan</td>
    <td>PASSIVE_FOCUSED</td>
    <td>End AF scan
      Lens now locked</td>
  </tr>
  <tr>
    <td>PASSIVE_SCAN</td>
    <td>AF_TRIGGER</td>
    <td>FOCUSED_LOCKED</td>
    <td>Eventual transformation once focus good
      Lens now locked</td>
  </tr>
  <tr>
    <td>PASSIVE_SCAN</td>
    <td>AF_TRIGGER</td>
    <td>NOT_FOCUSED_LOCKED</td>
    <td>Eventual transformation if cannot focus
      Lens now locked</td>
  </tr>
  <tr>
    <td>PASSIVE_SCAN</td>
    <td>AF_CANCEL</td>
    <td>INACTIVE</td>
    <td>Reset lens position
      Lens now locked</td>
  </tr>
  <tr>
    <td>PASSIVE_FOCUSED</td>
    <td>HAL initiates new scan</td>
    <td>PASSIVE_SCAN</td>
    <td>Start AF scan
      Lens now moving</td>
  </tr>
  <tr>
    <td>PASSIVE_FOCUSED</td>
    <td>AF_TRIGGER</td>
    <td>FOCUSED_LOCKED</td>
    <td>Immediate transformation if focus is good
      Lens now locked</td>
  </tr>
  <tr>
    <td>PASSIVE_FOCUSED</td>
    <td>AF_TRIGGER</td>
    <td>NOT_FOCUSED_LOCKED</td>
    <td>Immediate transformation if focus is bad
      Lens now locked</td>
  </tr>
  <tr>
    <td>FOCUSED_LOCKED</td>
    <td>AF_TRIGGER</td>
    <td>FOCUSED_LOCKED</td>
    <td>No effect</td>
  </tr>
  <tr>
    <td>FOCUSED_LOCKED</td>
    <td>AF_CANCEL</td>
    <td>INACTIVE</td>
    <td>Restart AF scan</td>
  </tr>
  <tr>
    <td>NOT_FOCUSED_LOCKED</td>
    <td>AF_TRIGGER</td>
    <td>NOT_FOCUSED_LOCKED</td>
    <td>No effect</td>
  </tr>
  <tr>
    <td>NOT_FOCUSED_LOCKED</td>
    <td>AF_CANCEL</td>
    <td>INACTIVE</td>
    <td>Restart AF scan</td>
  </tr>
</table>
<h2 id="ae-wb">AE and AWB state machines</h2>
<p>The AE and AWB state machines are mostly identical. AE has additional 
  FLASH_REQUIRED and PRECAPTURE states. So rows below that refer to those two 
  states should be ignored for the AWB state machine.</p>
<table>
  <tr>
    <td><strong>mode = AE_MODE_OFF / AWB mode not AUTO</strong></td>
    <td></td>
    <td></td>
    <td></td>
  </tr>
  <tr>
    <th>State</th>
    <th>Transformation cause</th>
    <th>New state</th>
    <th>Notes</th>
  </tr>
  <tr>
    <td>INACTIVE</td>
    <td></td>
    <td></td>
    <td>AE/AWB disabled</td>
  </tr>
  <tr>
    <td><strong>mode = AE_MODE_ON_* / AWB_MODE_AUTO</strong></td>
    <td></td>
    <td></td>
    <td></td>
  </tr>
  <tr>
    <th>State</th>
    <th>Transformation cause</th>
    <th>New state</th>
    <th>Notes</th>
  </tr>
  <tr>
    <td>INACTIVE</td>
    <td>HAL initiates AE/AWB scan</td>
    <td>SEARCHING</td>
    <td></td>
  </tr>
  <tr>
    <td>INACTIVE</td>
    <td>AE/AWB_LOCK on</td>
    <td>LOCKED</td>
    <td>Values locked</td>
  </tr>
  <tr>
    <td>SEARCHING</td>
    <td>HAL finishes AE/AWB scan</td>
    <td>CONVERGED</td>
    <td>Good values, not changing</td>
  </tr>
  <tr>
    <td>SEARCHING</td>
    <td>HAL finishes AE scan</td>
    <td>FLASH_REQUIRED</td>
    <td>Converged but too dark without flash</td>
  </tr>
  <tr>
    <td>SEARCHING</td>
    <td>AE/AWB_LOCK on</td>
    <td>LOCKED</td>
    <td>Values locked</td>
  </tr>
  <tr>
    <td>CONVERGED</td>
    <td>HAL initiates AE/AWB scan</td>
    <td>SEARCHING</td>
    <td>Values locked</td>
  </tr>
  <tr>
    <td>CONVERGED</td>
    <td>AE/AWB_LOCK on</td>
    <td>LOCKED</td>
    <td>Values locked</td>
  </tr>
  <tr>
    <td>FLASH_REQUIRED</td>
    <td>HAL initiates AE/AWB scan</td>
    <td>SEARCHING</td>
    <td>Values locked</td>
  </tr>
  <tr>
    <td>FLASH_REQUIRED</td>
    <td>AE/AWB_LOCK on</td>
    <td>LOCKED</td>
    <td>Values locked</td>
  </tr>
  <tr>
    <td>LOCKED</td>
    <td>AE/AWB_LOCK off</td>
    <td>SEARCHING</td>
    <td>Values not good after unlock</td>
  </tr>
  <tr>
    <td>LOCKED</td>
    <td>AE/AWB_LOCK off</td>
    <td>CONVERGED</td>
    <td>Values good after unlock</td>
  </tr>
  <tr>
    <td>LOCKED</td>
    <td>AE_LOCK off</td>
    <td>FLASH_REQUIRED</td>
    <td>Exposure good, but too dark</td>
  </tr>
  <tr>
    <td>All AE states</td>
    <td>PRECAPTURE_START</td>
    <td>PRECAPTURE</td>
    <td>Start precapture sequence</td>
  </tr>
  <tr>
    <td>PRECAPTURE</td>
    <td>Sequence done, AE_LOCK off</td>
    <td>CONVERGED</td>
    <td>Ready for high-quality capture</td>
  </tr>
  <tr>
    <td>PRECAPTURE</td>
    <td>Sequence done, AE_LOCK on</td>
    <td>LOCKED</td>
    <td>Ready for high-quality capture</td>
  </tr>
</table>
<h2 id="manual-control">Enabling manual control</h2>
<p>Several controls are also involved in configuring the device 3A blocks to allow 
  for direct application control.</p>
<p>The HAL model for 3A control is that for each request, the HAL inspects the 
  state of the 3A control fields. If any 3A routine is enabled, then that routine 
  overrides the control variables that relate to that routine, and these override 
  values are then available in the result metadata for that capture.  So for 
  example, if auto-exposure is enabled in a request, the HAL should overwrite the 
  exposure, gain, and frame duration fields (and potentially the flash fields, 
  depending on AE mode) of the request. The list of relevant controls is:</p>
<table>
  <tr>
    <th>Control name</th>
    <th>Unit</th>
    <th>Notes</th>
  </tr>
  <tr>
    <td>android.control.mode</td>
    <td>enum: OFF, AUTO, USE_SCENE_MODE</td>
    <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.
      When set to AUTO, the individual algorithm controls in android.control.* are in effect, such as android.control.afMode.
      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>
  </tr>
  <tr>
    <td>android.control.afMode</td>
    <td>enum</td>
    <td>OFF means manual control of lens focusing through android.lens.focusDistance.</td>
  </tr>
  <tr>
    <td>android.control.aeMode</td>
    <td>enum</td>
    <td>OFF means manual control of exposure/gain/frame duration through android.sensor.exposureTime / .sensitivity / .frameDuration</td>
  </tr>
  <tr>
    <td>android.control.awbMode</td>
    <td>enum</td>
    <td>OFF means manual control of white balance. </td>
  </tr>
</table>
