OSDN Git Service

camera_metadata: Update 3A state machine
authorZhijun He <zhijunhe@google.com>
Wed, 12 Feb 2014 01:18:29 +0000 (17:18 -0800)
committerZhijun He <zhijunhe@google.com>
Sat, 22 Feb 2014 01:18:20 +0000 (17:18 -0800)
Transient states can be skipped by camera device when reporting result.

Bug: 12840262
Change-Id: I2092e1d24b262a0568b880094b8ad6a87510b346

camera/docs/docs.html
camera/docs/metadata_properties.xml

index b995eaf..28ec8a1 100644 (file)
@@ -3519,12 +3519,14 @@ used sections in the frame metadata.<wbr/></p>
                   <li>
                     <span class="entry_type_enum_name">INACTIVE</span>
                     <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/> When a camera device is opened,<wbr/> it starts in
-this state.<wbr/></p></span>
+this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting
+this state in capture result.<wbr/></p></span>
                   </li>
                   <li>
                     <span class="entry_type_enum_name">SEARCHING</span>
                     <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values
-for the current scene.<wbr/></p></span>
+for the current scene.<wbr/> This is a transient state,<wbr/> the camera device may skip
+reporting this state in capture result.<wbr/></p></span>
                   </li>
                   <li>
                     <span class="entry_type_enum_name">CONVERGED</span>
@@ -3547,7 +3549,8 @@ capture.<wbr/></p></span>
 (through the <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> START),<wbr/>
 and is currently executing it.<wbr/> Once PRECAPTURE
 completes,<wbr/> AE will transition to CONVERGED or
-FLASH_<wbr/>REQUIRED as appropriate.<wbr/></p></span>
+FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient state,<wbr/> the
+camera device may skip reporting this state in capture result.<wbr/></p></span>
                   </li>
                 </ul>
 
@@ -3704,6 +3707,54 @@ be good to use.<wbr/></p>
 </tr>
 </tbody>
 </table>
+<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
+without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
+can be skipped in that manner is called a transient state.<wbr/></p>
+<p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON_<wbr/>*),<wbr/> in addition to the state transitions
+listed in above table,<wbr/> it is also legal for the camera device to skip one or more
+transient states between two results.<wbr/> See below table for examples:</p>
+<table>
+<thead>
+<tr>
+<th align="center">State</th>
+<th align="center">Transition Cause</th>
+<th align="center">New State</th>
+<th align="center">Notes</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center">INACTIVE</td>
+<td align="center">Camera device finished AE scan</td>
+<td align="center">CONVERGED</td>
+<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
+</tr>
+<tr>
+<td align="center">Any state</td>
+<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START,<wbr/> sequence done</td>
+<td align="center">FLASH_<wbr/>REQUIRED</td>
+<td align="center">Converged but too dark w/<wbr/>o flash after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td>
+</tr>
+<tr>
+<td align="center">Any state</td>
+<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START,<wbr/> sequence done</td>
+<td align="center">CONVERGED</td>
+<td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td>
+</tr>
+<tr>
+<td align="center">CONVERGED</td>
+<td align="center">Camera device finished AE scan</td>
+<td align="center">FLASH_<wbr/>REQUIRED</td>
+<td align="center">Converged but too dark w/<wbr/>o flash after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td>
+</tr>
+<tr>
+<td align="center">FLASH_<wbr/>REQUIRED</td>
+<td align="center">Camera device finished AE scan</td>
+<td align="center">CONVERGED</td>
+<td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td>
+</tr>
+</tbody>
+</table>
             </td>
           </tr>
 
@@ -3910,50 +3961,55 @@ used sections in the frame metadata.<wbr/></p>
                     <span class="entry_type_enum_name">INACTIVE</span>
                     <span class="entry_type_enum_notes"><p>AF off or has not yet tried to scan/<wbr/>been asked
 to scan.<wbr/>  When a camera device is opened,<wbr/> it starts in
-this state.<wbr/></p></span>
+this state.<wbr/> This is a transient state,<wbr/> the camera device may
+skip reporting this state in capture result.<wbr/></p></span>
                   </li>
                   <li>
                     <span class="entry_type_enum_name">PASSIVE_SCAN</span>
                     <span class="entry_type_enum_notes"><p>if CONTINUOUS_<wbr/>* modes are supported.<wbr/> AF is
 currently doing an AF scan initiated by a continuous
-autofocus mode</p></span>
+autofocus mode.<wbr/> This is a transient state,<wbr/> the camera device may
+skip reporting this state in capture result.<wbr/></p></span>
                   </li>
                   <li>
                     <span class="entry_type_enum_name">PASSIVE_FOCUSED</span>
                     <span class="entry_type_enum_notes"><p>if CONTINUOUS_<wbr/>* modes are supported.<wbr/> AF currently
 believes it is in focus,<wbr/> but may restart scanning at
-any time.<wbr/></p></span>
+any time.<wbr/> This is a transient state,<wbr/> the camera device may skip
+reporting this state in capture result.<wbr/></p></span>
                   </li>
                   <li>
                     <span class="entry_type_enum_name">ACTIVE_SCAN</span>
                     <span class="entry_type_enum_notes"><p>if AUTO or MACRO modes are supported.<wbr/> AF is doing
-an AF scan because it was triggered by AF
-trigger</p></span>
+an AF scan because it was triggered by AF trigger.<wbr/> This is a
+transient state,<wbr/> the camera device may skip reporting
+this state in capture result.<wbr/></p></span>
                   </li>
                   <li>
                     <span class="entry_type_enum_name">FOCUSED_LOCKED</span>
                     <span class="entry_type_enum_notes"><p>if any AF mode besides OFF is supported.<wbr/> AF
 believes it is focused correctly and is
-locked</p></span>
+locked.<wbr/></p></span>
                   </li>
                   <li>
                     <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED</span>
                     <span class="entry_type_enum_notes"><p>if any AF mode besides OFF is supported.<wbr/> AF has
 failed to focus successfully and is
-locked</p></span>
+locked.<wbr/></p></span>
                   </li>
                   <li>
                     <span class="entry_type_enum_name">PASSIVE_UNFOCUSED</span>
                     <span class="entry_type_enum_notes"><p>if CONTINUOUS_<wbr/>* modes are supported.<wbr/> AF finished a
 passive scan without finding focus,<wbr/> and may restart
-scanning at any time.<wbr/></p></span>
+scanning at any time.<wbr/> This is a transient state,<wbr/> the camera
+device may skip reporting this state in capture result.<wbr/></p></span>
                   </li>
                 </ul>
 
             </td> <!-- entry_type -->
 
             <td class="entry_description">
-              <p>Current state of AF algorithm</p>
+              <p>Current state of AF algorithm.<wbr/></p>
             </td>
 
             <td class="entry_units">
@@ -4068,6 +4124,48 @@ be sharp.<wbr/></p>
 </tr>
 </tbody>
 </table>
+<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
+without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
+can be skipped in that manner is called a transient state.<wbr/></p>
+<p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the
+state transitions listed in above table,<wbr/> it is also legal for the camera device to skip
+one or more transient states between two results.<wbr/> See below table for examples:</p>
+<table>
+<thead>
+<tr>
+<th align="center">State</th>
+<th align="center">Transition Cause</th>
+<th align="center">New State</th>
+<th align="center">Notes</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center">INACTIVE</td>
+<td align="center">AF_<wbr/>TRIGGER</td>
+<td align="center">FOCUSED_<wbr/>LOCKED</td>
+<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
+</tr>
+<tr>
+<td align="center">INACTIVE</td>
+<td align="center">AF_<wbr/>TRIGGER</td>
+<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
+<td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td>
+</tr>
+<tr>
+<td align="center">FOCUSED_<wbr/>LOCKED</td>
+<td align="center">AF_<wbr/>TRIGGER</td>
+<td align="center">FOCUSED_<wbr/>LOCKED</td>
+<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
+</tr>
+<tr>
+<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
+<td align="center">AF_<wbr/>TRIGGER</td>
+<td align="center">FOCUSED_<wbr/>LOCKED</td>
+<td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td>
+</tr>
+</tbody>
+</table>
 <p>When <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> is AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>VIDEO:</p>
 <table>
 <thead>
@@ -4274,6 +4372,41 @@ be sharp.<wbr/></p>
 </tr>
 </tbody>
 </table>
+<p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO
+(AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the
+camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger
+will be evaluated in the context of the new mode in the request.<wbr/>
+See below table for examples:</p>
+<table>
+<thead>
+<tr>
+<th align="center">State</th>
+<th align="center">Transition Cause</th>
+<th align="center">New State</th>
+<th align="center">Notes</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center">any state</td>
+<td align="center">CAF--&gt;AUTO mode switch</td>
+<td align="center">INACTIVE</td>
+<td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td>
+</tr>
+<tr>
+<td align="center">any state</td>
+<td align="center">CAF--&gt;AUTO mode switch with AF_<wbr/>TRIGGER</td>
+<td align="center">trigger-reachable states from INACTIVE</td>
+<td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td>
+</tr>
+<tr>
+<td align="center">any state</td>
+<td align="center">AUTO--&gt;CAF mode switch</td>
+<td align="center">passively reachable states from INACTIVE</td>
+<td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td>
+</tr>
+</tbody>
+</table>
             </td>
           </tr>
 
@@ -4526,12 +4659,14 @@ used sections in the frame metadata.<wbr/></p>
                   <li>
                     <span class="entry_type_enum_name">INACTIVE</span>
                     <span class="entry_type_enum_notes"><p>AWB is not in auto mode.<wbr/>  When a camera device is opened,<wbr/> it
-starts in this state.<wbr/></p></span>
+starts in this state.<wbr/> This is a transient state,<wbr/> the camera device may
+skip reporting this state in capture result.<wbr/></p></span>
                   </li>
                   <li>
                     <span class="entry_type_enum_name">SEARCHING</span>
                     <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control
-values for the current scene.<wbr/></p></span>
+values for the current scene.<wbr/> This is a transient state,<wbr/> the camera device
+may skip reporting this state in capture result.<wbr/></p></span>
                   </li>
                   <li>
                     <span class="entry_type_enum_name">CONVERGED</span>
@@ -4648,11 +4783,35 @@ be good to use.<wbr/></p>
 <td align="center">SEARCHING</td>
 <td align="center">Values not good after unlock</td>
 </tr>
+</tbody>
+</table>
+<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
+without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
+can be skipped in that manner is called a transient state.<wbr/></p>
+<p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions
+listed in above table,<wbr/> it is also legal for the camera device to skip one or more
+transient states between two results.<wbr/> See below table for examples:</p>
+<table>
+<thead>
+<tr>
+<th align="center">State</th>
+<th align="center">Transition Cause</th>
+<th align="center">New State</th>
+<th align="center">Notes</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center">INACTIVE</td>
+<td align="center">Camera device finished AWB scan</td>
+<td align="center">CONVERGED</td>
+<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
+</tr>
 <tr>
 <td align="center">LOCKED</td>
 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
 <td align="center">CONVERGED</td>
-<td align="center">Values good after unlock</td>
+<td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td>
 </tr>
 </tbody>
 </table>
index 16d1c48..83763f3 100644 (file)
@@ -1327,10 +1327,12 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           <enum>
             <value>INACTIVE
             <notes>AE is off or recently reset. When a camera device is opened, it starts in
-            this state.</notes></value>
+            this state. This is a transient state, the camera device may skip reporting
+            this state in capture result.</notes></value>
             <value>SEARCHING
             <notes>AE doesn't yet have a good set of control values
-            for the current scene.</notes></value>
+            for the current scene. This is a transient state, the camera device may skip
+            reporting this state in capture result.</notes></value>
             <value>CONVERGED
             <notes>AE has a good set of control values for the
             current scene.</notes></value>
@@ -1345,7 +1347,8 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
             (through the android.control.aePrecaptureTrigger START),
             and is currently executing it. Once PRECAPTURE
             completes, AE will transition to CONVERGED or
-            FLASH_REQUIRED as appropriate.</notes></value>
+            FLASH_REQUIRED as appropriate. This is a transient state, the
+            camera device may skip reporting this state in capture result.</notes></value>
           </enum>
           <description>Current state of AE algorithm</description>
           <details>Switching between or enabling AE modes (android.control.aeMode) always
@@ -1386,6 +1389,22 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           PRECAPTURE     | Sequence done. android.control.aeLock is OFF | CONVERGED      | Ready for high-quality capture
           PRECAPTURE     | Sequence done. android.control.aeLock is ON  | LOCKED         | Ready for high-quality capture
           Any state      | android.control.aePrecaptureTrigger is START | PRECAPTURE     | Start AE precapture metering sequence
+
+          For the above table, the camera device may skip reporting any state changes that happen
+          without application intervention (i.e. mode switch, trigger, locking). Any state that
+          can be skipped in that manner is called a transient state.
+
+          For example, for above AE modes (AE_MODE_ON_*), in addition to the state transitions
+          listed in above table, it is also legal for the camera device to skip one or more
+          transient states between two results. See below table for examples:
+
+            State        | Transition Cause                                            | New State      | Notes
+          :-------------:|:-----------------------------------------------------------:|:--------------:|:-----------------:
+          INACTIVE       | Camera device finished AE scan                              | CONVERGED      | Values are already good, transient states are skipped by camera device.
+          Any state      | android.control.aePrecaptureTrigger is START, sequence done | FLASH_REQUIRED | Converged but too dark w/o flash after a precapture sequence, transient states are skipped by camera device.
+          Any state      | android.control.aePrecaptureTrigger is START, sequence done | CONVERGED      | Converged after a precapture sequence, transient states are skipped by camera device.
+          CONVERGED      | Camera device finished AE scan                              | FLASH_REQUIRED | Converged but too dark w/o flash after a new scan, transient states are skipped by camera device.
+          FLASH_REQUIRED | Camera device finished AE scan                              | CONVERGED      | Converged after a new scan, transient states are skipped by camera device.
           </details>
         </entry>
         <clone entry="android.control.afMode" kind="controls">
@@ -1397,33 +1416,38 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
             <value>INACTIVE
             <notes>AF off or has not yet tried to scan/been asked
             to scan.  When a camera device is opened, it starts in
-            this state.</notes></value>
+            this state. This is a transient state, the camera device may
+            skip reporting this state in capture result.</notes></value>
             <value>PASSIVE_SCAN
             <notes>if CONTINUOUS_* modes are supported. AF is
             currently doing an AF scan initiated by a continuous
-            autofocus mode</notes></value>
+            autofocus mode. This is a transient state, the camera device may
+            skip reporting this state in capture result.</notes></value>
             <value>PASSIVE_FOCUSED
             <notes>if CONTINUOUS_* modes are supported. AF currently
             believes it is in focus, but may restart scanning at
-            any time.</notes></value>
+            any time. This is a transient state, the camera device may skip
+            reporting this state in capture result.</notes></value>
             <value>ACTIVE_SCAN
             <notes>if AUTO or MACRO modes are supported. AF is doing
-            an AF scan because it was triggered by AF
-            trigger</notes></value>
+            an AF scan because it was triggered by AF trigger. This is a
+            transient state, the camera device may skip reporting
+            this state in capture result.</notes></value>
             <value>FOCUSED_LOCKED
             <notes>if any AF mode besides OFF is supported. AF
             believes it is focused correctly and is
-            locked</notes></value>
+            locked.</notes></value>
             <value>NOT_FOCUSED_LOCKED
             <notes>if any AF mode besides OFF is supported. AF has
             failed to focus successfully and is
-            locked</notes></value>
+            locked.</notes></value>
             <value>PASSIVE_UNFOCUSED
             <notes>if CONTINUOUS_* modes are supported. AF finished a
             passive scan without finding focus, and may restart
-            scanning at any time.</notes></value>
+            scanning at any time. This is a transient state, the camera
+            device may skip reporting this state in capture result.</notes></value>
           </enum>
-          <description>Current state of AF algorithm</description>
+          <description>Current state of AF algorithm.</description>
           <details>
           Switching between or enabling AF modes (android.control.afMode) always
           resets the AF state to INACTIVE. Similarly, switching between android.control.mode,
@@ -1460,6 +1484,22 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           NOT_FOCUSED_LOCKED | AF_TRIGGER       | ACTIVE_SCAN        | Start new sweep, Lens now moving
           Any state          | Mode change      | INACTIVE           |
 
+          For the above table, the camera device may skip reporting any state changes that happen
+          without application intervention (i.e. mode switch, trigger, locking). Any state that
+          can be skipped in that manner is called a transient state.
+
+          For example, for these AF modes (AF_MODE_AUTO and AF_MODE_MACRO), in addition to the
+          state transitions listed in above table, it is also legal for the camera device to skip
+          one or more transient states between two results. See below table for examples:
+
+            State            | Transition Cause | New State          | Notes
+          :-----------------:|:----------------:|:------------------:|:--------------:
+          INACTIVE           | AF_TRIGGER       | FOCUSED_LOCKED     | Focus is already good or good after a scan, lens is now locked.
+          INACTIVE           | AF_TRIGGER       | NOT_FOCUSED_LOCKED | Focus failed after a scan, lens is now locked.
+          FOCUSED_LOCKED     | AF_TRIGGER       | FOCUSED_LOCKED     | Focus is already good or good after a scan, lens is now locked.
+          NOT_FOCUSED_LOCKED | AF_TRIGGER       | FOCUSED_LOCKED     | Focus is good after a scan, lens is not locked.
+
+
           When android.control.afMode is AF_MODE_CONTINUOUS_VIDEO:
 
             State            | Transition Cause                    | New State          | Notes
@@ -1499,6 +1539,18 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           FOCUSED_LOCKED     | AF_CANCEL                            | INACTIVE           | Restart AF scan
           NOT_FOCUSED_LOCKED | AF_TRIGGER                           | NOT_FOCUSED_LOCKED | No effect
           NOT_FOCUSED_LOCKED | AF_CANCEL                            | INACTIVE           | Restart AF scan
+
+          When switch between AF_MODE_CONTINUOUS_* (CAF modes) and AF_MODE_AUTO/AF_MODE_MACRO
+          (AUTO modes), the initial INACTIVE or PASSIVE_SCAN states may be skipped by the
+          camera device. When a trigger is included in a mode switch request, the trigger
+          will be evaluated in the context of the new mode in the request.
+          See below table for examples:
+
+            State      | Transition Cause                       | New State                                | Notes
+          :-----------:|:--------------------------------------:|:----------------------------------------:|:--------------:
+          any state    | CAF-->AUTO mode switch                 | INACTIVE                                 | Mode switch without trigger, initial state must be INACTIVE
+          any state    | CAF-->AUTO mode switch with AF_TRIGGER | trigger-reachable states from INACTIVE   | Mode switch with trigger, INACTIVE is skipped
+          any state    | AUTO-->CAF mode switch                 | passively reachable states from INACTIVE | Mode switch without trigger, passive transient state is skipped
           </details>
         </entry>
         <entry name="afTriggerId" type="int32" visibility="hidden">
@@ -1517,10 +1569,12 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           <enum>
             <value>INACTIVE
             <notes>AWB is not in auto mode.  When a camera device is opened, it
-            starts in this state.</notes></value>
+            starts in this state. This is a transient state, the camera device may
+            skip reporting this state in capture result.</notes></value>
             <value>SEARCHING
             <notes>AWB doesn't yet have a good set of control
-            values for the current scene.</notes></value>
+            values for the current scene. This is a transient state, the camera device
+            may skip reporting this state in capture result.</notes></value>
             <value>CONVERGED
             <notes>AWB has a good set of control values for the
             current scene.</notes></value>
@@ -1561,7 +1615,19 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           CONVERGED      | Camera device initiates AWB scan | SEARCHING     | Values changing
           CONVERGED      | android.control.awbLock is ON    | LOCKED        | Values locked
           LOCKED         | android.control.awbLock is OFF   | SEARCHING     | Values not good after unlock
-          LOCKED         | android.control.awbLock is OFF   | CONVERGED     | Values good after unlock
+
+          For the above table, the camera device may skip reporting any state changes that happen
+          without application intervention (i.e. mode switch, trigger, locking). Any state that
+          can be skipped in that manner is called a transient state.
+
+          For example, for this AWB mode (AWB_MODE_AUTO), in addition to the state transitions
+          listed in above table, it is also legal for the camera device to skip one or more
+          transient states between two results. See below table for examples:
+
+            State        | Transition Cause                 | New State     | Notes
+          :-------------:|:--------------------------------:|:-------------:|:-----------------:
+          INACTIVE       | Camera device finished AWB scan  | CONVERGED     | Values are already good, transient states are skipped by camera device.
+          LOCKED         | android.control.awbLock is OFF   | CONVERGED     | Values good after unlock, transient states are skipped by camera device.
           </details>
         </entry>
         <clone entry="android.control.mode" kind="controls">