Home | History | Annotate | Download | only in docs
      1 <!DOCTYPE html>
      2 <html>
      3 <!-- Copyright (C) 2012 The Android Open Source Project
      4 
      5      Licensed under the Apache License, Version 2.0 (the "License");
      6      you may not use this file except in compliance with the License.
      7      You may obtain a copy of the License at
      8 
      9           http://www.apache.org/licenses/LICENSE-2.0
     10 
     11      Unless required by applicable law or agreed to in writing, software
     12      distributed under the License is distributed on an "AS IS" BASIS,
     13      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14      See the License for the specific language governing permissions and
     15      limitations under the License.
     16 -->
     17 <head>
     18   <!-- automatically generated from html.mako. do NOT edit directly -->
     19   <meta charset="utf-8" />
     20   <title>Android Camera HAL3.2 Properties</title>
     21   <style type="text/css">
     22      body { background-color: #f7f7f7; font-family: Roboto, sans-serif;}
     23      h1 { color: #333333; }
     24      h2 { color: #333333; }
     25      a:link { color: #258aaf; text-decoration: none}
     26      a:hover { color: #459aaf; text-decoration: underline }
     27      a:visited { color: #154a5f; text-decoration: none}
     28     .section { color: #eeeeee; font-size: 1.5em; font-weight: bold; background-color: #888888; padding: 0.5em 0em 0.5em 0.5em; border-width: thick thin thin thin; border-color: #111111 #777777 #777777 #777777}
     29     .kind { color: #eeeeee; font-size: 1.2em; font-weight: bold; padding-left: 1.5em; background-color: #aaaaaa }
     30     .entry { background-color: #f0f0f0 }
     31     .entry_cont { background-color: #f0f0f0 }
     32     .entries_header { background-color: #dddddd; text-align: center}
     33 
     34     /* toc style */
     35     .toc_section_header { font-size:1.3em;  }
     36     .toc_kind_header { font-size:1.2em;  }
     37     .toc_deprecated { text-decoration:line-through; }
     38 
     39     /* table column sizes */
     40     table { border-collapse:collapse; table-layout: fixed; width: 100%; word-wrap: break-word }
     41     td,th { border: 1px solid; border-color: #aaaaaa; padding-left: 0.5em; padding-right: 0.5em }
     42     .th_name { width: 20% }
     43     .th_units { width: 10% }
     44     .th_tags { width: 5% }
     45     .th_details { width: 25% }
     46     .th_type { width: 20% }
     47     .th_description { width: 20% }
     48     .th_range { width: 10% }
     49     td { font-size: 0.9em; }
     50 
     51     /* hide the first thead, we need it there only to enforce column sizes */
     52     .thead_dummy { visibility: hidden; }
     53 
     54     /* Entry flair */
     55     .entry_name { color: #333333; padding-left:1.0em; font-size:1.1em; font-family: monospace; vertical-align:top; }
     56     .entry_name_deprecated { text-decoration:line-through; }
     57 
     58     /* Entry type flair */
     59     .entry_type_name { font-size:1.1em; color: #669900; font-weight: bold;}
     60     .entry_type_name_enum:after { color: #669900; font-weight: bold; content:" (enum)" }
     61     .entry_type_visibility { font-weight: bolder; padding-left:1em}
     62     .entry_type_synthetic { font-weight: bolder; color: #996600; }
     63     .entry_type_hwlevel { font-weight: bolder; color: #000066; }
     64     .entry_type_deprecated { font-weight: bolder; color: #4D4D4D; }
     65     .entry_type_enum_name { font-family: monospace; font-weight: bolder; }
     66     .entry_type_enum_notes:before { content:" - " }
     67     .entry_type_enum_notes>p:first-child { display:inline; }
     68     .entry_type_enum_value:before { content:" = " }
     69     .entry_type_enum_value { font-family: monospace; }
     70     .entry ul { margin: 0 0 0 0; list-style-position: inside; padding-left: 0.5em; }
     71     .entry ul li { padding: 0 0 0 0; margin: 0 0 0 0;}
     72     .entry_range_deprecated { font-weight: bolder; }
     73 
     74     /* Entry tags flair */
     75     .entry_tags ul { list-style-type: none; }
     76 
     77     /* Entry details (full docs) flair */
     78     .entry_details_header { font-weight: bold; background-color: #dddddd;
     79       text-align: center; font-size: 1.1em; margin-left: 0em; margin-right: 0em; }
     80 
     81     /* Entry spacer flair */
     82     .entry_spacer { background-color: transparent; border-style: none; height: 0.5em; }
     83 
     84     /* TODO: generate abbr element for each tag link? */
     85     /* TODO for each x.y.z try to link it to the entry */
     86 
     87   </style>
     88 
     89   <style>
     90 
     91     {
     92       /* broken...
     93          supposedly there is a bug in chrome that it lays out tables before
     94          it knows its being printed, so the page-break-* styles are ignored
     95          */
     96         tr { page-break-after: always; page-break-inside: avoid; }
     97     }
     98 
     99   </style>
    100 </head>
    101 
    102 
    103 
    104 <body>
    105   <h1>Android Camera HAL3.2 Properties</h1>
    106 
    107 
    108   <h2>Table of Contents</h2>
    109   <ul class="toc">
    110     <li><a href="#tag_index" class="toc_section_header">Tags</a></li>
    111     <li>
    112       <span class="toc_section_header"><a href="#section_colorCorrection">colorCorrection</a></span>
    113       <ul class="toc_section">
    114         <li>
    115           <span class="toc_kind_header">controls</span>
    116           <ul class="toc_section">
    117             <li
    118             ><a href="#controls_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
    119             <li
    120             ><a href="#controls_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
    121             <li
    122             ><a href="#controls_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
    123             <li
    124             ><a href="#controls_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
    125           </ul>
    126         </li>
    127         <li>
    128           <span class="toc_kind_header">dynamic</span>
    129           <ul class="toc_section">
    130             <li
    131             ><a href="#dynamic_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
    132             <li
    133             ><a href="#dynamic_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
    134             <li
    135             ><a href="#dynamic_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
    136             <li
    137             ><a href="#dynamic_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
    138           </ul>
    139         </li>
    140         <li>
    141           <span class="toc_kind_header">static</span>
    142           <ul class="toc_section">
    143             <li
    144             ><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a></li>
    145           </ul>
    146         </li>
    147       </ul> <!-- toc_section -->
    148     </li>
    149     <li>
    150       <span class="toc_section_header"><a href="#section_control">control</a></span>
    151       <ul class="toc_section">
    152         <li>
    153           <span class="toc_kind_header">controls</span>
    154           <ul class="toc_section">
    155             <li
    156             ><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
    157             <li
    158             ><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
    159             <li
    160             ><a href="#controls_android.control.aeLock">android.control.aeLock</a></li>
    161             <li
    162             ><a href="#controls_android.control.aeMode">android.control.aeMode</a></li>
    163             <li
    164             ><a href="#controls_android.control.aeRegions">android.control.aeRegions</a></li>
    165             <li
    166             ><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
    167             <li
    168             ><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
    169             <li
    170             ><a href="#controls_android.control.afMode">android.control.afMode</a></li>
    171             <li
    172             ><a href="#controls_android.control.afRegions">android.control.afRegions</a></li>
    173             <li
    174             ><a href="#controls_android.control.afTrigger">android.control.afTrigger</a></li>
    175             <li
    176             ><a href="#controls_android.control.awbLock">android.control.awbLock</a></li>
    177             <li
    178             ><a href="#controls_android.control.awbMode">android.control.awbMode</a></li>
    179             <li
    180             ><a href="#controls_android.control.awbRegions">android.control.awbRegions</a></li>
    181             <li
    182             ><a href="#controls_android.control.captureIntent">android.control.captureIntent</a></li>
    183             <li
    184             ><a href="#controls_android.control.effectMode">android.control.effectMode</a></li>
    185             <li
    186             ><a href="#controls_android.control.mode">android.control.mode</a></li>
    187             <li
    188             ><a href="#controls_android.control.sceneMode">android.control.sceneMode</a></li>
    189             <li
    190             ><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
    191           </ul>
    192         </li>
    193         <li>
    194           <span class="toc_kind_header">static</span>
    195           <ul class="toc_section">
    196             <li
    197             ><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a></li>
    198             <li
    199             ><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a></li>
    200             <li
    201             ><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a></li>
    202             <li
    203             ><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a></li>
    204             <li
    205             ><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a></li>
    206             <li
    207             ><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a></li>
    208             <li
    209             ><a href="#static_android.control.availableEffects">android.control.availableEffects</a></li>
    210             <li
    211             ><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a></li>
    212             <li
    213             ><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a></li>
    214             <li
    215             ><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a></li>
    216             <li
    217             ><a href="#static_android.control.maxRegions">android.control.maxRegions</a></li>
    218             <li
    219             ><a href="#static_android.control.maxRegionsAe">android.control.maxRegionsAe</a></li>
    220             <li
    221             ><a href="#static_android.control.maxRegionsAwb">android.control.maxRegionsAwb</a></li>
    222             <li
    223             ><a href="#static_android.control.maxRegionsAf">android.control.maxRegionsAf</a></li>
    224             <li
    225             ><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a></li>
    226             <li
    227             ><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a></li>
    228             <li
    229             ><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a></li>
    230             <li
    231             ><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a></li>
    232             <li
    233             ><a href="#static_android.control.availableModes">android.control.availableModes</a></li>
    234           </ul>
    235         </li>
    236         <li>
    237           <span class="toc_kind_header">dynamic</span>
    238           <ul class="toc_section">
    239             <li
    240                 class="toc_deprecated"
    241             ><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a></li>
    242             <li
    243             ><a href="#dynamic_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
    244             <li
    245             ><a href="#dynamic_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
    246             <li
    247             ><a href="#dynamic_android.control.aeLock">android.control.aeLock</a></li>
    248             <li
    249             ><a href="#dynamic_android.control.aeMode">android.control.aeMode</a></li>
    250             <li
    251             ><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a></li>
    252             <li
    253             ><a href="#dynamic_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
    254             <li
    255             ><a href="#dynamic_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
    256             <li
    257             ><a href="#dynamic_android.control.aeState">android.control.aeState</a></li>
    258             <li
    259             ><a href="#dynamic_android.control.afMode">android.control.afMode</a></li>
    260             <li
    261             ><a href="#dynamic_android.control.afRegions">android.control.afRegions</a></li>
    262             <li
    263             ><a href="#dynamic_android.control.afTrigger">android.control.afTrigger</a></li>
    264             <li
    265             ><a href="#dynamic_android.control.afState">android.control.afState</a></li>
    266             <li
    267                 class="toc_deprecated"
    268             ><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a></li>
    269             <li
    270             ><a href="#dynamic_android.control.awbLock">android.control.awbLock</a></li>
    271             <li
    272             ><a href="#dynamic_android.control.awbMode">android.control.awbMode</a></li>
    273             <li
    274             ><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a></li>
    275             <li
    276             ><a href="#dynamic_android.control.captureIntent">android.control.captureIntent</a></li>
    277             <li
    278             ><a href="#dynamic_android.control.awbState">android.control.awbState</a></li>
    279             <li
    280             ><a href="#dynamic_android.control.effectMode">android.control.effectMode</a></li>
    281             <li
    282             ><a href="#dynamic_android.control.mode">android.control.mode</a></li>
    283             <li
    284             ><a href="#dynamic_android.control.sceneMode">android.control.sceneMode</a></li>
    285             <li
    286             ><a href="#dynamic_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
    287           </ul>
    288         </li>
    289       </ul> <!-- toc_section -->
    290     </li>
    291     <li>
    292       <span class="toc_section_header"><a href="#section_demosaic">demosaic</a></span>
    293       <ul class="toc_section">
    294         <li>
    295           <span class="toc_kind_header">controls</span>
    296           <ul class="toc_section">
    297             <li
    298             ><a href="#controls_android.demosaic.mode">android.demosaic.mode</a></li>
    299           </ul>
    300         </li>
    301       </ul> <!-- toc_section -->
    302     </li>
    303     <li>
    304       <span class="toc_section_header"><a href="#section_edge">edge</a></span>
    305       <ul class="toc_section">
    306         <li>
    307           <span class="toc_kind_header">controls</span>
    308           <ul class="toc_section">
    309             <li
    310             ><a href="#controls_android.edge.mode">android.edge.mode</a></li>
    311             <li
    312             ><a href="#controls_android.edge.strength">android.edge.strength</a></li>
    313           </ul>
    314         </li>
    315         <li>
    316           <span class="toc_kind_header">static</span>
    317           <ul class="toc_section">
    318             <li
    319             ><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a></li>
    320           </ul>
    321         </li>
    322         <li>
    323           <span class="toc_kind_header">dynamic</span>
    324           <ul class="toc_section">
    325             <li
    326             ><a href="#dynamic_android.edge.mode">android.edge.mode</a></li>
    327           </ul>
    328         </li>
    329       </ul> <!-- toc_section -->
    330     </li>
    331     <li>
    332       <span class="toc_section_header"><a href="#section_flash">flash</a></span>
    333       <ul class="toc_section">
    334         <li>
    335           <span class="toc_kind_header">controls</span>
    336           <ul class="toc_section">
    337             <li
    338             ><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li>
    339             <li
    340             ><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li>
    341             <li
    342             ><a href="#controls_android.flash.mode">android.flash.mode</a></li>
    343           </ul>
    344         </li>
    345         <li>
    346           <span class="toc_kind_header">static</span>
    347           <ul class="toc_section">
    348 
    349             <li
    350             ><a href="#static_android.flash.info.available">android.flash.info.available</a></li>
    351             <li
    352             ><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li>
    353 
    354             <li
    355             ><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li>
    356             <li
    357             ><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li>
    358           </ul>
    359         </li>
    360         <li>
    361           <span class="toc_kind_header">dynamic</span>
    362           <ul class="toc_section">
    363             <li
    364             ><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li>
    365             <li
    366             ><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li>
    367             <li
    368             ><a href="#dynamic_android.flash.mode">android.flash.mode</a></li>
    369             <li
    370             ><a href="#dynamic_android.flash.state">android.flash.state</a></li>
    371           </ul>
    372         </li>
    373       </ul> <!-- toc_section -->
    374     </li>
    375     <li>
    376       <span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span>
    377       <ul class="toc_section">
    378         <li>
    379           <span class="toc_kind_header">controls</span>
    380           <ul class="toc_section">
    381             <li
    382             ><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li>
    383           </ul>
    384         </li>
    385         <li>
    386           <span class="toc_kind_header">static</span>
    387           <ul class="toc_section">
    388             <li
    389             ><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a></li>
    390           </ul>
    391         </li>
    392         <li>
    393           <span class="toc_kind_header">dynamic</span>
    394           <ul class="toc_section">
    395             <li
    396             ><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li>
    397           </ul>
    398         </li>
    399       </ul> <!-- toc_section -->
    400     </li>
    401     <li>
    402       <span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span>
    403       <ul class="toc_section">
    404         <li>
    405           <span class="toc_kind_header">controls</span>
    406           <ul class="toc_section">
    407             <li
    408             ><a href="#controls_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
    409             <li
    410             ><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
    411             <li
    412             ><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
    413             <li
    414             ><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
    415             <li
    416             ><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li>
    417             <li
    418             ><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li>
    419             <li
    420             ><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
    421             <li
    422             ><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
    423           </ul>
    424         </li>
    425         <li>
    426           <span class="toc_kind_header">static</span>
    427           <ul class="toc_section">
    428             <li
    429             ><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li>
    430             <li
    431             ><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li>
    432           </ul>
    433         </li>
    434         <li>
    435           <span class="toc_kind_header">dynamic</span>
    436           <ul class="toc_section">
    437             <li
    438             ><a href="#dynamic_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
    439             <li
    440             ><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
    441             <li
    442             ><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
    443             <li
    444             ><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
    445             <li
    446             ><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li>
    447             <li
    448             ><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li>
    449             <li
    450             ><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li>
    451             <li
    452             ><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
    453             <li
    454             ><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
    455           </ul>
    456         </li>
    457       </ul> <!-- toc_section -->
    458     </li>
    459     <li>
    460       <span class="toc_section_header"><a href="#section_lens">lens</a></span>
    461       <ul class="toc_section">
    462         <li>
    463           <span class="toc_kind_header">controls</span>
    464           <ul class="toc_section">
    465             <li
    466             ><a href="#controls_android.lens.aperture">android.lens.aperture</a></li>
    467             <li
    468             ><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li>
    469             <li
    470             ><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li>
    471             <li
    472             ><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li>
    473             <li
    474             ><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
    475           </ul>
    476         </li>
    477         <li>
    478           <span class="toc_kind_header">static</span>
    479           <ul class="toc_section">
    480 
    481             <li
    482             ><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li>
    483             <li
    484             ><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li>
    485             <li
    486             ><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li>
    487             <li
    488             ><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li>
    489             <li
    490             ><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li>
    491             <li
    492             ><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li>
    493             <li
    494             ><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li>
    495             <li
    496             ><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li>
    497 
    498             <li
    499             ><a href="#static_android.lens.facing">android.lens.facing</a></li>
    500             <li
    501             ><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a></li>
    502             <li
    503             ><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
    504             <li
    505             ><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
    506             <li
    507             ><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
    508           </ul>
    509         </li>
    510         <li>
    511           <span class="toc_kind_header">dynamic</span>
    512           <ul class="toc_section">
    513             <li
    514             ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li>
    515             <li
    516             ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li>
    517             <li
    518             ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li>
    519             <li
    520             ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li>
    521             <li
    522             ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li>
    523             <li
    524             ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
    525             <li
    526             ><a href="#dynamic_android.lens.state">android.lens.state</a></li>
    527             <li
    528             ><a href="#dynamic_android.lens.poseRotation">android.lens.poseRotation</a></li>
    529             <li
    530             ><a href="#dynamic_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
    531             <li
    532             ><a href="#dynamic_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
    533             <li
    534             ><a href="#dynamic_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
    535           </ul>
    536         </li>
    537       </ul> <!-- toc_section -->
    538     </li>
    539     <li>
    540       <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span>
    541       <ul class="toc_section">
    542         <li>
    543           <span class="toc_kind_header">controls</span>
    544           <ul class="toc_section">
    545             <li
    546             ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
    547             <li
    548             ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li>
    549           </ul>
    550         </li>
    551         <li>
    552           <span class="toc_kind_header">static</span>
    553           <ul class="toc_section">
    554             <li
    555             ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li>
    556           </ul>
    557         </li>
    558         <li>
    559           <span class="toc_kind_header">dynamic</span>
    560           <ul class="toc_section">
    561             <li
    562             ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
    563           </ul>
    564         </li>
    565       </ul> <!-- toc_section -->
    566     </li>
    567     <li>
    568       <span class="toc_section_header"><a href="#section_quirks">quirks</a></span>
    569       <ul class="toc_section">
    570         <li>
    571           <span class="toc_kind_header">static</span>
    572           <ul class="toc_section">
    573             <li
    574                 class="toc_deprecated"
    575             ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li>
    576             <li
    577                 class="toc_deprecated"
    578             ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li>
    579             <li
    580                 class="toc_deprecated"
    581             ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li>
    582             <li
    583                 class="toc_deprecated"
    584             ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li>
    585           </ul>
    586         </li>
    587         <li>
    588           <span class="toc_kind_header">dynamic</span>
    589           <ul class="toc_section">
    590             <li
    591                 class="toc_deprecated"
    592             ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li>
    593           </ul>
    594         </li>
    595       </ul> <!-- toc_section -->
    596     </li>
    597     <li>
    598       <span class="toc_section_header"><a href="#section_request">request</a></span>
    599       <ul class="toc_section">
    600         <li>
    601           <span class="toc_kind_header">controls</span>
    602           <ul class="toc_section">
    603             <li
    604                 class="toc_deprecated"
    605             ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li>
    606             <li
    607             ><a href="#controls_android.request.id">android.request.id</a></li>
    608             <li
    609                 class="toc_deprecated"
    610             ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li>
    611             <li
    612             ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li>
    613             <li
    614                 class="toc_deprecated"
    615             ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li>
    616             <li
    617                 class="toc_deprecated"
    618             ><a href="#controls_android.request.type">android.request.type</a></li>
    619           </ul>
    620         </li>
    621         <li>
    622           <span class="toc_kind_header">static</span>
    623           <ul class="toc_section">
    624             <li
    625             ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li>
    626             <li
    627             ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li>
    628             <li
    629             ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li>
    630             <li
    631             ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li>
    632             <li
    633                 class="toc_deprecated"
    634             ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li>
    635             <li
    636             ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li>
    637             <li
    638             ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li>
    639             <li
    640             ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li>
    641             <li
    642             ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li>
    643             <li
    644             ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li>
    645             <li
    646             ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li>
    647             <li
    648             ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li>
    649           </ul>
    650         </li>
    651         <li>
    652           <span class="toc_kind_header">dynamic</span>
    653           <ul class="toc_section">
    654             <li
    655                 class="toc_deprecated"
    656             ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li>
    657             <li
    658             ><a href="#dynamic_android.request.id">android.request.id</a></li>
    659             <li
    660             ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li>
    661             <li
    662                 class="toc_deprecated"
    663             ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li>
    664             <li
    665             ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li>
    666           </ul>
    667         </li>
    668       </ul> <!-- toc_section -->
    669     </li>
    670     <li>
    671       <span class="toc_section_header"><a href="#section_scaler">scaler</a></span>
    672       <ul class="toc_section">
    673         <li>
    674           <span class="toc_kind_header">controls</span>
    675           <ul class="toc_section">
    676             <li
    677             ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
    678           </ul>
    679         </li>
    680         <li>
    681           <span class="toc_kind_header">static</span>
    682           <ul class="toc_section">
    683             <li
    684                 class="toc_deprecated"
    685             ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li>
    686             <li
    687                 class="toc_deprecated"
    688             ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li>
    689             <li
    690                 class="toc_deprecated"
    691             ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li>
    692             <li
    693             ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li>
    694             <li
    695                 class="toc_deprecated"
    696             ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li>
    697             <li
    698                 class="toc_deprecated"
    699             ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li>
    700             <li
    701                 class="toc_deprecated"
    702             ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li>
    703             <li
    704                 class="toc_deprecated"
    705             ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li>
    706             <li
    707             ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li>
    708             <li
    709             ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li>
    710             <li
    711             ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li>
    712             <li
    713             ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li>
    714             <li
    715             ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li>
    716             <li
    717             ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li>
    718           </ul>
    719         </li>
    720         <li>
    721           <span class="toc_kind_header">dynamic</span>
    722           <ul class="toc_section">
    723             <li
    724             ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
    725           </ul>
    726         </li>
    727       </ul> <!-- toc_section -->
    728     </li>
    729     <li>
    730       <span class="toc_section_header"><a href="#section_sensor">sensor</a></span>
    731       <ul class="toc_section">
    732         <li>
    733           <span class="toc_kind_header">controls</span>
    734           <ul class="toc_section">
    735             <li
    736             ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
    737             <li
    738             ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
    739             <li
    740             ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
    741             <li
    742             ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
    743             <li
    744             ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
    745           </ul>
    746         </li>
    747         <li>
    748           <span class="toc_kind_header">static</span>
    749           <ul class="toc_section">
    750 
    751             <li
    752             ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li>
    753             <li
    754             ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li>
    755             <li
    756             ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li>
    757             <li
    758             ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li>
    759             <li
    760             ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li>
    761             <li
    762             ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li>
    763             <li
    764             ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li>
    765             <li
    766             ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li>
    767             <li
    768             ><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li>
    769             <li
    770             ><a href="#static_android.sensor.info.lensShadingApplied">android.sensor.info.lensShadingApplied</a></li>
    771             <li
    772             ><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a></li>
    773 
    774             <li
    775             ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li>
    776             <li
    777             ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li>
    778             <li
    779             ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li>
    780             <li
    781             ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li>
    782             <li
    783             ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li>
    784             <li
    785             ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li>
    786             <li
    787             ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li>
    788             <li
    789             ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li>
    790             <li
    791             ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li>
    792             <li
    793             ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li>
    794             <li
    795             ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li>
    796             <li
    797             ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li>
    798             <li
    799             ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li>
    800             <li
    801             ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li>
    802           </ul>
    803         </li>
    804         <li>
    805           <span class="toc_kind_header">dynamic</span>
    806           <ul class="toc_section">
    807             <li
    808             ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
    809             <li
    810             ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
    811             <li
    812             ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
    813             <li
    814             ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li>
    815             <li
    816             ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li>
    817             <li
    818             ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li>
    819             <li
    820             ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li>
    821             <li
    822             ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li>
    823             <li
    824             ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li>
    825             <li
    826             ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li>
    827             <li
    828             ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
    829             <li
    830             ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
    831             <li
    832             ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li>
    833           </ul>
    834         </li>
    835       </ul> <!-- toc_section -->
    836     </li>
    837     <li>
    838       <span class="toc_section_header"><a href="#section_shading">shading</a></span>
    839       <ul class="toc_section">
    840         <li>
    841           <span class="toc_kind_header">controls</span>
    842           <ul class="toc_section">
    843             <li
    844             ><a href="#controls_android.shading.mode">android.shading.mode</a></li>
    845             <li
    846             ><a href="#controls_android.shading.strength">android.shading.strength</a></li>
    847           </ul>
    848         </li>
    849         <li>
    850           <span class="toc_kind_header">dynamic</span>
    851           <ul class="toc_section">
    852             <li
    853             ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li>
    854           </ul>
    855         </li>
    856         <li>
    857           <span class="toc_kind_header">static</span>
    858           <ul class="toc_section">
    859             <li
    860             ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li>
    861           </ul>
    862         </li>
    863       </ul> <!-- toc_section -->
    864     </li>
    865     <li>
    866       <span class="toc_section_header"><a href="#section_statistics">statistics</a></span>
    867       <ul class="toc_section">
    868         <li>
    869           <span class="toc_kind_header">controls</span>
    870           <ul class="toc_section">
    871             <li
    872             ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
    873             <li
    874             ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
    875             <li
    876             ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
    877             <li
    878             ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
    879             <li
    880             ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
    881           </ul>
    882         </li>
    883         <li>
    884           <span class="toc_kind_header">static</span>
    885           <ul class="toc_section">
    886 
    887             <li
    888             ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li>
    889             <li
    890             ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li>
    891             <li
    892             ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li>
    893             <li
    894             ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li>
    895             <li
    896             ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li>
    897             <li
    898             ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li>
    899             <li
    900             ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li>
    901             <li
    902             ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li>
    903 
    904           </ul>
    905         </li>
    906         <li>
    907           <span class="toc_kind_header">dynamic</span>
    908           <ul class="toc_section">
    909             <li
    910             ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
    911             <li
    912             ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li>
    913             <li
    914             ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li>
    915             <li
    916             ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li>
    917             <li
    918             ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li>
    919             <li
    920             ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li>
    921             <li
    922             ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li>
    923             <li
    924             ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
    925             <li
    926             ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li>
    927             <li
    928             ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
    929             <li
    930             ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li>
    931             <li
    932             ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li>
    933             <li
    934                 class="toc_deprecated"
    935             ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li>
    936             <li
    937                 class="toc_deprecated"
    938             ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li>
    939             <li
    940             ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li>
    941             <li
    942             ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
    943             <li
    944             ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li>
    945             <li
    946             ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
    947           </ul>
    948         </li>
    949       </ul> <!-- toc_section -->
    950     </li>
    951     <li>
    952       <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span>
    953       <ul class="toc_section">
    954         <li>
    955           <span class="toc_kind_header">controls</span>
    956           <ul class="toc_section">
    957             <li
    958             ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
    959             <li
    960             ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
    961             <li
    962             ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
    963             <li
    964             ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li>
    965             <li
    966             ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li>
    967             <li
    968             ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li>
    969             <li
    970             ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
    971           </ul>
    972         </li>
    973         <li>
    974           <span class="toc_kind_header">static</span>
    975           <ul class="toc_section">
    976             <li
    977             ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li>
    978             <li
    979             ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li>
    980           </ul>
    981         </li>
    982         <li>
    983           <span class="toc_kind_header">dynamic</span>
    984           <ul class="toc_section">
    985             <li
    986             ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
    987             <li
    988             ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
    989             <li
    990             ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
    991             <li
    992             ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li>
    993             <li
    994             ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li>
    995             <li
    996             ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li>
    997             <li
    998             ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
    999           </ul>
   1000         </li>
   1001       </ul> <!-- toc_section -->
   1002     </li>
   1003     <li>
   1004       <span class="toc_section_header"><a href="#section_led">led</a></span>
   1005       <ul class="toc_section">
   1006         <li>
   1007           <span class="toc_kind_header">controls</span>
   1008           <ul class="toc_section">
   1009             <li
   1010             ><a href="#controls_android.led.transmit">android.led.transmit</a></li>
   1011           </ul>
   1012         </li>
   1013         <li>
   1014           <span class="toc_kind_header">dynamic</span>
   1015           <ul class="toc_section">
   1016             <li
   1017             ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li>
   1018           </ul>
   1019         </li>
   1020         <li>
   1021           <span class="toc_kind_header">static</span>
   1022           <ul class="toc_section">
   1023             <li
   1024             ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li>
   1025           </ul>
   1026         </li>
   1027       </ul> <!-- toc_section -->
   1028     </li>
   1029     <li>
   1030       <span class="toc_section_header"><a href="#section_info">info</a></span>
   1031       <ul class="toc_section">
   1032         <li>
   1033           <span class="toc_kind_header">static</span>
   1034           <ul class="toc_section">
   1035             <li
   1036             ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li>
   1037           </ul>
   1038         </li>
   1039       </ul> <!-- toc_section -->
   1040     </li>
   1041     <li>
   1042       <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span>
   1043       <ul class="toc_section">
   1044         <li>
   1045           <span class="toc_kind_header">controls</span>
   1046           <ul class="toc_section">
   1047             <li
   1048             ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li>
   1049           </ul>
   1050         </li>
   1051         <li>
   1052           <span class="toc_kind_header">dynamic</span>
   1053           <ul class="toc_section">
   1054             <li
   1055             ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li>
   1056           </ul>
   1057         </li>
   1058       </ul> <!-- toc_section -->
   1059     </li>
   1060     <li>
   1061       <span class="toc_section_header"><a href="#section_sync">sync</a></span>
   1062       <ul class="toc_section">
   1063         <li>
   1064           <span class="toc_kind_header">dynamic</span>
   1065           <ul class="toc_section">
   1066             <li
   1067             ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li>
   1068           </ul>
   1069         </li>
   1070         <li>
   1071           <span class="toc_kind_header">static</span>
   1072           <ul class="toc_section">
   1073             <li
   1074             ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li>
   1075           </ul>
   1076         </li>
   1077       </ul> <!-- toc_section -->
   1078     </li>
   1079     <li>
   1080       <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span>
   1081       <ul class="toc_section">
   1082         <li>
   1083           <span class="toc_kind_header">controls</span>
   1084           <ul class="toc_section">
   1085             <li
   1086             ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
   1087           </ul>
   1088         </li>
   1089         <li>
   1090           <span class="toc_kind_header">dynamic</span>
   1091           <ul class="toc_section">
   1092             <li
   1093             ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
   1094           </ul>
   1095         </li>
   1096         <li>
   1097           <span class="toc_kind_header">static</span>
   1098           <ul class="toc_section">
   1099             <li
   1100             ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li>
   1101           </ul>
   1102         </li>
   1103       </ul> <!-- toc_section -->
   1104     </li>
   1105     <li>
   1106       <span class="toc_section_header"><a href="#section_depth">depth</a></span>
   1107       <ul class="toc_section">
   1108         <li>
   1109           <span class="toc_kind_header">static</span>
   1110           <ul class="toc_section">
   1111             <li
   1112             ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li>
   1113             <li
   1114             ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li>
   1115             <li
   1116             ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li>
   1117             <li
   1118             ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li>
   1119             <li
   1120             ><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li>
   1121           </ul>
   1122         </li>
   1123       </ul> <!-- toc_section -->
   1124     </li>
   1125   </ul>
   1126 
   1127 
   1128   <h1>Properties</h1>
   1129   <table class="properties">
   1130 
   1131     <thead class="thead_dummy">
   1132       <tr>
   1133         <th class="th_name">Property Name</th>
   1134         <th class="th_type">Type</th>
   1135         <th class="th_description">Description</th>
   1136         <th class="th_units">Units</th>
   1137         <th class="th_range">Range</th>
   1138         <th class="th_tags">Tags</th>
   1139       </tr>
   1140     </thead> <!-- so that the first occurrence of thead is not
   1141                          above the first occurrence of tr -->
   1142 <!-- <namespace name="android"> -->
   1143   <tr><td colspan="6" id="section_colorCorrection" class="section">colorCorrection</td></tr>
   1144 
   1145 
   1146       <tr><td colspan="6" class="kind">controls</td></tr>
   1147 
   1148       <thead class="entries_header">
   1149         <tr>
   1150           <th class="th_name">Property Name</th>
   1151           <th class="th_type">Type</th>
   1152           <th class="th_description">Description</th>
   1153           <th class="th_units">Units</th>
   1154           <th class="th_range">Range</th>
   1155           <th class="th_tags">Tags</th>
   1156         </tr>
   1157       </thead>
   1158 
   1159       <tbody>
   1160 
   1161         
   1162 
   1163         
   1164 
   1165         
   1166 
   1167         
   1168 
   1169                 
   1170           <tr class="entry" id="controls_android.colorCorrection.mode">
   1171             <td class="entry_name
   1172              " rowspan="5">
   1173               android.<wbr/>color<wbr/>Correction.<wbr/>mode
   1174             </td>
   1175             <td class="entry_type">
   1176                 <span class="entry_type_name entry_type_name_enum">byte</span>
   1177 
   1178               <span class="entry_type_visibility"> [public]</span>
   1179 
   1180 
   1181               <span class="entry_type_hwlevel">[full] </span>
   1182 
   1183 
   1184 
   1185                 <ul class="entry_type_enum">
   1186                   <li>
   1187                     <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
   1188                     <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
   1189 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
   1190 <p>All advanced white balance adjustments (not specified
   1191 by our white balance pipeline) must be disabled.<wbr/></p>
   1192 <p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
   1193 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
   1194 this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
   1195                   </li>
   1196                   <li>
   1197                     <span class="entry_type_enum_name">FAST</span>
   1198                     <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
   1199 capture rate relative to sensor raw output.<wbr/></p>
   1200 <p>Advanced white balance adjustments above and beyond
   1201 the specified white balance pipeline may be applied.<wbr/></p>
   1202 <p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
   1203 the camera device uses the last frame's AWB values
   1204 (or defaults if AWB has never been run).<wbr/></p></span>
   1205                   </li>
   1206                   <li>
   1207                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
   1208                     <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
   1209 quality but the capture rate might be reduced (relative to sensor
   1210 raw output rate)</p>
   1211 <p>Advanced white balance adjustments above and beyond
   1212 the specified white balance pipeline may be applied.<wbr/></p>
   1213 <p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
   1214 the camera device uses the last frame's AWB values
   1215 (or defaults if AWB has never been run).<wbr/></p></span>
   1216                   </li>
   1217                 </ul>
   1218 
   1219             </td> <!-- entry_type -->
   1220 
   1221             <td class="entry_description">
   1222               <p>The mode control selects how the image data is converted from the
   1223 sensor's native color into linear sRGB color.<wbr/></p>
   1224             </td>
   1225 
   1226             <td class="entry_units">
   1227             </td>
   1228 
   1229             <td class="entry_range">
   1230             </td>
   1231 
   1232             <td class="entry_tags">
   1233             </td>
   1234 
   1235           </tr>
   1236           <tr class="entries_header">
   1237             <th class="th_details" colspan="5">Details</th>
   1238           </tr>
   1239           <tr class="entry_cont">
   1240             <td class="entry_details" colspan="5">
   1241               <p>When auto-white balance (AWB) is enabled with <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> this
   1242 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
   1243 application controls how the color mapping is performed.<wbr/></p>
   1244 <p>We define the expected processing pipeline below.<wbr/> For consistency
   1245 across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
   1246 <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
   1247 do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
   1248 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
   1249 camera device (in the results) and be roughly correct.<wbr/></p>
   1250 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
   1251 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
   1252 as what was produced by the camera device in the earlier frame.<wbr/></p>
   1253 <p>The expected processing pipeline is as follows:</p>
   1254 <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
   1255 <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
   1256 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
   1257 matrix (applied after demosaic).<wbr/></p>
   1258 <p>The 4-channel white-balance gains are defined as:</p>
   1259 <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
   1260 </code></pre>
   1261 <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
   1262 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
   1263 These may be identical for a given camera device implementation; if
   1264 the camera device does not support a separate gain for even/<wbr/>odd green
   1265 channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
   1266 <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
   1267 <p>The matrices for color transforms are defined as a 9-entry vector:</p>
   1268 <pre><code><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> = [ I0 I1 I2 I3 I4 I5 I6 I7 I8 ]
   1269 </code></pre>
   1270 <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
   1271 to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
   1272 <p>with colors as follows:</p>
   1273 <pre><code>r' = I0r + I1g + I2b
   1274 g' = I3r + I4g + I5b
   1275 b' = I6r + I7g + I8b
   1276 </code></pre>
   1277 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
   1278 values are clipped to fit within the range.<wbr/></p>
   1279             </td>
   1280           </tr>
   1281 
   1282           <tr class="entries_header">
   1283             <th class="th_details" colspan="5">HAL Implementation Details</th>
   1284           </tr>
   1285           <tr class="entry_cont">
   1286             <td class="entry_details" colspan="5">
   1287               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
   1288 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
   1289 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
   1290 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
   1291             </td>
   1292           </tr>
   1293 
   1294           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   1295            <!-- end of entry -->
   1296         
   1297                 
   1298           <tr class="entry" id="controls_android.colorCorrection.transform">
   1299             <td class="entry_name
   1300              " rowspan="3">
   1301               android.<wbr/>color<wbr/>Correction.<wbr/>transform
   1302             </td>
   1303             <td class="entry_type">
   1304                 <span class="entry_type_name">rational</span>
   1305                 <span class="entry_type_container">x</span>
   1306 
   1307                 <span class="entry_type_array">
   1308                   3 x 3
   1309                 </span>
   1310               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
   1311 
   1312 
   1313               <span class="entry_type_hwlevel">[full] </span>
   1314 
   1315 
   1316                 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
   1317 
   1318 
   1319             </td> <!-- entry_type -->
   1320 
   1321             <td class="entry_description">
   1322               <p>A color transform matrix to use to transform
   1323 from sensor RGB color space to output linear sRGB color space.<wbr/></p>
   1324             </td>
   1325 
   1326             <td class="entry_units">
   1327               Unitless scale factors
   1328             </td>
   1329 
   1330             <td class="entry_range">
   1331             </td>
   1332 
   1333             <td class="entry_tags">
   1334             </td>
   1335 
   1336           </tr>
   1337           <tr class="entries_header">
   1338             <th class="th_details" colspan="5">Details</th>
   1339           </tr>
   1340           <tr class="entry_cont">
   1341             <td class="entry_details" colspan="5">
   1342               <p>This matrix is either set by the camera device when the request
   1343 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
   1344 directly by the application in the request when the
   1345 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
   1346 <p>In the latter case,<wbr/> the camera device may round the matrix to account
   1347 for precision issues; the final rounded matrix should be reported back
   1348 in this matrix result metadata.<wbr/> The transform should keep the magnitude
   1349 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
   1350 values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
   1351 <p>The valid range of each matrix element varies on different devices,<wbr/> but
   1352 values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
   1353             </td>
   1354           </tr>
   1355 
   1356 
   1357           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   1358            <!-- end of entry -->
   1359         
   1360                 
   1361           <tr class="entry" id="controls_android.colorCorrection.gains">
   1362             <td class="entry_name
   1363              " rowspan="5">
   1364               android.<wbr/>color<wbr/>Correction.<wbr/>gains
   1365             </td>
   1366             <td class="entry_type">
   1367                 <span class="entry_type_name">float</span>
   1368                 <span class="entry_type_container">x</span>
   1369 
   1370                 <span class="entry_type_array">
   1371                   4
   1372                 </span>
   1373               <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
   1374 
   1375 
   1376               <span class="entry_type_hwlevel">[full] </span>
   1377 
   1378 
   1379                 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
   1380 
   1381 
   1382             </td> <!-- entry_type -->
   1383 
   1384             <td class="entry_description">
   1385               <p>Gains applying to Bayer raw color channels for
   1386 white-balance.<wbr/></p>
   1387             </td>
   1388 
   1389             <td class="entry_units">
   1390               Unitless gain factors
   1391             </td>
   1392 
   1393             <td class="entry_range">
   1394             </td>
   1395 
   1396             <td class="entry_tags">
   1397             </td>
   1398 
   1399           </tr>
   1400           <tr class="entries_header">
   1401             <th class="th_details" colspan="5">Details</th>
   1402           </tr>
   1403           <tr class="entry_cont">
   1404             <td class="entry_details" colspan="5">
   1405               <p>These per-channel gains are either set by the camera device
   1406 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
   1407 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
   1408 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
   1409 TRANSFORM_<wbr/>MATRIX.<wbr/></p>
   1410 <p>The gains in the result metadata are the gains actually
   1411 applied by the camera device to the current frame.<wbr/></p>
   1412 <p>The valid range of gains varies on different devices,<wbr/> but gains
   1413 between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
   1414 device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
   1415 this can create color artifacts.<wbr/></p>
   1416             </td>
   1417           </tr>
   1418 
   1419           <tr class="entries_header">
   1420             <th class="th_details" colspan="5">HAL Implementation Details</th>
   1421           </tr>
   1422           <tr class="entry_cont">
   1423             <td class="entry_details" colspan="5">
   1424               <p>The 4-channel white-balance gains are defined in
   1425 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
   1426 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
   1427 is the gain for green pixels on the odd rows.<wbr/></p>
   1428 <p>If a HAL does not support a separate gain for even/<wbr/>odd green
   1429 channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
   1430 <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
   1431             </td>
   1432           </tr>
   1433 
   1434           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   1435            <!-- end of entry -->
   1436         
   1437                 
   1438           <tr class="entry" id="controls_android.colorCorrection.aberrationMode">
   1439             <td class="entry_name
   1440              " rowspan="3">
   1441               android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
   1442             </td>
   1443             <td class="entry_type">
   1444                 <span class="entry_type_name entry_type_name_enum">byte</span>
   1445 
   1446               <span class="entry_type_visibility"> [public]</span>
   1447 
   1448 
   1449               <span class="entry_type_hwlevel">[legacy] </span>
   1450 
   1451 
   1452 
   1453                 <ul class="entry_type_enum">
   1454                   <li>
   1455                     <span class="entry_type_enum_name">OFF</span>
   1456                     <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
   1457                   </li>
   1458                   <li>
   1459                     <span class="entry_type_enum_name">FAST</span>
   1460                     <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
   1461 relative to sensor raw output.<wbr/></p></span>
   1462                   </li>
   1463                   <li>
   1464                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
   1465                     <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
   1466 reduced (relative to sensor raw output rate)</p></span>
   1467                   </li>
   1468                 </ul>
   1469 
   1470             </td> <!-- entry_type -->
   1471 
   1472             <td class="entry_description">
   1473               <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
   1474             </td>
   1475 
   1476             <td class="entry_units">
   1477             </td>
   1478 
   1479             <td class="entry_range">
   1480               <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
   1481             </td>
   1482 
   1483             <td class="entry_tags">
   1484             </td>
   1485 
   1486           </tr>
   1487           <tr class="entries_header">
   1488             <th class="th_details" colspan="5">Details</th>
   1489           </tr>
   1490           <tr class="entry_cont">
   1491             <td class="entry_details" colspan="5">
   1492               <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
   1493 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
   1494 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
   1495 minimize the chromatic artifacts that may occur along the object boundaries in an
   1496 image.<wbr/></p>
   1497 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
   1498 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
   1499 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
   1500 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
   1501 applying aberration correction.<wbr/></p>
   1502 <p>LEGACY devices will always be in FAST mode.<wbr/></p>
   1503             </td>
   1504           </tr>
   1505 
   1506 
   1507           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   1508            <!-- end of entry -->
   1509         
   1510         
   1511 
   1512       <!-- end of kind -->
   1513       </tbody>
   1514       <tr><td colspan="6" class="kind">dynamic</td></tr>
   1515 
   1516       <thead class="entries_header">
   1517         <tr>
   1518           <th class="th_name">Property Name</th>
   1519           <th class="th_type">Type</th>
   1520           <th class="th_description">Description</th>
   1521           <th class="th_units">Units</th>
   1522           <th class="th_range">Range</th>
   1523           <th class="th_tags">Tags</th>
   1524         </tr>
   1525       </thead>
   1526 
   1527       <tbody>
   1528 
   1529         
   1530 
   1531         
   1532 
   1533         
   1534 
   1535         
   1536 
   1537                 
   1538           <tr class="entry" id="dynamic_android.colorCorrection.mode">
   1539             <td class="entry_name
   1540              " rowspan="5">
   1541               android.<wbr/>color<wbr/>Correction.<wbr/>mode
   1542             </td>
   1543             <td class="entry_type">
   1544                 <span class="entry_type_name entry_type_name_enum">byte</span>
   1545 
   1546               <span class="entry_type_visibility"> [public]</span>
   1547 
   1548 
   1549               <span class="entry_type_hwlevel">[full] </span>
   1550 
   1551 
   1552 
   1553                 <ul class="entry_type_enum">
   1554                   <li>
   1555                     <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
   1556                     <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
   1557 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
   1558 <p>All advanced white balance adjustments (not specified
   1559 by our white balance pipeline) must be disabled.<wbr/></p>
   1560 <p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
   1561 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
   1562 this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
   1563                   </li>
   1564                   <li>
   1565                     <span class="entry_type_enum_name">FAST</span>
   1566                     <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
   1567 capture rate relative to sensor raw output.<wbr/></p>
   1568 <p>Advanced white balance adjustments above and beyond
   1569 the specified white balance pipeline may be applied.<wbr/></p>
   1570 <p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
   1571 the camera device uses the last frame's AWB values
   1572 (or defaults if AWB has never been run).<wbr/></p></span>
   1573                   </li>
   1574                   <li>
   1575                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
   1576                     <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
   1577 quality but the capture rate might be reduced (relative to sensor
   1578 raw output rate)</p>
   1579 <p>Advanced white balance adjustments above and beyond
   1580 the specified white balance pipeline may be applied.<wbr/></p>
   1581 <p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
   1582 the camera device uses the last frame's AWB values
   1583 (or defaults if AWB has never been run).<wbr/></p></span>
   1584                   </li>
   1585                 </ul>
   1586 
   1587             </td> <!-- entry_type -->
   1588 
   1589             <td class="entry_description">
   1590               <p>The mode control selects how the image data is converted from the
   1591 sensor's native color into linear sRGB color.<wbr/></p>
   1592             </td>
   1593 
   1594             <td class="entry_units">
   1595             </td>
   1596 
   1597             <td class="entry_range">
   1598             </td>
   1599 
   1600             <td class="entry_tags">
   1601             </td>
   1602 
   1603           </tr>
   1604           <tr class="entries_header">
   1605             <th class="th_details" colspan="5">Details</th>
   1606           </tr>
   1607           <tr class="entry_cont">
   1608             <td class="entry_details" colspan="5">
   1609               <p>When auto-white balance (AWB) is enabled with <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> this
   1610 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
   1611 application controls how the color mapping is performed.<wbr/></p>
   1612 <p>We define the expected processing pipeline below.<wbr/> For consistency
   1613 across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
   1614 <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
   1615 do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
   1616 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
   1617 camera device (in the results) and be roughly correct.<wbr/></p>
   1618 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
   1619 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
   1620 as what was produced by the camera device in the earlier frame.<wbr/></p>
   1621 <p>The expected processing pipeline is as follows:</p>
   1622 <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
   1623 <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
   1624 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
   1625 matrix (applied after demosaic).<wbr/></p>
   1626 <p>The 4-channel white-balance gains are defined as:</p>
   1627 <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
   1628 </code></pre>
   1629 <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
   1630 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
   1631 These may be identical for a given camera device implementation; if
   1632 the camera device does not support a separate gain for even/<wbr/>odd green
   1633 channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
   1634 <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
   1635 <p>The matrices for color transforms are defined as a 9-entry vector:</p>
   1636 <pre><code><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> = [ I0 I1 I2 I3 I4 I5 I6 I7 I8 ]
   1637 </code></pre>
   1638 <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
   1639 to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
   1640 <p>with colors as follows:</p>
   1641 <pre><code>r' = I0r + I1g + I2b
   1642 g' = I3r + I4g + I5b
   1643 b' = I6r + I7g + I8b
   1644 </code></pre>
   1645 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
   1646 values are clipped to fit within the range.<wbr/></p>
   1647             </td>
   1648           </tr>
   1649 
   1650           <tr class="entries_header">
   1651             <th class="th_details" colspan="5">HAL Implementation Details</th>
   1652           </tr>
   1653           <tr class="entry_cont">
   1654             <td class="entry_details" colspan="5">
   1655               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
   1656 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
   1657 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
   1658 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
   1659             </td>
   1660           </tr>
   1661 
   1662           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   1663            <!-- end of entry -->
   1664         
   1665                 
   1666           <tr class="entry" id="dynamic_android.colorCorrection.transform">
   1667             <td class="entry_name
   1668              " rowspan="3">
   1669               android.<wbr/>color<wbr/>Correction.<wbr/>transform
   1670             </td>
   1671             <td class="entry_type">
   1672                 <span class="entry_type_name">rational</span>
   1673                 <span class="entry_type_container">x</span>
   1674 
   1675                 <span class="entry_type_array">
   1676                   3 x 3
   1677                 </span>
   1678               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
   1679 
   1680 
   1681               <span class="entry_type_hwlevel">[full] </span>
   1682 
   1683 
   1684                 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
   1685 
   1686 
   1687             </td> <!-- entry_type -->
   1688 
   1689             <td class="entry_description">
   1690               <p>A color transform matrix to use to transform
   1691 from sensor RGB color space to output linear sRGB color space.<wbr/></p>
   1692             </td>
   1693 
   1694             <td class="entry_units">
   1695               Unitless scale factors
   1696             </td>
   1697 
   1698             <td class="entry_range">
   1699             </td>
   1700 
   1701             <td class="entry_tags">
   1702             </td>
   1703 
   1704           </tr>
   1705           <tr class="entries_header">
   1706             <th class="th_details" colspan="5">Details</th>
   1707           </tr>
   1708           <tr class="entry_cont">
   1709             <td class="entry_details" colspan="5">
   1710               <p>This matrix is either set by the camera device when the request
   1711 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
   1712 directly by the application in the request when the
   1713 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
   1714 <p>In the latter case,<wbr/> the camera device may round the matrix to account
   1715 for precision issues; the final rounded matrix should be reported back
   1716 in this matrix result metadata.<wbr/> The transform should keep the magnitude
   1717 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
   1718 values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
   1719 <p>The valid range of each matrix element varies on different devices,<wbr/> but
   1720 values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
   1721             </td>
   1722           </tr>
   1723 
   1724 
   1725           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   1726            <!-- end of entry -->
   1727         
   1728                 
   1729           <tr class="entry" id="dynamic_android.colorCorrection.gains">
   1730             <td class="entry_name
   1731              " rowspan="5">
   1732               android.<wbr/>color<wbr/>Correction.<wbr/>gains
   1733             </td>
   1734             <td class="entry_type">
   1735                 <span class="entry_type_name">float</span>
   1736                 <span class="entry_type_container">x</span>
   1737 
   1738                 <span class="entry_type_array">
   1739                   4
   1740                 </span>
   1741               <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
   1742 
   1743 
   1744               <span class="entry_type_hwlevel">[full] </span>
   1745 
   1746 
   1747                 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
   1748 
   1749 
   1750             </td> <!-- entry_type -->
   1751 
   1752             <td class="entry_description">
   1753               <p>Gains applying to Bayer raw color channels for
   1754 white-balance.<wbr/></p>
   1755             </td>
   1756 
   1757             <td class="entry_units">
   1758               Unitless gain factors
   1759             </td>
   1760 
   1761             <td class="entry_range">
   1762             </td>
   1763 
   1764             <td class="entry_tags">
   1765             </td>
   1766 
   1767           </tr>
   1768           <tr class="entries_header">
   1769             <th class="th_details" colspan="5">Details</th>
   1770           </tr>
   1771           <tr class="entry_cont">
   1772             <td class="entry_details" colspan="5">
   1773               <p>These per-channel gains are either set by the camera device
   1774 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
   1775 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
   1776 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
   1777 TRANSFORM_<wbr/>MATRIX.<wbr/></p>
   1778 <p>The gains in the result metadata are the gains actually
   1779 applied by the camera device to the current frame.<wbr/></p>
   1780 <p>The valid range of gains varies on different devices,<wbr/> but gains
   1781 between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
   1782 device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
   1783 this can create color artifacts.<wbr/></p>
   1784             </td>
   1785           </tr>
   1786 
   1787           <tr class="entries_header">
   1788             <th class="th_details" colspan="5">HAL Implementation Details</th>
   1789           </tr>
   1790           <tr class="entry_cont">
   1791             <td class="entry_details" colspan="5">
   1792               <p>The 4-channel white-balance gains are defined in
   1793 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
   1794 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
   1795 is the gain for green pixels on the odd rows.<wbr/></p>
   1796 <p>If a HAL does not support a separate gain for even/<wbr/>odd green
   1797 channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
   1798 <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
   1799             </td>
   1800           </tr>
   1801 
   1802           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   1803            <!-- end of entry -->
   1804         
   1805                 
   1806           <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode">
   1807             <td class="entry_name
   1808              " rowspan="3">
   1809               android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
   1810             </td>
   1811             <td class="entry_type">
   1812                 <span class="entry_type_name entry_type_name_enum">byte</span>
   1813 
   1814               <span class="entry_type_visibility"> [public]</span>
   1815 
   1816 
   1817               <span class="entry_type_hwlevel">[legacy] </span>
   1818 
   1819 
   1820 
   1821                 <ul class="entry_type_enum">
   1822                   <li>
   1823                     <span class="entry_type_enum_name">OFF</span>
   1824                     <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
   1825                   </li>
   1826                   <li>
   1827                     <span class="entry_type_enum_name">FAST</span>
   1828                     <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
   1829 relative to sensor raw output.<wbr/></p></span>
   1830                   </li>
   1831                   <li>
   1832                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
   1833                     <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
   1834 reduced (relative to sensor raw output rate)</p></span>
   1835                   </li>
   1836                 </ul>
   1837 
   1838             </td> <!-- entry_type -->
   1839 
   1840             <td class="entry_description">
   1841               <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
   1842             </td>
   1843 
   1844             <td class="entry_units">
   1845             </td>
   1846 
   1847             <td class="entry_range">
   1848               <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
   1849             </td>
   1850 
   1851             <td class="entry_tags">
   1852             </td>
   1853 
   1854           </tr>
   1855           <tr class="entries_header">
   1856             <th class="th_details" colspan="5">Details</th>
   1857           </tr>
   1858           <tr class="entry_cont">
   1859             <td class="entry_details" colspan="5">
   1860               <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
   1861 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
   1862 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
   1863 minimize the chromatic artifacts that may occur along the object boundaries in an
   1864 image.<wbr/></p>
   1865 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
   1866 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
   1867 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
   1868 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
   1869 applying aberration correction.<wbr/></p>
   1870 <p>LEGACY devices will always be in FAST mode.<wbr/></p>
   1871             </td>
   1872           </tr>
   1873 
   1874 
   1875           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   1876            <!-- end of entry -->
   1877         
   1878         
   1879 
   1880       <!-- end of kind -->
   1881       </tbody>
   1882       <tr><td colspan="6" class="kind">static</td></tr>
   1883 
   1884       <thead class="entries_header">
   1885         <tr>
   1886           <th class="th_name">Property Name</th>
   1887           <th class="th_type">Type</th>
   1888           <th class="th_description">Description</th>
   1889           <th class="th_units">Units</th>
   1890           <th class="th_range">Range</th>
   1891           <th class="th_tags">Tags</th>
   1892         </tr>
   1893       </thead>
   1894 
   1895       <tbody>
   1896 
   1897         
   1898 
   1899         
   1900 
   1901         
   1902 
   1903         
   1904 
   1905                 
   1906           <tr class="entry" id="static_android.colorCorrection.availableAberrationModes">
   1907             <td class="entry_name
   1908              " rowspan="5">
   1909               android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes
   1910             </td>
   1911             <td class="entry_type">
   1912                 <span class="entry_type_name">byte</span>
   1913                 <span class="entry_type_container">x</span>
   1914 
   1915                 <span class="entry_type_array">
   1916                   n
   1917                 </span>
   1918               <span class="entry_type_visibility"> [public as enumList]</span>
   1919 
   1920 
   1921               <span class="entry_type_hwlevel">[legacy] </span>
   1922 
   1923 
   1924                 <div class="entry_type_notes">list of enums</div>
   1925 
   1926 
   1927             </td> <!-- entry_type -->
   1928 
   1929             <td class="entry_description">
   1930               <p>List of aberration correction modes for <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a> that are
   1931 supported by this camera device.<wbr/></p>
   1932             </td>
   1933 
   1934             <td class="entry_units">
   1935             </td>
   1936 
   1937             <td class="entry_range">
   1938               <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p>
   1939             </td>
   1940 
   1941             <td class="entry_tags">
   1942               <ul class="entry_tags">
   1943                   <li><a href="#tag_V1">V1</a></li>
   1944               </ul>
   1945             </td>
   1946 
   1947           </tr>
   1948           <tr class="entries_header">
   1949             <th class="th_details" colspan="5">Details</th>
   1950           </tr>
   1951           <tr class="entry_cont">
   1952             <td class="entry_details" colspan="5">
   1953               <p>This key lists the valid modes for <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a>.<wbr/>  If no
   1954 aberration correction modes are available for a device,<wbr/> this list will solely include
   1955 OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p>
   1956 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list
   1957 OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p>
   1958 <p>LEGACY devices will always only support FAST mode.<wbr/></p>
   1959             </td>
   1960           </tr>
   1961 
   1962           <tr class="entries_header">
   1963             <th class="th_details" colspan="5">HAL Implementation Details</th>
   1964           </tr>
   1965           <tr class="entry_cont">
   1966             <td class="entry_details" colspan="5">
   1967               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available
   1968 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
   1969 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
   1970 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
   1971             </td>
   1972           </tr>
   1973 
   1974           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   1975            <!-- end of entry -->
   1976         
   1977         
   1978 
   1979       <!-- end of kind -->
   1980       </tbody>
   1981 
   1982   <!-- end of section -->
   1983   <tr><td colspan="6" id="section_control" class="section">control</td></tr>
   1984 
   1985 
   1986       <tr><td colspan="6" class="kind">controls</td></tr>
   1987 
   1988       <thead class="entries_header">
   1989         <tr>
   1990           <th class="th_name">Property Name</th>
   1991           <th class="th_type">Type</th>
   1992           <th class="th_description">Description</th>
   1993           <th class="th_units">Units</th>
   1994           <th class="th_range">Range</th>
   1995           <th class="th_tags">Tags</th>
   1996         </tr>
   1997       </thead>
   1998 
   1999       <tbody>
   2000 
   2001         
   2002 
   2003         
   2004 
   2005         
   2006 
   2007         
   2008 
   2009                 
   2010           <tr class="entry" id="controls_android.control.aeAntibandingMode">
   2011             <td class="entry_name
   2012              " rowspan="5">
   2013               android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
   2014             </td>
   2015             <td class="entry_type">
   2016                 <span class="entry_type_name entry_type_name_enum">byte</span>
   2017 
   2018               <span class="entry_type_visibility"> [public]</span>
   2019 
   2020 
   2021               <span class="entry_type_hwlevel">[legacy] </span>
   2022 
   2023 
   2024 
   2025                 <ul class="entry_type_enum">
   2026                   <li>
   2027                     <span class="entry_type_enum_name">OFF</span>
   2028                     <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
   2029 avoid banding problems.<wbr/></p></span>
   2030                   </li>
   2031                   <li>
   2032                     <span class="entry_type_enum_name">50HZ</span>
   2033                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
   2034 avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
   2035                   </li>
   2036                   <li>
   2037                     <span class="entry_type_enum_name">60HZ</span>
   2038                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
   2039 avoid banding problems with 60Hz illumination
   2040 sources.<wbr/></p></span>
   2041                   </li>
   2042                   <li>
   2043                     <span class="entry_type_enum_name">AUTO</span>
   2044                     <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
   2045 antibanding routine to the current illumination
   2046 condition.<wbr/> This is the default mode if AUTO is
   2047 available on given camera device.<wbr/></p></span>
   2048                   </li>
   2049                 </ul>
   2050 
   2051             </td> <!-- entry_type -->
   2052 
   2053             <td class="entry_description">
   2054               <p>The desired setting for the camera device's auto-exposure
   2055 algorithm's antibanding compensation.<wbr/></p>
   2056             </td>
   2057 
   2058             <td class="entry_units">
   2059             </td>
   2060 
   2061             <td class="entry_range">
   2062               <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
   2063             </td>
   2064 
   2065             <td class="entry_tags">
   2066               <ul class="entry_tags">
   2067                   <li><a href="#tag_BC">BC</a></li>
   2068               </ul>
   2069             </td>
   2070 
   2071           </tr>
   2072           <tr class="entries_header">
   2073             <th class="th_details" colspan="5">Details</th>
   2074           </tr>
   2075           <tr class="entry_cont">
   2076             <td class="entry_details" colspan="5">
   2077               <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
   2078 lights,<wbr/> flicker at the rate of the power supply frequency
   2079 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
   2080 typically not noticeable to a person,<wbr/> it can be visible to
   2081 a camera device.<wbr/> If a camera sets its exposure time to the
   2082 wrong value,<wbr/> the flicker may become visible in the
   2083 viewfinder as flicker or in a final captured image,<wbr/> as a
   2084 set of variable-brightness bands across the image.<wbr/></p>
   2085 <p>Therefore,<wbr/> the auto-exposure routines of camera devices
   2086 include antibanding routines that ensure that the chosen
   2087 exposure value will not cause such banding.<wbr/> The choice of
   2088 exposure time depends on the rate of flicker,<wbr/> which the
   2089 camera device can detect automatically,<wbr/> or the expected
   2090 rate can be selected by the application using this
   2091 control.<wbr/></p>
   2092 <p>A given camera device may not support all of the possible
   2093 options for the antibanding mode.<wbr/> The
   2094 <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
   2095 the available modes for a given camera device.<wbr/></p>
   2096 <p>AUTO mode is the default if it is available on given
   2097 camera device.<wbr/> When AUTO mode is not available,<wbr/> the
   2098 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
   2099 and 60HZ will be available.<wbr/></p>
   2100 <p>If manual exposure control is enabled (by setting
   2101 <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> to OFF),<wbr/>
   2102 then this setting has no effect,<wbr/> and the application must
   2103 ensure it selects exposure times that do not cause banding
   2104 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
   2105 the application in this.<wbr/></p>
   2106             </td>
   2107           </tr>
   2108 
   2109           <tr class="entries_header">
   2110             <th class="th_details" colspan="5">HAL Implementation Details</th>
   2111           </tr>
   2112           <tr class="entry_cont">
   2113             <td class="entry_details" colspan="5">
   2114               <p>For all capture request templates,<wbr/> this field must be set
   2115 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
   2116 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
   2117 60HZ must be available.<wbr/></p>
   2118 <p>If manual exposure control is enabled (by setting
   2119 <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> to OFF),<wbr/>
   2120 then the exposure values provided by the application must not be
   2121 adjusted for antibanding.<wbr/></p>
   2122             </td>
   2123           </tr>
   2124 
   2125           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   2126            <!-- end of entry -->
   2127         
   2128                 
   2129           <tr class="entry" id="controls_android.control.aeExposureCompensation">
   2130             <td class="entry_name
   2131              " rowspan="3">
   2132               android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
   2133             </td>
   2134             <td class="entry_type">
   2135                 <span class="entry_type_name">int32</span>
   2136 
   2137               <span class="entry_type_visibility"> [public]</span>
   2138 
   2139 
   2140               <span class="entry_type_hwlevel">[legacy] </span>
   2141 
   2142 
   2143 
   2144 
   2145             </td> <!-- entry_type -->
   2146 
   2147             <td class="entry_description">
   2148               <p>Adjustment to auto-exposure (AE) target image
   2149 brightness.<wbr/></p>
   2150             </td>
   2151 
   2152             <td class="entry_units">
   2153               Compensation steps
   2154             </td>
   2155 
   2156             <td class="entry_range">
   2157               <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
   2158             </td>
   2159 
   2160             <td class="entry_tags">
   2161               <ul class="entry_tags">
   2162                   <li><a href="#tag_BC">BC</a></li>
   2163               </ul>
   2164             </td>
   2165 
   2166           </tr>
   2167           <tr class="entries_header">
   2168             <th class="th_details" colspan="5">Details</th>
   2169           </tr>
   2170           <tr class="entry_cont">
   2171             <td class="entry_details" colspan="5">
   2172               <p>The adjustment is measured as a count of steps,<wbr/> with the
   2173 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
   2174 allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
   2175 <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
   2176 will mean an exposure compensation of +2 EV; -3 will mean an
   2177 exposure compensation of -1 EV.<wbr/> One EV represents a doubling
   2178 of image brightness.<wbr/> Note that this control will only be
   2179 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
   2180 will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
   2181 <p>In the event of exposure compensation value being changed,<wbr/> camera device
   2182 may take several frames to reach the newly requested exposure target.<wbr/>
   2183 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
   2184 state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will
   2185 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
   2186 FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
   2187             </td>
   2188           </tr>
   2189 
   2190 
   2191           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   2192            <!-- end of entry -->
   2193         
   2194                 
   2195           <tr class="entry" id="controls_android.control.aeLock">
   2196             <td class="entry_name
   2197              " rowspan="3">
   2198               android.<wbr/>control.<wbr/>ae<wbr/>Lock
   2199             </td>
   2200             <td class="entry_type">
   2201                 <span class="entry_type_name entry_type_name_enum">byte</span>
   2202 
   2203               <span class="entry_type_visibility"> [public as boolean]</span>
   2204 
   2205 
   2206               <span class="entry_type_hwlevel">[legacy] </span>
   2207 
   2208 
   2209 
   2210                 <ul class="entry_type_enum">
   2211                   <li>
   2212                     <span class="entry_type_enum_name">OFF</span>
   2213                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
   2214 is free to update its parameters.<wbr/></p></span>
   2215                   </li>
   2216                   <li>
   2217                     <span class="entry_type_enum_name">ON</span>
   2218                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
   2219 must not update the exposure and sensitivity parameters
   2220 while the lock is active.<wbr/></p>
   2221 <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
   2222 will still take effect while auto-exposure is locked.<wbr/></p>
   2223 <p>Some rare LEGACY devices may not support
   2224 this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
   2225                   </li>
   2226                 </ul>
   2227 
   2228             </td> <!-- entry_type -->
   2229 
   2230             <td class="entry_description">
   2231               <p>Whether auto-exposure (AE) is currently locked to its latest
   2232 calculated values.<wbr/></p>
   2233             </td>
   2234 
   2235             <td class="entry_units">
   2236             </td>
   2237 
   2238             <td class="entry_range">
   2239             </td>
   2240 
   2241             <td class="entry_tags">
   2242               <ul class="entry_tags">
   2243                   <li><a href="#tag_BC">BC</a></li>
   2244               </ul>
   2245             </td>
   2246 
   2247           </tr>
   2248           <tr class="entries_header">
   2249             <th class="th_details" colspan="5">Details</th>
   2250           </tr>
   2251           <tr class="entry_cont">
   2252             <td class="entry_details" colspan="5">
   2253               <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
   2254 and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
   2255 <p>Note that even when AE is locked,<wbr/> the flash may be fired if
   2256 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
   2257 ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
   2258 <p>When <a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> is changed,<wbr/> even if the AE lock
   2259 is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
   2260 <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
   2261 when AE is already locked,<wbr/> the camera device will not change the exposure time
   2262 (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) and sensitivity (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
   2263 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
   2264 is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
   2265 <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> the scene may become overexposed.<wbr/>
   2266 Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
   2267 <p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
   2268 the AE if AE is locked by the camera device internally during precapture metering
   2269 sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
   2270 ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
   2271 will never succeed in a sequence of preview requests where AE lock is always set
   2272 to <code>false</code>.<wbr/></p>
   2273 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
   2274 get locked do not necessarily correspond to the settings that were present in the
   2275 latest capture result received from the camera device,<wbr/> since additional captures
   2276 and AE updates may have occurred even before the result was sent out.<wbr/> If an
   2277 application is switching between automatic and manual control and wishes to eliminate
   2278 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
   2279 <ol>
   2280 <li>Starting in auto-AE mode:</li>
   2281 <li>Lock AE</li>
   2282 <li>Wait for the first result to be output that has the AE locked</li>
   2283 <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
   2284 <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
   2285 </ol>
   2286 <p>See <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE lock related state transition details.<wbr/></p>
   2287             </td>
   2288           </tr>
   2289 
   2290 
   2291           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   2292            <!-- end of entry -->
   2293         
   2294                 
   2295           <tr class="entry" id="controls_android.control.aeMode">
   2296             <td class="entry_name
   2297              " rowspan="3">
   2298               android.<wbr/>control.<wbr/>ae<wbr/>Mode
   2299             </td>
   2300             <td class="entry_type">
   2301                 <span class="entry_type_name entry_type_name_enum">byte</span>
   2302 
   2303               <span class="entry_type_visibility"> [public]</span>
   2304 
   2305 
   2306               <span class="entry_type_hwlevel">[legacy] </span>
   2307 
   2308 
   2309 
   2310                 <ul class="entry_type_enum">
   2311                   <li>
   2312                     <span class="entry_type_enum_name">OFF</span>
   2313                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
   2314 <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
   2315 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
   2316 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
   2317 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
   2318 a flash unit for this camera device.<wbr/></p>
   2319 <p>Note that auto-white balance (AWB) and auto-focus (AF)
   2320 behavior is device dependent when AE is in OFF mode.<wbr/>
   2321 To have consistent behavior across different devices,<wbr/>
   2322 it is recommended to either set AWB and AF to OFF mode
   2323 or lock AWB and AF before setting AE to OFF.<wbr/>
   2324 See <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>,<wbr/>
   2325 <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a>,<wbr/> and <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
   2326 for more details.<wbr/></p>
   2327 <p>LEGACY devices do not support the OFF mode and will
   2328 override attempts to use this value to ON.<wbr/></p></span>
   2329                   </li>
   2330                   <li>
   2331                     <span class="entry_type_enum_name">ON</span>
   2332                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
   2333 with no flash control.<wbr/></p>
   2334 <p>The application's values for
   2335 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
   2336 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
   2337 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
   2338 application has control over the various
   2339 android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
   2340                   </li>
   2341                   <li>
   2342                     <span class="entry_type_enum_name">ON_AUTO_FLASH</span>
   2343                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
   2344 the camera's flash unit,<wbr/> firing it in low-light
   2345 conditions.<wbr/></p>
   2346 <p>The flash may be fired during a precapture sequence
   2347 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
   2348 may be fired for captures for which the
   2349 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
   2350 STILL_<wbr/>CAPTURE</p></span>
   2351                   </li>
   2352                   <li>
   2353                     <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span>
   2354                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
   2355 the camera's flash unit,<wbr/> always firing it for still
   2356 captures.<wbr/></p>
   2357 <p>The flash may be fired during a precapture sequence
   2358 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
   2359 will always be fired for captures for which the
   2360 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
   2361 STILL_<wbr/>CAPTURE</p></span>
   2362                   </li>
   2363                   <li>
   2364                     <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span>
   2365                     <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
   2366 reduction.<wbr/></p>
   2367 <p>If deemed necessary by the camera device,<wbr/> a red eye
   2368 reduction flash will fire during the precapture
   2369 sequence.<wbr/></p></span>
   2370                   </li>
   2371                 </ul>
   2372 
   2373             </td> <!-- entry_type -->
   2374 
   2375             <td class="entry_description">
   2376               <p>The desired mode for the camera device's
   2377 auto-exposure routine.<wbr/></p>
   2378             </td>
   2379 
   2380             <td class="entry_units">
   2381             </td>
   2382 
   2383             <td class="entry_range">
   2384               <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
   2385             </td>
   2386 
   2387             <td class="entry_tags">
   2388               <ul class="entry_tags">
   2389                   <li><a href="#tag_BC">BC</a></li>
   2390               </ul>
   2391             </td>
   2392 
   2393           </tr>
   2394           <tr class="entries_header">
   2395             <th class="th_details" colspan="5">Details</th>
   2396           </tr>
   2397           <tr class="entry_cont">
   2398             <td class="entry_details" colspan="5">
   2399               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
   2400 AUTO.<wbr/></p>
   2401 <p>When set to any of the ON modes,<wbr/> the camera device's
   2402 auto-exposure routine is enabled,<wbr/> overriding the
   2403 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
   2404 and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
   2405 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
   2406 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
   2407 is selected,<wbr/> the camera device's flash unit controls are
   2408 also overridden.<wbr/></p>
   2409 <p>The FLASH modes are only available if the camera device
   2410 has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p>
   2411 <p>If flash TORCH mode is desired,<wbr/> this field must be set to
   2412 ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
   2413 <p>When set to any of the ON modes,<wbr/> the values chosen by the
   2414 camera device auto-exposure routine for the overridden
   2415 fields for a given capture will be available in its
   2416 CaptureResult.<wbr/></p>
   2417             </td>
   2418           </tr>
   2419 
   2420 
   2421           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   2422            <!-- end of entry -->
   2423         
   2424                 
   2425           <tr class="entry" id="controls_android.control.aeRegions">
   2426             <td class="entry_name
   2427              " rowspan="5">
   2428               android.<wbr/>control.<wbr/>ae<wbr/>Regions
   2429             </td>
   2430             <td class="entry_type">
   2431                 <span class="entry_type_name">int32</span>
   2432                 <span class="entry_type_container">x</span>
   2433 
   2434                 <span class="entry_type_array">
   2435                   5 x area_count
   2436                 </span>
   2437               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
   2438 
   2439 
   2440 
   2441 
   2442 
   2443 
   2444             </td> <!-- entry_type -->
   2445 
   2446             <td class="entry_description">
   2447               <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
   2448             </td>
   2449 
   2450             <td class="entry_units">
   2451               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
   2452             </td>
   2453 
   2454             <td class="entry_range">
   2455               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
   2456 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
   2457             </td>
   2458 
   2459             <td class="entry_tags">
   2460               <ul class="entry_tags">
   2461                   <li><a href="#tag_BC">BC</a></li>
   2462               </ul>
   2463             </td>
   2464 
   2465           </tr>
   2466           <tr class="entries_header">
   2467             <th class="th_details" colspan="5">Details</th>
   2468           </tr>
   2469           <tr class="entry_cont">
   2470             <td class="entry_details" colspan="5">
   2471               <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
   2472 Otherwise will always be present.<wbr/></p>
   2473 <p>The maximum number of regions supported by the device is determined by the value
   2474 of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
   2475 <p>The coordinate system is based on the active pixel array,<wbr/>
   2476 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
   2477 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
   2478 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
   2479 bottom-right pixel in the active pixel array.<wbr/></p>
   2480 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
   2481 for every pixel in the area.<wbr/> This means that a large metering area
   2482 with the same weight as a smaller area will have more effect in
   2483 the metering result.<wbr/> Metering areas can partially overlap and the
   2484 camera device will add the weights in the overlap region.<wbr/></p>
   2485 <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
   2486 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
   2487 weight is ignored.<wbr/></p>
   2488 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
   2489 camera device.<wbr/></p>
   2490 <p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in
   2491 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
   2492 region and output only the intersection rectangle as the metering region in the result
   2493 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
   2494 not reported in the result metadata.<wbr/></p>
   2495             </td>
   2496           </tr>
   2497 
   2498           <tr class="entries_header">
   2499             <th class="th_details" colspan="5">HAL Implementation Details</th>
   2500           </tr>
   2501           <tr class="entry_cont">
   2502             <td class="entry_details" colspan="5">
   2503               <p>The HAL level representation of MeteringRectangle[] is a
   2504 int[5 * area_<wbr/>count].<wbr/>
   2505 Every five elements represent a metering region of
   2506 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
   2507 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
   2508 exclusive on xmax and ymax.<wbr/></p>
   2509             </td>
   2510           </tr>
   2511 
   2512           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   2513            <!-- end of entry -->
   2514         
   2515                 
   2516           <tr class="entry" id="controls_android.control.aeTargetFpsRange">
   2517             <td class="entry_name
   2518              " rowspan="3">
   2519               android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
   2520             </td>
   2521             <td class="entry_type">
   2522                 <span class="entry_type_name">int32</span>
   2523                 <span class="entry_type_container">x</span>
   2524 
   2525                 <span class="entry_type_array">
   2526                   2
   2527                 </span>
   2528               <span class="entry_type_visibility"> [public as rangeInt]</span>
   2529 
   2530 
   2531               <span class="entry_type_hwlevel">[legacy] </span>
   2532 
   2533 
   2534 
   2535 
   2536             </td> <!-- entry_type -->
   2537 
   2538             <td class="entry_description">
   2539               <p>Range over which the auto-exposure routine can
   2540 adjust the capture frame rate to maintain good
   2541 exposure.<wbr/></p>
   2542             </td>
   2543 
   2544             <td class="entry_units">
   2545               Frames per second (FPS)
   2546             </td>
   2547 
   2548             <td class="entry_range">
   2549               <p>Any of the entries in <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a></p>
   2550             </td>
   2551 
   2552             <td class="entry_tags">
   2553               <ul class="entry_tags">
   2554                   <li><a href="#tag_BC">BC</a></li>
   2555               </ul>
   2556             </td>
   2557 
   2558           </tr>
   2559           <tr class="entries_header">
   2560             <th class="th_details" colspan="5">Details</th>
   2561           </tr>
   2562           <tr class="entry_cont">
   2563             <td class="entry_details" colspan="5">
   2564               <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
   2565 manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
   2566 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
   2567             </td>
   2568           </tr>
   2569 
   2570 
   2571           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   2572            <!-- end of entry -->
   2573         
   2574                 
   2575           <tr class="entry" id="controls_android.control.aePrecaptureTrigger">
   2576             <td class="entry_name
   2577              " rowspan="5">
   2578               android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
   2579             </td>
   2580             <td class="entry_type">
   2581                 <span class="entry_type_name entry_type_name_enum">byte</span>
   2582 
   2583               <span class="entry_type_visibility"> [public]</span>
   2584 
   2585 
   2586               <span class="entry_type_hwlevel">[limited] </span>
   2587 
   2588 
   2589 
   2590                 <ul class="entry_type_enum">
   2591                   <li>
   2592                     <span class="entry_type_enum_name">IDLE</span>
   2593                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
   2594                   </li>
   2595                   <li>
   2596                     <span class="entry_type_enum_name">START</span>
   2597                     <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
   2598 by the camera device.<wbr/></p>
   2599 <p>The exact effect of the precapture trigger depends on
   2600 the current AE mode and state.<wbr/></p></span>
   2601                   </li>
   2602                   <li>
   2603                     <span class="entry_type_enum_name">CANCEL</span>
   2604                     <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
   2605 precapture metering sequence,<wbr/> the auto-exposure routine will return to its
   2606 initial state.<wbr/></p></span>
   2607                   </li>
   2608                 </ul>
   2609 
   2610             </td> <!-- entry_type -->
   2611 
   2612             <td class="entry_description">
   2613               <p>Whether the camera device will trigger a precapture
   2614 metering sequence when it processes this request.<wbr/></p>
   2615             </td>
   2616 
   2617             <td class="entry_units">
   2618             </td>
   2619 
   2620             <td class="entry_range">
   2621             </td>
   2622 
   2623             <td class="entry_tags">
   2624               <ul class="entry_tags">
   2625                   <li><a href="#tag_BC">BC</a></li>
   2626               </ul>
   2627             </td>
   2628 
   2629           </tr>
   2630           <tr class="entries_header">
   2631             <th class="th_details" colspan="5">Details</th>
   2632           </tr>
   2633           <tr class="entry_cont">
   2634             <td class="entry_details" colspan="5">
   2635               <p>This entry is normally set to IDLE,<wbr/> or is not
   2636 included at all in the request settings.<wbr/> When included and
   2637 set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
   2638 precapture metering sequence.<wbr/></p>
   2639 <p>When set to CANCEL,<wbr/> the camera device will cancel any active
   2640 precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
   2641 If a precapture metering sequence is already completed,<wbr/> and the camera
   2642 device has implicitly locked the AE for subsequent still capture,<wbr/> the
   2643 CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
   2644 <p>The precapture sequence should be triggered before starting a
   2645 high-quality still capture for final metering decisions to
   2646 be made,<wbr/> and for firing pre-capture flash pulses to estimate
   2647 scene brightness and required final capture flash power,<wbr/> when
   2648 the flash is enabled.<wbr/></p>
   2649 <p>Normally,<wbr/> this entry should be set to START for only a
   2650 single request,<wbr/> and the application should wait until the
   2651 sequence completes before starting a new one.<wbr/></p>
   2652 <p>When a precapture metering sequence is finished,<wbr/> the camera device
   2653 may lock the auto-exposure routine internally to be able to accurately expose the
   2654 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
   2655 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
   2656 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
   2657 submit a request with <code><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> == true</code>,<wbr/> followed by a request
   2658 with <code><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> == false</code>,<wbr/> if the application decides not to submit a
   2659 still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
   2660 API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
   2661 internally locked AE if the application doesn't submit a still capture request after
   2662 the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
   2663 be used in devices that have earlier API levels.<wbr/></p>
   2664 <p>The exact effect of auto-exposure (AE) precapture trigger
   2665 depends on the current AE mode and state; see
   2666 <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
   2667 details.<wbr/></p>
   2668 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
   2669 capturing a high-resolution JPEG image will automatically trigger a
   2670 precapture sequence before the high-resolution capture,<wbr/> including
   2671 potentially firing a pre-capture flash.<wbr/></p>
   2672 <p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
   2673 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
   2674 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
   2675 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
   2676 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
   2677 changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for
   2678 example.<wbr/></p>
   2679 <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
   2680 the camera device will complete them in the optimal order for that device.<wbr/></p>
   2681             </td>
   2682           </tr>
   2683 
   2684           <tr class="entries_header">
   2685             <th class="th_details" colspan="5">HAL Implementation Details</th>
   2686           </tr>
   2687           <tr class="entry_cont">
   2688             <td class="entry_details" colspan="5">
   2689               <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
   2690 (and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/>  It is acceptable for the HAL to
   2691 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
   2692 AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
   2693 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
   2694             </td>
   2695           </tr>
   2696 
   2697           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   2698            <!-- end of entry -->
   2699         
   2700                 
   2701           <tr class="entry" id="controls_android.control.afMode">
   2702             <td class="entry_name
   2703              " rowspan="5">
   2704               android.<wbr/>control.<wbr/>af<wbr/>Mode
   2705             </td>
   2706             <td class="entry_type">
   2707                 <span class="entry_type_name entry_type_name_enum">byte</span>
   2708 
   2709               <span class="entry_type_visibility"> [public]</span>
   2710 
   2711 
   2712               <span class="entry_type_hwlevel">[legacy] </span>
   2713 
   2714 
   2715 
   2716                 <ul class="entry_type_enum">
   2717                   <li>
   2718                     <span class="entry_type_enum_name">OFF</span>
   2719                     <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
   2720 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
   2721 application.<wbr/></p></span>
   2722                   </li>
   2723                   <li>
   2724                     <span class="entry_type_enum_name">AUTO</span>
   2725                     <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
   2726 <p>In this mode,<wbr/> the lens does not move unless
   2727 the autofocus trigger action is called.<wbr/> When that trigger
   2728 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
   2729 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
   2730 <p>Always supported if lens is not fixed focus.<wbr/></p>
   2731 <p>Use <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> to determine if lens
   2732 is fixed-focus.<wbr/></p>
   2733 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
   2734 and sets the AF state to INACTIVE.<wbr/></p></span>
   2735                   </li>
   2736                   <li>
   2737                     <span class="entry_type_enum_name">MACRO</span>
   2738                     <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
   2739 <p>In this mode,<wbr/> the lens does not move unless the
   2740 autofocus trigger action is called.<wbr/> When that trigger is
   2741 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
   2742 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
   2743 mode is optimized for focusing on objects very close to
   2744 the camera.<wbr/></p>
   2745 <p>When that trigger is activated,<wbr/> AF will transition to
   2746 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
   2747 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
   2748 position to default,<wbr/> and sets the AF state to
   2749 INACTIVE.<wbr/></p></span>
   2750                   </li>
   2751                   <li>
   2752                     <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span>
   2753                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
   2754 position continually to attempt to provide a
   2755 constantly-in-focus image stream.<wbr/></p>
   2756 <p>The focusing behavior should be suitable for good quality
   2757 video recording; typically this means slower focus
   2758 movement and no overshoots.<wbr/> When the AF trigger is not
   2759 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
   2760 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
   2761 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
   2762 the algorithm should immediately transition into
   2763 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
   2764 lens position until a cancel AF trigger is received.<wbr/></p>
   2765 <p>Once cancel is received,<wbr/> the algorithm should transition
   2766 back to INACTIVE and resume passive scan.<wbr/> Note that this
   2767 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
   2768 ongoing PASSIVE_<wbr/>SCAN must immediately be
   2769 canceled.<wbr/></p></span>
   2770                   </li>
   2771                   <li>
   2772                     <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span>
   2773                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
   2774 position continually to attempt to provide a
   2775 constantly-in-focus image stream.<wbr/></p>
   2776 <p>The focusing behavior should be suitable for still image
   2777 capture; typically this means focusing as fast as
   2778 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
   2779 algorithm should start in INACTIVE state,<wbr/> and then
   2780 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
   2781 appropriate as it attempts to maintain focus.<wbr/> When the AF
   2782 trigger is activated,<wbr/> the algorithm should finish its
   2783 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
   2784 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
   2785 lens position until a cancel AF trigger is received.<wbr/></p>
   2786 <p>When the AF cancel trigger is activated,<wbr/> the algorithm
   2787 should transition back to INACTIVE and then act as if it
   2788 has just been started.<wbr/></p></span>
   2789                   </li>
   2790                   <li>
   2791                     <span class="entry_type_enum_name">EDOF</span>
   2792                     <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
   2793 <p>The camera device will produce images with an extended
   2794 depth of field automatically; no special focusing
   2795 operations need to be done before taking a picture.<wbr/></p>
   2796 <p>AF triggers are ignored,<wbr/> and the AF state will always be
   2797 INACTIVE.<wbr/></p></span>
   2798                   </li>
   2799                 </ul>
   2800 
   2801             </td> <!-- entry_type -->
   2802 
   2803             <td class="entry_description">
   2804               <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
   2805 mode it is set to.<wbr/></p>
   2806             </td>
   2807 
   2808             <td class="entry_units">
   2809             </td>
   2810 
   2811             <td class="entry_range">
   2812               <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
   2813             </td>
   2814 
   2815             <td class="entry_tags">
   2816               <ul class="entry_tags">
   2817                   <li><a href="#tag_BC">BC</a></li>
   2818               </ul>
   2819             </td>
   2820 
   2821           </tr>
   2822           <tr class="entries_header">
   2823             <th class="th_details" colspan="5">Details</th>
   2824           </tr>
   2825           <tr class="entry_cont">
   2826             <td class="entry_details" colspan="5">
   2827               <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
   2828 (i.<wbr/>e.<wbr/> <code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> &gt; 0</code>).<wbr/> Also note that
   2829 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
   2830 dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before
   2831 setting <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> to OFF,<wbr/> or set AF mode to OFF when AE is OFF.<wbr/></p>
   2832 <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
   2833 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
   2834 in result metadata.<wbr/></p>
   2835             </td>
   2836           </tr>
   2837 
   2838           <tr class="entries_header">
   2839             <th class="th_details" colspan="5">HAL Implementation Details</th>
   2840           </tr>
   2841           <tr class="entry_cont">
   2842             <td class="entry_details" colspan="5">
   2843               <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
   2844 request (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> <code>==</code> START).<wbr/> After an AF trigger,<wbr/> the afState will end
   2845 up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
   2846 <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for detailed state transitions),<wbr/> which indicates that the lens is
   2847 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
   2848 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
   2849 the same focal plane remains in focus.<wbr/></p>
   2850 <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
   2851 scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
   2852 (see <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for detailed state transitions),<wbr/> the HAL should maintain the
   2853 same lock behavior as above.<wbr/></p>
   2854 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
   2855 focus distance control depends on the <a href="#static_android.lens.info.focusDistanceCalibration">android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration</a>.<wbr/>
   2856 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
   2857 manual control.<wbr/></p>
   2858 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
   2859 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
   2860 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
   2861 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
   2862 that will arise on camera modules with open-loop VCMs.<wbr/></p>
   2863             </td>
   2864           </tr>
   2865 
   2866           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   2867            <!-- end of entry -->
   2868         
   2869                 
   2870           <tr class="entry" id="controls_android.control.afRegions">
   2871             <td class="entry_name
   2872              " rowspan="5">
   2873               android.<wbr/>control.<wbr/>af<wbr/>Regions
   2874             </td>
   2875             <td class="entry_type">
   2876                 <span class="entry_type_name">int32</span>
   2877                 <span class="entry_type_container">x</span>
   2878 
   2879                 <span class="entry_type_array">
   2880                   5 x area_count
   2881                 </span>
   2882               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
   2883 
   2884 
   2885 
   2886 
   2887 
   2888 
   2889             </td> <!-- entry_type -->
   2890 
   2891             <td class="entry_description">
   2892               <p>List of metering areas to use for auto-focus.<wbr/></p>
   2893             </td>
   2894 
   2895             <td class="entry_units">
   2896               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
   2897             </td>
   2898 
   2899             <td class="entry_range">
   2900               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
   2901 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
   2902             </td>
   2903 
   2904             <td class="entry_tags">
   2905               <ul class="entry_tags">
   2906                   <li><a href="#tag_BC">BC</a></li>
   2907               </ul>
   2908             </td>
   2909 
   2910           </tr>
   2911           <tr class="entries_header">
   2912             <th class="th_details" colspan="5">Details</th>
   2913           </tr>
   2914           <tr class="entry_cont">
   2915             <td class="entry_details" colspan="5">
   2916               <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
   2917 Otherwise will always be present.<wbr/></p>
   2918 <p>The maximum number of focus areas supported by the device is determined by the value
   2919 of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
   2920 <p>The coordinate system is based on the active pixel array,<wbr/>
   2921 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
   2922 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
   2923 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
   2924 bottom-right pixel in the active pixel array.<wbr/></p>
   2925 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
   2926 for every pixel in the area.<wbr/> This means that a large metering area
   2927 with the same weight as a smaller area will have more effect in
   2928 the metering result.<wbr/> Metering areas can partially overlap and the
   2929 camera device will add the weights in the overlap region.<wbr/></p>
   2930 <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
   2931 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
   2932 ignored.<wbr/></p>
   2933 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
   2934 camera device.<wbr/></p>
   2935 <p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in
   2936 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
   2937 region and output only the intersection rectangle as the metering region in the result
   2938 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
   2939 not reported in the result metadata.<wbr/></p>
   2940             </td>
   2941           </tr>
   2942 
   2943           <tr class="entries_header">
   2944             <th class="th_details" colspan="5">HAL Implementation Details</th>
   2945           </tr>
   2946           <tr class="entry_cont">
   2947             <td class="entry_details" colspan="5">
   2948               <p>The HAL level representation of MeteringRectangle[] is a
   2949 int[5 * area_<wbr/>count].<wbr/>
   2950 Every five elements represent a metering region of
   2951 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
   2952 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
   2953 exclusive on xmax and ymax.<wbr/></p>
   2954             </td>
   2955           </tr>
   2956 
   2957           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   2958            <!-- end of entry -->
   2959         
   2960                 
   2961           <tr class="entry" id="controls_android.control.afTrigger">
   2962             <td class="entry_name
   2963              " rowspan="5">
   2964               android.<wbr/>control.<wbr/>af<wbr/>Trigger
   2965             </td>
   2966             <td class="entry_type">
   2967                 <span class="entry_type_name entry_type_name_enum">byte</span>
   2968 
   2969               <span class="entry_type_visibility"> [public]</span>
   2970 
   2971 
   2972               <span class="entry_type_hwlevel">[legacy] </span>
   2973 
   2974 
   2975 
   2976                 <ul class="entry_type_enum">
   2977                   <li>
   2978                     <span class="entry_type_enum_name">IDLE</span>
   2979                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
   2980                   </li>
   2981                   <li>
   2982                     <span class="entry_type_enum_name">START</span>
   2983                     <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
   2984                   </li>
   2985                   <li>
   2986                     <span class="entry_type_enum_name">CANCEL</span>
   2987                     <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
   2988 state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
   2989                   </li>
   2990                 </ul>
   2991 
   2992             </td> <!-- entry_type -->
   2993 
   2994             <td class="entry_description">
   2995               <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
   2996             </td>
   2997 
   2998             <td class="entry_units">
   2999             </td>
   3000 
   3001             <td class="entry_range">
   3002             </td>
   3003 
   3004             <td class="entry_tags">
   3005               <ul class="entry_tags">
   3006                   <li><a href="#tag_BC">BC</a></li>
   3007               </ul>
   3008             </td>
   3009 
   3010           </tr>
   3011           <tr class="entries_header">
   3012             <th class="th_details" colspan="5">Details</th>
   3013           </tr>
   3014           <tr class="entry_cont">
   3015             <td class="entry_details" colspan="5">
   3016               <p>This entry is normally set to IDLE,<wbr/> or is not
   3017 included at all in the request settings.<wbr/></p>
   3018 <p>When included and set to START,<wbr/> the camera device will trigger the
   3019 autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
   3020 <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
   3021 and return to its initial AF state.<wbr/></p>
   3022 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
   3023 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
   3024 START for multiple captures in a row means restarting the AF operation over
   3025 and over again.<wbr/></p>
   3026 <p>See <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for what the trigger means for each AF mode.<wbr/></p>
   3027 <p>Using the autofocus trigger and the precapture trigger <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>
   3028 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
   3029 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
   3030 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
   3031 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
   3032 changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
   3033             </td>
   3034           </tr>
   3035 
   3036           <tr class="entries_header">
   3037             <th class="th_details" colspan="5">HAL Implementation Details</th>
   3038           </tr>
   3039           <tr class="entry_cont">
   3040             <td class="entry_details" colspan="5">
   3041               <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
   3042 (and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/>  It is acceptable for the HAL to
   3043 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
   3044 AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
   3045 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
   3046             </td>
   3047           </tr>
   3048 
   3049           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   3050            <!-- end of entry -->
   3051         
   3052                 
   3053           <tr class="entry" id="controls_android.control.awbLock">
   3054             <td class="entry_name
   3055              " rowspan="3">
   3056               android.<wbr/>control.<wbr/>awb<wbr/>Lock
   3057             </td>
   3058             <td class="entry_type">
   3059                 <span class="entry_type_name entry_type_name_enum">byte</span>
   3060 
   3061               <span class="entry_type_visibility"> [public as boolean]</span>
   3062 
   3063 
   3064               <span class="entry_type_hwlevel">[legacy] </span>
   3065 
   3066 
   3067 
   3068                 <ul class="entry_type_enum">
   3069                   <li>
   3070                     <span class="entry_type_enum_name">OFF</span>
   3071                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
   3072 algorithm is free to update its parameters if in AUTO
   3073 mode.<wbr/></p></span>
   3074                   </li>
   3075                   <li>
   3076                     <span class="entry_type_enum_name">ON</span>
   3077                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
   3078 algorithm will not update its parameters while the lock
   3079 is active.<wbr/></p></span>
   3080                   </li>
   3081                 </ul>
   3082 
   3083             </td> <!-- entry_type -->
   3084 
   3085             <td class="entry_description">
   3086               <p>Whether auto-white balance (AWB) is currently locked to its
   3087 latest calculated values.<wbr/></p>
   3088             </td>
   3089 
   3090             <td class="entry_units">
   3091             </td>
   3092 
   3093             <td class="entry_range">
   3094             </td>
   3095 
   3096             <td class="entry_tags">
   3097               <ul class="entry_tags">
   3098                   <li><a href="#tag_BC">BC</a></li>
   3099               </ul>
   3100             </td>
   3101 
   3102           </tr>
   3103           <tr class="entries_header">
   3104             <th class="th_details" colspan="5">Details</th>
   3105           </tr>
   3106           <tr class="entry_cont">
   3107             <td class="entry_details" colspan="5">
   3108               <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
   3109 and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
   3110 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
   3111 get locked do not necessarily correspond to the settings that were present in the
   3112 latest capture result received from the camera device,<wbr/> since additional captures
   3113 and AWB updates may have occurred even before the result was sent out.<wbr/> If an
   3114 application is switching between automatic and manual control and wishes to eliminate
   3115 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
   3116 <ol>
   3117 <li>Starting in auto-AWB mode:</li>
   3118 <li>Lock AWB</li>
   3119 <li>Wait for the first result to be output that has the AWB locked</li>
   3120 <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
   3121 <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
   3122 </ol>
   3123 <p>Note that AWB lock is only meaningful when
   3124 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
   3125 AWB is already fixed to a specific setting.<wbr/></p>
   3126 <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
   3127             </td>
   3128           </tr>
   3129 
   3130 
   3131           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   3132            <!-- end of entry -->
   3133         
   3134                 
   3135           <tr class="entry" id="controls_android.control.awbMode">
   3136             <td class="entry_name
   3137              " rowspan="3">
   3138               android.<wbr/>control.<wbr/>awb<wbr/>Mode
   3139             </td>
   3140             <td class="entry_type">
   3141                 <span class="entry_type_name entry_type_name_enum">byte</span>
   3142 
   3143               <span class="entry_type_visibility"> [public]</span>
   3144 
   3145 
   3146               <span class="entry_type_hwlevel">[legacy] </span>
   3147 
   3148 
   3149 
   3150                 <ul class="entry_type_enum">
   3151                   <li>
   3152                     <span class="entry_type_enum_name">OFF</span>
   3153                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
   3154 <p>The application-selected color transform matrix
   3155 (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
   3156 (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
   3157 device for manual white balance control.<wbr/></p></span>
   3158                   </li>
   3159                   <li>
   3160                     <span class="entry_type_enum_name">AUTO</span>
   3161                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
   3162 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
   3163 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
   3164 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
   3165 values used by the camera device for the transform and gains
   3166 will be available in the capture result for this request.<wbr/></p></span>
   3167                   </li>
   3168                   <li>
   3169                     <span class="entry_type_enum_name">INCANDESCENT</span>
   3170                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
   3171 the camera device uses incandescent light as the assumed scene
   3172 illumination for white balance.<wbr/></p>
   3173 <p>While the exact white balance transforms are up to the
   3174 camera device,<wbr/> they will approximately match the CIE
   3175 standard illuminant A.<wbr/></p>
   3176 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
   3177 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
   3178 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
   3179 values used by the camera device for the transform and gains
   3180 will be available in the capture result for this request.<wbr/></p></span>
   3181                   </li>
   3182                   <li>
   3183                     <span class="entry_type_enum_name">FLUORESCENT</span>
   3184                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
   3185 the camera device uses fluorescent light as the assumed scene
   3186 illumination for white balance.<wbr/></p>
   3187 <p>While the exact white balance transforms are up to the
   3188 camera device,<wbr/> they will approximately match the CIE
   3189 standard illuminant F2.<wbr/></p>
   3190 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
   3191 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
   3192 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
   3193 values used by the camera device for the transform and gains
   3194 will be available in the capture result for this request.<wbr/></p></span>
   3195                   </li>
   3196                   <li>
   3197                     <span class="entry_type_enum_name">WARM_FLUORESCENT</span>
   3198                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
   3199 the camera device uses warm fluorescent light as the assumed scene
   3200 illumination for white balance.<wbr/></p>
   3201 <p>While the exact white balance transforms are up to the
   3202 camera device,<wbr/> they will approximately match the CIE
   3203 standard illuminant F4.<wbr/></p>
   3204 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
   3205 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
   3206 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
   3207 values used by the camera device for the transform and gains
   3208 will be available in the capture result for this request.<wbr/></p></span>
   3209                   </li>
   3210                   <li>
   3211                     <span class="entry_type_enum_name">DAYLIGHT</span>
   3212                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
   3213 the camera device uses daylight light as the assumed scene
   3214 illumination for white balance.<wbr/></p>
   3215 <p>While the exact white balance transforms are up to the
   3216 camera device,<wbr/> they will approximately match the CIE
   3217 standard illuminant D65.<wbr/></p>
   3218 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
   3219 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
   3220 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
   3221 values used by the camera device for the transform and gains
   3222 will be available in the capture result for this request.<wbr/></p></span>
   3223                   </li>
   3224                   <li>
   3225                     <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span>
   3226                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
   3227 the camera device uses cloudy daylight light as the assumed scene
   3228 illumination for white balance.<wbr/></p>
   3229 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
   3230 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
   3231 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
   3232 values used by the camera device for the transform and gains
   3233 will be available in the capture result for this request.<wbr/></p></span>
   3234                   </li>
   3235                   <li>
   3236                     <span class="entry_type_enum_name">TWILIGHT</span>
   3237                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
   3238 the camera device uses twilight light as the assumed scene
   3239 illumination for white balance.<wbr/></p>
   3240 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
   3241 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
   3242 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
   3243 values used by the camera device for the transform and gains
   3244 will be available in the capture result for this request.<wbr/></p></span>
   3245                   </li>
   3246                   <li>
   3247                     <span class="entry_type_enum_name">SHADE</span>
   3248                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
   3249 the camera device uses shade light as the assumed scene
   3250 illumination for white balance.<wbr/></p>
   3251 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
   3252 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
   3253 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
   3254 values used by the camera device for the transform and gains
   3255 will be available in the capture result for this request.<wbr/></p></span>
   3256                   </li>
   3257                 </ul>
   3258 
   3259             </td> <!-- entry_type -->
   3260 
   3261             <td class="entry_description">
   3262               <p>Whether auto-white balance (AWB) is currently setting the color
   3263 transform fields,<wbr/> and what its illumination target
   3264 is.<wbr/></p>
   3265             </td>
   3266 
   3267             <td class="entry_units">
   3268             </td>
   3269 
   3270             <td class="entry_range">
   3271               <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
   3272             </td>
   3273 
   3274             <td class="entry_tags">
   3275               <ul class="entry_tags">
   3276                   <li><a href="#tag_BC">BC</a></li>
   3277               </ul>
   3278             </td>
   3279 
   3280           </tr>
   3281           <tr class="entries_header">
   3282             <th class="th_details" colspan="5">Details</th>
   3283           </tr>
   3284           <tr class="entry_cont">
   3285             <td class="entry_details" colspan="5">
   3286               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
   3287 <p>When set to the ON mode,<wbr/> the camera device's auto-white balance
   3288 routine is enabled,<wbr/> overriding the application's selected
   3289 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
   3290 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/> Note that when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
   3291 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
   3292 also set AWB mode to OFF or lock AWB by using <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> before
   3293 setting AE mode to OFF.<wbr/></p>
   3294 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
   3295 routine is disabled.<wbr/> The application manually controls the white
   3296 balance by <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>
   3297 and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
   3298 <p>When set to any other modes,<wbr/> the camera device's auto-white
   3299 balance routine is disabled.<wbr/> The camera device uses each
   3300 particular illumination target for white balance
   3301 adjustment.<wbr/> The application's values for
   3302 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
   3303 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
   3304 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
   3305             </td>
   3306           </tr>
   3307 
   3308 
   3309           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   3310            <!-- end of entry -->
   3311         
   3312                 
   3313           <tr class="entry" id="controls_android.control.awbRegions">
   3314             <td class="entry_name
   3315              " rowspan="5">
   3316               android.<wbr/>control.<wbr/>awb<wbr/>Regions
   3317             </td>
   3318             <td class="entry_type">
   3319                 <span class="entry_type_name">int32</span>
   3320                 <span class="entry_type_container">x</span>
   3321 
   3322                 <span class="entry_type_array">
   3323                   5 x area_count
   3324                 </span>
   3325               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
   3326 
   3327 
   3328 
   3329 
   3330 
   3331 
   3332             </td> <!-- entry_type -->
   3333 
   3334             <td class="entry_description">
   3335               <p>List of metering areas to use for auto-white-balance illuminant
   3336 estimation.<wbr/></p>
   3337             </td>
   3338 
   3339             <td class="entry_units">
   3340               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
   3341             </td>
   3342 
   3343             <td class="entry_range">
   3344               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
   3345 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
   3346             </td>
   3347 
   3348             <td class="entry_tags">
   3349               <ul class="entry_tags">
   3350                   <li><a href="#tag_BC">BC</a></li>
   3351               </ul>
   3352             </td>
   3353 
   3354           </tr>
   3355           <tr class="entries_header">
   3356             <th class="th_details" colspan="5">Details</th>
   3357           </tr>
   3358           <tr class="entry_cont">
   3359             <td class="entry_details" colspan="5">
   3360               <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
   3361 Otherwise will always be present.<wbr/></p>
   3362 <p>The maximum number of regions supported by the device is determined by the value
   3363 of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
   3364 <p>The coordinate system is based on the active pixel array,<wbr/>
   3365 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
   3366 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
   3367 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
   3368 bottom-right pixel in the active pixel array.<wbr/></p>
   3369 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight
   3370 for every pixel in the area.<wbr/> This means that a large metering area
   3371 with the same weight as a smaller area will have more effect in
   3372 the metering result.<wbr/> Metering areas can partially overlap and the
   3373 camera device will add the weights in the overlap region.<wbr/></p>
   3374 <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
   3375 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
   3376 0 weight is ignored.<wbr/></p>
   3377 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
   3378 camera device.<wbr/></p>
   3379 <p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in
   3380 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
   3381 region and output only the intersection rectangle as the metering region in the result
   3382 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
   3383 not reported in the result metadata.<wbr/></p>
   3384             </td>
   3385           </tr>
   3386 
   3387           <tr class="entries_header">
   3388             <th class="th_details" colspan="5">HAL Implementation Details</th>
   3389           </tr>
   3390           <tr class="entry_cont">
   3391             <td class="entry_details" colspan="5">
   3392               <p>The HAL level representation of MeteringRectangle[] is a
   3393 int[5 * area_<wbr/>count].<wbr/>
   3394 Every five elements represent a metering region of
   3395 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
   3396 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
   3397 exclusive on xmax and ymax.<wbr/></p>
   3398             </td>
   3399           </tr>
   3400 
   3401           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   3402            <!-- end of entry -->
   3403         
   3404                 
   3405           <tr class="entry" id="controls_android.control.captureIntent">
   3406             <td class="entry_name
   3407              " rowspan="3">
   3408               android.<wbr/>control.<wbr/>capture<wbr/>Intent
   3409             </td>
   3410             <td class="entry_type">
   3411                 <span class="entry_type_name entry_type_name_enum">byte</span>
   3412 
   3413               <span class="entry_type_visibility"> [public]</span>
   3414 
   3415 
   3416               <span class="entry_type_hwlevel">[legacy] </span>
   3417 
   3418 
   3419 
   3420                 <ul class="entry_type_enum">
   3421                   <li>
   3422                     <span class="entry_type_enum_name">CUSTOM</span>
   3423                     <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
   3424 categories.<wbr/> The camera device will default to preview-like
   3425 behavior.<wbr/></p></span>
   3426                   </li>
   3427                   <li>
   3428                     <span class="entry_type_enum_name">PREVIEW</span>
   3429                     <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
   3430 <p>The precapture trigger may be used to start off a metering
   3431 w/<wbr/>flash sequence.<wbr/></p></span>
   3432                   </li>
   3433                   <li>
   3434                     <span class="entry_type_enum_name">STILL_CAPTURE</span>
   3435                     <span class="entry_type_enum_notes"><p>This request is for a still capture-type
   3436 use case.<wbr/></p>
   3437 <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
   3438                   </li>
   3439                   <li>
   3440                     <span class="entry_type_enum_name">VIDEO_RECORD</span>
   3441                     <span class="entry_type_enum_notes"><p>This request is for a video recording
   3442 use case.<wbr/></p></span>
   3443                   </li>
   3444                   <li>
   3445                     <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span>
   3446                     <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
   3447 image while recording video) use case.<wbr/></p>
   3448 <p>The camera device should take the highest-quality image
   3449 possible (given the other settings) without disrupting the
   3450 frame rate of video recording.<wbr/>  </p></span>
   3451                   </li>
   3452                   <li>
   3453                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
   3454                     <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
   3455 application will stream full-resolution images and
   3456 reprocess one or several later for a final
   3457 capture.<wbr/></p></span>
   3458                   </li>
   3459                   <li>
   3460                     <span class="entry_type_enum_name">MANUAL</span>
   3461                     <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
   3462 the applications want to directly control the capture parameters.<wbr/></p>
   3463 <p>For example,<wbr/> the application may wish to manually control
   3464 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> etc.<wbr/></p></span>
   3465                   </li>
   3466                 </ul>
   3467 
   3468             </td> <!-- entry_type -->
   3469 
   3470             <td class="entry_description">
   3471               <p>Information to the camera device 3A (auto-exposure,<wbr/>
   3472 auto-focus,<wbr/> auto-white balance) routines about the purpose
   3473 of this capture,<wbr/> to help the camera device to decide optimal 3A
   3474 strategy.<wbr/></p>
   3475             </td>
   3476 
   3477             <td class="entry_units">
   3478             </td>
   3479 
   3480             <td class="entry_range">
   3481             </td>
   3482 
   3483             <td class="entry_tags">
   3484               <ul class="entry_tags">
   3485                   <li><a href="#tag_BC">BC</a></li>
   3486               </ul>
   3487             </td>
   3488 
   3489           </tr>
   3490           <tr class="entries_header">
   3491             <th class="th_details" colspan="5">Details</th>
   3492           </tr>
   3493           <tr class="entry_cont">
   3494             <td class="entry_details" colspan="5">
   3495               <p>This control (except for MANUAL) is only effective if
   3496 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
   3497 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
   3498 contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if
   3499 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are
   3500 always supported.<wbr/></p>
   3501             </td>
   3502           </tr>
   3503 
   3504 
   3505           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   3506            <!-- end of entry -->
   3507         
   3508                 
   3509           <tr class="entry" id="controls_android.control.effectMode">
   3510             <td class="entry_name
   3511              " rowspan="3">
   3512               android.<wbr/>control.<wbr/>effect<wbr/>Mode
   3513             </td>
   3514             <td class="entry_type">
   3515                 <span class="entry_type_name entry_type_name_enum">byte</span>
   3516 
   3517               <span class="entry_type_visibility"> [public]</span>
   3518 
   3519 
   3520               <span class="entry_type_hwlevel">[legacy] </span>
   3521 
   3522 
   3523 
   3524                 <ul class="entry_type_enum">
   3525                   <li>
   3526                     <span class="entry_type_enum_name">OFF</span>
   3527                     <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
   3528                   </li>
   3529                   <li>
   3530                     <span class="entry_type_enum_name">MONO</span>
   3531                     <span class="entry_type_enum_optional">[optional]</span>
   3532                     <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
   3533 a single color.<wbr/></p>
   3534 <p>This will typically be grayscale.<wbr/></p></span>
   3535                   </li>
   3536                   <li>
   3537                     <span class="entry_type_enum_name">NEGATIVE</span>
   3538                     <span class="entry_type_enum_optional">[optional]</span>
   3539                     <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
   3540 are inverted.<wbr/></p></span>
   3541                   </li>
   3542                   <li>
   3543                     <span class="entry_type_enum_name">SOLARIZE</span>
   3544                     <span class="entry_type_enum_optional">[optional]</span>
   3545                     <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
   3546 image is wholly or partially reversed in
   3547 tone.<wbr/></p></span>
   3548                   </li>
   3549                   <li>
   3550                     <span class="entry_type_enum_name">SEPIA</span>
   3551                     <span class="entry_type_enum_optional">[optional]</span>
   3552                     <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
   3553 gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
   3554                   </li>
   3555                   <li>
   3556                     <span class="entry_type_enum_name">POSTERIZE</span>
   3557                     <span class="entry_type_enum_optional">[optional]</span>
   3558                     <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
   3559 discrete regions of tone rather than a continuous
   3560 gradient of tones.<wbr/></p></span>
   3561                   </li>
   3562                   <li>
   3563                     <span class="entry_type_enum_name">WHITEBOARD</span>
   3564                     <span class="entry_type_enum_optional">[optional]</span>
   3565                     <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
   3566 as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
   3567                   </li>
   3568                   <li>
   3569                     <span class="entry_type_enum_name">BLACKBOARD</span>
   3570                     <span class="entry_type_enum_optional">[optional]</span>
   3571                     <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
   3572 as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
   3573                   </li>
   3574                   <li>
   3575                     <span class="entry_type_enum_name">AQUA</span>
   3576                     <span class="entry_type_enum_optional">[optional]</span>
   3577                     <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
   3578                   </li>
   3579                 </ul>
   3580 
   3581             </td> <!-- entry_type -->
   3582 
   3583             <td class="entry_description">
   3584               <p>A special color effect to apply.<wbr/></p>
   3585             </td>
   3586 
   3587             <td class="entry_units">
   3588             </td>
   3589 
   3590             <td class="entry_range">
   3591               <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
   3592             </td>
   3593 
   3594             <td class="entry_tags">
   3595               <ul class="entry_tags">
   3596                   <li><a href="#tag_BC">BC</a></li>
   3597               </ul>
   3598             </td>
   3599 
   3600           </tr>
   3601           <tr class="entries_header">
   3602             <th class="th_details" colspan="5">Details</th>
   3603           </tr>
   3604           <tr class="entry_cont">
   3605             <td class="entry_details" colspan="5">
   3606               <p>When this mode is set,<wbr/> a color effect will be applied
   3607 to images produced by the camera device.<wbr/> The interpretation
   3608 and implementation of these color effects is left to the
   3609 implementor of the camera device,<wbr/> and should not be
   3610 depended on to be consistent (or present) across all
   3611 devices.<wbr/></p>
   3612             </td>
   3613           </tr>
   3614 
   3615 
   3616           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   3617            <!-- end of entry -->
   3618         
   3619                 
   3620           <tr class="entry" id="controls_android.control.mode">
   3621             <td class="entry_name
   3622              " rowspan="3">
   3623               android.<wbr/>control.<wbr/>mode
   3624             </td>
   3625             <td class="entry_type">
   3626                 <span class="entry_type_name entry_type_name_enum">byte</span>
   3627 
   3628               <span class="entry_type_visibility"> [public]</span>
   3629 
   3630 
   3631               <span class="entry_type_hwlevel">[legacy] </span>
   3632 
   3633 
   3634 
   3635                 <ul class="entry_type_enum">
   3636                   <li>
   3637                     <span class="entry_type_enum_name">OFF</span>
   3638                     <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
   3639 <p>All control by the device's metering and focusing (3A)
   3640 routines is disabled,<wbr/> and no other settings in
   3641 android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
   3642 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
   3643 device to select post-processing values for processing
   3644 blocks that do not allow for manual control,<wbr/> or are not
   3645 exposed by the camera API.<wbr/></p>
   3646 <p>However,<wbr/> the camera device's 3A routines may continue to
   3647 collect statistics and update their internal state so that
   3648 when control is switched to AUTO mode,<wbr/> good control values
   3649 can be immediately applied.<wbr/></p></span>
   3650                   </li>
   3651                   <li>
   3652                     <span class="entry_type_enum_name">AUTO</span>
   3653                     <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
   3654 <p>Manual control of capture parameters is disabled.<wbr/> All
   3655 controls in android.<wbr/>control.<wbr/>* besides sceneMode take
   3656 effect.<wbr/></p></span>
   3657                   </li>
   3658                   <li>
   3659                     <span class="entry_type_enum_name">USE_SCENE_MODE</span>
   3660                     <span class="entry_type_enum_optional">[optional]</span>
   3661                     <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
   3662 <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
   3663 control.<wbr/>afMode controls; the camera device will ignore
   3664 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
   3665 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
   3666 This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
   3667 <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
   3668 contain some modes other than DISABLED).<wbr/></p></span>
   3669                   </li>
   3670                   <li>
   3671                     <span class="entry_type_enum_name">OFF_KEEP_STATE</span>
   3672                     <span class="entry_type_enum_optional">[optional]</span>
   3673                     <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
   3674 used by camera device background auto-exposure,<wbr/> auto-white balance and
   3675 auto-focus algorithms (3A) to update their statistics.<wbr/></p>
   3676 <p>Specifically,<wbr/> the 3A routines are locked to the last
   3677 values set from a request with AUTO,<wbr/> OFF,<wbr/> or
   3678 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
   3679 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
   3680 discarded by the camera device.<wbr/></p></span>
   3681                   </li>
   3682                 </ul>
   3683 
   3684             </td> <!-- entry_type -->
   3685 
   3686             <td class="entry_description">
   3687               <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
   3688 routines.<wbr/></p>
   3689             </td>
   3690 
   3691             <td class="entry_units">
   3692             </td>
   3693 
   3694             <td class="entry_range">
   3695               <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
   3696             </td>
   3697 
   3698             <td class="entry_tags">
   3699               <ul class="entry_tags">
   3700                   <li><a href="#tag_BC">BC</a></li>
   3701               </ul>
   3702             </td>
   3703 
   3704           </tr>
   3705           <tr class="entries_header">
   3706             <th class="th_details" colspan="5">Details</th>
   3707           </tr>
   3708           <tr class="entry_cont">
   3709             <td class="entry_details" colspan="5">
   3710               <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
   3711 by the camera device is disabled.<wbr/> The application must set the fields for
   3712 capture parameters itself.<wbr/></p>
   3713 <p>When set to AUTO,<wbr/> the individual algorithm controls in
   3714 android.<wbr/>control.<wbr/>* are in effect,<wbr/> such as <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>.<wbr/></p>
   3715 <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
   3716 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements
   3717 one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY)
   3718 as it wishes.<wbr/> The camera device scene mode 3A settings are provided by
   3719 <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
   3720 <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
   3721 is that this frame will not be used by camera device background 3A statistics
   3722 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
   3723 where the application doesn't want a 3A manual control capture to affect
   3724 the subsequent auto 3A capture results.<wbr/></p>
   3725             </td>
   3726           </tr>
   3727 
   3728 
   3729           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   3730            <!-- end of entry -->
   3731         
   3732                 
   3733           <tr class="entry" id="controls_android.control.sceneMode">
   3734             <td class="entry_name
   3735              " rowspan="5">
   3736               android.<wbr/>control.<wbr/>scene<wbr/>Mode
   3737             </td>
   3738             <td class="entry_type">
   3739                 <span class="entry_type_name entry_type_name_enum">byte</span>
   3740 
   3741               <span class="entry_type_visibility"> [public]</span>
   3742 
   3743 
   3744               <span class="entry_type_hwlevel">[legacy] </span>
   3745 
   3746 
   3747 
   3748                 <ul class="entry_type_enum">
   3749                   <li>
   3750                     <span class="entry_type_enum_name">DISABLED</span>
   3751                     <span class="entry_type_enum_value">0</span>
   3752                     <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
   3753                   </li>
   3754                   <li>
   3755                     <span class="entry_type_enum_name">FACE_PRIORITY</span>
   3756                     <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
   3757 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
   3758 auto-exposure routines.<wbr/></p>
   3759 <p>If face detection statistics are disabled
   3760 (i.<wbr/>e.<wbr/> <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> is set to OFF),<wbr/>
   3761 this should still operate correctly (but will not return
   3762 face detection statistics to the framework).<wbr/></p>
   3763 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
   3764 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>
   3765 remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
   3766                   </li>
   3767                   <li>
   3768                     <span class="entry_type_enum_name">ACTION</span>
   3769                     <span class="entry_type_enum_optional">[optional]</span>
   3770                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
   3771 <p>Similar to SPORTS.<wbr/></p></span>
   3772                   </li>
   3773                   <li>
   3774                     <span class="entry_type_enum_name">PORTRAIT</span>
   3775                     <span class="entry_type_enum_optional">[optional]</span>
   3776                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
   3777                   </li>
   3778                   <li>
   3779                     <span class="entry_type_enum_name">LANDSCAPE</span>
   3780                     <span class="entry_type_enum_optional">[optional]</span>
   3781                     <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
   3782                   </li>
   3783                   <li>
   3784                     <span class="entry_type_enum_name">NIGHT</span>
   3785                     <span class="entry_type_enum_optional">[optional]</span>
   3786                     <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
   3787                   </li>
   3788                   <li>
   3789                     <span class="entry_type_enum_name">NIGHT_PORTRAIT</span>
   3790                     <span class="entry_type_enum_optional">[optional]</span>
   3791                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
   3792 settings.<wbr/></p></span>
   3793                   </li>
   3794                   <li>
   3795                     <span class="entry_type_enum_name">THEATRE</span>
   3796                     <span class="entry_type_enum_optional">[optional]</span>
   3797                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
   3798 remain off.<wbr/></p></span>
   3799                   </li>
   3800                   <li>
   3801                     <span class="entry_type_enum_name">BEACH</span>
   3802                     <span class="entry_type_enum_optional">[optional]</span>
   3803                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
   3804                   </li>
   3805                   <li>
   3806                     <span class="entry_type_enum_name">SNOW</span>
   3807                     <span class="entry_type_enum_optional">[optional]</span>
   3808                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
   3809                   </li>
   3810                   <li>
   3811                     <span class="entry_type_enum_name">SUNSET</span>
   3812                     <span class="entry_type_enum_optional">[optional]</span>
   3813                     <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
   3814                   </li>
   3815                   <li>
   3816                     <span class="entry_type_enum_name">STEADYPHOTO</span>
   3817                     <span class="entry_type_enum_optional">[optional]</span>
   3818                     <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
   3819 device motion (for example: due to hand shake).<wbr/></p></span>
   3820                   </li>
   3821                   <li>
   3822                     <span class="entry_type_enum_name">FIREWORKS</span>
   3823                     <span class="entry_type_enum_optional">[optional]</span>
   3824                     <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
   3825                   </li>
   3826                   <li>
   3827                     <span class="entry_type_enum_name">SPORTS</span>
   3828                     <span class="entry_type_enum_optional">[optional]</span>
   3829                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
   3830 <p>Similar to ACTION.<wbr/></p></span>
   3831                   </li>
   3832                   <li>
   3833                     <span class="entry_type_enum_name">PARTY</span>
   3834                     <span class="entry_type_enum_optional">[optional]</span>
   3835                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
   3836 people.<wbr/></p></span>
   3837                   </li>
   3838                   <li>
   3839                     <span class="entry_type_enum_name">CANDLELIGHT</span>
   3840                     <span class="entry_type_enum_optional">[optional]</span>
   3841                     <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
   3842 is a flame.<wbr/></p></span>
   3843                   </li>
   3844                   <li>
   3845                     <span class="entry_type_enum_name">BARCODE</span>
   3846                     <span class="entry_type_enum_optional">[optional]</span>
   3847                     <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
   3848 for use by camera applications that wish to read the
   3849 barcode value.<wbr/></p></span>
   3850                   </li>
   3851                   <li>
   3852                     <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span>
   3853                     <span class="entry_type_enum_deprecated">[deprecated]</span>
   3854                     <span class="entry_type_enum_optional">[optional]</span>
   3855                     <span class="entry_type_enum_notes"><p>This is deprecated,<wbr/> please use <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
   3856 and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
   3857 for high speed video recording.<wbr/></p>
   3858 <p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
   3859 <p>The supported high speed video sizes and fps ranges are specified in
   3860 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
   3861 output frame rates,<wbr/> the application is only allowed to select video size
   3862 and fps range combinations listed in this static metadata.<wbr/> The fps range
   3863 can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
   3864 <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
   3865 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
   3866 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
   3867 and post-processing parameters is possible.<wbr/> All other controls operate the
   3868 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
   3869 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
   3870 <ul>
   3871 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
   3872 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
   3873 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
   3874 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
   3875 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
   3876 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
   3877 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
   3878 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
   3879 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
   3880 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
   3881 </ul>
   3882 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
   3883 <ul>
   3884 <li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (automatic flash for still capture will not work since aeMode is ON)</li>
   3885 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
   3886 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
   3887 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
   3888 </ul>
   3889 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
   3890 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
   3891 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
   3892 the application need check if the video encoder is capable of supporting the
   3893 high frame rate for a given video size,<wbr/> or it will end up with lower recording
   3894 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
   3895 rate will be bounded by the screen refresh rate.<wbr/></p>
   3896 <p>The camera device will only support up to 2 output high speed streams
   3897 (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
   3898 in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
   3899 <ul>
   3900 <li>The application created no more than maxNumHighSpeedStreams processed non-stalling
   3901 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
   3902 min(2,<wbr/> <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>[Processed (but not-stalling)]).<wbr/></li>
   3903 <li>The stream sizes are selected from the sizes reported by
   3904 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
   3905 <li>No processed non-stalling or raw streams are configured.<wbr/></li>
   3906 </ul>
   3907 <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
   3908 <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> will be ignored by the camera device,<wbr/>
   3909 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
   3910 and the returned capture result metadata will give the fps range choosen
   3911 by the camera device.<wbr/></p>
   3912 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
   3913 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
   3914 the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
   3915                   </li>
   3916                   <li>
   3917                     <span class="entry_type_enum_name">HDR</span>
   3918                     <span class="entry_type_enum_optional">[optional]</span>
   3919                     <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
   3920 <p>In this scene mode,<wbr/> the camera device captures images
   3921 that keep a larger range of scene illumination levels
   3922 visible in the final image.<wbr/> For example,<wbr/> when taking a
   3923 picture of a object in front of a bright window,<wbr/> both
   3924 the object and the scene through the window may be
   3925 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
   3926 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
   3927 HDR mode generally takes much longer to capture a single
   3928 image,<wbr/> has no user control,<wbr/> and may have other artifacts
   3929 depending on the HDR method used.<wbr/></p>
   3930 <p>Therefore,<wbr/> HDR captures operate at a much slower rate
   3931 than regular captures.<wbr/></p>
   3932 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
   3933 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
   3934 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
   3935 using a high dynamic range capture technique.<wbr/>  On LEGACY
   3936 devices,<wbr/> captures that target a JPEG-format output will
   3937 be captured with HDR,<wbr/> and the capture intent is not
   3938 relevant.<wbr/></p>
   3939 <p>The HDR capture may involve the device capturing a burst
   3940 of images internally and combining them into one,<wbr/> or it
   3941 may involve the device using specialized high dynamic
   3942 range capture hardware.<wbr/> In all cases,<wbr/> a single image is
   3943 produced in response to a capture request submitted
   3944 while in HDR mode.<wbr/></p>
   3945 <p>Since substantial post-processing is generally needed to
   3946 produce an HDR image,<wbr/> only YUV and JPEG outputs are
   3947 supported for LIMITED/<wbr/>FULL device HDR captures,<wbr/> and only
   3948 JPEG outputs are supported for LEGACY HDR
   3949 captures.<wbr/> Using a RAW output for HDR capture is not
   3950 supported.<wbr/></p></span>
   3951                   </li>
   3952                   <li>
   3953                     <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span>
   3954                     <span class="entry_type_enum_optional">[optional]</span>
   3955                     <span class="entry_type_enum_hidden">[hidden]</span>
   3956                     <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
   3957 device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
   3958 under low light conditions.<wbr/></p>
   3959 <p>The camera device may be tuned to expose the images in a reduced
   3960 sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
   3961 if the <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> gives range of [100,<wbr/> 1600],<wbr/>
   3962 the camera device auto-exposure routine tuning process may limit the actual
   3963 exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
   3964 exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
   3965 low light may be under-exposed when the sensor max exposure time (bounded by the
   3966 <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of the
   3967 ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
   3968 camera device auto-exposure routine to increase the sensitivity up to the max
   3969 sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too
   3970 dark and the max exposure time is reached.<wbr/> The captured images may be noisier
   3971 compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
   3972 recommended that the application only use this scene mode when it is capable of
   3973 reducing the noise level of the captured images.<wbr/></p>
   3974 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
   3975 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>
   3976 remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
   3977                   </li>
   3978                 </ul>
   3979 
   3980             </td> <!-- entry_type -->
   3981 
   3982             <td class="entry_description">
   3983               <p>Control for which scene mode is currently active.<wbr/></p>
   3984             </td>
   3985 
   3986             <td class="entry_units">
   3987             </td>
   3988 
   3989             <td class="entry_range">
   3990               <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
   3991             </td>
   3992 
   3993             <td class="entry_tags">
   3994               <ul class="entry_tags">
   3995                   <li><a href="#tag_BC">BC</a></li>
   3996               </ul>
   3997             </td>
   3998 
   3999           </tr>
   4000           <tr class="entries_header">
   4001             <th class="th_details" colspan="5">Details</th>
   4002           </tr>
   4003           <tr class="entry_cont">
   4004             <td class="entry_details" colspan="5">
   4005               <p>Scene modes are custom camera modes optimized for a certain set of conditions and
   4006 capture settings.<wbr/></p>
   4007 <p>This is the mode that that is active when
   4008 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code>.<wbr/> Aside from FACE_<wbr/>PRIORITY,<wbr/> these modes will
   4009 disable <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>
   4010 while in use.<wbr/></p>
   4011 <p>The interpretation and implementation of these scene modes is left
   4012 to the implementor of the camera device.<wbr/> Their behavior will not be
   4013 consistent across all devices,<wbr/> and any given device may only implement
   4014 a subset of these modes.<wbr/></p>
   4015             </td>
   4016           </tr>
   4017 
   4018           <tr class="entries_header">
   4019             <th class="th_details" colspan="5">HAL Implementation Details</th>
   4020           </tr>
   4021           <tr class="entry_cont">
   4022             <td class="entry_details" colspan="5">
   4023               <p>HAL implementations that include scene modes are expected to provide
   4024 the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
   4025 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> in
   4026 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
   4027 <p>For HIGH_<wbr/>SPEED_<wbr/>VIDEO mode,<wbr/> if it is included in <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>,<wbr/>
   4028 the HAL must list supported video size and fps range in
   4029 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> For a given size,<wbr/> e.<wbr/>g.<wbr/>
   4030 1280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming
   4031 mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture
   4032 requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/>
   4033 This mode is deprecated in HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
   4034 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a> and CONSTRAINED_<wbr/>HIGH_<wbr/>SPEED_<wbr/>VIDEO
   4035 capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
   4036             </td>
   4037           </tr>
   4038 
   4039           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   4040            <!-- end of entry -->
   4041         
   4042                 
   4043           <tr class="entry" id="controls_android.control.videoStabilizationMode">
   4044             <td class="entry_name
   4045              " rowspan="3">
   4046               android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
   4047             </td>
   4048             <td class="entry_type">
   4049                 <span class="entry_type_name entry_type_name_enum">byte</span>
   4050 
   4051               <span class="entry_type_visibility"> [public]</span>
   4052 
   4053 
   4054               <span class="entry_type_hwlevel">[legacy] </span>
   4055 
   4056 
   4057 
   4058                 <ul class="entry_type_enum">
   4059                   <li>
   4060                     <span class="entry_type_enum_name">OFF</span>
   4061                     <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
   4062                   </li>
   4063                   <li>
   4064                     <span class="entry_type_enum_name">ON</span>
   4065                     <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
   4066                   </li>
   4067                 </ul>
   4068 
   4069             </td> <!-- entry_type -->
   4070 
   4071             <td class="entry_description">
   4072               <p>Whether video stabilization is
   4073 active.<wbr/></p>
   4074             </td>
   4075 
   4076             <td class="entry_units">
   4077             </td>
   4078 
   4079             <td class="entry_range">
   4080             </td>
   4081 
   4082             <td class="entry_tags">
   4083               <ul class="entry_tags">
   4084                   <li><a href="#tag_BC">BC</a></li>
   4085               </ul>
   4086             </td>
   4087 
   4088           </tr>
   4089           <tr class="entries_header">
   4090             <th class="th_details" colspan="5">Details</th>
   4091           </tr>
   4092           <tr class="entry_cont">
   4093             <td class="entry_details" colspan="5">
   4094               <p>Video stabilization automatically translates and scales images from
   4095 the camera in order to stabilize motion between consecutive frames.<wbr/></p>
   4096 <p>If enabled,<wbr/> video stabilization can modify the
   4097 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
   4098 <p>Switching between different video stabilization modes may take several
   4099 frames to initialize,<wbr/> the camera device will report the current mode
   4100 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
   4101 the video stabilization modes in the first several capture results may
   4102 still be "OFF",<wbr/> and it will become "ON" when the initialization is
   4103 done.<wbr/></p>
   4104 <p>If a camera device supports both this mode and OIS
   4105 (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
   4106 produce undesirable interaction,<wbr/> so it is recommended not to enable
   4107 both at the same time.<wbr/></p>
   4108             </td>
   4109           </tr>
   4110 
   4111 
   4112           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   4113            <!-- end of entry -->
   4114         
   4115         
   4116 
   4117       <!-- end of kind -->
   4118       </tbody>
   4119       <tr><td colspan="6" class="kind">static</td></tr>
   4120 
   4121       <thead class="entries_header">
   4122         <tr>
   4123           <th class="th_name">Property Name</th>
   4124           <th class="th_type">Type</th>
   4125           <th class="th_description">Description</th>
   4126           <th class="th_units">Units</th>
   4127           <th class="th_range">Range</th>
   4128           <th class="th_tags">Tags</th>
   4129         </tr>
   4130       </thead>
   4131 
   4132       <tbody>
   4133 
   4134         
   4135 
   4136         
   4137 
   4138         
   4139 
   4140         
   4141 
   4142                 
   4143           <tr class="entry" id="static_android.control.aeAvailableAntibandingModes">
   4144             <td class="entry_name
   4145              " rowspan="3">
   4146               android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes
   4147             </td>
   4148             <td class="entry_type">
   4149                 <span class="entry_type_name">byte</span>
   4150                 <span class="entry_type_container">x</span>
   4151 
   4152                 <span class="entry_type_array">
   4153                   n
   4154                 </span>
   4155               <span class="entry_type_visibility"> [public as enumList]</span>
   4156 
   4157 
   4158               <span class="entry_type_hwlevel">[legacy] </span>
   4159 
   4160 
   4161                 <div class="entry_type_notes">list of enums</div>
   4162 
   4163 
   4164             </td> <!-- entry_type -->
   4165 
   4166             <td class="entry_description">
   4167               <p>List of auto-exposure antibanding modes for <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> that are
   4168 supported by this camera device.<wbr/></p>
   4169             </td>
   4170 
   4171             <td class="entry_units">
   4172             </td>
   4173 
   4174             <td class="entry_range">
   4175               <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p>
   4176             </td>
   4177 
   4178             <td class="entry_tags">
   4179               <ul class="entry_tags">
   4180                   <li><a href="#tag_BC">BC</a></li>
   4181               </ul>
   4182             </td>
   4183 
   4184           </tr>
   4185           <tr class="entries_header">
   4186             <th class="th_details" colspan="5">Details</th>
   4187           </tr>
   4188           <tr class="entry_cont">
   4189             <td class="entry_details" colspan="5">
   4190               <p>Not all of the auto-exposure anti-banding modes may be
   4191 supported by a given camera device.<wbr/> This field lists the
   4192 valid anti-banding modes that the application may request
   4193 for this camera device with the
   4194 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p>
   4195             </td>
   4196           </tr>
   4197 
   4198 
   4199           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   4200            <!-- end of entry -->
   4201         
   4202                 
   4203           <tr class="entry" id="static_android.control.aeAvailableModes">
   4204             <td class="entry_name
   4205              " rowspan="3">
   4206               android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes
   4207             </td>
   4208             <td class="entry_type">
   4209                 <span class="entry_type_name">byte</span>
   4210                 <span class="entry_type_container">x</span>
   4211 
   4212                 <span class="entry_type_array">
   4213                   n
   4214                 </span>
   4215               <span class="entry_type_visibility"> [public as enumList]</span>
   4216 
   4217 
   4218               <span class="entry_type_hwlevel">[legacy] </span>
   4219 
   4220 
   4221                 <div class="entry_type_notes">list of enums</div>
   4222 
   4223 
   4224             </td> <!-- entry_type -->
   4225 
   4226             <td class="entry_description">
   4227               <p>List of auto-exposure modes for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> that are supported by this camera
   4228 device.<wbr/></p>
   4229             </td>
   4230 
   4231             <td class="entry_units">
   4232             </td>
   4233 
   4234             <td class="entry_range">
   4235               <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p>
   4236             </td>
   4237 
   4238             <td class="entry_tags">
   4239               <ul class="entry_tags">
   4240                   <li><a href="#tag_BC">BC</a></li>
   4241               </ul>
   4242             </td>
   4243 
   4244           </tr>
   4245           <tr class="entries_header">
   4246             <th class="th_details" colspan="5">Details</th>
   4247           </tr>
   4248           <tr class="entry_cont">
   4249             <td class="entry_details" colspan="5">
   4250               <p>Not all the auto-exposure modes may be supported by a
   4251 given camera device,<wbr/> especially if no flash unit is
   4252 available.<wbr/> This entry lists the valid modes for
   4253 <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p>
   4254 <p>All camera devices support ON,<wbr/> and all camera devices with flash
   4255 units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p>
   4256 <p>FULL mode camera devices always support OFF mode,<wbr/>
   4257 which enables application control of camera exposure time,<wbr/>
   4258 sensitivity,<wbr/> and frame duration.<wbr/></p>
   4259 <p>LEGACY mode camera devices never support OFF mode.<wbr/>
   4260 LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR
   4261 capability.<wbr/></p>
   4262             </td>
   4263           </tr>
   4264 
   4265 
   4266           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   4267            <!-- end of entry -->
   4268         
   4269                 
   4270           <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges">
   4271             <td class="entry_name
   4272              " rowspan="3">
   4273               android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges
   4274             </td>
   4275             <td class="entry_type">
   4276                 <span class="entry_type_name">int32</span>
   4277                 <span class="entry_type_container">x</span>
   4278 
   4279                 <span class="entry_type_array">
   4280                   2 x n
   4281                 </span>
   4282               <span class="entry_type_visibility"> [public as rangeInt]</span>
   4283 
   4284 
   4285               <span class="entry_type_hwlevel">[legacy] </span>
   4286 
   4287 
   4288                 <div class="entry_type_notes">list of pairs of frame rates</div>
   4289 
   4290 
   4291             </td> <!-- entry_type -->
   4292 
   4293             <td class="entry_description">
   4294               <p>List of frame rate ranges for <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> supported by
   4295 this camera device.<wbr/></p>
   4296             </td>
   4297 
   4298             <td class="entry_units">
   4299               Frames per second (FPS)
   4300             </td>
   4301 
   4302             <td class="entry_range">
   4303             </td>
   4304 
   4305             <td class="entry_tags">
   4306               <ul class="entry_tags">
   4307                   <li><a href="#tag_BC">BC</a></li>
   4308               </ul>
   4309             </td>
   4310 
   4311           </tr>
   4312           <tr class="entries_header">
   4313             <th class="th_details" colspan="5">Details</th>
   4314           </tr>
   4315           <tr class="entry_cont">
   4316             <td class="entry_details" colspan="5">
   4317               <p>For devices at the LEGACY level or above:</p>
   4318 <ul>
   4319 <li>This list will always include (30,<wbr/> 30).<wbr/></li>
   4320 <li>Also,<wbr/> for constant-framerate recording,<wbr/> for each normal
   4321 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
   4322 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in
   4323 the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/>
   4324 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is
   4325 supported by the device and has
   4326 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will
   4327 always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></li>
   4328 <li>For preview streaming use case,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>) where
   4329 <code>min</code> &lt;= 15 and <code>max</code> &gt;= 30.<wbr/></li>
   4330 </ul>
   4331 <p>For devices at the LIMITED level or above:</p>
   4332 <ul>
   4333 <li>For YUV_<wbr/>420_<wbr/>888 burst capture use case,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>)
   4334 and (<code>max</code>,<wbr/> <code>max</code>) where <code>min</code> &lt;= 15 and <code>max</code> = the maximum output frame rate of the
   4335 maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li>
   4336 </ul>
   4337             </td>
   4338           </tr>
   4339 
   4340 
   4341           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   4342            <!-- end of entry -->
   4343         
   4344                 
   4345           <tr class="entry" id="static_android.control.aeCompensationRange">
   4346             <td class="entry_name
   4347              " rowspan="1">
   4348               android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range
   4349             </td>
   4350             <td class="entry_type">
   4351                 <span class="entry_type_name">int32</span>
   4352                 <span class="entry_type_container">x</span>
   4353 
   4354                 <span class="entry_type_array">
   4355                   2
   4356                 </span>
   4357               <span class="entry_type_visibility"> [public as rangeInt]</span>
   4358 
   4359 
   4360               <span class="entry_type_hwlevel">[legacy] </span>
   4361 
   4362 
   4363 
   4364 
   4365             </td> <!-- entry_type -->
   4366 
   4367             <td class="entry_description">
   4368               <p>Maximum and minimum exposure compensation values for
   4369 <a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a>,<wbr/> in counts of <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a>,<wbr/>
   4370 that are supported by this camera device.<wbr/></p>
   4371             </td>
   4372 
   4373             <td class="entry_units">
   4374             </td>
   4375 
   4376             <td class="entry_range">
   4377               <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p>
   4378 <p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure
   4379 compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p>
   4380 <p><code>Min.<wbr/>exposure compensation * <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> &lt;= -2 EV</code></p>
   4381 <p><code>Max.<wbr/>exposure compensation * <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> &gt;= 2 EV</code></p>
   4382 <p>LEGACY devices may support a smaller range than this.<wbr/></p>
   4383             </td>
   4384 
   4385             <td class="entry_tags">
   4386               <ul class="entry_tags">
   4387                   <li><a href="#tag_BC">BC</a></li>
   4388               </ul>
   4389             </td>
   4390 
   4391           </tr>
   4392 
   4393 
   4394           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   4395            <!-- end of entry -->
   4396         
   4397                 
   4398           <tr class="entry" id="static_android.control.aeCompensationStep">
   4399             <td class="entry_name
   4400              " rowspan="5">
   4401               android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step
   4402             </td>
   4403             <td class="entry_type">
   4404                 <span class="entry_type_name">rational</span>
   4405 
   4406               <span class="entry_type_visibility"> [public]</span>
   4407 
   4408 
   4409               <span class="entry_type_hwlevel">[legacy] </span>
   4410 
   4411 
   4412 
   4413 
   4414             </td> <!-- entry_type -->
   4415 
   4416             <td class="entry_description">
   4417               <p>Smallest step by which the exposure compensation
   4418 can be changed.<wbr/></p>
   4419             </td>
   4420 
   4421             <td class="entry_units">
   4422               Exposure Value (EV)
   4423             </td>
   4424 
   4425             <td class="entry_range">
   4426             </td>
   4427 
   4428             <td class="entry_tags">
   4429               <ul class="entry_tags">
   4430                   <li><a href="#tag_BC">BC</a></li>
   4431               </ul>
   4432             </td>
   4433 
   4434           </tr>
   4435           <tr class="entries_header">
   4436             <th class="th_details" colspan="5">Details</th>
   4437           </tr>
   4438           <tr class="entry_cont">
   4439             <td class="entry_details" colspan="5">
   4440               <p>This is the unit for <a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a>.<wbr/> For example,<wbr/> if this key has
   4441 a value of <code>1/<wbr/>2</code>,<wbr/> then a setting of <code>-2</code> for <a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> means
   4442 that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p>
   4443 <p>One unit of EV compensation changes the brightness of the captured image by a factor
   4444 of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p>
   4445             </td>
   4446           </tr>
   4447 
   4448           <tr class="entries_header">
   4449             <th class="th_details" colspan="5">HAL Implementation Details</th>
   4450           </tr>
   4451           <tr class="entry_cont">
   4452             <td class="entry_details" colspan="5">
   4453               <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p>
   4454             </td>
   4455           </tr>
   4456 
   4457           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   4458            <!-- end of entry -->
   4459         
   4460                 
   4461           <tr class="entry" id="static_android.control.afAvailableModes">
   4462             <td class="entry_name
   4463              " rowspan="3">
   4464               android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes
   4465             </td>
   4466             <td class="entry_type">
   4467                 <span class="entry_type_name">byte</span>
   4468                 <span class="entry_type_container">x</span>
   4469 
   4470                 <span class="entry_type_array">
   4471                   n
   4472                 </span>
   4473               <span class="entry_type_visibility"> [public as enumList]</span>
   4474 
   4475 
   4476               <span class="entry_type_hwlevel">[legacy] </span>
   4477 
   4478 
   4479                 <div class="entry_type_notes">List of enums</div>
   4480 
   4481 
   4482             </td> <!-- entry_type -->
   4483 
   4484             <td class="entry_description">
   4485               <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are
   4486 supported by this camera device.<wbr/></p>
   4487             </td>
   4488 
   4489             <td class="entry_units">
   4490             </td>
   4491 
   4492             <td class="entry_range">
   4493               <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p>
   4494             </td>
   4495 
   4496             <td class="entry_tags">
   4497               <ul class="entry_tags">
   4498                   <li><a href="#tag_BC">BC</a></li>
   4499               </ul>
   4500             </td>
   4501 
   4502           </tr>
   4503           <tr class="entries_header">
   4504             <th class="th_details" colspan="5">Details</th>
   4505           </tr>
   4506           <tr class="entry_cont">
   4507             <td class="entry_details" colspan="5">
   4508               <p>Not all the auto-focus modes may be supported by a
   4509 given camera device.<wbr/> This entry lists the valid modes for
   4510 <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p>
   4511 <p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all
   4512 camera devices with adjustable focuser units
   4513 (<code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> &gt; 0</code>) will support AUTO mode.<wbr/></p>
   4514 <p>LEGACY devices will support OFF mode only if they support
   4515 focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to
   4516 <code>0.<wbr/>0f</code>).<wbr/></p>
   4517             </td>
   4518           </tr>
   4519 
   4520 
   4521           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   4522            <!-- end of entry -->
   4523         
   4524                 
   4525           <tr class="entry" id="static_android.control.availableEffects">
   4526             <td class="entry_name
   4527              " rowspan="3">
   4528               android.<wbr/>control.<wbr/>available<wbr/>Effects
   4529             </td>
   4530             <td class="entry_type">
   4531                 <span class="entry_type_name">byte</span>
   4532                 <span class="entry_type_container">x</span>
   4533 
   4534                 <span class="entry_type_array">
   4535                   n
   4536                 </span>
   4537               <span class="entry_type_visibility"> [public as enumList]</span>
   4538 
   4539 
   4540               <span class="entry_type_hwlevel">[legacy] </span>
   4541 
   4542 
   4543                 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div>
   4544 
   4545 
   4546             </td> <!-- entry_type -->
   4547 
   4548             <td class="entry_description">
   4549               <p>List of color effects for <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a> that are supported by this camera
   4550 device.<wbr/></p>
   4551             </td>
   4552 
   4553             <td class="entry_units">
   4554             </td>
   4555 
   4556             <td class="entry_range">
   4557               <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p>
   4558             </td>
   4559 
   4560             <td class="entry_tags">
   4561               <ul class="entry_tags">
   4562                   <li><a href="#tag_BC">BC</a></li>
   4563               </ul>
   4564             </td>
   4565 
   4566           </tr>
   4567           <tr class="entries_header">
   4568             <th class="th_details" colspan="5">Details</th>
   4569           </tr>
   4570           <tr class="entry_cont">
   4571             <td class="entry_details" colspan="5">
   4572               <p>This list contains the color effect modes that can be applied to
   4573 images produced by the camera device.<wbr/>
   4574 Implementations are not expected to be consistent across all devices.<wbr/>
   4575 If no color effect modes are available for a device,<wbr/> this will only list
   4576 OFF.<wbr/></p>
   4577 <p>A color effect will only be applied if
   4578 <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/>  OFF is always included in this list.<wbr/></p>
   4579 <p>This control has no effect on the operation of other control routines such
   4580 as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p>
   4581             </td>
   4582           </tr>
   4583 
   4584 
   4585           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   4586            <!-- end of entry -->
   4587         
   4588                 
   4589           <tr class="entry" id="static_android.control.availableSceneModes">
   4590             <td class="entry_name
   4591              " rowspan="3">
   4592               android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes
   4593             </td>
   4594             <td class="entry_type">
   4595                 <span class="entry_type_name">byte</span>
   4596                 <span class="entry_type_container">x</span>
   4597 
   4598                 <span class="entry_type_array">
   4599                   n
   4600                 </span>
   4601               <span class="entry_type_visibility"> [public as enumList]</span>
   4602 
   4603 
   4604               <span class="entry_type_hwlevel">[legacy] </span>
   4605 
   4606 
   4607                 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div>
   4608 
   4609 
   4610             </td> <!-- entry_type -->
   4611 
   4612             <td class="entry_description">
   4613               <p>List of scene modes for <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> that are supported by this camera
   4614 device.<wbr/></p>
   4615             </td>
   4616 
   4617             <td class="entry_units">
   4618             </td>
   4619 
   4620             <td class="entry_range">
   4621               <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p>
   4622             </td>
   4623 
   4624             <td class="entry_tags">
   4625               <ul class="entry_tags">
   4626                   <li><a href="#tag_BC">BC</a></li>
   4627               </ul>
   4628             </td>
   4629 
   4630           </tr>
   4631           <tr class="entries_header">
   4632             <th class="th_details" colspan="5">Details</th>
   4633           </tr>
   4634           <tr class="entry_cont">
   4635             <td class="entry_details" colspan="5">
   4636               <p>This list contains scene modes that can be set for the camera device.<wbr/>
   4637 Only scene modes that have been fully implemented for the
   4638 camera device may be included here.<wbr/> Implementations are not expected
   4639 to be consistent across all devices.<wbr/></p>
   4640 <p>If no scene modes are supported by the camera device,<wbr/> this
   4641 will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p>
   4642 <p>FACE_<wbr/>PRIORITY is always listed if face detection is
   4643 supported (i.<wbr/>e.<wbr/><code><a href="#static_android.statistics.info.maxFaceCount">android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count</a> &gt;
   4644 0</code>).<wbr/></p>
   4645             </td>
   4646           </tr>
   4647 
   4648 
   4649           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   4650            <!-- end of entry -->
   4651         
   4652                 
   4653           <tr class="entry" id="static_android.control.availableVideoStabilizationModes">
   4654             <td class="entry_name
   4655              " rowspan="3">
   4656               android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes
   4657             </td>
   4658             <td class="entry_type">
   4659                 <span class="entry_type_name">byte</span>
   4660                 <span class="entry_type_container">x</span>
   4661 
   4662                 <span class="entry_type_array">
   4663                   n
   4664                 </span>
   4665               <span class="entry_type_visibility"> [public as enumList]</span>
   4666 
   4667 
   4668               <span class="entry_type_hwlevel">[legacy] </span>
   4669 
   4670 
   4671                 <div class="entry_type_notes">List of enums.<wbr/></div>
   4672 
   4673 
   4674             </td> <!-- entry_type -->
   4675 
   4676             <td class="entry_description">
   4677               <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>
   4678 that are supported by this camera device.<wbr/></p>
   4679             </td>
   4680 
   4681             <td class="entry_units">
   4682             </td>
   4683 
   4684             <td class="entry_range">
   4685               <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p>
   4686             </td>
   4687 
   4688             <td class="entry_tags">
   4689               <ul class="entry_tags">
   4690                   <li><a href="#tag_BC">BC</a></li>
   4691               </ul>
   4692             </td>
   4693 
   4694           </tr>
   4695           <tr class="entries_header">
   4696             <th class="th_details" colspan="5">Details</th>
   4697           </tr>
   4698           <tr class="entry_cont">
   4699             <td class="entry_details" colspan="5">
   4700               <p>OFF will always be listed.<wbr/></p>
   4701             </td>
   4702           </tr>
   4703 
   4704 
   4705           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   4706            <!-- end of entry -->
   4707         
   4708                 
   4709           <tr class="entry" id="static_android.control.awbAvailableModes">
   4710             <td class="entry_name
   4711              " rowspan="3">
   4712               android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes
   4713             </td>
   4714             <td class="entry_type">
   4715                 <span class="entry_type_name">byte</span>
   4716                 <span class="entry_type_container">x</span>
   4717 
   4718                 <span class="entry_type_array">
   4719                   n
   4720                 </span>
   4721               <span class="entry_type_visibility"> [public as enumList]</span>
   4722 
   4723 
   4724               <span class="entry_type_hwlevel">[legacy] </span>
   4725 
   4726 
   4727                 <div class="entry_type_notes">List of enums</div>
   4728 
   4729 
   4730             </td> <!-- entry_type -->
   4731 
   4732             <td class="entry_description">
   4733               <p>List of auto-white-balance modes for <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> that are supported by this
   4734 camera device.<wbr/></p>
   4735             </td>
   4736 
   4737             <td class="entry_units">
   4738             </td>
   4739 
   4740             <td class="entry_range">
   4741               <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p>
   4742             </td>
   4743 
   4744             <td class="entry_tags">
   4745               <ul class="entry_tags">
   4746                   <li><a href="#tag_BC">BC</a></li>
   4747               </ul>
   4748             </td>
   4749 
   4750           </tr>
   4751           <tr class="entries_header">
   4752             <th class="th_details" colspan="5">Details</th>
   4753           </tr>
   4754           <tr class="entry_cont">
   4755             <td class="entry_details" colspan="5">
   4756               <p>Not all the auto-white-balance modes may be supported by a
   4757 given camera device.<wbr/> This entry lists the valid modes for
   4758 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p>
   4759 <p>All camera devices will support ON mode.<wbr/></p>
   4760 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF
   4761 mode,<wbr/> which enables application control of white balance,<wbr/> by using
   4762 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>(<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> must be set to TRANSFORM_<wbr/>MATRIX).<wbr/> This includes all FULL
   4763 mode camera devices.<wbr/></p>
   4764             </td>
   4765           </tr>
   4766 
   4767 
   4768           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   4769            <!-- end of entry -->
   4770         
   4771                 
   4772           <tr class="entry" id="static_android.control.maxRegions">
   4773             <td class="entry_name
   4774              " rowspan="1">
   4775               android.<wbr/>control.<wbr/>max<wbr/>Regions
   4776             </td>
   4777             <td class="entry_type">
   4778                 <span class="entry_type_name">int32</span>
   4779                 <span class="entry_type_container">x</span>
   4780 
   4781                 <span class="entry_type_array">
   4782                   3
   4783                 </span>
   4784               <span class="entry_type_visibility"> [hidden]</span>
   4785 
   4786 
   4787               <span class="entry_type_hwlevel">[legacy] </span>
   4788 
   4789 
   4790 
   4791 
   4792             </td> <!-- entry_type -->
   4793 
   4794             <td class="entry_description">
   4795               <p>List of the maximum number of regions that can be used for metering in
   4796 auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF);
   4797 this corresponds to the the maximum number of elements in
   4798 <a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>,<wbr/> <a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>,<wbr/>
   4799 and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
   4800             </td>
   4801 
   4802             <td class="entry_units">
   4803             </td>
   4804 
   4805             <td class="entry_range">
   4806               <p>Value must be &gt;= 0 for each element.<wbr/> For full-capability devices
   4807 this value must be &gt;= 1 for AE and AF.<wbr/> The order of the elements is:
   4808 <code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p>
   4809             </td>
   4810 
   4811             <td class="entry_tags">
   4812               <ul class="entry_tags">
   4813                   <li><a href="#tag_BC">BC</a></li>
   4814               </ul>
   4815             </td>
   4816 
   4817           </tr>
   4818 
   4819 
   4820           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   4821            <!-- end of entry -->
   4822         
   4823                 
   4824           <tr class="entry" id="static_android.control.maxRegionsAe">
   4825             <td class="entry_name
   4826              " rowspan="5">
   4827               android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae
   4828             </td>
   4829             <td class="entry_type">
   4830                 <span class="entry_type_name">int32</span>
   4831 
   4832               <span class="entry_type_visibility"> [public]</span>
   4833 
   4834               <span class="entry_type_synthetic">[synthetic] </span>
   4835 
   4836               <span class="entry_type_hwlevel">[legacy] </span>
   4837 
   4838 
   4839 
   4840 
   4841             </td> <!-- entry_type -->
   4842 
   4843             <td class="entry_description">
   4844               <p>The maximum number of metering regions that can be used by the auto-exposure (AE)
   4845 routine.<wbr/></p>
   4846             </td>
   4847 
   4848             <td class="entry_units">
   4849             </td>
   4850 
   4851             <td class="entry_range">
   4852               <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
   4853 value will be &gt;= 1.<wbr/></p>
   4854             </td>
   4855 
   4856             <td class="entry_tags">
   4857             </td>
   4858 
   4859           </tr>
   4860           <tr class="entries_header">
   4861             <th class="th_details" colspan="5">Details</th>
   4862           </tr>
   4863           <tr class="entry_cont">
   4864             <td class="entry_details" colspan="5">
   4865               <p>This corresponds to the the maximum allowed number of elements in
   4866 <a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p>
   4867             </td>
   4868           </tr>
   4869 
   4870           <tr class="entries_header">
   4871             <th class="th_details" colspan="5">HAL Implementation Details</th>
   4872           </tr>
   4873           <tr class="entry_cont">
   4874             <td class="entry_details" colspan="5">
   4875               <p>This entry is private to the framework.<wbr/> Fill in
   4876 maxRegions to have this entry be automatically populated.<wbr/></p>
   4877             </td>
   4878           </tr>
   4879 
   4880           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   4881            <!-- end of entry -->
   4882         
   4883                 
   4884           <tr class="entry" id="static_android.control.maxRegionsAwb">
   4885             <td class="entry_name
   4886              " rowspan="5">
   4887               android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb
   4888             </td>
   4889             <td class="entry_type">
   4890                 <span class="entry_type_name">int32</span>
   4891 
   4892               <span class="entry_type_visibility"> [public]</span>
   4893 
   4894               <span class="entry_type_synthetic">[synthetic] </span>
   4895 
   4896               <span class="entry_type_hwlevel">[legacy] </span>
   4897 
   4898 
   4899 
   4900 
   4901             </td> <!-- entry_type -->
   4902 
   4903             <td class="entry_description">
   4904               <p>The maximum number of metering regions that can be used by the auto-white balance (AWB)
   4905 routine.<wbr/></p>
   4906             </td>
   4907 
   4908             <td class="entry_units">
   4909             </td>
   4910 
   4911             <td class="entry_range">
   4912               <p>Value will be &gt;= 0.<wbr/></p>
   4913             </td>
   4914 
   4915             <td class="entry_tags">
   4916             </td>
   4917 
   4918           </tr>
   4919           <tr class="entries_header">
   4920             <th class="th_details" colspan="5">Details</th>
   4921           </tr>
   4922           <tr class="entry_cont">
   4923             <td class="entry_details" colspan="5">
   4924               <p>This corresponds to the the maximum allowed number of elements in
   4925 <a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p>
   4926             </td>
   4927           </tr>
   4928 
   4929           <tr class="entries_header">
   4930             <th class="th_details" colspan="5">HAL Implementation Details</th>
   4931           </tr>
   4932           <tr class="entry_cont">
   4933             <td class="entry_details" colspan="5">
   4934               <p>This entry is private to the framework.<wbr/> Fill in
   4935 maxRegions to have this entry be automatically populated.<wbr/></p>
   4936             </td>
   4937           </tr>
   4938 
   4939           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   4940            <!-- end of entry -->
   4941         
   4942                 
   4943           <tr class="entry" id="static_android.control.maxRegionsAf">
   4944             <td class="entry_name
   4945              " rowspan="5">
   4946               android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af
   4947             </td>
   4948             <td class="entry_type">
   4949                 <span class="entry_type_name">int32</span>
   4950 
   4951               <span class="entry_type_visibility"> [public]</span>
   4952 
   4953               <span class="entry_type_synthetic">[synthetic] </span>
   4954 
   4955               <span class="entry_type_hwlevel">[legacy] </span>
   4956 
   4957 
   4958 
   4959 
   4960             </td> <!-- entry_type -->
   4961 
   4962             <td class="entry_description">
   4963               <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p>
   4964             </td>
   4965 
   4966             <td class="entry_units">
   4967             </td>
   4968 
   4969             <td class="entry_range">
   4970               <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
   4971 value will be &gt;= 1.<wbr/></p>
   4972             </td>
   4973 
   4974             <td class="entry_tags">
   4975             </td>
   4976 
   4977           </tr>
   4978           <tr class="entries_header">
   4979             <th class="th_details" colspan="5">Details</th>
   4980           </tr>
   4981           <tr class="entry_cont">
   4982             <td class="entry_details" colspan="5">
   4983               <p>This corresponds to the the maximum allowed number of elements in
   4984 <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
   4985             </td>
   4986           </tr>
   4987 
   4988           <tr class="entries_header">
   4989             <th class="th_details" colspan="5">HAL Implementation Details</th>
   4990           </tr>
   4991           <tr class="entry_cont">
   4992             <td class="entry_details" colspan="5">
   4993               <p>This entry is private to the framework.<wbr/> Fill in
   4994 maxRegions to have this entry be automatically populated.<wbr/></p>
   4995             </td>
   4996           </tr>
   4997 
   4998           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   4999            <!-- end of entry -->
   5000         
   5001                 
   5002           <tr class="entry" id="static_android.control.sceneModeOverrides">
   5003             <td class="entry_name
   5004              " rowspan="5">
   5005               android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides
   5006             </td>
   5007             <td class="entry_type">
   5008                 <span class="entry_type_name">byte</span>
   5009                 <span class="entry_type_container">x</span>
   5010 
   5011                 <span class="entry_type_array">
   5012                   3 x length(availableSceneModes)
   5013                 </span>
   5014               <span class="entry_type_visibility"> [system]</span>
   5015 
   5016 
   5017               <span class="entry_type_hwlevel">[limited] </span>
   5018 
   5019 
   5020 
   5021 
   5022             </td> <!-- entry_type -->
   5023 
   5024             <td class="entry_description">
   5025               <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus
   5026 settings to use with each available scene mode.<wbr/></p>
   5027             </td>
   5028 
   5029             <td class="entry_units">
   5030             </td>
   5031 
   5032             <td class="entry_range">
   5033               <p>For each available scene mode,<wbr/> the list must contain three
   5034 entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
   5035 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> values used
   5036 by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code>
   5037 where aeMode has the lowest index position.<wbr/></p>
   5038             </td>
   5039 
   5040             <td class="entry_tags">
   5041               <ul class="entry_tags">
   5042                   <li><a href="#tag_BC">BC</a></li>
   5043               </ul>
   5044             </td>
   5045 
   5046           </tr>
   5047           <tr class="entries_header">
   5048             <th class="th_details" colspan="5">Details</th>
   5049           </tr>
   5050           <tr class="entry_cont">
   5051             <td class="entry_details" colspan="5">
   5052               <p>When a scene mode is enabled,<wbr/> the camera device is expected
   5053 to override <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/>
   5054 and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for
   5055 that scene mode.<wbr/></p>
   5056 <p>The order of this list matches that of availableSceneModes,<wbr/>
   5057 with 3 entries for each mode.<wbr/>  The overrides listed
   5058 for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/>
   5059 since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
   5060 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> values are
   5061 used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>
   5062 is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and
   5063 FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p>
   5064 <p>For example,<wbr/> if availableSceneModes contains
   5065 <code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/>  then the camera framework
   5066 expects sceneModeOverrides to have 9 entries formatted like:
   5067 <code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/>
   5068 ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p>
   5069             </td>
   5070           </tr>
   5071 
   5072           <tr class="entries_header">
   5073             <th class="th_details" colspan="5">HAL Implementation Details</th>
   5074           </tr>
   5075           <tr class="entry_cont">
   5076             <td class="entry_details" colspan="5">
   5077               <p>To maintain backward compatibility,<wbr/> this list will be made available
   5078 in the static metadata of the camera service.<wbr/>  The camera service will
   5079 use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
   5080 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> when using a scene
   5081 mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p>
   5082             </td>
   5083           </tr>
   5084 
   5085           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   5086            <!-- end of entry -->
   5087         
   5088                 
   5089           <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations">
   5090             <td class="entry_name
   5091              " rowspan="5">
   5092               android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations
   5093             </td>
   5094             <td class="entry_type">
   5095                 <span class="entry_type_name">int32</span>
   5096                 <span class="entry_type_container">x</span>
   5097 
   5098                 <span class="entry_type_array">
   5099                   5 x n
   5100                 </span>
   5101               <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span>
   5102 
   5103 
   5104               <span class="entry_type_hwlevel">[limited] </span>
   5105 
   5106 
   5107 
   5108 
   5109             </td> <!-- entry_type -->
   5110 
   5111             <td class="entry_description">
   5112               <p>List of available high speed video size,<wbr/> fps range and max batch size configurations
   5113 supported by the camera device,<wbr/> in the format of (width,<wbr/> height,<wbr/> fps_<wbr/>min,<wbr/> fps_<wbr/>max,<wbr/> batch_<wbr/>size_<wbr/>max).<wbr/></p>
   5114             </td>
   5115 
   5116             <td class="entry_units">
   5117             </td>
   5118 
   5119             <td class="entry_range">
   5120               <p>For each configuration,<wbr/> the fps_<wbr/>max &gt;= 120fps.<wbr/></p>
   5121             </td>
   5122 
   5123             <td class="entry_tags">
   5124               <ul class="entry_tags">
   5125                   <li><a href="#tag_V1">V1</a></li>
   5126               </ul>
   5127             </td>
   5128 
   5129           </tr>
   5130           <tr class="entries_header">
   5131             <th class="th_details" colspan="5">Details</th>
   5132           </tr>
   5133           <tr class="entry_cont">
   5134             <td class="entry_details" colspan="5">
   5135               <p>When CONSTRAINED_<wbr/>HIGH_<wbr/>SPEED_<wbr/>VIDEO is supported in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>,<wbr/>
   5136 this metadata will list the supported high speed video size,<wbr/> fps range and max batch size
   5137 configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes
   5138 reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a>
   5139 for processed non-stalling formats.<wbr/></p>
   5140 <p>For the high speed video use case,<wbr/> the application must
   5141 select the video size and fps range from this metadata to configure the recording and
   5142 preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends
   5143 to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to
   5144 configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata
   5145 by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the
   5146 recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application
   5147 must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams
   5148 must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p>
   5149 <p>The min and max fps will be multiple times of 30fps.<wbr/></p>
   5150 <p>High speed video streaming extends significant performance pressue to camera hardware,<wbr/>
   5151 to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate
   5152 multiple frames together and send to camera device for processing where the request
   5153 controls are same for all the frames in this batch.<wbr/> Max batch size indicates
   5154 the max possible number of frames the camera device will group together for this high
   5155 speed stream configuration.<wbr/> This max batch size will be used to generate a high speed
   5156 recording request list by
   5157 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/>
   5158 The max batch size for each configuration will satisfy below conditions:</p>
   5159 <ul>
   5160 <li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/>
   5161 if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li>
   5162 <li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but
   5163 the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch
   5164 size is 8,<wbr/> the actual batch size used by camera device will only be 1,<wbr/> 2,<wbr/> 4,<wbr/> or 8.<wbr/></li>
   5165 <li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li>
   5166 </ul>
   5167 <p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/>
   5168 in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p>
   5169 <p>This fps ranges in this configuration list can only be used to create requests
   5170 that are submitted to a high speed camera capture session created by
   5171 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/>
   5172 The fps ranges reported in this metadata must not be used to setup capture requests for
   5173 normal capture session,<wbr/> or it will cause request error.<wbr/></p>
   5174             </td>
   5175           </tr>
   5176 
   5177           <tr class="entries_header">
   5178             <th class="th_details" colspan="5">HAL Implementation Details</th>
   5179           </tr>
   5180           <tr class="entry_cont">
   5181             <td class="entry_details" colspan="5">
   5182               <p>All the sizes listed in this configuration will be a subset of the sizes reported by
   5183 <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/>
   5184 Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum
   5185 of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p>
   5186 <p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps
   5187 sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application
   5188 usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused
   5189 stutter when starting recording as much as possible,<wbr/> the application may want to ensure
   5190 the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise
   5191 the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/>
   5192 For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise
   5193 [30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to
   5194 do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start
   5195 recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps
   5196 values that are suitable for smooth preview streaming.<wbr/> If the HAL sees different max_<wbr/>fps
   5197 values that fall into different sensor modes in a sequence of requests,<wbr/> the HAL must
   5198 switch the sensor mode as quick as possible to minimize the mode switch caused stutter.<wbr/></p>
   5199             </td>
   5200           </tr>
   5201 
   5202           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   5203            <!-- end of entry -->
   5204         
   5205                 
   5206           <tr class="entry" id="static_android.control.aeLockAvailable">
   5207             <td class="entry_name
   5208              " rowspan="3">
   5209               android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available
   5210             </td>
   5211             <td class="entry_type">
   5212                 <span class="entry_type_name entry_type_name_enum">byte</span>
   5213 
   5214               <span class="entry_type_visibility"> [public as boolean]</span>
   5215 
   5216 
   5217               <span class="entry_type_hwlevel">[legacy] </span>
   5218 
   5219 
   5220 
   5221                 <ul class="entry_type_enum">
   5222                   <li>
   5223                     <span class="entry_type_enum_name">FALSE</span>
   5224                   </li>
   5225                   <li>
   5226                     <span class="entry_type_enum_name">TRUE</span>
   5227                   </li>
   5228                 </ul>
   5229 
   5230             </td> <!-- entry_type -->
   5231 
   5232             <td class="entry_description">
   5233               <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p>
   5234             </td>
   5235 
   5236             <td class="entry_units">
   5237             </td>
   5238 
   5239             <td class="entry_range">
   5240             </td>
   5241 
   5242             <td class="entry_tags">
   5243               <ul class="entry_tags">
   5244                   <li><a href="#tag_BC">BC</a></li>
   5245               </ul>
   5246             </td>
   5247 
   5248           </tr>
   5249           <tr class="entries_header">
   5250             <th class="th_details" colspan="5">Details</th>
   5251           </tr>
   5252           <tr class="entry_cont">
   5253             <td class="entry_details" colspan="5">
   5254               <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always
   5255 list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
   5256             </td>
   5257           </tr>
   5258 
   5259 
   5260           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   5261            <!-- end of entry -->
   5262         
   5263                 
   5264           <tr class="entry" id="static_android.control.awbLockAvailable">
   5265             <td class="entry_name
   5266              " rowspan="3">
   5267               android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available
   5268             </td>
   5269             <td class="entry_type">
   5270                 <span class="entry_type_name entry_type_name_enum">byte</span>
   5271 
   5272               <span class="entry_type_visibility"> [public as boolean]</span>
   5273 
   5274 
   5275               <span class="entry_type_hwlevel">[legacy] </span>
   5276 
   5277 
   5278 
   5279                 <ul class="entry_type_enum">
   5280                   <li>
   5281                     <span class="entry_type_enum_name">FALSE</span>
   5282                   </li>
   5283                   <li>
   5284                     <span class="entry_type_enum_name">TRUE</span>
   5285                   </li>
   5286                 </ul>
   5287 
   5288             </td> <!-- entry_type -->
   5289 
   5290             <td class="entry_description">
   5291               <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p>
   5292             </td>
   5293 
   5294             <td class="entry_units">
   5295             </td>
   5296 
   5297             <td class="entry_range">
   5298             </td>
   5299 
   5300             <td class="entry_tags">
   5301               <ul class="entry_tags">
   5302                   <li><a href="#tag_BC">BC</a></li>
   5303               </ul>
   5304             </td>
   5305 
   5306           </tr>
   5307           <tr class="entries_header">
   5308             <th class="th_details" colspan="5">Details</th>
   5309           </tr>
   5310           <tr class="entry_cont">
   5311             <td class="entry_details" colspan="5">
   5312               <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will
   5313 always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
   5314             </td>
   5315           </tr>
   5316 
   5317 
   5318           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   5319            <!-- end of entry -->
   5320         
   5321                 
   5322           <tr class="entry" id="static_android.control.availableModes">
   5323             <td class="entry_name
   5324              " rowspan="3">
   5325               android.<wbr/>control.<wbr/>available<wbr/>Modes
   5326             </td>
   5327             <td class="entry_type">
   5328                 <span class="entry_type_name">byte</span>
   5329                 <span class="entry_type_container">x</span>
   5330 
   5331                 <span class="entry_type_array">
   5332                   n
   5333                 </span>
   5334               <span class="entry_type_visibility"> [public as enumList]</span>
   5335 
   5336 
   5337               <span class="entry_type_hwlevel">[legacy] </span>
   5338 
   5339 
   5340                 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div>
   5341 
   5342 
   5343             </td> <!-- entry_type -->
   5344 
   5345             <td class="entry_description">
   5346               <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera
   5347 device.<wbr/></p>
   5348             </td>
   5349 
   5350             <td class="entry_units">
   5351             </td>
   5352 
   5353             <td class="entry_range">
   5354               <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p>
   5355             </td>
   5356 
   5357             <td class="entry_tags">
   5358             </td>
   5359 
   5360           </tr>
   5361           <tr class="entries_header">
   5362             <th class="th_details" colspan="5">Details</th>
   5363           </tr>
   5364           <tr class="entry_cont">
   5365             <td class="entry_details" colspan="5">
   5366               <p>This list contains control modes that can be set for the camera device.<wbr/>
   5367 LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL
   5368 devices will always support OFF,<wbr/> AUTO modes.<wbr/></p>
   5369             </td>
   5370           </tr>
   5371 
   5372 
   5373           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   5374            <!-- end of entry -->
   5375         
   5376         
   5377 
   5378       <!-- end of kind -->
   5379       </tbody>
   5380       <tr><td colspan="6" class="kind">dynamic</td></tr>
   5381 
   5382       <thead class="entries_header">
   5383         <tr>
   5384           <th class="th_name">Property Name</th>
   5385           <th class="th_type">Type</th>
   5386           <th class="th_description">Description</th>
   5387           <th class="th_units">Units</th>
   5388           <th class="th_range">Range</th>
   5389           <th class="th_tags">Tags</th>
   5390         </tr>
   5391       </thead>
   5392 
   5393       <tbody>
   5394 
   5395         
   5396 
   5397         
   5398 
   5399         
   5400 
   5401         
   5402 
   5403                 
   5404           <tr class="entry" id="dynamic_android.control.aePrecaptureId">
   5405             <td class="entry_name
   5406                 entry_name_deprecated
   5407              " rowspan="3">
   5408               android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id
   5409             </td>
   5410             <td class="entry_type">
   5411                 <span class="entry_type_name">int32</span>
   5412 
   5413               <span class="entry_type_visibility"> [system]</span>
   5414 
   5415 
   5416 
   5417               <span class="entry_type_deprecated">[deprecated] </span>
   5418 
   5419 
   5420 
   5421             </td> <!-- entry_type -->
   5422 
   5423             <td class="entry_description">
   5424               <p>The ID sent with the latest
   5425 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p>
   5426             </td>
   5427 
   5428             <td class="entry_units">
   5429             </td>
   5430 
   5431             <td class="entry_range">
   5432               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
   5433             </td>
   5434 
   5435             <td class="entry_tags">
   5436             </td>
   5437 
   5438           </tr>
   5439           <tr class="entries_header">
   5440             <th class="th_details" colspan="5">Details</th>
   5441           </tr>
   5442           <tr class="entry_cont">
   5443             <td class="entry_details" colspan="5">
   5444               <p>Must be 0 if no
   5445 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet
   5446 by HAL.<wbr/> Always updated even if AE algorithm ignores the
   5447 trigger</p>
   5448             </td>
   5449           </tr>
   5450 
   5451 
   5452           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   5453            <!-- end of entry -->
   5454         
   5455                 
   5456           <tr class="entry" id="dynamic_android.control.aeAntibandingMode">
   5457             <td class="entry_name
   5458              " rowspan="5">
   5459               android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
   5460             </td>
   5461             <td class="entry_type">
   5462                 <span class="entry_type_name entry_type_name_enum">byte</span>
   5463 
   5464               <span class="entry_type_visibility"> [public]</span>
   5465 
   5466 
   5467               <span class="entry_type_hwlevel">[legacy] </span>
   5468 
   5469 
   5470 
   5471                 <ul class="entry_type_enum">
   5472                   <li>
   5473                     <span class="entry_type_enum_name">OFF</span>
   5474                     <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
   5475 avoid banding problems.<wbr/></p></span>
   5476                   </li>
   5477                   <li>
   5478                     <span class="entry_type_enum_name">50HZ</span>
   5479                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
   5480 avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
   5481                   </li>
   5482                   <li>
   5483                     <span class="entry_type_enum_name">60HZ</span>
   5484                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
   5485 avoid banding problems with 60Hz illumination
   5486 sources.<wbr/></p></span>
   5487                   </li>
   5488                   <li>
   5489                     <span class="entry_type_enum_name">AUTO</span>
   5490                     <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
   5491 antibanding routine to the current illumination
   5492 condition.<wbr/> This is the default mode if AUTO is
   5493 available on given camera device.<wbr/></p></span>
   5494                   </li>
   5495                 </ul>
   5496 
   5497             </td> <!-- entry_type -->
   5498 
   5499             <td class="entry_description">
   5500               <p>The desired setting for the camera device's auto-exposure
   5501 algorithm's antibanding compensation.<wbr/></p>
   5502             </td>
   5503 
   5504             <td class="entry_units">
   5505             </td>
   5506 
   5507             <td class="entry_range">
   5508               <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
   5509             </td>
   5510 
   5511             <td class="entry_tags">
   5512               <ul class="entry_tags">
   5513                   <li><a href="#tag_BC">BC</a></li>
   5514               </ul>
   5515             </td>
   5516 
   5517           </tr>
   5518           <tr class="entries_header">
   5519             <th class="th_details" colspan="5">Details</th>
   5520           </tr>
   5521           <tr class="entry_cont">
   5522             <td class="entry_details" colspan="5">
   5523               <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
   5524 lights,<wbr/> flicker at the rate of the power supply frequency
   5525 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
   5526 typically not noticeable to a person,<wbr/> it can be visible to
   5527 a camera device.<wbr/> If a camera sets its exposure time to the
   5528 wrong value,<wbr/> the flicker may become visible in the
   5529 viewfinder as flicker or in a final captured image,<wbr/> as a
   5530 set of variable-brightness bands across the image.<wbr/></p>
   5531 <p>Therefore,<wbr/> the auto-exposure routines of camera devices
   5532 include antibanding routines that ensure that the chosen
   5533 exposure value will not cause such banding.<wbr/> The choice of
   5534 exposure time depends on the rate of flicker,<wbr/> which the
   5535 camera device can detect automatically,<wbr/> or the expected
   5536 rate can be selected by the application using this
   5537 control.<wbr/></p>
   5538 <p>A given camera device may not support all of the possible
   5539 options for the antibanding mode.<wbr/> The
   5540 <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
   5541 the available modes for a given camera device.<wbr/></p>
   5542 <p>AUTO mode is the default if it is available on given
   5543 camera device.<wbr/> When AUTO mode is not available,<wbr/> the
   5544 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
   5545 and 60HZ will be available.<wbr/></p>
   5546 <p>If manual exposure control is enabled (by setting
   5547 <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> to OFF),<wbr/>
   5548 then this setting has no effect,<wbr/> and the application must
   5549 ensure it selects exposure times that do not cause banding
   5550 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
   5551 the application in this.<wbr/></p>
   5552             </td>
   5553           </tr>
   5554 
   5555           <tr class="entries_header">
   5556             <th class="th_details" colspan="5">HAL Implementation Details</th>
   5557           </tr>
   5558           <tr class="entry_cont">
   5559             <td class="entry_details" colspan="5">
   5560               <p>For all capture request templates,<wbr/> this field must be set
   5561 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
   5562 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
   5563 60HZ must be available.<wbr/></p>
   5564 <p>If manual exposure control is enabled (by setting
   5565 <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> to OFF),<wbr/>
   5566 then the exposure values provided by the application must not be
   5567 adjusted for antibanding.<wbr/></p>
   5568             </td>
   5569           </tr>
   5570 
   5571           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   5572            <!-- end of entry -->
   5573         
   5574                 
   5575           <tr class="entry" id="dynamic_android.control.aeExposureCompensation">
   5576             <td class="entry_name
   5577              " rowspan="3">
   5578               android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
   5579             </td>
   5580             <td class="entry_type">
   5581                 <span class="entry_type_name">int32</span>
   5582 
   5583               <span class="entry_type_visibility"> [public]</span>
   5584 
   5585 
   5586               <span class="entry_type_hwlevel">[legacy] </span>
   5587 
   5588 
   5589 
   5590 
   5591             </td> <!-- entry_type -->
   5592 
   5593             <td class="entry_description">
   5594               <p>Adjustment to auto-exposure (AE) target image
   5595 brightness.<wbr/></p>
   5596             </td>
   5597 
   5598             <td class="entry_units">
   5599               Compensation steps
   5600             </td>
   5601 
   5602             <td class="entry_range">
   5603               <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
   5604             </td>
   5605 
   5606             <td class="entry_tags">
   5607               <ul class="entry_tags">
   5608                   <li><a href="#tag_BC">BC</a></li>
   5609               </ul>
   5610             </td>
   5611 
   5612           </tr>
   5613           <tr class="entries_header">
   5614             <th class="th_details" colspan="5">Details</th>
   5615           </tr>
   5616           <tr class="entry_cont">
   5617             <td class="entry_details" colspan="5">
   5618               <p>The adjustment is measured as a count of steps,<wbr/> with the
   5619 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
   5620 allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
   5621 <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
   5622 will mean an exposure compensation of +2 EV; -3 will mean an
   5623 exposure compensation of -1 EV.<wbr/> One EV represents a doubling
   5624 of image brightness.<wbr/> Note that this control will only be
   5625 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
   5626 will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
   5627 <p>In the event of exposure compensation value being changed,<wbr/> camera device
   5628 may take several frames to reach the newly requested exposure target.<wbr/>
   5629 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
   5630 state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will
   5631 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
   5632 FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
   5633             </td>
   5634           </tr>
   5635 
   5636 
   5637           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   5638            <!-- end of entry -->
   5639         
   5640                 
   5641           <tr class="entry" id="dynamic_android.control.aeLock">
   5642             <td class="entry_name
   5643              " rowspan="3">
   5644               android.<wbr/>control.<wbr/>ae<wbr/>Lock
   5645             </td>
   5646             <td class="entry_type">
   5647                 <span class="entry_type_name entry_type_name_enum">byte</span>
   5648 
   5649               <span class="entry_type_visibility"> [public as boolean]</span>
   5650 
   5651 
   5652               <span class="entry_type_hwlevel">[legacy] </span>
   5653 
   5654 
   5655 
   5656                 <ul class="entry_type_enum">
   5657                   <li>
   5658                     <span class="entry_type_enum_name">OFF</span>
   5659                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
   5660 is free to update its parameters.<wbr/></p></span>
   5661                   </li>
   5662                   <li>
   5663                     <span class="entry_type_enum_name">ON</span>
   5664                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
   5665 must not update the exposure and sensitivity parameters
   5666 while the lock is active.<wbr/></p>
   5667 <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
   5668 will still take effect while auto-exposure is locked.<wbr/></p>
   5669 <p>Some rare LEGACY devices may not support
   5670 this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
   5671                   </li>
   5672                 </ul>
   5673 
   5674             </td> <!-- entry_type -->
   5675 
   5676             <td class="entry_description">
   5677               <p>Whether auto-exposure (AE) is currently locked to its latest
   5678 calculated values.<wbr/></p>
   5679             </td>
   5680 
   5681             <td class="entry_units">
   5682             </td>
   5683 
   5684             <td class="entry_range">
   5685             </td>
   5686 
   5687             <td class="entry_tags">
   5688               <ul class="entry_tags">
   5689                   <li><a href="#tag_BC">BC</a></li>
   5690               </ul>
   5691             </td>
   5692 
   5693           </tr>
   5694           <tr class="entries_header">
   5695             <th class="th_details" colspan="5">Details</th>
   5696           </tr>
   5697           <tr class="entry_cont">
   5698             <td class="entry_details" colspan="5">
   5699               <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
   5700 and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
   5701 <p>Note that even when AE is locked,<wbr/> the flash may be fired if
   5702 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
   5703 ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
   5704 <p>When <a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> is changed,<wbr/> even if the AE lock
   5705 is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
   5706 <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
   5707 when AE is already locked,<wbr/> the camera device will not change the exposure time
   5708 (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) and sensitivity (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
   5709 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
   5710 is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
   5711 <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> the scene may become overexposed.<wbr/>
   5712 Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
   5713 <p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
   5714 the AE if AE is locked by the camera device internally during precapture metering
   5715 sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
   5716 ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
   5717 will never succeed in a sequence of preview requests where AE lock is always set
   5718 to <code>false</code>.<wbr/></p>
   5719 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
   5720 get locked do not necessarily correspond to the settings that were present in the
   5721 latest capture result received from the camera device,<wbr/> since additional captures
   5722 and AE updates may have occurred even before the result was sent out.<wbr/> If an
   5723 application is switching between automatic and manual control and wishes to eliminate
   5724 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
   5725 <ol>
   5726 <li>Starting in auto-AE mode:</li>
   5727 <li>Lock AE</li>
   5728 <li>Wait for the first result to be output that has the AE locked</li>
   5729 <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
   5730 <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
   5731 </ol>
   5732 <p>See <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE lock related state transition details.<wbr/></p>
   5733             </td>
   5734           </tr>
   5735 
   5736 
   5737           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   5738            <!-- end of entry -->
   5739         
   5740                 
   5741           <tr class="entry" id="dynamic_android.control.aeMode">
   5742             <td class="entry_name
   5743              " rowspan="3">
   5744               android.<wbr/>control.<wbr/>ae<wbr/>Mode
   5745             </td>
   5746             <td class="entry_type">
   5747                 <span class="entry_type_name entry_type_name_enum">byte</span>
   5748 
   5749               <span class="entry_type_visibility"> [public]</span>
   5750 
   5751 
   5752               <span class="entry_type_hwlevel">[legacy] </span>
   5753 
   5754 
   5755 
   5756                 <ul class="entry_type_enum">
   5757                   <li>
   5758                     <span class="entry_type_enum_name">OFF</span>
   5759                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
   5760 <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
   5761 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
   5762 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
   5763 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
   5764 a flash unit for this camera device.<wbr/></p>
   5765 <p>Note that auto-white balance (AWB) and auto-focus (AF)
   5766 behavior is device dependent when AE is in OFF mode.<wbr/>
   5767 To have consistent behavior across different devices,<wbr/>
   5768 it is recommended to either set AWB and AF to OFF mode
   5769 or lock AWB and AF before setting AE to OFF.<wbr/>
   5770 See <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>,<wbr/>
   5771 <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a>,<wbr/> and <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
   5772 for more details.<wbr/></p>
   5773 <p>LEGACY devices do not support the OFF mode and will
   5774 override attempts to use this value to ON.<wbr/></p></span>
   5775                   </li>
   5776                   <li>
   5777                     <span class="entry_type_enum_name">ON</span>
   5778                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
   5779 with no flash control.<wbr/></p>
   5780 <p>The application's values for
   5781 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
   5782 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
   5783 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
   5784 application has control over the various
   5785 android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
   5786                   </li>
   5787                   <li>
   5788                     <span class="entry_type_enum_name">ON_AUTO_FLASH</span>
   5789                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
   5790 the camera's flash unit,<wbr/> firing it in low-light
   5791 conditions.<wbr/></p>
   5792 <p>The flash may be fired during a precapture sequence
   5793 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
   5794 may be fired for captures for which the
   5795 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
   5796 STILL_<wbr/>CAPTURE</p></span>
   5797                   </li>
   5798                   <li>
   5799                     <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span>
   5800                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
   5801 the camera's flash unit,<wbr/> always firing it for still
   5802 captures.<wbr/></p>
   5803 <p>The flash may be fired during a precapture sequence
   5804 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
   5805 will always be fired for captures for which the
   5806 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
   5807 STILL_<wbr/>CAPTURE</p></span>
   5808                   </li>
   5809                   <li>
   5810                     <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span>
   5811                     <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
   5812 reduction.<wbr/></p>
   5813 <p>If deemed necessary by the camera device,<wbr/> a red eye
   5814 reduction flash will fire during the precapture
   5815 sequence.<wbr/></p></span>
   5816                   </li>
   5817                 </ul>
   5818 
   5819             </td> <!-- entry_type -->
   5820 
   5821             <td class="entry_description">
   5822               <p>The desired mode for the camera device's
   5823 auto-exposure routine.<wbr/></p>
   5824             </td>
   5825 
   5826             <td class="entry_units">
   5827             </td>
   5828 
   5829             <td class="entry_range">
   5830               <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
   5831             </td>
   5832 
   5833             <td class="entry_tags">
   5834               <ul class="entry_tags">
   5835                   <li><a href="#tag_BC">BC</a></li>
   5836               </ul>
   5837             </td>
   5838 
   5839           </tr>
   5840           <tr class="entries_header">
   5841             <th class="th_details" colspan="5">Details</th>
   5842           </tr>
   5843           <tr class="entry_cont">
   5844             <td class="entry_details" colspan="5">
   5845               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
   5846 AUTO.<wbr/></p>
   5847 <p>When set to any of the ON modes,<wbr/> the camera device's
   5848 auto-exposure routine is enabled,<wbr/> overriding the
   5849 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
   5850 and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
   5851 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
   5852 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
   5853 is selected,<wbr/> the camera device's flash unit controls are
   5854 also overridden.<wbr/></p>
   5855 <p>The FLASH modes are only available if the camera device
   5856 has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p>
   5857 <p>If flash TORCH mode is desired,<wbr/> this field must be set to
   5858 ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
   5859 <p>When set to any of the ON modes,<wbr/> the values chosen by the
   5860 camera device auto-exposure routine for the overridden
   5861 fields for a given capture will be available in its
   5862 CaptureResult.<wbr/></p>
   5863             </td>
   5864           </tr>
   5865 
   5866 
   5867           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   5868            <!-- end of entry -->
   5869         
   5870                 
   5871           <tr class="entry" id="dynamic_android.control.aeRegions">
   5872             <td class="entry_name
   5873              " rowspan="5">
   5874               android.<wbr/>control.<wbr/>ae<wbr/>Regions
   5875             </td>
   5876             <td class="entry_type">
   5877                 <span class="entry_type_name">int32</span>
   5878                 <span class="entry_type_container">x</span>
   5879 
   5880                 <span class="entry_type_array">
   5881                   5 x area_count
   5882                 </span>
   5883               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
   5884 
   5885 
   5886 
   5887 
   5888 
   5889 
   5890             </td> <!-- entry_type -->
   5891 
   5892             <td class="entry_description">
   5893               <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
   5894             </td>
   5895 
   5896             <td class="entry_units">
   5897               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
   5898             </td>
   5899 
   5900             <td class="entry_range">
   5901               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
   5902 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
   5903             </td>
   5904 
   5905             <td class="entry_tags">
   5906               <ul class="entry_tags">
   5907                   <li><a href="#tag_BC">BC</a></li>
   5908               </ul>
   5909             </td>
   5910 
   5911           </tr>
   5912           <tr class="entries_header">
   5913             <th class="th_details" colspan="5">Details</th>
   5914           </tr>
   5915           <tr class="entry_cont">
   5916             <td class="entry_details" colspan="5">
   5917               <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
   5918 Otherwise will always be present.<wbr/></p>
   5919 <p>The maximum number of regions supported by the device is determined by the value
   5920 of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
   5921 <p>The coordinate system is based on the active pixel array,<wbr/>
   5922 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
   5923 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
   5924 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
   5925 bottom-right pixel in the active pixel array.<wbr/></p>
   5926 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
   5927 for every pixel in the area.<wbr/> This means that a large metering area
   5928 with the same weight as a smaller area will have more effect in
   5929 the metering result.<wbr/> Metering areas can partially overlap and the
   5930 camera device will add the weights in the overlap region.<wbr/></p>
   5931 <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
   5932 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
   5933 weight is ignored.<wbr/></p>
   5934 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
   5935 camera device.<wbr/></p>
   5936 <p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in
   5937 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
   5938 region and output only the intersection rectangle as the metering region in the result
   5939 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
   5940 not reported in the result metadata.<wbr/></p>
   5941             </td>
   5942           </tr>
   5943 
   5944           <tr class="entries_header">
   5945             <th class="th_details" colspan="5">HAL Implementation Details</th>
   5946           </tr>
   5947           <tr class="entry_cont">
   5948             <td class="entry_details" colspan="5">
   5949               <p>The HAL level representation of MeteringRectangle[] is a
   5950 int[5 * area_<wbr/>count].<wbr/>
   5951 Every five elements represent a metering region of
   5952 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
   5953 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
   5954 exclusive on xmax and ymax.<wbr/></p>
   5955             </td>
   5956           </tr>
   5957 
   5958           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   5959            <!-- end of entry -->
   5960         
   5961                 
   5962           <tr class="entry" id="dynamic_android.control.aeTargetFpsRange">
   5963             <td class="entry_name
   5964              " rowspan="3">
   5965               android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
   5966             </td>
   5967             <td class="entry_type">
   5968                 <span class="entry_type_name">int32</span>
   5969                 <span class="entry_type_container">x</span>
   5970 
   5971                 <span class="entry_type_array">
   5972                   2
   5973                 </span>
   5974               <span class="entry_type_visibility"> [public as rangeInt]</span>
   5975 
   5976 
   5977               <span class="entry_type_hwlevel">[legacy] </span>
   5978 
   5979 
   5980 
   5981 
   5982             </td> <!-- entry_type -->
   5983 
   5984             <td class="entry_description">
   5985               <p>Range over which the auto-exposure routine can
   5986 adjust the capture frame rate to maintain good
   5987 exposure.<wbr/></p>
   5988             </td>
   5989 
   5990             <td class="entry_units">
   5991               Frames per second (FPS)
   5992             </td>
   5993 
   5994             <td class="entry_range">
   5995               <p>Any of the entries in <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a></p>
   5996             </td>
   5997 
   5998             <td class="entry_tags">
   5999               <ul class="entry_tags">
   6000                   <li><a href="#tag_BC">BC</a></li>
   6001               </ul>
   6002             </td>
   6003 
   6004           </tr>
   6005           <tr class="entries_header">
   6006             <th class="th_details" colspan="5">Details</th>
   6007           </tr>
   6008           <tr class="entry_cont">
   6009             <td class="entry_details" colspan="5">
   6010               <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
   6011 manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
   6012 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
   6013             </td>
   6014           </tr>
   6015 
   6016 
   6017           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   6018            <!-- end of entry -->
   6019         
   6020                 
   6021           <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger">
   6022             <td class="entry_name
   6023              " rowspan="5">
   6024               android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
   6025             </td>
   6026             <td class="entry_type">
   6027                 <span class="entry_type_name entry_type_name_enum">byte</span>
   6028 
   6029               <span class="entry_type_visibility"> [public]</span>
   6030 
   6031 
   6032               <span class="entry_type_hwlevel">[limited] </span>
   6033 
   6034 
   6035 
   6036                 <ul class="entry_type_enum">
   6037                   <li>
   6038                     <span class="entry_type_enum_name">IDLE</span>
   6039                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
   6040                   </li>
   6041                   <li>
   6042                     <span class="entry_type_enum_name">START</span>
   6043                     <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
   6044 by the camera device.<wbr/></p>
   6045 <p>The exact effect of the precapture trigger depends on
   6046 the current AE mode and state.<wbr/></p></span>
   6047                   </li>
   6048                   <li>
   6049                     <span class="entry_type_enum_name">CANCEL</span>
   6050                     <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
   6051 precapture metering sequence,<wbr/> the auto-exposure routine will return to its
   6052 initial state.<wbr/></p></span>
   6053                   </li>
   6054                 </ul>
   6055 
   6056             </td> <!-- entry_type -->
   6057 
   6058             <td class="entry_description">
   6059               <p>Whether the camera device will trigger a precapture
   6060 metering sequence when it processes this request.<wbr/></p>
   6061             </td>
   6062 
   6063             <td class="entry_units">
   6064             </td>
   6065 
   6066             <td class="entry_range">
   6067             </td>
   6068 
   6069             <td class="entry_tags">
   6070               <ul class="entry_tags">
   6071                   <li><a href="#tag_BC">BC</a></li>
   6072               </ul>
   6073             </td>
   6074 
   6075           </tr>
   6076           <tr class="entries_header">
   6077             <th class="th_details" colspan="5">Details</th>
   6078           </tr>
   6079           <tr class="entry_cont">
   6080             <td class="entry_details" colspan="5">
   6081               <p>This entry is normally set to IDLE,<wbr/> or is not
   6082 included at all in the request settings.<wbr/> When included and
   6083 set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
   6084 precapture metering sequence.<wbr/></p>
   6085 <p>When set to CANCEL,<wbr/> the camera device will cancel any active
   6086 precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
   6087 If a precapture metering sequence is already completed,<wbr/> and the camera
   6088 device has implicitly locked the AE for subsequent still capture,<wbr/> the
   6089 CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
   6090 <p>The precapture sequence should be triggered before starting a
   6091 high-quality still capture for final metering decisions to
   6092 be made,<wbr/> and for firing pre-capture flash pulses to estimate
   6093 scene brightness and required final capture flash power,<wbr/> when
   6094 the flash is enabled.<wbr/></p>
   6095 <p>Normally,<wbr/> this entry should be set to START for only a
   6096 single request,<wbr/> and the application should wait until the
   6097 sequence completes before starting a new one.<wbr/></p>
   6098 <p>When a precapture metering sequence is finished,<wbr/> the camera device
   6099 may lock the auto-exposure routine internally to be able to accurately expose the
   6100 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
   6101 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
   6102 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
   6103 submit a request with <code><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> == true</code>,<wbr/> followed by a request
   6104 with <code><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> == false</code>,<wbr/> if the application decides not to submit a
   6105 still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
   6106 API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
   6107 internally locked AE if the application doesn't submit a still capture request after
   6108 the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
   6109 be used in devices that have earlier API levels.<wbr/></p>
   6110 <p>The exact effect of auto-exposure (AE) precapture trigger
   6111 depends on the current AE mode and state; see
   6112 <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
   6113 details.<wbr/></p>
   6114 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
   6115 capturing a high-resolution JPEG image will automatically trigger a
   6116 precapture sequence before the high-resolution capture,<wbr/> including
   6117 potentially firing a pre-capture flash.<wbr/></p>
   6118 <p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
   6119 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
   6120 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
   6121 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
   6122 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
   6123 changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for
   6124 example.<wbr/></p>
   6125 <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
   6126 the camera device will complete them in the optimal order for that device.<wbr/></p>
   6127             </td>
   6128           </tr>
   6129 
   6130           <tr class="entries_header">
   6131             <th class="th_details" colspan="5">HAL Implementation Details</th>
   6132           </tr>
   6133           <tr class="entry_cont">
   6134             <td class="entry_details" colspan="5">
   6135               <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
   6136 (and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/>  It is acceptable for the HAL to
   6137 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
   6138 AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
   6139 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
   6140             </td>
   6141           </tr>
   6142 
   6143           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   6144            <!-- end of entry -->
   6145         
   6146                 
   6147           <tr class="entry" id="dynamic_android.control.aeState">
   6148             <td class="entry_name
   6149              " rowspan="3">
   6150               android.<wbr/>control.<wbr/>ae<wbr/>State
   6151             </td>
   6152             <td class="entry_type">
   6153                 <span class="entry_type_name entry_type_name_enum">byte</span>
   6154 
   6155               <span class="entry_type_visibility"> [public]</span>
   6156 
   6157 
   6158               <span class="entry_type_hwlevel">[limited] </span>
   6159 
   6160 
   6161 
   6162                 <ul class="entry_type_enum">
   6163                   <li>
   6164                     <span class="entry_type_enum_name">INACTIVE</span>
   6165                     <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p>
   6166 <p>When a camera device is opened,<wbr/> it starts in
   6167 this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting
   6168 this state in capture result.<wbr/></p></span>
   6169                   </li>
   6170                   <li>
   6171                     <span class="entry_type_enum_name">SEARCHING</span>
   6172                     <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values
   6173 for the current scene.<wbr/></p>
   6174 <p>This is a transient state,<wbr/> the camera device may skip
   6175 reporting this state in capture result.<wbr/></p></span>
   6176                   </li>
   6177                   <li>
   6178                     <span class="entry_type_enum_name">CONVERGED</span>
   6179                     <span class="entry_type_enum_notes"><p>AE has a good set of control values for the
   6180 current scene.<wbr/></p></span>
   6181                   </li>
   6182                   <li>
   6183                     <span class="entry_type_enum_name">LOCKED</span>
   6184                     <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span>
   6185                   </li>
   6186                   <li>
   6187                     <span class="entry_type_enum_name">FLASH_REQUIRED</span>
   6188                     <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash
   6189 needs to be fired for good quality still
   6190 capture.<wbr/></p></span>
   6191                   </li>
   6192                   <li>
   6193                     <span class="entry_type_enum_name">PRECAPTURE</span>
   6194                     <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence
   6195 and is currently executing it.<wbr/></p>
   6196 <p>Precapture can be triggered through setting
   6197 <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently
   6198 active and completed (if it causes camera device internal AE lock) precapture
   6199 metering sequence can be canceled through setting
   6200 <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p>
   6201 <p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED
   6202 or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient
   6203 state,<wbr/> the camera device may skip reporting this state in
   6204 capture result.<wbr/></p></span>
   6205                   </li>
   6206                 </ul>
   6207 
   6208             </td> <!-- entry_type -->
   6209 
   6210             <td class="entry_description">
   6211               <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p>
   6212             </td>
   6213 
   6214             <td class="entry_units">
   6215             </td>
   6216 
   6217             <td class="entry_range">
   6218             </td>
   6219 
   6220             <td class="entry_tags">
   6221             </td>
   6222 
   6223           </tr>
   6224           <tr class="entries_header">
   6225             <th class="th_details" colspan="5">Details</th>
   6226           </tr>
   6227           <tr class="entry_cont">
   6228             <td class="entry_details" colspan="5">
   6229               <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always
   6230 resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
   6231 or <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> if <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code> resets all
   6232 the algorithm states to INACTIVE.<wbr/></p>
   6233 <p>The camera device can do several state transitions between two results,<wbr/> if it is
   6234 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
   6235 seen in a result.<wbr/></p>
   6236 <p>The state in the result is the state for this image (in sync with this image): if
   6237 AE state becomes CONVERGED,<wbr/> then the image data associated with this result should
   6238 be good to use.<wbr/></p>
   6239 <p>Below are state transition tables for different AE modes.<wbr/></p>
   6240 <table>
   6241 <thead>
   6242 <tr>
   6243 <th align="center">State</th>
   6244 <th align="center">Transition Cause</th>
   6245 <th align="center">New State</th>
   6246 <th align="center">Notes</th>
   6247 </tr>
   6248 </thead>
   6249 <tbody>
   6250 <tr>
   6251 <td align="center">INACTIVE</td>
   6252 <td align="center"></td>
   6253 <td align="center">INACTIVE</td>
   6254 <td align="center">Camera device auto exposure algorithm is disabled</td>
   6255 </tr>
   6256 </tbody>
   6257 </table>
   6258 <p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON_<wbr/>*:</p>
   6259 <table>
   6260 <thead>
   6261 <tr>
   6262 <th align="center">State</th>
   6263 <th align="center">Transition Cause</th>
   6264 <th align="center">New State</th>
   6265 <th align="center">Notes</th>
   6266 </tr>
   6267 </thead>
   6268 <tbody>
   6269 <tr>
   6270 <td align="center">INACTIVE</td>
   6271 <td align="center">Camera device initiates AE scan</td>
   6272 <td align="center">SEARCHING</td>
   6273 <td align="center">Values changing</td>
   6274 </tr>
   6275 <tr>
   6276 <td align="center">INACTIVE</td>
   6277 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
   6278 <td align="center">LOCKED</td>
   6279 <td align="center">Values locked</td>
   6280 </tr>
   6281 <tr>
   6282 <td align="center">SEARCHING</td>
   6283 <td align="center">Camera device finishes AE scan</td>
   6284 <td align="center">CONVERGED</td>
   6285 <td align="center">Good values,<wbr/> not changing</td>
   6286 </tr>
   6287 <tr>
   6288 <td align="center">SEARCHING</td>
   6289 <td align="center">Camera device finishes AE scan</td>
   6290 <td align="center">FLASH_<wbr/>REQUIRED</td>
   6291 <td align="center">Converged but too dark w/<wbr/>o flash</td>
   6292 </tr>
   6293 <tr>
   6294 <td align="center">SEARCHING</td>
   6295 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
   6296 <td align="center">LOCKED</td>
   6297 <td align="center">Values locked</td>
   6298 </tr>
   6299 <tr>
   6300 <td align="center">CONVERGED</td>
   6301 <td align="center">Camera device initiates AE scan</td>
   6302 <td align="center">SEARCHING</td>
   6303 <td align="center">Values changing</td>
   6304 </tr>
   6305 <tr>
   6306 <td align="center">CONVERGED</td>
   6307 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
   6308 <td align="center">LOCKED</td>
   6309 <td align="center">Values locked</td>
   6310 </tr>
   6311 <tr>
   6312 <td align="center">FLASH_<wbr/>REQUIRED</td>
   6313 <td align="center">Camera device initiates AE scan</td>
   6314 <td align="center">SEARCHING</td>
   6315 <td align="center">Values changing</td>
   6316 </tr>
   6317 <tr>
   6318 <td align="center">FLASH_<wbr/>REQUIRED</td>
   6319 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
   6320 <td align="center">LOCKED</td>
   6321 <td align="center">Values locked</td>
   6322 </tr>
   6323 <tr>
   6324 <td align="center">LOCKED</td>
   6325 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
   6326 <td align="center">SEARCHING</td>
   6327 <td align="center">Values not good after unlock</td>
   6328 </tr>
   6329 <tr>
   6330 <td align="center">LOCKED</td>
   6331 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
   6332 <td align="center">CONVERGED</td>
   6333 <td align="center">Values good after unlock</td>
   6334 </tr>
   6335 <tr>
   6336 <td align="center">LOCKED</td>
   6337 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
   6338 <td align="center">FLASH_<wbr/>REQUIRED</td>
   6339 <td align="center">Exposure good,<wbr/> but too dark</td>
   6340 </tr>
   6341 <tr>
   6342 <td align="center">PRECAPTURE</td>
   6343 <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
   6344 <td align="center">CONVERGED</td>
   6345 <td align="center">Ready for high-quality capture</td>
   6346 </tr>
   6347 <tr>
   6348 <td align="center">PRECAPTURE</td>
   6349 <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
   6350 <td align="center">LOCKED</td>
   6351 <td align="center">Ready for high-quality capture</td>
   6352 </tr>
   6353 <tr>
   6354 <td align="center">LOCKED</td>
   6355 <td align="center">aeLock is ON and aePrecaptureTrigger is START</td>
   6356 <td align="center">LOCKED</td>
   6357 <td align="center">Precapture trigger is ignored when AE is already locked</td>
   6358 </tr>
   6359 <tr>
   6360 <td align="center">LOCKED</td>
   6361 <td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td>
   6362 <td align="center">LOCKED</td>
   6363 <td align="center">Precapture trigger is ignored when AE is already locked</td>
   6364 </tr>
   6365 <tr>
   6366 <td align="center">Any state (excluding LOCKED)</td>
   6367 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td>
   6368 <td align="center">PRECAPTURE</td>
   6369 <td align="center">Start AE precapture metering sequence</td>
   6370 </tr>
   6371 <tr>
   6372 <td align="center">Any state (excluding LOCKED)</td>
   6373 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td>
   6374 <td align="center">INACTIVE</td>
   6375 <td align="center">Currently active precapture metering sequence is canceled</td>
   6376 </tr>
   6377 </tbody>
   6378 </table>
   6379 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
   6380 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
   6381 can be skipped in that manner is called a transient state.<wbr/></p>
   6382 <p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON_<wbr/>*),<wbr/> in addition to the state transitions
   6383 listed in above table,<wbr/> it is also legal for the camera device to skip one or more
   6384 transient states between two results.<wbr/> See below table for examples:</p>
   6385 <table>
   6386 <thead>
   6387 <tr>
   6388 <th align="center">State</th>
   6389 <th align="center">Transition Cause</th>
   6390 <th align="center">New State</th>
   6391 <th align="center">Notes</th>
   6392 </tr>
   6393 </thead>
   6394 <tbody>
   6395 <tr>
   6396 <td align="center">INACTIVE</td>
   6397 <td align="center">Camera device finished AE scan</td>
   6398 <td align="center">CONVERGED</td>
   6399 <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
   6400 </tr>
   6401 <tr>
   6402 <td align="center">Any state (excluding LOCKED)</td>
   6403 <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>
   6404 <td align="center">FLASH_<wbr/>REQUIRED</td>
   6405 <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>
   6406 </tr>
   6407 <tr>
   6408 <td align="center">Any state (excluding LOCKED)</td>
   6409 <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>
   6410 <td align="center">CONVERGED</td>
   6411 <td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td>
   6412 </tr>
   6413 <tr>
   6414 <td align="center">Any state (excluding LOCKED)</td>
   6415 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
   6416 <td align="center">FLASH_<wbr/>REQUIRED</td>
   6417 <td align="center">Converged but too dark w/<wbr/>o flash after a precapture sequence is canceled,<wbr/> transient states are skipped by camera device.<wbr/></td>
   6418 </tr>
   6419 <tr>
   6420 <td align="center">Any state (excluding LOCKED)</td>
   6421 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
   6422 <td align="center">CONVERGED</td>
   6423 <td align="center">Converged after a precapture sequenceis canceled,<wbr/> transient states are skipped by camera device.<wbr/></td>
   6424 </tr>
   6425 <tr>
   6426 <td align="center">CONVERGED</td>
   6427 <td align="center">Camera device finished AE scan</td>
   6428 <td align="center">FLASH_<wbr/>REQUIRED</td>
   6429 <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>
   6430 </tr>
   6431 <tr>
   6432 <td align="center">FLASH_<wbr/>REQUIRED</td>
   6433 <td align="center">Camera device finished AE scan</td>
   6434 <td align="center">CONVERGED</td>
   6435 <td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td>
   6436 </tr>
   6437 </tbody>
   6438 </table>
   6439             </td>
   6440           </tr>
   6441 
   6442 
   6443           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   6444            <!-- end of entry -->
   6445         
   6446                 
   6447           <tr class="entry" id="dynamic_android.control.afMode">
   6448             <td class="entry_name
   6449              " rowspan="5">
   6450               android.<wbr/>control.<wbr/>af<wbr/>Mode
   6451             </td>
   6452             <td class="entry_type">
   6453                 <span class="entry_type_name entry_type_name_enum">byte</span>
   6454 
   6455               <span class="entry_type_visibility"> [public]</span>
   6456 
   6457 
   6458               <span class="entry_type_hwlevel">[legacy] </span>
   6459 
   6460 
   6461 
   6462                 <ul class="entry_type_enum">
   6463                   <li>
   6464                     <span class="entry_type_enum_name">OFF</span>
   6465                     <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
   6466 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
   6467 application.<wbr/></p></span>
   6468                   </li>
   6469                   <li>
   6470                     <span class="entry_type_enum_name">AUTO</span>
   6471                     <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
   6472 <p>In this mode,<wbr/> the lens does not move unless
   6473 the autofocus trigger action is called.<wbr/> When that trigger
   6474 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
   6475 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
   6476 <p>Always supported if lens is not fixed focus.<wbr/></p>
   6477 <p>Use <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> to determine if lens
   6478 is fixed-focus.<wbr/></p>
   6479 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
   6480 and sets the AF state to INACTIVE.<wbr/></p></span>
   6481                   </li>
   6482                   <li>
   6483                     <span class="entry_type_enum_name">MACRO</span>
   6484                     <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
   6485 <p>In this mode,<wbr/> the lens does not move unless the
   6486 autofocus trigger action is called.<wbr/> When that trigger is
   6487 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
   6488 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
   6489 mode is optimized for focusing on objects very close to
   6490 the camera.<wbr/></p>
   6491 <p>When that trigger is activated,<wbr/> AF will transition to
   6492 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
   6493 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
   6494 position to default,<wbr/> and sets the AF state to
   6495 INACTIVE.<wbr/></p></span>
   6496                   </li>
   6497                   <li>
   6498                     <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span>
   6499                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
   6500 position continually to attempt to provide a
   6501 constantly-in-focus image stream.<wbr/></p>
   6502 <p>The focusing behavior should be suitable for good quality
   6503 video recording; typically this means slower focus
   6504 movement and no overshoots.<wbr/> When the AF trigger is not
   6505 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
   6506 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
   6507 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
   6508 the algorithm should immediately transition into
   6509 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
   6510 lens position until a cancel AF trigger is received.<wbr/></p>
   6511 <p>Once cancel is received,<wbr/> the algorithm should transition
   6512 back to INACTIVE and resume passive scan.<wbr/> Note that this
   6513 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
   6514 ongoing PASSIVE_<wbr/>SCAN must immediately be
   6515 canceled.<wbr/></p></span>
   6516                   </li>
   6517                   <li>
   6518                     <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span>
   6519                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
   6520 position continually to attempt to provide a
   6521 constantly-in-focus image stream.<wbr/></p>
   6522 <p>The focusing behavior should be suitable for still image
   6523 capture; typically this means focusing as fast as
   6524 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
   6525 algorithm should start in INACTIVE state,<wbr/> and then
   6526 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
   6527 appropriate as it attempts to maintain focus.<wbr/> When the AF
   6528 trigger is activated,<wbr/> the algorithm should finish its
   6529 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
   6530 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
   6531 lens position until a cancel AF trigger is received.<wbr/></p>
   6532 <p>When the AF cancel trigger is activated,<wbr/> the algorithm
   6533 should transition back to INACTIVE and then act as if it
   6534 has just been started.<wbr/></p></span>
   6535                   </li>
   6536                   <li>
   6537                     <span class="entry_type_enum_name">EDOF</span>
   6538                     <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
   6539 <p>The camera device will produce images with an extended
   6540 depth of field automatically; no special focusing
   6541 operations need to be done before taking a picture.<wbr/></p>
   6542 <p>AF triggers are ignored,<wbr/> and the AF state will always be
   6543 INACTIVE.<wbr/></p></span>
   6544                   </li>
   6545                 </ul>
   6546 
   6547             </td> <!-- entry_type -->
   6548 
   6549             <td class="entry_description">
   6550               <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
   6551 mode it is set to.<wbr/></p>
   6552             </td>
   6553 
   6554             <td class="entry_units">
   6555             </td>
   6556 
   6557             <td class="entry_range">
   6558               <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
   6559             </td>
   6560 
   6561             <td class="entry_tags">
   6562               <ul class="entry_tags">
   6563                   <li><a href="#tag_BC">BC</a></li>
   6564               </ul>
   6565             </td>
   6566 
   6567           </tr>
   6568           <tr class="entries_header">
   6569             <th class="th_details" colspan="5">Details</th>
   6570           </tr>
   6571           <tr class="entry_cont">
   6572             <td class="entry_details" colspan="5">
   6573               <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
   6574 (i.<wbr/>e.<wbr/> <code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> &gt; 0</code>).<wbr/> Also note that
   6575 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
   6576 dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before
   6577 setting <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> to OFF,<wbr/> or set AF mode to OFF when AE is OFF.<wbr/></p>
   6578 <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
   6579 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
   6580 in result metadata.<wbr/></p>
   6581             </td>
   6582           </tr>
   6583 
   6584           <tr class="entries_header">
   6585             <th class="th_details" colspan="5">HAL Implementation Details</th>
   6586           </tr>
   6587           <tr class="entry_cont">
   6588             <td class="entry_details" colspan="5">
   6589               <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
   6590 request (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> <code>==</code> START).<wbr/> After an AF trigger,<wbr/> the afState will end
   6591 up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
   6592 <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for detailed state transitions),<wbr/> which indicates that the lens is
   6593 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
   6594 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
   6595 the same focal plane remains in focus.<wbr/></p>
   6596 <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
   6597 scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
   6598 (see <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for detailed state transitions),<wbr/> the HAL should maintain the
   6599 same lock behavior as above.<wbr/></p>
   6600 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
   6601 focus distance control depends on the <a href="#static_android.lens.info.focusDistanceCalibration">android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration</a>.<wbr/>
   6602 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
   6603 manual control.<wbr/></p>
   6604 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
   6605 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
   6606 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
   6607 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
   6608 that will arise on camera modules with open-loop VCMs.<wbr/></p>
   6609             </td>
   6610           </tr>
   6611 
   6612           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   6613            <!-- end of entry -->
   6614         
   6615                 
   6616           <tr class="entry" id="dynamic_android.control.afRegions">
   6617             <td class="entry_name
   6618              " rowspan="5">
   6619               android.<wbr/>control.<wbr/>af<wbr/>Regions
   6620             </td>
   6621             <td class="entry_type">
   6622                 <span class="entry_type_name">int32</span>
   6623                 <span class="entry_type_container">x</span>
   6624 
   6625                 <span class="entry_type_array">
   6626                   5 x area_count
   6627                 </span>
   6628               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
   6629 
   6630 
   6631 
   6632 
   6633 
   6634 
   6635             </td> <!-- entry_type -->
   6636 
   6637             <td class="entry_description">
   6638               <p>List of metering areas to use for auto-focus.<wbr/></p>
   6639             </td>
   6640 
   6641             <td class="entry_units">
   6642               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
   6643             </td>
   6644 
   6645             <td class="entry_range">
   6646               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
   6647 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
   6648             </td>
   6649 
   6650             <td class="entry_tags">
   6651               <ul class="entry_tags">
   6652                   <li><a href="#tag_BC">BC</a></li>
   6653               </ul>
   6654             </td>
   6655 
   6656           </tr>
   6657           <tr class="entries_header">
   6658             <th class="th_details" colspan="5">Details</th>
   6659           </tr>
   6660           <tr class="entry_cont">
   6661             <td class="entry_details" colspan="5">
   6662               <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
   6663 Otherwise will always be present.<wbr/></p>
   6664 <p>The maximum number of focus areas supported by the device is determined by the value
   6665 of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
   6666 <p>The coordinate system is based on the active pixel array,<wbr/>
   6667 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
   6668 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
   6669 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
   6670 bottom-right pixel in the active pixel array.<wbr/></p>
   6671 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
   6672 for every pixel in the area.<wbr/> This means that a large metering area
   6673 with the same weight as a smaller area will have more effect in
   6674 the metering result.<wbr/> Metering areas can partially overlap and the
   6675 camera device will add the weights in the overlap region.<wbr/></p>
   6676 <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
   6677 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
   6678 ignored.<wbr/></p>
   6679 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
   6680 camera device.<wbr/></p>
   6681 <p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in
   6682 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
   6683 region and output only the intersection rectangle as the metering region in the result
   6684 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
   6685 not reported in the result metadata.<wbr/></p>
   6686             </td>
   6687           </tr>
   6688 
   6689           <tr class="entries_header">
   6690             <th class="th_details" colspan="5">HAL Implementation Details</th>
   6691           </tr>
   6692           <tr class="entry_cont">
   6693             <td class="entry_details" colspan="5">
   6694               <p>The HAL level representation of MeteringRectangle[] is a
   6695 int[5 * area_<wbr/>count].<wbr/>
   6696 Every five elements represent a metering region of
   6697 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
   6698 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
   6699 exclusive on xmax and ymax.<wbr/></p>
   6700             </td>
   6701           </tr>
   6702 
   6703           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   6704            <!-- end of entry -->
   6705         
   6706                 
   6707           <tr class="entry" id="dynamic_android.control.afTrigger">
   6708             <td class="entry_name
   6709              " rowspan="5">
   6710               android.<wbr/>control.<wbr/>af<wbr/>Trigger
   6711             </td>
   6712             <td class="entry_type">
   6713                 <span class="entry_type_name entry_type_name_enum">byte</span>
   6714 
   6715               <span class="entry_type_visibility"> [public]</span>
   6716 
   6717 
   6718               <span class="entry_type_hwlevel">[legacy] </span>
   6719 
   6720 
   6721 
   6722                 <ul class="entry_type_enum">
   6723                   <li>
   6724                     <span class="entry_type_enum_name">IDLE</span>
   6725                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
   6726                   </li>
   6727                   <li>
   6728                     <span class="entry_type_enum_name">START</span>
   6729                     <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
   6730                   </li>
   6731                   <li>
   6732                     <span class="entry_type_enum_name">CANCEL</span>
   6733                     <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
   6734 state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
   6735                   </li>
   6736                 </ul>
   6737 
   6738             </td> <!-- entry_type -->
   6739 
   6740             <td class="entry_description">
   6741               <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
   6742             </td>
   6743 
   6744             <td class="entry_units">
   6745             </td>
   6746 
   6747             <td class="entry_range">
   6748             </td>
   6749 
   6750             <td class="entry_tags">
   6751               <ul class="entry_tags">
   6752                   <li><a href="#tag_BC">BC</a></li>
   6753               </ul>
   6754             </td>
   6755 
   6756           </tr>
   6757           <tr class="entries_header">
   6758             <th class="th_details" colspan="5">Details</th>
   6759           </tr>
   6760           <tr class="entry_cont">
   6761             <td class="entry_details" colspan="5">
   6762               <p>This entry is normally set to IDLE,<wbr/> or is not
   6763 included at all in the request settings.<wbr/></p>
   6764 <p>When included and set to START,<wbr/> the camera device will trigger the
   6765 autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
   6766 <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
   6767 and return to its initial AF state.<wbr/></p>
   6768 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
   6769 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
   6770 START for multiple captures in a row means restarting the AF operation over
   6771 and over again.<wbr/></p>
   6772 <p>See <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for what the trigger means for each AF mode.<wbr/></p>
   6773 <p>Using the autofocus trigger and the precapture trigger <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>
   6774 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
   6775 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
   6776 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
   6777 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
   6778 changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
   6779             </td>
   6780           </tr>
   6781 
   6782           <tr class="entries_header">
   6783             <th class="th_details" colspan="5">HAL Implementation Details</th>
   6784           </tr>
   6785           <tr class="entry_cont">
   6786             <td class="entry_details" colspan="5">
   6787               <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
   6788 (and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/>  It is acceptable for the HAL to
   6789 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
   6790 AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
   6791 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
   6792             </td>
   6793           </tr>
   6794 
   6795           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   6796            <!-- end of entry -->
   6797         
   6798                 
   6799           <tr class="entry" id="dynamic_android.control.afState">
   6800             <td class="entry_name
   6801              " rowspan="3">
   6802               android.<wbr/>control.<wbr/>af<wbr/>State
   6803             </td>
   6804             <td class="entry_type">
   6805                 <span class="entry_type_name entry_type_name_enum">byte</span>
   6806 
   6807               <span class="entry_type_visibility"> [public]</span>
   6808 
   6809 
   6810               <span class="entry_type_hwlevel">[legacy] </span>
   6811 
   6812 
   6813 
   6814                 <ul class="entry_type_enum">
   6815                   <li>
   6816                     <span class="entry_type_enum_name">INACTIVE</span>
   6817                     <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked
   6818 to scan.<wbr/></p>
   6819 <p>When a camera device is opened,<wbr/> it starts in this
   6820 state.<wbr/> This is a transient state,<wbr/> the camera device may
   6821 skip reporting this state in capture
   6822 result.<wbr/></p></span>
   6823                   </li>
   6824                   <li>
   6825                     <span class="entry_type_enum_name">PASSIVE_SCAN</span>
   6826                     <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the
   6827 camera device in a continuous autofocus mode.<wbr/></p>
   6828 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
   6829 state,<wbr/> the camera device may skip reporting this state in
   6830 capture result.<wbr/></p></span>
   6831                   </li>
   6832                   <li>
   6833                     <span class="entry_type_enum_name">PASSIVE_FOCUSED</span>
   6834                     <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may
   6835 restart scanning at any time.<wbr/></p>
   6836 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
   6837 state,<wbr/> the camera device may skip reporting this state in
   6838 capture result.<wbr/></p></span>
   6839                   </li>
   6840                   <li>
   6841                     <span class="entry_type_enum_name">ACTIVE_SCAN</span>
   6842                     <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was
   6843 triggered by AF trigger.<wbr/></p>
   6844 <p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient
   6845 state,<wbr/> the camera device may skip reporting this state in
   6846 capture result.<wbr/></p></span>
   6847                   </li>
   6848                   <li>
   6849                     <span class="entry_type_enum_name">FOCUSED_LOCKED</span>
   6850                     <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked
   6851 focus.<wbr/></p>
   6852 <p>This state is reached only after an explicit START AF trigger has been
   6853 sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p>
   6854 <p>The lens will remain stationary until the AF mode (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) is changed or
   6855 a new AF trigger is sent to the camera device (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>).<wbr/></p></span>
   6856                   </li>
   6857                   <li>
   6858                     <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED</span>
   6859                     <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked
   6860 focus.<wbr/></p>
   6861 <p>This state is reached only after an explicit START AF trigger has been
   6862 sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p>
   6863 <p>The lens will remain stationary until the AF mode (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) is changed or
   6864 a new AF trigger is sent to the camera device (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>).<wbr/></p></span>
   6865                   </li>
   6866                   <li>
   6867                     <span class="entry_type_enum_name">PASSIVE_UNFOCUSED</span>
   6868                     <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/>
   6869 and may restart scanning at any time.<wbr/></p>
   6870 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera
   6871 device may skip reporting this state in capture result.<wbr/></p>
   6872 <p>LEGACY camera devices do not support this state.<wbr/> When a passive
   6873 scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span>
   6874                   </li>
   6875                 </ul>
   6876 
   6877             </td> <!-- entry_type -->
   6878 
   6879             <td class="entry_description">
   6880               <p>Current state of auto-focus (AF) algorithm.<wbr/></p>
   6881             </td>
   6882 
   6883             <td class="entry_units">
   6884             </td>
   6885 
   6886             <td class="entry_range">
   6887             </td>
   6888 
   6889             <td class="entry_tags">
   6890             </td>
   6891 
   6892           </tr>
   6893           <tr class="entries_header">
   6894             <th class="th_details" colspan="5">Details</th>
   6895           </tr>
   6896           <tr class="entry_cont">
   6897             <td class="entry_details" colspan="5">
   6898               <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always
   6899 resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
   6900 or <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> if <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code> resets all
   6901 the algorithm states to INACTIVE.<wbr/></p>
   6902 <p>The camera device can do several state transitions between two results,<wbr/> if it is
   6903 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
   6904 seen in a result.<wbr/></p>
   6905 <p>The state in the result is the state for this image (in sync with this image): if
   6906 AF state becomes FOCUSED,<wbr/> then the image data associated with this result should
   6907 be sharp.<wbr/></p>
   6908 <p>Below are state transition tables for different AF modes.<wbr/></p>
   6909 <p>When <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> is AF_<wbr/>MODE_<wbr/>OFF or AF_<wbr/>MODE_<wbr/>EDOF:</p>
   6910 <table>
   6911 <thead>
   6912 <tr>
   6913 <th align="center">State</th>
   6914 <th align="center">Transition Cause</th>
   6915 <th align="center">New State</th>
   6916 <th align="center">Notes</th>
   6917 </tr>
   6918 </thead>
   6919 <tbody>
   6920 <tr>
   6921 <td align="center">INACTIVE</td>
   6922 <td align="center"></td>
   6923 <td align="center">INACTIVE</td>
   6924 <td align="center">Never changes</td>
   6925 </tr>
   6926 </tbody>
   6927 </table>
   6928 <p>When <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> is AF_<wbr/>MODE_<wbr/>AUTO or AF_<wbr/>MODE_<wbr/>MACRO:</p>
   6929 <table>
   6930 <thead>
   6931 <tr>
   6932 <th align="center">State</th>
   6933 <th align="center">Transition Cause</th>
   6934 <th align="center">New State</th>
   6935 <th align="center">Notes</th>
   6936 </tr>
   6937 </thead>
   6938 <tbody>
   6939 <tr>
   6940 <td align="center">INACTIVE</td>
   6941 <td align="center">AF_<wbr/>TRIGGER</td>
   6942 <td align="center">ACTIVE_<wbr/>SCAN</td>
   6943 <td align="center">Start AF sweep,<wbr/> Lens now moving</td>
   6944 </tr>
   6945 <tr>
   6946 <td align="center">ACTIVE_<wbr/>SCAN</td>
   6947 <td align="center">AF sweep done</td>
   6948 <td align="center">FOCUSED_<wbr/>LOCKED</td>
   6949 <td align="center">Focused,<wbr/> Lens now locked</td>
   6950 </tr>
   6951 <tr>
   6952 <td align="center">ACTIVE_<wbr/>SCAN</td>
   6953 <td align="center">AF sweep done</td>
   6954 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
   6955 <td align="center">Not focused,<wbr/> Lens now locked</td>
   6956 </tr>
   6957 <tr>
   6958 <td align="center">ACTIVE_<wbr/>SCAN</td>
   6959 <td align="center">AF_<wbr/>CANCEL</td>
   6960 <td align="center">INACTIVE</td>
   6961 <td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td>
   6962 </tr>
   6963 <tr>
   6964 <td align="center">FOCUSED_<wbr/>LOCKED</td>
   6965 <td align="center">AF_<wbr/>CANCEL</td>
   6966 <td align="center">INACTIVE</td>
   6967 <td align="center">Cancel/<wbr/>reset AF</td>
   6968 </tr>
   6969 <tr>
   6970 <td align="center">FOCUSED_<wbr/>LOCKED</td>
   6971 <td align="center">AF_<wbr/>TRIGGER</td>
   6972 <td align="center">ACTIVE_<wbr/>SCAN</td>
   6973 <td align="center">Start new sweep,<wbr/> Lens now moving</td>
   6974 </tr>
   6975 <tr>
   6976 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
   6977 <td align="center">AF_<wbr/>CANCEL</td>
   6978 <td align="center">INACTIVE</td>
   6979 <td align="center">Cancel/<wbr/>reset AF</td>
   6980 </tr>
   6981 <tr>
   6982 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
   6983 <td align="center">AF_<wbr/>TRIGGER</td>
   6984 <td align="center">ACTIVE_<wbr/>SCAN</td>
   6985 <td align="center">Start new sweep,<wbr/> Lens now moving</td>
   6986 </tr>
   6987 <tr>
   6988 <td align="center">Any state</td>
   6989 <td align="center">Mode change</td>
   6990 <td align="center">INACTIVE</td>
   6991 <td align="center"></td>
   6992 </tr>
   6993 </tbody>
   6994 </table>
   6995 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
   6996 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
   6997 can be skipped in that manner is called a transient state.<wbr/></p>
   6998 <p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the
   6999 state transitions listed in above table,<wbr/> it is also legal for the camera device to skip
   7000 one or more transient states between two results.<wbr/> See below table for examples:</p>
   7001 <table>
   7002 <thead>
   7003 <tr>
   7004 <th align="center">State</th>
   7005 <th align="center">Transition Cause</th>
   7006 <th align="center">New State</th>
   7007 <th align="center">Notes</th>
   7008 </tr>
   7009 </thead>
   7010 <tbody>
   7011 <tr>
   7012 <td align="center">INACTIVE</td>
   7013 <td align="center">AF_<wbr/>TRIGGER</td>
   7014 <td align="center">FOCUSED_<wbr/>LOCKED</td>
   7015 <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
   7016 </tr>
   7017 <tr>
   7018 <td align="center">INACTIVE</td>
   7019 <td align="center">AF_<wbr/>TRIGGER</td>
   7020 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
   7021 <td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td>
   7022 </tr>
   7023 <tr>
   7024 <td align="center">FOCUSED_<wbr/>LOCKED</td>
   7025 <td align="center">AF_<wbr/>TRIGGER</td>
   7026 <td align="center">FOCUSED_<wbr/>LOCKED</td>
   7027 <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
   7028 </tr>
   7029 <tr>
   7030 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
   7031 <td align="center">AF_<wbr/>TRIGGER</td>
   7032 <td align="center">FOCUSED_<wbr/>LOCKED</td>
   7033 <td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td>
   7034 </tr>
   7035 </tbody>
   7036 </table>
   7037 <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>
   7038 <table>
   7039 <thead>
   7040 <tr>
   7041 <th align="center">State</th>
   7042 <th align="center">Transition Cause</th>
   7043 <th align="center">New State</th>
   7044 <th align="center">Notes</th>
   7045 </tr>
   7046 </thead>
   7047 <tbody>
   7048 <tr>
   7049 <td align="center">INACTIVE</td>
   7050 <td align="center">Camera device initiates new scan</td>
   7051 <td align="center">PASSIVE_<wbr/>SCAN</td>
   7052 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
   7053 </tr>
   7054 <tr>
   7055 <td align="center">INACTIVE</td>
   7056 <td align="center">AF_<wbr/>TRIGGER</td>
   7057 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
   7058 <td align="center">AF state query,<wbr/> Lens now locked</td>
   7059 </tr>
   7060 <tr>
   7061 <td align="center">PASSIVE_<wbr/>SCAN</td>
   7062 <td align="center">Camera device completes current scan</td>
   7063 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
   7064 <td align="center">End AF scan,<wbr/> Lens now locked</td>
   7065 </tr>
   7066 <tr>
   7067 <td align="center">PASSIVE_<wbr/>SCAN</td>
   7068 <td align="center">Camera device fails current scan</td>
   7069 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
   7070 <td align="center">End AF scan,<wbr/> Lens now locked</td>
   7071 </tr>
   7072 <tr>
   7073 <td align="center">PASSIVE_<wbr/>SCAN</td>
   7074 <td align="center">AF_<wbr/>TRIGGER</td>
   7075 <td align="center">FOCUSED_<wbr/>LOCKED</td>
   7076 <td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td>
   7077 </tr>
   7078 <tr>
   7079 <td align="center">PASSIVE_<wbr/>SCAN</td>
   7080 <td align="center">AF_<wbr/>TRIGGER</td>
   7081 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
   7082 <td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td>
   7083 </tr>
   7084 <tr>
   7085 <td align="center">PASSIVE_<wbr/>SCAN</td>
   7086 <td align="center">AF_<wbr/>CANCEL</td>
   7087 <td align="center">INACTIVE</td>
   7088 <td align="center">Reset lens position,<wbr/> Lens now locked</td>
   7089 </tr>
   7090 <tr>
   7091 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
   7092 <td align="center">Camera device initiates new scan</td>
   7093 <td align="center">PASSIVE_<wbr/>SCAN</td>
   7094 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
   7095 </tr>
   7096 <tr>
   7097 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
   7098 <td align="center">Camera device initiates new scan</td>
   7099 <td align="center">PASSIVE_<wbr/>SCAN</td>
   7100 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
   7101 </tr>
   7102 <tr>
   7103 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
   7104 <td align="center">AF_<wbr/>TRIGGER</td>
   7105 <td align="center">FOCUSED_<wbr/>LOCKED</td>
   7106 <td align="center">Immediate transition,<wbr/> lens now locked</td>
   7107 </tr>
   7108 <tr>
   7109 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
   7110 <td align="center">AF_<wbr/>TRIGGER</td>
   7111 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
   7112 <td align="center">Immediate transition,<wbr/> lens now locked</td>
   7113 </tr>
   7114 <tr>
   7115 <td align="center">FOCUSED_<wbr/>LOCKED</td>
   7116 <td align="center">AF_<wbr/>TRIGGER</td>
   7117 <td align="center">FOCUSED_<wbr/>LOCKED</td>
   7118 <td align="center">No effect</td>
   7119 </tr>
   7120 <tr>
   7121 <td align="center">FOCUSED_<wbr/>LOCKED</td>
   7122 <td align="center">AF_<wbr/>CANCEL</td>
   7123 <td align="center">INACTIVE</td>
   7124 <td align="center">Restart AF scan</td>
   7125 </tr>
   7126 <tr>
   7127 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
   7128 <td align="center">AF_<wbr/>TRIGGER</td>
   7129 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
   7130 <td align="center">No effect</td>
   7131 </tr>
   7132 <tr>
   7133 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
   7134 <td align="center">AF_<wbr/>CANCEL</td>
   7135 <td align="center">INACTIVE</td>
   7136 <td align="center">Restart AF scan</td>
   7137 </tr>
   7138 </tbody>
   7139 </table>
   7140 <p>When <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> is AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>PICTURE:</p>
   7141 <table>
   7142 <thead>
   7143 <tr>
   7144 <th align="center">State</th>
   7145 <th align="center">Transition Cause</th>
   7146 <th align="center">New State</th>
   7147 <th align="center">Notes</th>
   7148 </tr>
   7149 </thead>
   7150 <tbody>
   7151 <tr>
   7152 <td align="center">INACTIVE</td>
   7153 <td align="center">Camera device initiates new scan</td>
   7154 <td align="center">PASSIVE_<wbr/>SCAN</td>
   7155 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
   7156 </tr>
   7157 <tr>
   7158 <td align="center">INACTIVE</td>
   7159 <td align="center">AF_<wbr/>TRIGGER</td>
   7160 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
   7161 <td align="center">AF state query,<wbr/> Lens now locked</td>
   7162 </tr>
   7163 <tr>
   7164 <td align="center">PASSIVE_<wbr/>SCAN</td>
   7165 <td align="center">Camera device completes current scan</td>
   7166 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
   7167 <td align="center">End AF scan,<wbr/> Lens now locked</td>
   7168 </tr>
   7169 <tr>
   7170 <td align="center">PASSIVE_<wbr/>SCAN</td>
   7171 <td align="center">Camera device fails current scan</td>
   7172 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
   7173 <td align="center">End AF scan,<wbr/> Lens now locked</td>
   7174 </tr>
   7175 <tr>
   7176 <td align="center">PASSIVE_<wbr/>SCAN</td>
   7177 <td align="center">AF_<wbr/>TRIGGER</td>
   7178 <td align="center">FOCUSED_<wbr/>LOCKED</td>
   7179 <td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td>
   7180 </tr>
   7181 <tr>
   7182 <td align="center">PASSIVE_<wbr/>SCAN</td>
   7183 <td align="center">AF_<wbr/>TRIGGER</td>
   7184 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
   7185 <td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td>
   7186 </tr>
   7187 <tr>
   7188 <td align="center">PASSIVE_<wbr/>SCAN</td>
   7189 <td align="center">AF_<wbr/>CANCEL</td>
   7190 <td align="center">INACTIVE</td>
   7191 <td align="center">Reset lens position,<wbr/> Lens now locked</td>
   7192 </tr>
   7193 <tr>
   7194 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
   7195 <td align="center">Camera device initiates new scan</td>
   7196 <td align="center">PASSIVE_<wbr/>SCAN</td>
   7197 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
   7198 </tr>
   7199 <tr>
   7200 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
   7201 <td align="center">Camera device initiates new scan</td>
   7202 <td align="center">PASSIVE_<wbr/>SCAN</td>
   7203 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
   7204 </tr>
   7205 <tr>
   7206 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
   7207 <td align="center">AF_<wbr/>TRIGGER</td>
   7208 <td align="center">FOCUSED_<wbr/>LOCKED</td>
   7209 <td align="center">Immediate trans.<wbr/> Lens now locked</td>
   7210 </tr>
   7211 <tr>
   7212 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
   7213 <td align="center">AF_<wbr/>TRIGGER</td>
   7214 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
   7215 <td align="center">Immediate trans.<wbr/> Lens now locked</td>
   7216 </tr>
   7217 <tr>
   7218 <td align="center">FOCUSED_<wbr/>LOCKED</td>
   7219 <td align="center">AF_<wbr/>TRIGGER</td>
   7220 <td align="center">FOCUSED_<wbr/>LOCKED</td>
   7221 <td align="center">No effect</td>
   7222 </tr>
   7223 <tr>
   7224 <td align="center">FOCUSED_<wbr/>LOCKED</td>
   7225 <td align="center">AF_<wbr/>CANCEL</td>
   7226 <td align="center">INACTIVE</td>
   7227 <td align="center">Restart AF scan</td>
   7228 </tr>
   7229 <tr>
   7230 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
   7231 <td align="center">AF_<wbr/>TRIGGER</td>
   7232 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
   7233 <td align="center">No effect</td>
   7234 </tr>
   7235 <tr>
   7236 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
   7237 <td align="center">AF_<wbr/>CANCEL</td>
   7238 <td align="center">INACTIVE</td>
   7239 <td align="center">Restart AF scan</td>
   7240 </tr>
   7241 </tbody>
   7242 </table>
   7243 <p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO
   7244 (AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the
   7245 camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger
   7246 will be evaluated in the context of the new mode in the request.<wbr/>
   7247 See below table for examples:</p>
   7248 <table>
   7249 <thead>
   7250 <tr>
   7251 <th align="center">State</th>
   7252 <th align="center">Transition Cause</th>
   7253 <th align="center">New State</th>
   7254 <th align="center">Notes</th>
   7255 </tr>
   7256 </thead>
   7257 <tbody>
   7258 <tr>
   7259 <td align="center">any state</td>
   7260 <td align="center">CAF--&gt;AUTO mode switch</td>
   7261 <td align="center">INACTIVE</td>
   7262 <td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td>
   7263 </tr>
   7264 <tr>
   7265 <td align="center">any state</td>
   7266 <td align="center">CAF--&gt;AUTO mode switch with AF_<wbr/>TRIGGER</td>
   7267 <td align="center">trigger-reachable states from INACTIVE</td>
   7268 <td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td>
   7269 </tr>
   7270 <tr>
   7271 <td align="center">any state</td>
   7272 <td align="center">AUTO--&gt;CAF mode switch</td>
   7273 <td align="center">passively reachable states from INACTIVE</td>
   7274 <td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td>
   7275 </tr>
   7276 </tbody>
   7277 </table>
   7278             </td>
   7279           </tr>
   7280 
   7281 
   7282           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   7283            <!-- end of entry -->
   7284         
   7285                 
   7286           <tr class="entry" id="dynamic_android.control.afTriggerId">
   7287             <td class="entry_name
   7288                 entry_name_deprecated
   7289              " rowspan="3">
   7290               android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id
   7291             </td>
   7292             <td class="entry_type">
   7293                 <span class="entry_type_name">int32</span>
   7294 
   7295               <span class="entry_type_visibility"> [system]</span>
   7296 
   7297 
   7298 
   7299               <span class="entry_type_deprecated">[deprecated] </span>
   7300 
   7301 
   7302 
   7303             </td> <!-- entry_type -->
   7304 
   7305             <td class="entry_description">
   7306               <p>The ID sent with the latest
   7307 CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p>
   7308             </td>
   7309 
   7310             <td class="entry_units">
   7311             </td>
   7312 
   7313             <td class="entry_range">
   7314               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
   7315             </td>
   7316 
   7317             <td class="entry_tags">
   7318             </td>
   7319 
   7320           </tr>
   7321           <tr class="entries_header">
   7322             <th class="th_details" colspan="5">Details</th>
   7323           </tr>
   7324           <tr class="entry_cont">
   7325             <td class="entry_details" colspan="5">
   7326               <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger
   7327 received yet by HAL.<wbr/> Always updated even if AF algorithm
   7328 ignores the trigger</p>
   7329             </td>
   7330           </tr>
   7331 
   7332 
   7333           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   7334            <!-- end of entry -->
   7335         
   7336                 
   7337           <tr class="entry" id="dynamic_android.control.awbLock">
   7338             <td class="entry_name
   7339              " rowspan="3">
   7340               android.<wbr/>control.<wbr/>awb<wbr/>Lock
   7341             </td>
   7342             <td class="entry_type">
   7343                 <span class="entry_type_name entry_type_name_enum">byte</span>
   7344 
   7345               <span class="entry_type_visibility"> [public as boolean]</span>
   7346 
   7347 
   7348               <span class="entry_type_hwlevel">[legacy] </span>
   7349 
   7350 
   7351 
   7352                 <ul class="entry_type_enum">
   7353                   <li>
   7354                     <span class="entry_type_enum_name">OFF</span>
   7355                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
   7356 algorithm is free to update its parameters if in AUTO
   7357 mode.<wbr/></p></span>
   7358                   </li>
   7359                   <li>
   7360                     <span class="entry_type_enum_name">ON</span>
   7361                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
   7362 algorithm will not update its parameters while the lock
   7363 is active.<wbr/></p></span>
   7364                   </li>
   7365                 </ul>
   7366 
   7367             </td> <!-- entry_type -->
   7368 
   7369             <td class="entry_description">
   7370               <p>Whether auto-white balance (AWB) is currently locked to its
   7371 latest calculated values.<wbr/></p>
   7372             </td>
   7373 
   7374             <td class="entry_units">
   7375             </td>
   7376 
   7377             <td class="entry_range">
   7378             </td>
   7379 
   7380             <td class="entry_tags">
   7381               <ul class="entry_tags">
   7382                   <li><a href="#tag_BC">BC</a></li>
   7383               </ul>
   7384             </td>
   7385 
   7386           </tr>
   7387           <tr class="entries_header">
   7388             <th class="th_details" colspan="5">Details</th>
   7389           </tr>
   7390           <tr class="entry_cont">
   7391             <td class="entry_details" colspan="5">
   7392               <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
   7393 and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
   7394 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
   7395 get locked do not necessarily correspond to the settings that were present in the
   7396 latest capture result received from the camera device,<wbr/> since additional captures
   7397 and AWB updates may have occurred even before the result was sent out.<wbr/> If an
   7398 application is switching between automatic and manual control and wishes to eliminate
   7399 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
   7400 <ol>
   7401 <li>Starting in auto-AWB mode:</li>
   7402 <li>Lock AWB</li>
   7403 <li>Wait for the first result to be output that has the AWB locked</li>
   7404 <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
   7405 <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
   7406 </ol>
   7407 <p>Note that AWB lock is only meaningful when
   7408 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
   7409 AWB is already fixed to a specific setting.<wbr/></p>
   7410 <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
   7411             </td>
   7412           </tr>
   7413 
   7414 
   7415           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   7416            <!-- end of entry -->
   7417         
   7418                 
   7419           <tr class="entry" id="dynamic_android.control.awbMode">
   7420             <td class="entry_name
   7421              " rowspan="3">
   7422               android.<wbr/>control.<wbr/>awb<wbr/>Mode
   7423             </td>
   7424             <td class="entry_type">
   7425                 <span class="entry_type_name entry_type_name_enum">byte</span>
   7426 
   7427               <span class="entry_type_visibility"> [public]</span>
   7428 
   7429 
   7430               <span class="entry_type_hwlevel">[legacy] </span>
   7431 
   7432 
   7433 
   7434                 <ul class="entry_type_enum">
   7435                   <li>
   7436                     <span class="entry_type_enum_name">OFF</span>
   7437                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
   7438 <p>The application-selected color transform matrix
   7439 (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
   7440 (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
   7441 device for manual white balance control.<wbr/></p></span>
   7442                   </li>
   7443                   <li>
   7444                     <span class="entry_type_enum_name">AUTO</span>
   7445                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
   7446 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
   7447 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
   7448 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
   7449 values used by the camera device for the transform and gains
   7450 will be available in the capture result for this request.<wbr/></p></span>
   7451                   </li>
   7452                   <li>
   7453                     <span class="entry_type_enum_name">INCANDESCENT</span>
   7454                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
   7455 the camera device uses incandescent light as the assumed scene
   7456 illumination for white balance.<wbr/></p>
   7457 <p>While the exact white balance transforms are up to the
   7458 camera device,<wbr/> they will approximately match the CIE
   7459 standard illuminant A.<wbr/></p>
   7460 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
   7461 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
   7462 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
   7463 values used by the camera device for the transform and gains
   7464 will be available in the capture result for this request.<wbr/></p></span>
   7465                   </li>
   7466                   <li>
   7467                     <span class="entry_type_enum_name">FLUORESCENT</span>
   7468                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
   7469 the camera device uses fluorescent light as the assumed scene
   7470 illumination for white balance.<wbr/></p>
   7471 <p>While the exact white balance transforms are up to the
   7472 camera device,<wbr/> they will approximately match the CIE
   7473 standard illuminant F2.<wbr/></p>
   7474 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
   7475 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
   7476 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
   7477 values used by the camera device for the transform and gains
   7478 will be available in the capture result for this request.<wbr/></p></span>
   7479                   </li>
   7480                   <li>
   7481                     <span class="entry_type_enum_name">WARM_FLUORESCENT</span>
   7482                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
   7483 the camera device uses warm fluorescent light as the assumed scene
   7484 illumination for white balance.<wbr/></p>
   7485 <p>While the exact white balance transforms are up to the
   7486 camera device,<wbr/> they will approximately match the CIE
   7487 standard illuminant F4.<wbr/></p>
   7488 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
   7489 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
   7490 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
   7491 values used by the camera device for the transform and gains
   7492 will be available in the capture result for this request.<wbr/></p></span>
   7493                   </li>
   7494                   <li>
   7495                     <span class="entry_type_enum_name">DAYLIGHT</span>
   7496                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
   7497 the camera device uses daylight light as the assumed scene
   7498 illumination for white balance.<wbr/></p>
   7499 <p>While the exact white balance transforms are up to the
   7500 camera device,<wbr/> they will approximately match the CIE
   7501 standard illuminant D65.<wbr/></p>
   7502 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
   7503 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
   7504 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
   7505 values used by the camera device for the transform and gains
   7506 will be available in the capture result for this request.<wbr/></p></span>
   7507                   </li>
   7508                   <li>
   7509                     <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span>
   7510                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
   7511 the camera device uses cloudy daylight light as the assumed scene
   7512 illumination for white balance.<wbr/></p>
   7513 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
   7514 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
   7515 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
   7516 values used by the camera device for the transform and gains
   7517 will be available in the capture result for this request.<wbr/></p></span>
   7518                   </li>
   7519                   <li>
   7520                     <span class="entry_type_enum_name">TWILIGHT</span>
   7521                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
   7522 the camera device uses twilight light as the assumed scene
   7523 illumination for white balance.<wbr/></p>
   7524 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
   7525 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
   7526 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
   7527 values used by the camera device for the transform and gains
   7528 will be available in the capture result for this request.<wbr/></p></span>
   7529                   </li>
   7530                   <li>
   7531                     <span class="entry_type_enum_name">SHADE</span>
   7532                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
   7533 the camera device uses shade light as the assumed scene
   7534 illumination for white balance.<wbr/></p>
   7535 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
   7536 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
   7537 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
   7538 values used by the camera device for the transform and gains
   7539 will be available in the capture result for this request.<wbr/></p></span>
   7540                   </li>
   7541                 </ul>
   7542 
   7543             </td> <!-- entry_type -->
   7544 
   7545             <td class="entry_description">
   7546               <p>Whether auto-white balance (AWB) is currently setting the color
   7547 transform fields,<wbr/> and what its illumination target
   7548 is.<wbr/></p>
   7549             </td>
   7550 
   7551             <td class="entry_units">
   7552             </td>
   7553 
   7554             <td class="entry_range">
   7555               <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
   7556             </td>
   7557 
   7558             <td class="entry_tags">
   7559               <ul class="entry_tags">
   7560                   <li><a href="#tag_BC">BC</a></li>
   7561               </ul>
   7562             </td>
   7563 
   7564           </tr>
   7565           <tr class="entries_header">
   7566             <th class="th_details" colspan="5">Details</th>
   7567           </tr>
   7568           <tr class="entry_cont">
   7569             <td class="entry_details" colspan="5">
   7570               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
   7571 <p>When set to the ON mode,<wbr/> the camera device's auto-white balance
   7572 routine is enabled,<wbr/> overriding the application's selected
   7573 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
   7574 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/> Note that when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
   7575 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
   7576 also set AWB mode to OFF or lock AWB by using <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> before
   7577 setting AE mode to OFF.<wbr/></p>
   7578 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
   7579 routine is disabled.<wbr/> The application manually controls the white
   7580 balance by <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>
   7581 and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
   7582 <p>When set to any other modes,<wbr/> the camera device's auto-white
   7583 balance routine is disabled.<wbr/> The camera device uses each
   7584 particular illumination target for white balance
   7585 adjustment.<wbr/> The application's values for
   7586 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
   7587 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
   7588 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
   7589             </td>
   7590           </tr>
   7591 
   7592 
   7593           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   7594            <!-- end of entry -->
   7595         
   7596                 
   7597           <tr class="entry" id="dynamic_android.control.awbRegions">
   7598             <td class="entry_name
   7599              " rowspan="5">
   7600               android.<wbr/>control.<wbr/>awb<wbr/>Regions
   7601             </td>
   7602             <td class="entry_type">
   7603                 <span class="entry_type_name">int32</span>
   7604                 <span class="entry_type_container">x</span>
   7605 
   7606                 <span class="entry_type_array">
   7607                   5 x area_count
   7608                 </span>
   7609               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
   7610 
   7611 
   7612 
   7613 
   7614 
   7615 
   7616             </td> <!-- entry_type -->
   7617 
   7618             <td class="entry_description">
   7619               <p>List of metering areas to use for auto-white-balance illuminant
   7620 estimation.<wbr/></p>
   7621             </td>
   7622 
   7623             <td class="entry_units">
   7624               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
   7625             </td>
   7626 
   7627             <td class="entry_range">
   7628               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
   7629 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
   7630             </td>
   7631 
   7632             <td class="entry_tags">
   7633               <ul class="entry_tags">
   7634                   <li><a href="#tag_BC">BC</a></li>
   7635               </ul>
   7636             </td>
   7637 
   7638           </tr>
   7639           <tr class="entries_header">
   7640             <th class="th_details" colspan="5">Details</th>
   7641           </tr>
   7642           <tr class="entry_cont">
   7643             <td class="entry_details" colspan="5">
   7644               <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
   7645 Otherwise will always be present.<wbr/></p>
   7646 <p>The maximum number of regions supported by the device is determined by the value
   7647 of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
   7648 <p>The coordinate system is based on the active pixel array,<wbr/>
   7649 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
   7650 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
   7651 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
   7652 bottom-right pixel in the active pixel array.<wbr/></p>
   7653 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight
   7654 for every pixel in the area.<wbr/> This means that a large metering area
   7655 with the same weight as a smaller area will have more effect in
   7656 the metering result.<wbr/> Metering areas can partially overlap and the
   7657 camera device will add the weights in the overlap region.<wbr/></p>
   7658 <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
   7659 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
   7660 0 weight is ignored.<wbr/></p>
   7661 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
   7662 camera device.<wbr/></p>
   7663 <p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in
   7664 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
   7665 region and output only the intersection rectangle as the metering region in the result
   7666 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
   7667 not reported in the result metadata.<wbr/></p>
   7668             </td>
   7669           </tr>
   7670 
   7671           <tr class="entries_header">
   7672             <th class="th_details" colspan="5">HAL Implementation Details</th>
   7673           </tr>
   7674           <tr class="entry_cont">
   7675             <td class="entry_details" colspan="5">
   7676               <p>The HAL level representation of MeteringRectangle[] is a
   7677 int[5 * area_<wbr/>count].<wbr/>
   7678 Every five elements represent a metering region of
   7679 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
   7680 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
   7681 exclusive on xmax and ymax.<wbr/></p>
   7682             </td>
   7683           </tr>
   7684 
   7685           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   7686            <!-- end of entry -->
   7687         
   7688                 
   7689           <tr class="entry" id="dynamic_android.control.captureIntent">
   7690             <td class="entry_name
   7691              " rowspan="3">
   7692               android.<wbr/>control.<wbr/>capture<wbr/>Intent
   7693             </td>
   7694             <td class="entry_type">
   7695                 <span class="entry_type_name entry_type_name_enum">byte</span>
   7696 
   7697               <span class="entry_type_visibility"> [public]</span>
   7698 
   7699 
   7700               <span class="entry_type_hwlevel">[legacy] </span>
   7701 
   7702 
   7703 
   7704                 <ul class="entry_type_enum">
   7705                   <li>
   7706                     <span class="entry_type_enum_name">CUSTOM</span>
   7707                     <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
   7708 categories.<wbr/> The camera device will default to preview-like
   7709 behavior.<wbr/></p></span>
   7710                   </li>
   7711                   <li>
   7712                     <span class="entry_type_enum_name">PREVIEW</span>
   7713                     <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
   7714 <p>The precapture trigger may be used to start off a metering
   7715 w/<wbr/>flash sequence.<wbr/></p></span>
   7716                   </li>
   7717                   <li>
   7718                     <span class="entry_type_enum_name">STILL_CAPTURE</span>
   7719                     <span class="entry_type_enum_notes"><p>This request is for a still capture-type
   7720 use case.<wbr/></p>
   7721 <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
   7722                   </li>
   7723                   <li>
   7724                     <span class="entry_type_enum_name">VIDEO_RECORD</span>
   7725                     <span class="entry_type_enum_notes"><p>This request is for a video recording
   7726 use case.<wbr/></p></span>
   7727                   </li>
   7728                   <li>
   7729                     <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span>
   7730                     <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
   7731 image while recording video) use case.<wbr/></p>
   7732 <p>The camera device should take the highest-quality image
   7733 possible (given the other settings) without disrupting the
   7734 frame rate of video recording.<wbr/>  </p></span>
   7735                   </li>
   7736                   <li>
   7737                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
   7738                     <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
   7739 application will stream full-resolution images and
   7740 reprocess one or several later for a final
   7741 capture.<wbr/></p></span>
   7742                   </li>
   7743                   <li>
   7744                     <span class="entry_type_enum_name">MANUAL</span>
   7745                     <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
   7746 the applications want to directly control the capture parameters.<wbr/></p>
   7747 <p>For example,<wbr/> the application may wish to manually control
   7748 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> etc.<wbr/></p></span>
   7749                   </li>
   7750                 </ul>
   7751 
   7752             </td> <!-- entry_type -->
   7753 
   7754             <td class="entry_description">
   7755               <p>Information to the camera device 3A (auto-exposure,<wbr/>
   7756 auto-focus,<wbr/> auto-white balance) routines about the purpose
   7757 of this capture,<wbr/> to help the camera device to decide optimal 3A
   7758 strategy.<wbr/></p>
   7759             </td>
   7760 
   7761             <td class="entry_units">
   7762             </td>
   7763 
   7764             <td class="entry_range">
   7765             </td>
   7766 
   7767             <td class="entry_tags">
   7768               <ul class="entry_tags">
   7769                   <li><a href="#tag_BC">BC</a></li>
   7770               </ul>
   7771             </td>
   7772 
   7773           </tr>
   7774           <tr class="entries_header">
   7775             <th class="th_details" colspan="5">Details</th>
   7776           </tr>
   7777           <tr class="entry_cont">
   7778             <td class="entry_details" colspan="5">
   7779               <p>This control (except for MANUAL) is only effective if
   7780 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
   7781 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
   7782 contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if
   7783 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are
   7784 always supported.<wbr/></p>
   7785             </td>
   7786           </tr>
   7787 
   7788 
   7789           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   7790            <!-- end of entry -->
   7791         
   7792                 
   7793           <tr class="entry" id="dynamic_android.control.awbState">
   7794             <td class="entry_name
   7795              " rowspan="3">
   7796               android.<wbr/>control.<wbr/>awb<wbr/>State
   7797             </td>
   7798             <td class="entry_type">
   7799                 <span class="entry_type_name entry_type_name_enum">byte</span>
   7800 
   7801               <span class="entry_type_visibility"> [public]</span>
   7802 
   7803 
   7804               <span class="entry_type_hwlevel">[limited] </span>
   7805 
   7806 
   7807 
   7808                 <ul class="entry_type_enum">
   7809                   <li>
   7810                     <span class="entry_type_enum_name">INACTIVE</span>
   7811                     <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p>
   7812 <p>When a camera device is opened,<wbr/> it starts in this
   7813 state.<wbr/> This is a transient state,<wbr/> the camera device may
   7814 skip reporting this state in capture
   7815 result.<wbr/></p></span>
   7816                   </li>
   7817                   <li>
   7818                     <span class="entry_type_enum_name">SEARCHING</span>
   7819                     <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control
   7820 values for the current scene.<wbr/></p>
   7821 <p>This is a transient state,<wbr/> the camera device
   7822 may skip reporting this state in capture result.<wbr/></p></span>
   7823                   </li>
   7824                   <li>
   7825                     <span class="entry_type_enum_name">CONVERGED</span>
   7826                     <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the
   7827 current scene.<wbr/></p></span>
   7828                   </li>
   7829                   <li>
   7830                     <span class="entry_type_enum_name">LOCKED</span>
   7831                     <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span>
   7832                   </li>
   7833                 </ul>
   7834 
   7835             </td> <!-- entry_type -->
   7836 
   7837             <td class="entry_description">
   7838               <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p>
   7839             </td>
   7840 
   7841             <td class="entry_units">
   7842             </td>
   7843 
   7844             <td class="entry_range">
   7845             </td>
   7846 
   7847             <td class="entry_tags">
   7848             </td>
   7849 
   7850           </tr>
   7851           <tr class="entries_header">
   7852             <th class="th_details" colspan="5">Details</th>
   7853           </tr>
   7854           <tr class="entry_cont">
   7855             <td class="entry_details" colspan="5">
   7856               <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always
   7857 resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
   7858 or <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> if <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code> resets all
   7859 the algorithm states to INACTIVE.<wbr/></p>
   7860 <p>The camera device can do several state transitions between two results,<wbr/> if it is
   7861 allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in
   7862 a result.<wbr/></p>
   7863 <p>The state in the result is the state for this image (in sync with this image): if
   7864 AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should
   7865 be good to use.<wbr/></p>
   7866 <p>Below are state transition tables for different AWB modes.<wbr/></p>
   7867 <p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p>
   7868 <table>
   7869 <thead>
   7870 <tr>
   7871 <th align="center">State</th>
   7872 <th align="center">Transition Cause</th>
   7873 <th align="center">New State</th>
   7874 <th align="center">Notes</th>
   7875 </tr>
   7876 </thead>
   7877 <tbody>
   7878 <tr>
   7879 <td align="center">INACTIVE</td>
   7880 <td align="center"></td>
   7881 <td align="center">INACTIVE</td>
   7882 <td align="center">Camera device auto white balance algorithm is disabled</td>
   7883 </tr>
   7884 </tbody>
   7885 </table>
   7886 <p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p>
   7887 <table>
   7888 <thead>
   7889 <tr>
   7890 <th align="center">State</th>
   7891 <th align="center">Transition Cause</th>
   7892 <th align="center">New State</th>
   7893 <th align="center">Notes</th>
   7894 </tr>
   7895 </thead>
   7896 <tbody>
   7897 <tr>
   7898 <td align="center">INACTIVE</td>
   7899 <td align="center">Camera device initiates AWB scan</td>
   7900 <td align="center">SEARCHING</td>
   7901 <td align="center">Values changing</td>
   7902 </tr>
   7903 <tr>
   7904 <td align="center">INACTIVE</td>
   7905 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
   7906 <td align="center">LOCKED</td>
   7907 <td align="center">Values locked</td>
   7908 </tr>
   7909 <tr>
   7910 <td align="center">SEARCHING</td>
   7911 <td align="center">Camera device finishes AWB scan</td>
   7912 <td align="center">CONVERGED</td>
   7913 <td align="center">Good values,<wbr/> not changing</td>
   7914 </tr>
   7915 <tr>
   7916 <td align="center">SEARCHING</td>
   7917 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
   7918 <td align="center">LOCKED</td>
   7919 <td align="center">Values locked</td>
   7920 </tr>
   7921 <tr>
   7922 <td align="center">CONVERGED</td>
   7923 <td align="center">Camera device initiates AWB scan</td>
   7924 <td align="center">SEARCHING</td>
   7925 <td align="center">Values changing</td>
   7926 </tr>
   7927 <tr>
   7928 <td align="center">CONVERGED</td>
   7929 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
   7930 <td align="center">LOCKED</td>
   7931 <td align="center">Values locked</td>
   7932 </tr>
   7933 <tr>
   7934 <td align="center">LOCKED</td>
   7935 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
   7936 <td align="center">SEARCHING</td>
   7937 <td align="center">Values not good after unlock</td>
   7938 </tr>
   7939 </tbody>
   7940 </table>
   7941 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
   7942 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
   7943 can be skipped in that manner is called a transient state.<wbr/></p>
   7944 <p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions
   7945 listed in above table,<wbr/> it is also legal for the camera device to skip one or more
   7946 transient states between two results.<wbr/> See below table for examples:</p>
   7947 <table>
   7948 <thead>
   7949 <tr>
   7950 <th align="center">State</th>
   7951 <th align="center">Transition Cause</th>
   7952 <th align="center">New State</th>
   7953 <th align="center">Notes</th>
   7954 </tr>
   7955 </thead>
   7956 <tbody>
   7957 <tr>
   7958 <td align="center">INACTIVE</td>
   7959 <td align="center">Camera device finished AWB scan</td>
   7960 <td align="center">CONVERGED</td>
   7961 <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
   7962 </tr>
   7963 <tr>
   7964 <td align="center">LOCKED</td>
   7965 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
   7966 <td align="center">CONVERGED</td>
   7967 <td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td>
   7968 </tr>
   7969 </tbody>
   7970 </table>
   7971             </td>
   7972           </tr>
   7973 
   7974 
   7975           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   7976            <!-- end of entry -->
   7977         
   7978                 
   7979           <tr class="entry" id="dynamic_android.control.effectMode">
   7980             <td class="entry_name
   7981              " rowspan="3">
   7982               android.<wbr/>control.<wbr/>effect<wbr/>Mode
   7983             </td>
   7984             <td class="entry_type">
   7985                 <span class="entry_type_name entry_type_name_enum">byte</span>
   7986 
   7987               <span class="entry_type_visibility"> [public]</span>
   7988 
   7989 
   7990               <span class="entry_type_hwlevel">[legacy] </span>
   7991 
   7992 
   7993 
   7994                 <ul class="entry_type_enum">
   7995                   <li>
   7996                     <span class="entry_type_enum_name">OFF</span>
   7997                     <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
   7998                   </li>
   7999                   <li>
   8000                     <span class="entry_type_enum_name">MONO</span>
   8001                     <span class="entry_type_enum_optional">[optional]</span>
   8002                     <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
   8003 a single color.<wbr/></p>
   8004 <p>This will typically be grayscale.<wbr/></p></span>
   8005                   </li>
   8006                   <li>
   8007                     <span class="entry_type_enum_name">NEGATIVE</span>
   8008                     <span class="entry_type_enum_optional">[optional]</span>
   8009                     <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
   8010 are inverted.<wbr/></p></span>
   8011                   </li>
   8012                   <li>
   8013                     <span class="entry_type_enum_name">SOLARIZE</span>
   8014                     <span class="entry_type_enum_optional">[optional]</span>
   8015                     <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
   8016 image is wholly or partially reversed in
   8017 tone.<wbr/></p></span>
   8018                   </li>
   8019                   <li>
   8020                     <span class="entry_type_enum_name">SEPIA</span>
   8021                     <span class="entry_type_enum_optional">[optional]</span>
   8022                     <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
   8023 gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
   8024                   </li>
   8025                   <li>
   8026                     <span class="entry_type_enum_name">POSTERIZE</span>
   8027                     <span class="entry_type_enum_optional">[optional]</span>
   8028                     <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
   8029 discrete regions of tone rather than a continuous
   8030 gradient of tones.<wbr/></p></span>
   8031                   </li>
   8032                   <li>
   8033                     <span class="entry_type_enum_name">WHITEBOARD</span>
   8034                     <span class="entry_type_enum_optional">[optional]</span>
   8035                     <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
   8036 as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
   8037                   </li>
   8038                   <li>
   8039                     <span class="entry_type_enum_name">BLACKBOARD</span>
   8040                     <span class="entry_type_enum_optional">[optional]</span>
   8041                     <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
   8042 as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
   8043                   </li>
   8044                   <li>
   8045                     <span class="entry_type_enum_name">AQUA</span>
   8046                     <span class="entry_type_enum_optional">[optional]</span>
   8047                     <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
   8048                   </li>
   8049                 </ul>
   8050 
   8051             </td> <!-- entry_type -->
   8052 
   8053             <td class="entry_description">
   8054               <p>A special color effect to apply.<wbr/></p>
   8055             </td>
   8056 
   8057             <td class="entry_units">
   8058             </td>
   8059 
   8060             <td class="entry_range">
   8061               <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
   8062             </td>
   8063 
   8064             <td class="entry_tags">
   8065               <ul class="entry_tags">
   8066                   <li><a href="#tag_BC">BC</a></li>
   8067               </ul>
   8068             </td>
   8069 
   8070           </tr>
   8071           <tr class="entries_header">
   8072             <th class="th_details" colspan="5">Details</th>
   8073           </tr>
   8074           <tr class="entry_cont">
   8075             <td class="entry_details" colspan="5">
   8076               <p>When this mode is set,<wbr/> a color effect will be applied
   8077 to images produced by the camera device.<wbr/> The interpretation
   8078 and implementation of these color effects is left to the
   8079 implementor of the camera device,<wbr/> and should not be
   8080 depended on to be consistent (or present) across all
   8081 devices.<wbr/></p>
   8082             </td>
   8083           </tr>
   8084 
   8085 
   8086           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   8087            <!-- end of entry -->
   8088         
   8089                 
   8090           <tr class="entry" id="dynamic_android.control.mode">
   8091             <td class="entry_name
   8092              " rowspan="3">
   8093               android.<wbr/>control.<wbr/>mode
   8094             </td>
   8095             <td class="entry_type">
   8096                 <span class="entry_type_name entry_type_name_enum">byte</span>
   8097 
   8098               <span class="entry_type_visibility"> [public]</span>
   8099 
   8100 
   8101               <span class="entry_type_hwlevel">[legacy] </span>
   8102 
   8103 
   8104 
   8105                 <ul class="entry_type_enum">
   8106                   <li>
   8107                     <span class="entry_type_enum_name">OFF</span>
   8108                     <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
   8109 <p>All control by the device's metering and focusing (3A)
   8110 routines is disabled,<wbr/> and no other settings in
   8111 android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
   8112 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
   8113 device to select post-processing values for processing
   8114 blocks that do not allow for manual control,<wbr/> or are not
   8115 exposed by the camera API.<wbr/></p>
   8116 <p>However,<wbr/> the camera device's 3A routines may continue to
   8117 collect statistics and update their internal state so that
   8118 when control is switched to AUTO mode,<wbr/> good control values
   8119 can be immediately applied.<wbr/></p></span>
   8120                   </li>
   8121                   <li>
   8122                     <span class="entry_type_enum_name">AUTO</span>
   8123                     <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
   8124 <p>Manual control of capture parameters is disabled.<wbr/> All
   8125 controls in android.<wbr/>control.<wbr/>* besides sceneMode take
   8126 effect.<wbr/></p></span>
   8127                   </li>
   8128                   <li>
   8129                     <span class="entry_type_enum_name">USE_SCENE_MODE</span>
   8130                     <span class="entry_type_enum_optional">[optional]</span>
   8131                     <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
   8132 <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
   8133 control.<wbr/>afMode controls; the camera device will ignore
   8134 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
   8135 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
   8136 This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
   8137 <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
   8138 contain some modes other than DISABLED).<wbr/></p></span>
   8139                   </li>
   8140                   <li>
   8141                     <span class="entry_type_enum_name">OFF_KEEP_STATE</span>
   8142                     <span class="entry_type_enum_optional">[optional]</span>
   8143                     <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
   8144 used by camera device background auto-exposure,<wbr/> auto-white balance and
   8145 auto-focus algorithms (3A) to update their statistics.<wbr/></p>
   8146 <p>Specifically,<wbr/> the 3A routines are locked to the last
   8147 values set from a request with AUTO,<wbr/> OFF,<wbr/> or
   8148 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
   8149 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
   8150 discarded by the camera device.<wbr/></p></span>
   8151                   </li>
   8152                 </ul>
   8153 
   8154             </td> <!-- entry_type -->
   8155 
   8156             <td class="entry_description">
   8157               <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
   8158 routines.<wbr/></p>
   8159             </td>
   8160 
   8161             <td class="entry_units">
   8162             </td>
   8163 
   8164             <td class="entry_range">
   8165               <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
   8166             </td>
   8167 
   8168             <td class="entry_tags">
   8169               <ul class="entry_tags">
   8170                   <li><a href="#tag_BC">BC</a></li>
   8171               </ul>
   8172             </td>
   8173 
   8174           </tr>
   8175           <tr class="entries_header">
   8176             <th class="th_details" colspan="5">Details</th>
   8177           </tr>
   8178           <tr class="entry_cont">
   8179             <td class="entry_details" colspan="5">
   8180               <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
   8181 by the camera device is disabled.<wbr/> The application must set the fields for
   8182 capture parameters itself.<wbr/></p>
   8183 <p>When set to AUTO,<wbr/> the individual algorithm controls in
   8184 android.<wbr/>control.<wbr/>* are in effect,<wbr/> such as <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>.<wbr/></p>
   8185 <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
   8186 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements
   8187 one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY)
   8188 as it wishes.<wbr/> The camera device scene mode 3A settings are provided by
   8189 <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
   8190 <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
   8191 is that this frame will not be used by camera device background 3A statistics
   8192 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
   8193 where the application doesn't want a 3A manual control capture to affect
   8194 the subsequent auto 3A capture results.<wbr/></p>
   8195             </td>
   8196           </tr>
   8197 
   8198 
   8199           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   8200            <!-- end of entry -->
   8201         
   8202                 
   8203           <tr class="entry" id="dynamic_android.control.sceneMode">
   8204             <td class="entry_name
   8205              " rowspan="5">
   8206               android.<wbr/>control.<wbr/>scene<wbr/>Mode
   8207             </td>
   8208             <td class="entry_type">
   8209                 <span class="entry_type_name entry_type_name_enum">byte</span>
   8210 
   8211               <span class="entry_type_visibility"> [public]</span>
   8212 
   8213 
   8214               <span class="entry_type_hwlevel">[legacy] </span>
   8215 
   8216 
   8217 
   8218                 <ul class="entry_type_enum">
   8219                   <li>
   8220                     <span class="entry_type_enum_name">DISABLED</span>
   8221                     <span class="entry_type_enum_value">0</span>
   8222                     <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
   8223                   </li>
   8224                   <li>
   8225                     <span class="entry_type_enum_name">FACE_PRIORITY</span>
   8226                     <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
   8227 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
   8228 auto-exposure routines.<wbr/></p>
   8229 <p>If face detection statistics are disabled
   8230 (i.<wbr/>e.<wbr/> <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> is set to OFF),<wbr/>
   8231 this should still operate correctly (but will not return
   8232 face detection statistics to the framework).<wbr/></p>
   8233 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
   8234 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>
   8235 remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
   8236                   </li>
   8237                   <li>
   8238                     <span class="entry_type_enum_name">ACTION</span>
   8239                     <span class="entry_type_enum_optional">[optional]</span>
   8240                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
   8241 <p>Similar to SPORTS.<wbr/></p></span>
   8242                   </li>
   8243                   <li>
   8244                     <span class="entry_type_enum_name">PORTRAIT</span>
   8245                     <span class="entry_type_enum_optional">[optional]</span>
   8246                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
   8247                   </li>
   8248                   <li>
   8249                     <span class="entry_type_enum_name">LANDSCAPE</span>
   8250                     <span class="entry_type_enum_optional">[optional]</span>
   8251                     <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
   8252                   </li>
   8253                   <li>
   8254                     <span class="entry_type_enum_name">NIGHT</span>
   8255                     <span class="entry_type_enum_optional">[optional]</span>
   8256                     <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
   8257                   </li>
   8258                   <li>
   8259                     <span class="entry_type_enum_name">NIGHT_PORTRAIT</span>
   8260                     <span class="entry_type_enum_optional">[optional]</span>
   8261                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
   8262 settings.<wbr/></p></span>
   8263                   </li>
   8264                   <li>
   8265                     <span class="entry_type_enum_name">THEATRE</span>
   8266                     <span class="entry_type_enum_optional">[optional]</span>
   8267                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
   8268 remain off.<wbr/></p></span>
   8269                   </li>
   8270                   <li>
   8271                     <span class="entry_type_enum_name">BEACH</span>
   8272                     <span class="entry_type_enum_optional">[optional]</span>
   8273                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
   8274                   </li>
   8275                   <li>
   8276                     <span class="entry_type_enum_name">SNOW</span>
   8277                     <span class="entry_type_enum_optional">[optional]</span>
   8278                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
   8279                   </li>
   8280                   <li>
   8281                     <span class="entry_type_enum_name">SUNSET</span>
   8282                     <span class="entry_type_enum_optional">[optional]</span>
   8283                     <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
   8284                   </li>
   8285                   <li>
   8286                     <span class="entry_type_enum_name">STEADYPHOTO</span>
   8287                     <span class="entry_type_enum_optional">[optional]</span>
   8288                     <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
   8289 device motion (for example: due to hand shake).<wbr/></p></span>
   8290                   </li>
   8291                   <li>
   8292                     <span class="entry_type_enum_name">FIREWORKS</span>
   8293                     <span class="entry_type_enum_optional">[optional]</span>
   8294                     <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
   8295                   </li>
   8296                   <li>
   8297                     <span class="entry_type_enum_name">SPORTS</span>
   8298                     <span class="entry_type_enum_optional">[optional]</span>
   8299                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
   8300 <p>Similar to ACTION.<wbr/></p></span>
   8301                   </li>
   8302                   <li>
   8303                     <span class="entry_type_enum_name">PARTY</span>
   8304                     <span class="entry_type_enum_optional">[optional]</span>
   8305                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
   8306 people.<wbr/></p></span>
   8307                   </li>
   8308                   <li>
   8309                     <span class="entry_type_enum_name">CANDLELIGHT</span>
   8310                     <span class="entry_type_enum_optional">[optional]</span>
   8311                     <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
   8312 is a flame.<wbr/></p></span>
   8313                   </li>
   8314                   <li>
   8315                     <span class="entry_type_enum_name">BARCODE</span>
   8316                     <span class="entry_type_enum_optional">[optional]</span>
   8317                     <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
   8318 for use by camera applications that wish to read the
   8319 barcode value.<wbr/></p></span>
   8320                   </li>
   8321                   <li>
   8322                     <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span>
   8323                     <span class="entry_type_enum_deprecated">[deprecated]</span>
   8324                     <span class="entry_type_enum_optional">[optional]</span>
   8325                     <span class="entry_type_enum_notes"><p>This is deprecated,<wbr/> please use <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
   8326 and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
   8327 for high speed video recording.<wbr/></p>
   8328 <p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
   8329 <p>The supported high speed video sizes and fps ranges are specified in
   8330 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
   8331 output frame rates,<wbr/> the application is only allowed to select video size
   8332 and fps range combinations listed in this static metadata.<wbr/> The fps range
   8333 can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
   8334 <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
   8335 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
   8336 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
   8337 and post-processing parameters is possible.<wbr/> All other controls operate the
   8338 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
   8339 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
   8340 <ul>
   8341 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
   8342 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
   8343 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
   8344 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
   8345 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
   8346 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
   8347 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
   8348 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
   8349 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
   8350 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
   8351 </ul>
   8352 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
   8353 <ul>
   8354 <li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (automatic flash for still capture will not work since aeMode is ON)</li>
   8355 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
   8356 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
   8357 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
   8358 </ul>
   8359 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
   8360 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
   8361 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
   8362 the application need check if the video encoder is capable of supporting the
   8363 high frame rate for a given video size,<wbr/> or it will end up with lower recording
   8364 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
   8365 rate will be bounded by the screen refresh rate.<wbr/></p>
   8366 <p>The camera device will only support up to 2 output high speed streams
   8367 (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
   8368 in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
   8369 <ul>
   8370 <li>The application created no more than maxNumHighSpeedStreams processed non-stalling
   8371 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
   8372 min(2,<wbr/> <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>[Processed (but not-stalling)]).<wbr/></li>
   8373 <li>The stream sizes are selected from the sizes reported by
   8374 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
   8375 <li>No processed non-stalling or raw streams are configured.<wbr/></li>
   8376 </ul>
   8377 <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
   8378 <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> will be ignored by the camera device,<wbr/>
   8379 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
   8380 and the returned capture result metadata will give the fps range choosen
   8381 by the camera device.<wbr/></p>
   8382 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
   8383 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
   8384 the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
   8385                   </li>
   8386                   <li>
   8387                     <span class="entry_type_enum_name">HDR</span>
   8388                     <span class="entry_type_enum_optional">[optional]</span>
   8389                     <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
   8390 <p>In this scene mode,<wbr/> the camera device captures images
   8391 that keep a larger range of scene illumination levels
   8392 visible in the final image.<wbr/> For example,<wbr/> when taking a
   8393 picture of a object in front of a bright window,<wbr/> both
   8394 the object and the scene through the window may be
   8395 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
   8396 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
   8397 HDR mode generally takes much longer to capture a single
   8398 image,<wbr/> has no user control,<wbr/> and may have other artifacts
   8399 depending on the HDR method used.<wbr/></p>
   8400 <p>Therefore,<wbr/> HDR captures operate at a much slower rate
   8401 than regular captures.<wbr/></p>
   8402 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
   8403 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
   8404 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
   8405 using a high dynamic range capture technique.<wbr/>  On LEGACY
   8406 devices,<wbr/> captures that target a JPEG-format output will
   8407 be captured with HDR,<wbr/> and the capture intent is not
   8408 relevant.<wbr/></p>
   8409 <p>The HDR capture may involve the device capturing a burst
   8410 of images internally and combining them into one,<wbr/> or it
   8411 may involve the device using specialized high dynamic
   8412 range capture hardware.<wbr/> In all cases,<wbr/> a single image is
   8413 produced in response to a capture request submitted
   8414 while in HDR mode.<wbr/></p>
   8415 <p>Since substantial post-processing is generally needed to
   8416 produce an HDR image,<wbr/> only YUV and JPEG outputs are
   8417 supported for LIMITED/<wbr/>FULL device HDR captures,<wbr/> and only
   8418 JPEG outputs are supported for LEGACY HDR
   8419 captures.<wbr/> Using a RAW output for HDR capture is not
   8420 supported.<wbr/></p></span>
   8421                   </li>
   8422                   <li>
   8423                     <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span>
   8424                     <span class="entry_type_enum_optional">[optional]</span>
   8425                     <span class="entry_type_enum_hidden">[hidden]</span>
   8426                     <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
   8427 device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
   8428 under low light conditions.<wbr/></p>
   8429 <p>The camera device may be tuned to expose the images in a reduced
   8430 sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
   8431 if the <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> gives range of [100,<wbr/> 1600],<wbr/>
   8432 the camera device auto-exposure routine tuning process may limit the actual
   8433 exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
   8434 exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
   8435 low light may be under-exposed when the sensor max exposure time (bounded by the
   8436 <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of the
   8437 ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
   8438 camera device auto-exposure routine to increase the sensitivity up to the max
   8439 sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too
   8440 dark and the max exposure time is reached.<wbr/> The captured images may be noisier
   8441 compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
   8442 recommended that the application only use this scene mode when it is capable of
   8443 reducing the noise level of the captured images.<wbr/></p>
   8444 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
   8445 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>
   8446 remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
   8447                   </li>
   8448                 </ul>
   8449 
   8450             </td> <!-- entry_type -->
   8451 
   8452             <td class="entry_description">
   8453               <p>Control for which scene mode is currently active.<wbr/></p>
   8454             </td>
   8455 
   8456             <td class="entry_units">
   8457             </td>
   8458 
   8459             <td class="entry_range">
   8460               <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
   8461             </td>
   8462 
   8463             <td class="entry_tags">
   8464               <ul class="entry_tags">
   8465                   <li><a href="#tag_BC">BC</a></li>
   8466               </ul>
   8467             </td>
   8468 
   8469           </tr>
   8470           <tr class="entries_header">
   8471             <th class="th_details" colspan="5">Details</th>
   8472           </tr>
   8473           <tr class="entry_cont">
   8474             <td class="entry_details" colspan="5">
   8475               <p>Scene modes are custom camera modes optimized for a certain set of conditions and
   8476 capture settings.<wbr/></p>
   8477 <p>This is the mode that that is active when
   8478 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code>.<wbr/> Aside from FACE_<wbr/>PRIORITY,<wbr/> these modes will
   8479 disable <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>
   8480 while in use.<wbr/></p>
   8481 <p>The interpretation and implementation of these scene modes is left
   8482 to the implementor of the camera device.<wbr/> Their behavior will not be
   8483 consistent across all devices,<wbr/> and any given device may only implement
   8484 a subset of these modes.<wbr/></p>
   8485             </td>
   8486           </tr>
   8487 
   8488           <tr class="entries_header">
   8489             <th class="th_details" colspan="5">HAL Implementation Details</th>
   8490           </tr>
   8491           <tr class="entry_cont">
   8492             <td class="entry_details" colspan="5">
   8493               <p>HAL implementations that include scene modes are expected to provide
   8494 the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
   8495 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> in
   8496 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
   8497 <p>For HIGH_<wbr/>SPEED_<wbr/>VIDEO mode,<wbr/> if it is included in <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>,<wbr/>
   8498 the HAL must list supported video size and fps range in
   8499 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> For a given size,<wbr/> e.<wbr/>g.<wbr/>
   8500 1280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming
   8501 mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture
   8502 requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/>
   8503 This mode is deprecated in HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
   8504 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a> and CONSTRAINED_<wbr/>HIGH_<wbr/>SPEED_<wbr/>VIDEO
   8505 capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
   8506             </td>
   8507           </tr>
   8508 
   8509           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   8510            <!-- end of entry -->
   8511         
   8512                 
   8513           <tr class="entry" id="dynamic_android.control.videoStabilizationMode">
   8514             <td class="entry_name
   8515              " rowspan="3">
   8516               android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
   8517             </td>
   8518             <td class="entry_type">
   8519                 <span class="entry_type_name entry_type_name_enum">byte</span>
   8520 
   8521               <span class="entry_type_visibility"> [public]</span>
   8522 
   8523 
   8524               <span class="entry_type_hwlevel">[legacy] </span>
   8525 
   8526 
   8527 
   8528                 <ul class="entry_type_enum">
   8529                   <li>
   8530                     <span class="entry_type_enum_name">OFF</span>
   8531                     <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
   8532                   </li>
   8533                   <li>
   8534                     <span class="entry_type_enum_name">ON</span>
   8535                     <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
   8536                   </li>
   8537                 </ul>
   8538 
   8539             </td> <!-- entry_type -->
   8540 
   8541             <td class="entry_description">
   8542               <p>Whether video stabilization is
   8543 active.<wbr/></p>
   8544             </td>
   8545 
   8546             <td class="entry_units">
   8547             </td>
   8548 
   8549             <td class="entry_range">
   8550             </td>
   8551 
   8552             <td class="entry_tags">
   8553               <ul class="entry_tags">
   8554                   <li><a href="#tag_BC">BC</a></li>
   8555               </ul>
   8556             </td>
   8557 
   8558           </tr>
   8559           <tr class="entries_header">
   8560             <th class="th_details" colspan="5">Details</th>
   8561           </tr>
   8562           <tr class="entry_cont">
   8563             <td class="entry_details" colspan="5">
   8564               <p>Video stabilization automatically translates and scales images from
   8565 the camera in order to stabilize motion between consecutive frames.<wbr/></p>
   8566 <p>If enabled,<wbr/> video stabilization can modify the
   8567 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
   8568 <p>Switching between different video stabilization modes may take several
   8569 frames to initialize,<wbr/> the camera device will report the current mode
   8570 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
   8571 the video stabilization modes in the first several capture results may
   8572 still be "OFF",<wbr/> and it will become "ON" when the initialization is
   8573 done.<wbr/></p>
   8574 <p>If a camera device supports both this mode and OIS
   8575 (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
   8576 produce undesirable interaction,<wbr/> so it is recommended not to enable
   8577 both at the same time.<wbr/></p>
   8578             </td>
   8579           </tr>
   8580 
   8581 
   8582           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   8583            <!-- end of entry -->
   8584         
   8585         
   8586 
   8587       <!-- end of kind -->
   8588       </tbody>
   8589 
   8590   <!-- end of section -->
   8591   <tr><td colspan="6" id="section_demosaic" class="section">demosaic</td></tr>
   8592 
   8593 
   8594       <tr><td colspan="6" class="kind">controls</td></tr>
   8595 
   8596       <thead class="entries_header">
   8597         <tr>
   8598           <th class="th_name">Property Name</th>
   8599           <th class="th_type">Type</th>
   8600           <th class="th_description">Description</th>
   8601           <th class="th_units">Units</th>
   8602           <th class="th_range">Range</th>
   8603           <th class="th_tags">Tags</th>
   8604         </tr>
   8605       </thead>
   8606 
   8607       <tbody>
   8608 
   8609         
   8610 
   8611         
   8612 
   8613         
   8614 
   8615         
   8616 
   8617                 
   8618           <tr class="entry" id="controls_android.demosaic.mode">
   8619             <td class="entry_name
   8620              " rowspan="1">
   8621               android.<wbr/>demosaic.<wbr/>mode
   8622             </td>
   8623             <td class="entry_type">
   8624                 <span class="entry_type_name entry_type_name_enum">byte</span>
   8625 
   8626               <span class="entry_type_visibility"> [system]</span>
   8627 
   8628 
   8629 
   8630 
   8631 
   8632                 <ul class="entry_type_enum">
   8633                   <li>
   8634                     <span class="entry_type_enum_name">FAST</span>
   8635                     <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to
   8636 Bayer RAW output.<wbr/></p></span>
   8637                   </li>
   8638                   <li>
   8639                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
   8640                     <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down
   8641 relative to raw output.<wbr/></p></span>
   8642                   </li>
   8643                 </ul>
   8644 
   8645             </td> <!-- entry_type -->
   8646 
   8647             <td class="entry_description">
   8648               <p>Controls the quality of the demosaicing
   8649 processing.<wbr/></p>
   8650             </td>
   8651 
   8652             <td class="entry_units">
   8653             </td>
   8654 
   8655             <td class="entry_range">
   8656             </td>
   8657 
   8658             <td class="entry_tags">
   8659               <ul class="entry_tags">
   8660                   <li><a href="#tag_FUTURE">FUTURE</a></li>
   8661               </ul>
   8662             </td>
   8663 
   8664           </tr>
   8665 
   8666 
   8667           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   8668            <!-- end of entry -->
   8669         
   8670         
   8671 
   8672       <!-- end of kind -->
   8673       </tbody>
   8674 
   8675   <!-- end of section -->
   8676   <tr><td colspan="6" id="section_edge" class="section">edge</td></tr>
   8677 
   8678 
   8679       <tr><td colspan="6" class="kind">controls</td></tr>
   8680 
   8681       <thead class="entries_header">
   8682         <tr>
   8683           <th class="th_name">Property Name</th>
   8684           <th class="th_type">Type</th>
   8685           <th class="th_description">Description</th>
   8686           <th class="th_units">Units</th>
   8687           <th class="th_range">Range</th>
   8688           <th class="th_tags">Tags</th>
   8689         </tr>
   8690       </thead>
   8691 
   8692       <tbody>
   8693 
   8694         
   8695 
   8696         
   8697 
   8698         
   8699 
   8700         
   8701 
   8702                 
   8703           <tr class="entry" id="controls_android.edge.mode">
   8704             <td class="entry_name
   8705              " rowspan="5">
   8706               android.<wbr/>edge.<wbr/>mode
   8707             </td>
   8708             <td class="entry_type">
   8709                 <span class="entry_type_name entry_type_name_enum">byte</span>
   8710 
   8711               <span class="entry_type_visibility"> [public]</span>
   8712 
   8713 
   8714               <span class="entry_type_hwlevel">[full] </span>
   8715 
   8716 
   8717 
   8718                 <ul class="entry_type_enum">
   8719                   <li>
   8720                     <span class="entry_type_enum_name">OFF</span>
   8721                     <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
   8722                   </li>
   8723                   <li>
   8724                     <span class="entry_type_enum_name">FAST</span>
   8725                     <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
   8726 relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
   8727 slow down frame rate relative to sensor.<wbr/></p></span>
   8728                   </li>
   8729                   <li>
   8730                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
   8731                     <span class="entry_type_enum_notes"><p>Apply high-quality edge enhancement,<wbr/> at a cost of possibly reduced output frame rate.<wbr/></p></span>
   8732                   </li>
   8733                   <li>
   8734                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
   8735                     <span class="entry_type_enum_optional">[optional]</span>
   8736                     <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different levels for different output streams,<wbr/>
   8737 based on resolution.<wbr/> Streams at maximum recording resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) or below have
   8738 edge enhancement applied,<wbr/> while higher-resolution streams have no edge enhancement
   8739 applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned so that
   8740 frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST (since it
   8741 is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
   8742 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
   8743 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
   8744 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
   8745 produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
   8746 high-resolution buffers must not have edge enhancement applied to maximize efficiency of
   8747 preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
   8748 buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
   8749 reasonable preview quality.<wbr/></p>
   8750 <p>This mode is guaranteed to be supported by devices that support either the
   8751 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
   8752 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
   8753 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
   8754                   </li>
   8755                 </ul>
   8756 
   8757             </td> <!-- entry_type -->
   8758 
   8759             <td class="entry_description">
   8760               <p>Operation mode for edge
   8761 enhancement.<wbr/></p>
   8762             </td>
   8763 
   8764             <td class="entry_units">
   8765             </td>
   8766 
   8767             <td class="entry_range">
   8768               <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
   8769             </td>
   8770 
   8771             <td class="entry_tags">
   8772               <ul class="entry_tags">
   8773                   <li><a href="#tag_V1">V1</a></li>
   8774                   <li><a href="#tag_REPROC">REPROC</a></li>
   8775               </ul>
   8776             </td>
   8777 
   8778           </tr>
   8779           <tr class="entries_header">
   8780             <th class="th_details" colspan="5">Details</th>
   8781           </tr>
   8782           <tr class="entry_cont">
   8783             <td class="entry_details" colspan="5">
   8784               <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
   8785 no enhancement will be applied by the camera device.<wbr/></p>
   8786 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
   8787 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
   8788 camera device will use the highest-quality enhancement algorithms,<wbr/>
   8789 even if it slows down capture rate.<wbr/> FAST means the camera device will
   8790 not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
   8791 edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
   8792 amount of enhancement applied.<wbr/></p>
   8793 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
   8794 buffer of high-resolution images during preview and reprocess image(s) from that buffer
   8795 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
   8796 edge enhancement to low-resolution streams (below maximum recording resolution) to
   8797 maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
   8798 since those will be reprocessed later if necessary.<wbr/></p>
   8799 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
   8800 device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
   8801 The camera device may adjust its internal edge enhancement parameters for best
   8802 image quality based on the <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a>,<wbr/> if it is set.<wbr/></p>
   8803             </td>
   8804           </tr>
   8805 
   8806           <tr class="entries_header">
   8807             <th class="th_details" colspan="5">HAL Implementation Details</th>
   8808           </tr>
   8809           <tr class="entry_cont">
   8810             <td class="entry_details" colspan="5">
   8811               <p>For YUV_<wbr/>REPROCESSING The HAL can use <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> to
   8812 adjust the internal edge enhancement reduction parameters appropriately to get the best
   8813 quality images.<wbr/></p>
   8814             </td>
   8815           </tr>
   8816 
   8817           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   8818            <!-- end of entry -->
   8819         
   8820                 
   8821           <tr class="entry" id="controls_android.edge.strength">
   8822             <td class="entry_name
   8823              " rowspan="1">
   8824               android.<wbr/>edge.<wbr/>strength
   8825             </td>
   8826             <td class="entry_type">
   8827                 <span class="entry_type_name">byte</span>
   8828 
   8829               <span class="entry_type_visibility"> [system]</span>
   8830 
   8831 
   8832 
   8833 
   8834 
   8835 
   8836             </td> <!-- entry_type -->
   8837 
   8838             <td class="entry_description">
   8839               <p>Control the amount of edge enhancement
   8840 applied to the images</p>
   8841             </td>
   8842 
   8843             <td class="entry_units">
   8844               1-10; 10 is maximum sharpening
   8845             </td>
   8846 
   8847             <td class="entry_range">
   8848             </td>
   8849 
   8850             <td class="entry_tags">
   8851               <ul class="entry_tags">
   8852                   <li><a href="#tag_FUTURE">FUTURE</a></li>
   8853               </ul>
   8854             </td>
   8855 
   8856           </tr>
   8857 
   8858 
   8859           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   8860            <!-- end of entry -->
   8861         
   8862         
   8863 
   8864       <!-- end of kind -->
   8865       </tbody>
   8866       <tr><td colspan="6" class="kind">static</td></tr>
   8867 
   8868       <thead class="entries_header">
   8869         <tr>
   8870           <th class="th_name">Property Name</th>
   8871           <th class="th_type">Type</th>
   8872           <th class="th_description">Description</th>
   8873           <th class="th_units">Units</th>
   8874           <th class="th_range">Range</th>
   8875           <th class="th_tags">Tags</th>
   8876         </tr>
   8877       </thead>
   8878 
   8879       <tbody>
   8880 
   8881         
   8882 
   8883         
   8884 
   8885         
   8886 
   8887         
   8888 
   8889                 
   8890           <tr class="entry" id="static_android.edge.availableEdgeModes">
   8891             <td class="entry_name
   8892              " rowspan="5">
   8893               android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes
   8894             </td>
   8895             <td class="entry_type">
   8896                 <span class="entry_type_name">byte</span>
   8897                 <span class="entry_type_container">x</span>
   8898 
   8899                 <span class="entry_type_array">
   8900                   n
   8901                 </span>
   8902               <span class="entry_type_visibility"> [public as enumList]</span>
   8903 
   8904 
   8905               <span class="entry_type_hwlevel">[full] </span>
   8906 
   8907 
   8908                 <div class="entry_type_notes">list of enums</div>
   8909 
   8910 
   8911             </td> <!-- entry_type -->
   8912 
   8913             <td class="entry_description">
   8914               <p>List of edge enhancement modes for <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> that are supported by this camera
   8915 device.<wbr/></p>
   8916             </td>
   8917 
   8918             <td class="entry_units">
   8919             </td>
   8920 
   8921             <td class="entry_range">
   8922               <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p>
   8923             </td>
   8924 
   8925             <td class="entry_tags">
   8926               <ul class="entry_tags">
   8927                   <li><a href="#tag_V1">V1</a></li>
   8928                   <li><a href="#tag_REPROC">REPROC</a></li>
   8929               </ul>
   8930             </td>
   8931 
   8932           </tr>
   8933           <tr class="entries_header">
   8934             <th class="th_details" colspan="5">Details</th>
   8935           </tr>
   8936           <tr class="entry_cont">
   8937             <td class="entry_details" colspan="5">
   8938               <p>Full-capability camera devices must always support OFF; camera devices that support
   8939 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will
   8940 list FAST.<wbr/></p>
   8941             </td>
   8942           </tr>
   8943 
   8944           <tr class="entries_header">
   8945             <th class="th_details" colspan="5">HAL Implementation Details</th>
   8946           </tr>
   8947           <tr class="entry_cont">
   8948             <td class="entry_details" colspan="5">
   8949               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available
   8950 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
   8951 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
   8952 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
   8953             </td>
   8954           </tr>
   8955 
   8956           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   8957            <!-- end of entry -->
   8958         
   8959         
   8960 
   8961       <!-- end of kind -->
   8962       </tbody>
   8963       <tr><td colspan="6" class="kind">dynamic</td></tr>
   8964 
   8965       <thead class="entries_header">
   8966         <tr>
   8967           <th class="th_name">Property Name</th>
   8968           <th class="th_type">Type</th>
   8969           <th class="th_description">Description</th>
   8970           <th class="th_units">Units</th>
   8971           <th class="th_range">Range</th>
   8972           <th class="th_tags">Tags</th>
   8973         </tr>
   8974       </thead>
   8975 
   8976       <tbody>
   8977 
   8978         
   8979 
   8980         
   8981 
   8982         
   8983 
   8984         
   8985 
   8986                 
   8987           <tr class="entry" id="dynamic_android.edge.mode">
   8988             <td class="entry_name
   8989              " rowspan="5">
   8990               android.<wbr/>edge.<wbr/>mode
   8991             </td>
   8992             <td class="entry_type">
   8993                 <span class="entry_type_name entry_type_name_enum">byte</span>
   8994 
   8995               <span class="entry_type_visibility"> [public]</span>
   8996 
   8997 
   8998               <span class="entry_type_hwlevel">[full] </span>
   8999 
   9000 
   9001 
   9002                 <ul class="entry_type_enum">
   9003                   <li>
   9004                     <span class="entry_type_enum_name">OFF</span>
   9005                     <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
   9006                   </li>
   9007                   <li>
   9008                     <span class="entry_type_enum_name">FAST</span>
   9009                     <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
   9010 relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
   9011 slow down frame rate relative to sensor.<wbr/></p></span>
   9012                   </li>
   9013                   <li>
   9014                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
   9015                     <span class="entry_type_enum_notes"><p>Apply high-quality edge enhancement,<wbr/> at a cost of possibly reduced output frame rate.<wbr/></p></span>
   9016                   </li>
   9017                   <li>
   9018                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
   9019                     <span class="entry_type_enum_optional">[optional]</span>
   9020                     <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different levels for different output streams,<wbr/>
   9021 based on resolution.<wbr/> Streams at maximum recording resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) or below have
   9022 edge enhancement applied,<wbr/> while higher-resolution streams have no edge enhancement
   9023 applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned so that
   9024 frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST (since it
   9025 is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
   9026 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
   9027 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
   9028 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
   9029 produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
   9030 high-resolution buffers must not have edge enhancement applied to maximize efficiency of
   9031 preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
   9032 buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
   9033 reasonable preview quality.<wbr/></p>
   9034 <p>This mode is guaranteed to be supported by devices that support either the
   9035 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
   9036 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
   9037 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
   9038                   </li>
   9039                 </ul>
   9040 
   9041             </td> <!-- entry_type -->
   9042 
   9043             <td class="entry_description">
   9044               <p>Operation mode for edge
   9045 enhancement.<wbr/></p>
   9046             </td>
   9047 
   9048             <td class="entry_units">
   9049             </td>
   9050 
   9051             <td class="entry_range">
   9052               <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
   9053             </td>
   9054 
   9055             <td class="entry_tags">
   9056               <ul class="entry_tags">
   9057                   <li><a href="#tag_V1">V1</a></li>
   9058                   <li><a href="#tag_REPROC">REPROC</a></li>
   9059               </ul>
   9060             </td>
   9061 
   9062           </tr>
   9063           <tr class="entries_header">
   9064             <th class="th_details" colspan="5">Details</th>
   9065           </tr>
   9066           <tr class="entry_cont">
   9067             <td class="entry_details" colspan="5">
   9068               <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
   9069 no enhancement will be applied by the camera device.<wbr/></p>
   9070 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
   9071 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
   9072 camera device will use the highest-quality enhancement algorithms,<wbr/>
   9073 even if it slows down capture rate.<wbr/> FAST means the camera device will
   9074 not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
   9075 edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
   9076 amount of enhancement applied.<wbr/></p>
   9077 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
   9078 buffer of high-resolution images during preview and reprocess image(s) from that buffer
   9079 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
   9080 edge enhancement to low-resolution streams (below maximum recording resolution) to
   9081 maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
   9082 since those will be reprocessed later if necessary.<wbr/></p>
   9083 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
   9084 device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
   9085 The camera device may adjust its internal edge enhancement parameters for best
   9086 image quality based on the <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a>,<wbr/> if it is set.<wbr/></p>
   9087             </td>
   9088           </tr>
   9089 
   9090           <tr class="entries_header">
   9091             <th class="th_details" colspan="5">HAL Implementation Details</th>
   9092           </tr>
   9093           <tr class="entry_cont">
   9094             <td class="entry_details" colspan="5">
   9095               <p>For YUV_<wbr/>REPROCESSING The HAL can use <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> to
   9096 adjust the internal edge enhancement reduction parameters appropriately to get the best
   9097 quality images.<wbr/></p>
   9098             </td>
   9099           </tr>
   9100 
   9101           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   9102            <!-- end of entry -->
   9103         
   9104         
   9105 
   9106       <!-- end of kind -->
   9107       </tbody>
   9108 
   9109   <!-- end of section -->
   9110   <tr><td colspan="6" id="section_flash" class="section">flash</td></tr>
   9111 
   9112 
   9113       <tr><td colspan="6" class="kind">controls</td></tr>
   9114 
   9115       <thead class="entries_header">
   9116         <tr>
   9117           <th class="th_name">Property Name</th>
   9118           <th class="th_type">Type</th>
   9119           <th class="th_description">Description</th>
   9120           <th class="th_units">Units</th>
   9121           <th class="th_range">Range</th>
   9122           <th class="th_tags">Tags</th>
   9123         </tr>
   9124       </thead>
   9125 
   9126       <tbody>
   9127 
   9128         
   9129 
   9130         
   9131 
   9132         
   9133 
   9134         
   9135 
   9136                 
   9137           <tr class="entry" id="controls_android.flash.firingPower">
   9138             <td class="entry_name
   9139              " rowspan="3">
   9140               android.<wbr/>flash.<wbr/>firing<wbr/>Power
   9141             </td>
   9142             <td class="entry_type">
   9143                 <span class="entry_type_name">byte</span>
   9144 
   9145               <span class="entry_type_visibility"> [system]</span>
   9146 
   9147 
   9148 
   9149 
   9150 
   9151 
   9152             </td> <!-- entry_type -->
   9153 
   9154             <td class="entry_description">
   9155               <p>Power for flash firing/<wbr/>torch</p>
   9156             </td>
   9157 
   9158             <td class="entry_units">
   9159               10 is max power; 0 is no flash.<wbr/> Linear
   9160             </td>
   9161 
   9162             <td class="entry_range">
   9163               <p>0 - 10</p>
   9164             </td>
   9165 
   9166             <td class="entry_tags">
   9167               <ul class="entry_tags">
   9168                   <li><a href="#tag_FUTURE">FUTURE</a></li>
   9169               </ul>
   9170             </td>
   9171 
   9172           </tr>
   9173           <tr class="entries_header">
   9174             <th class="th_details" colspan="5">Details</th>
   9175           </tr>
   9176           <tr class="entry_cont">
   9177             <td class="entry_details" colspan="5">
   9178               <p>Power for snapshot may use a different scale than
   9179 for torch mode.<wbr/> Only one entry for torch mode will be
   9180 used</p>
   9181             </td>
   9182           </tr>
   9183 
   9184 
   9185           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   9186            <!-- end of entry -->
   9187         
   9188                 
   9189           <tr class="entry" id="controls_android.flash.firingTime">
   9190             <td class="entry_name
   9191              " rowspan="3">
   9192               android.<wbr/>flash.<wbr/>firing<wbr/>Time
   9193             </td>
   9194             <td class="entry_type">
   9195                 <span class="entry_type_name">int64</span>
   9196 
   9197               <span class="entry_type_visibility"> [system]</span>
   9198 
   9199 
   9200 
   9201 
   9202 
   9203 
   9204             </td> <!-- entry_type -->
   9205 
   9206             <td class="entry_description">
   9207               <p>Firing time of flash relative to start of
   9208 exposure</p>
   9209             </td>
   9210 
   9211             <td class="entry_units">
   9212               nanoseconds
   9213             </td>
   9214 
   9215             <td class="entry_range">
   9216               <p>0-(exposure time-flash duration)</p>
   9217             </td>
   9218 
   9219             <td class="entry_tags">
   9220               <ul class="entry_tags">
   9221                   <li><a href="#tag_FUTURE">FUTURE</a></li>
   9222               </ul>
   9223             </td>
   9224 
   9225           </tr>
   9226           <tr class="entries_header">
   9227             <th class="th_details" colspan="5">Details</th>
   9228           </tr>
   9229           <tr class="entry_cont">
   9230             <td class="entry_details" colspan="5">
   9231               <p>Clamped to (0,<wbr/> exposure time - flash
   9232 duration).<wbr/></p>
   9233             </td>
   9234           </tr>
   9235 
   9236 
   9237           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   9238            <!-- end of entry -->
   9239         
   9240                 
   9241           <tr class="entry" id="controls_android.flash.mode">
   9242             <td class="entry_name
   9243              " rowspan="3">
   9244               android.<wbr/>flash.<wbr/>mode
   9245             </td>
   9246             <td class="entry_type">
   9247                 <span class="entry_type_name entry_type_name_enum">byte</span>
   9248 
   9249               <span class="entry_type_visibility"> [public]</span>
   9250 
   9251 
   9252               <span class="entry_type_hwlevel">[legacy] </span>
   9253 
   9254 
   9255 
   9256                 <ul class="entry_type_enum">
   9257                   <li>
   9258                     <span class="entry_type_enum_name">OFF</span>
   9259                     <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
   9260                   </li>
   9261                   <li>
   9262                     <span class="entry_type_enum_name">SINGLE</span>
   9263                     <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
   9264 for this capture.<wbr/></p></span>
   9265                   </li>
   9266                   <li>
   9267                     <span class="entry_type_enum_name">TORCH</span>
   9268                     <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
   9269                   </li>
   9270                 </ul>
   9271 
   9272             </td> <!-- entry_type -->
   9273 
   9274             <td class="entry_description">
   9275               <p>The desired mode for for the camera device's flash control.<wbr/></p>
   9276             </td>
   9277 
   9278             <td class="entry_units">
   9279             </td>
   9280 
   9281             <td class="entry_range">
   9282             </td>
   9283 
   9284             <td class="entry_tags">
   9285               <ul class="entry_tags">
   9286                   <li><a href="#tag_BC">BC</a></li>
   9287               </ul>
   9288             </td>
   9289 
   9290           </tr>
   9291           <tr class="entries_header">
   9292             <th class="th_details" colspan="5">Details</th>
   9293           </tr>
   9294           <tr class="entry_cont">
   9295             <td class="entry_details" colspan="5">
   9296               <p>This control is only effective when flash unit is available
   9297 (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
   9298 <p>When this control is used,<wbr/> the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> must be set to ON or OFF.<wbr/>
   9299 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
   9300 ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
   9301 <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
   9302 <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
   9303 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
   9304 control should be used along with auto-exposure (AE) precapture metering sequence
   9305 (<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>),<wbr/> otherwise,<wbr/> the image may be incorrectly exposed.<wbr/></p>
   9306 <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
   9307 for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
   9308 <p>The flash status will be reported by <a href="#dynamic_android.flash.state">android.<wbr/>flash.<wbr/>state</a> in the capture result metadata.<wbr/></p>
   9309             </td>
   9310           </tr>
   9311 
   9312 
   9313           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   9314            <!-- end of entry -->
   9315         
   9316         
   9317 
   9318       <!-- end of kind -->
   9319       </tbody>
   9320       <tr><td colspan="6" class="kind">static</td></tr>
   9321 
   9322       <thead class="entries_header">
   9323         <tr>
   9324           <th class="th_name">Property Name</th>
   9325           <th class="th_type">Type</th>
   9326           <th class="th_description">Description</th>
   9327           <th class="th_units">Units</th>
   9328           <th class="th_range">Range</th>
   9329           <th class="th_tags">Tags</th>
   9330         </tr>
   9331       </thead>
   9332 
   9333       <tbody>
   9334 
   9335         
   9336 
   9337         
   9338 
   9339         
   9340 
   9341         
   9342                 
   9343             
   9344 
   9345                 
   9346           <tr class="entry" id="static_android.flash.info.available">
   9347             <td class="entry_name
   9348              " rowspan="3">
   9349               android.<wbr/>flash.<wbr/>info.<wbr/>available
   9350             </td>
   9351             <td class="entry_type">
   9352                 <span class="entry_type_name entry_type_name_enum">byte</span>
   9353 
   9354               <span class="entry_type_visibility"> [public as boolean]</span>
   9355 
   9356 
   9357               <span class="entry_type_hwlevel">[legacy] </span>
   9358 
   9359 
   9360 
   9361                 <ul class="entry_type_enum">
   9362                   <li>
   9363                     <span class="entry_type_enum_name">FALSE</span>
   9364                   </li>
   9365                   <li>
   9366                     <span class="entry_type_enum_name">TRUE</span>
   9367                   </li>
   9368                 </ul>
   9369 
   9370             </td> <!-- entry_type -->
   9371 
   9372             <td class="entry_description">
   9373               <p>Whether this camera device has a
   9374 flash unit.<wbr/></p>
   9375             </td>
   9376 
   9377             <td class="entry_units">
   9378             </td>
   9379 
   9380             <td class="entry_range">
   9381             </td>
   9382 
   9383             <td class="entry_tags">
   9384               <ul class="entry_tags">
   9385                   <li><a href="#tag_BC">BC</a></li>
   9386               </ul>
   9387             </td>
   9388 
   9389           </tr>
   9390           <tr class="entries_header">
   9391             <th class="th_details" colspan="5">Details</th>
   9392           </tr>
   9393           <tr class="entry_cont">
   9394             <td class="entry_details" colspan="5">
   9395               <p>Will be <code>false</code> if no flash is available.<wbr/></p>
   9396 <p>If there is no flash unit,<wbr/> none of the flash controls do
   9397 anything.<wbr/></p>
   9398             </td>
   9399           </tr>
   9400 
   9401 
   9402           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   9403            <!-- end of entry -->
   9404         
   9405                 
   9406           <tr class="entry" id="static_android.flash.info.chargeDuration">
   9407             <td class="entry_name
   9408              " rowspan="3">
   9409               android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration
   9410             </td>
   9411             <td class="entry_type">
   9412                 <span class="entry_type_name">int64</span>
   9413 
   9414               <span class="entry_type_visibility"> [system]</span>
   9415 
   9416 
   9417 
   9418 
   9419 
   9420 
   9421             </td> <!-- entry_type -->
   9422 
   9423             <td class="entry_description">
   9424               <p>Time taken before flash can fire
   9425 again</p>
   9426             </td>
   9427 
   9428             <td class="entry_units">
   9429               nanoseconds
   9430             </td>
   9431 
   9432             <td class="entry_range">
   9433               <p>0-1e9</p>
   9434             </td>
   9435 
   9436             <td class="entry_tags">
   9437               <ul class="entry_tags">
   9438                   <li><a href="#tag_FUTURE">FUTURE</a></li>
   9439               </ul>
   9440             </td>
   9441 
   9442           </tr>
   9443           <tr class="entries_header">
   9444             <th class="th_details" colspan="5">Details</th>
   9445           </tr>
   9446           <tr class="entry_cont">
   9447             <td class="entry_details" colspan="5">
   9448               <p>1 second too long/<wbr/>too short for recharge? Should
   9449 this be power-dependent?</p>
   9450             </td>
   9451           </tr>
   9452 
   9453 
   9454           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   9455            <!-- end of entry -->
   9456         
   9457         
   9458         
   9459 
   9460                 
   9461           <tr class="entry" id="static_android.flash.colorTemperature">
   9462             <td class="entry_name
   9463              " rowspan="1">
   9464               android.<wbr/>flash.<wbr/>color<wbr/>Temperature
   9465             </td>
   9466             <td class="entry_type">
   9467                 <span class="entry_type_name">byte</span>
   9468 
   9469               <span class="entry_type_visibility"> [system]</span>
   9470 
   9471 
   9472 
   9473 
   9474 
   9475 
   9476             </td> <!-- entry_type -->
   9477 
   9478             <td class="entry_description">
   9479               <p>The x,<wbr/>y whitepoint of the
   9480 flash</p>
   9481             </td>
   9482 
   9483             <td class="entry_units">
   9484               pair of floats
   9485             </td>
   9486 
   9487             <td class="entry_range">
   9488               <p>0-1 for both</p>
   9489             </td>
   9490 
   9491             <td class="entry_tags">
   9492               <ul class="entry_tags">
   9493                   <li><a href="#tag_FUTURE">FUTURE</a></li>
   9494               </ul>
   9495             </td>
   9496 
   9497           </tr>
   9498 
   9499 
   9500           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   9501            <!-- end of entry -->
   9502         
   9503                 
   9504           <tr class="entry" id="static_android.flash.maxEnergy">
   9505             <td class="entry_name
   9506              " rowspan="1">
   9507               android.<wbr/>flash.<wbr/>max<wbr/>Energy
   9508             </td>
   9509             <td class="entry_type">
   9510                 <span class="entry_type_name">byte</span>
   9511 
   9512               <span class="entry_type_visibility"> [system]</span>
   9513 
   9514 
   9515 
   9516 
   9517 
   9518 
   9519             </td> <!-- entry_type -->
   9520 
   9521             <td class="entry_description">
   9522               <p>Max energy output of the flash for a full
   9523 power single flash</p>
   9524             </td>
   9525 
   9526             <td class="entry_units">
   9527               lumen-seconds
   9528             </td>
   9529 
   9530             <td class="entry_range">
   9531               <p>&gt;= 0</p>
   9532             </td>
   9533 
   9534             <td class="entry_tags">
   9535               <ul class="entry_tags">
   9536                   <li><a href="#tag_FUTURE">FUTURE</a></li>
   9537               </ul>
   9538             </td>
   9539 
   9540           </tr>
   9541 
   9542 
   9543           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   9544            <!-- end of entry -->
   9545         
   9546         
   9547 
   9548       <!-- end of kind -->
   9549       </tbody>
   9550       <tr><td colspan="6" class="kind">dynamic</td></tr>
   9551 
   9552       <thead class="entries_header">
   9553         <tr>
   9554           <th class="th_name">Property Name</th>
   9555           <th class="th_type">Type</th>
   9556           <th class="th_description">Description</th>
   9557           <th class="th_units">Units</th>
   9558           <th class="th_range">Range</th>
   9559           <th class="th_tags">Tags</th>
   9560         </tr>
   9561       </thead>
   9562 
   9563       <tbody>
   9564 
   9565         
   9566 
   9567         
   9568 
   9569         
   9570 
   9571         
   9572 
   9573                 
   9574           <tr class="entry" id="dynamic_android.flash.firingPower">
   9575             <td class="entry_name
   9576              " rowspan="3">
   9577               android.<wbr/>flash.<wbr/>firing<wbr/>Power
   9578             </td>
   9579             <td class="entry_type">
   9580                 <span class="entry_type_name">byte</span>
   9581 
   9582               <span class="entry_type_visibility"> [system]</span>
   9583 
   9584 
   9585 
   9586 
   9587 
   9588 
   9589             </td> <!-- entry_type -->
   9590 
   9591             <td class="entry_description">
   9592               <p>Power for flash firing/<wbr/>torch</p>
   9593             </td>
   9594 
   9595             <td class="entry_units">
   9596               10 is max power; 0 is no flash.<wbr/> Linear
   9597             </td>
   9598 
   9599             <td class="entry_range">
   9600               <p>0 - 10</p>
   9601             </td>
   9602 
   9603             <td class="entry_tags">
   9604               <ul class="entry_tags">
   9605                   <li><a href="#tag_FUTURE">FUTURE</a></li>
   9606               </ul>
   9607             </td>
   9608 
   9609           </tr>
   9610           <tr class="entries_header">
   9611             <th class="th_details" colspan="5">Details</th>
   9612           </tr>
   9613           <tr class="entry_cont">
   9614             <td class="entry_details" colspan="5">
   9615               <p>Power for snapshot may use a different scale than
   9616 for torch mode.<wbr/> Only one entry for torch mode will be
   9617 used</p>
   9618             </td>
   9619           </tr>
   9620 
   9621 
   9622           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   9623            <!-- end of entry -->
   9624         
   9625                 
   9626           <tr class="entry" id="dynamic_android.flash.firingTime">
   9627             <td class="entry_name
   9628              " rowspan="3">
   9629               android.<wbr/>flash.<wbr/>firing<wbr/>Time
   9630             </td>
   9631             <td class="entry_type">
   9632                 <span class="entry_type_name">int64</span>
   9633 
   9634               <span class="entry_type_visibility"> [system]</span>
   9635 
   9636 
   9637 
   9638 
   9639 
   9640 
   9641             </td> <!-- entry_type -->
   9642 
   9643             <td class="entry_description">
   9644               <p>Firing time of flash relative to start of
   9645 exposure</p>
   9646             </td>
   9647 
   9648             <td class="entry_units">
   9649               nanoseconds
   9650             </td>
   9651 
   9652             <td class="entry_range">
   9653               <p>0-(exposure time-flash duration)</p>
   9654             </td>
   9655 
   9656             <td class="entry_tags">
   9657               <ul class="entry_tags">
   9658                   <li><a href="#tag_FUTURE">FUTURE</a></li>
   9659               </ul>
   9660             </td>
   9661 
   9662           </tr>
   9663           <tr class="entries_header">
   9664             <th class="th_details" colspan="5">Details</th>
   9665           </tr>
   9666           <tr class="entry_cont">
   9667             <td class="entry_details" colspan="5">
   9668               <p>Clamped to (0,<wbr/> exposure time - flash
   9669 duration).<wbr/></p>
   9670             </td>
   9671           </tr>
   9672 
   9673 
   9674           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   9675            <!-- end of entry -->
   9676         
   9677                 
   9678           <tr class="entry" id="dynamic_android.flash.mode">
   9679             <td class="entry_name
   9680              " rowspan="3">
   9681               android.<wbr/>flash.<wbr/>mode
   9682             </td>
   9683             <td class="entry_type">
   9684                 <span class="entry_type_name entry_type_name_enum">byte</span>
   9685 
   9686               <span class="entry_type_visibility"> [public]</span>
   9687 
   9688 
   9689               <span class="entry_type_hwlevel">[legacy] </span>
   9690 
   9691 
   9692 
   9693                 <ul class="entry_type_enum">
   9694                   <li>
   9695                     <span class="entry_type_enum_name">OFF</span>
   9696                     <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
   9697                   </li>
   9698                   <li>
   9699                     <span class="entry_type_enum_name">SINGLE</span>
   9700                     <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
   9701 for this capture.<wbr/></p></span>
   9702                   </li>
   9703                   <li>
   9704                     <span class="entry_type_enum_name">TORCH</span>
   9705                     <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
   9706                   </li>
   9707                 </ul>
   9708 
   9709             </td> <!-- entry_type -->
   9710 
   9711             <td class="entry_description">
   9712               <p>The desired mode for for the camera device's flash control.<wbr/></p>
   9713             </td>
   9714 
   9715             <td class="entry_units">
   9716             </td>
   9717 
   9718             <td class="entry_range">
   9719             </td>
   9720 
   9721             <td class="entry_tags">
   9722               <ul class="entry_tags">
   9723                   <li><a href="#tag_BC">BC</a></li>
   9724               </ul>
   9725             </td>
   9726 
   9727           </tr>
   9728           <tr class="entries_header">
   9729             <th class="th_details" colspan="5">Details</th>
   9730           </tr>
   9731           <tr class="entry_cont">
   9732             <td class="entry_details" colspan="5">
   9733               <p>This control is only effective when flash unit is available
   9734 (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
   9735 <p>When this control is used,<wbr/> the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> must be set to ON or OFF.<wbr/>
   9736 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
   9737 ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
   9738 <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
   9739 <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
   9740 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
   9741 control should be used along with auto-exposure (AE) precapture metering sequence
   9742 (<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>),<wbr/> otherwise,<wbr/> the image may be incorrectly exposed.<wbr/></p>
   9743 <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
   9744 for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
   9745 <p>The flash status will be reported by <a href="#dynamic_android.flash.state">android.<wbr/>flash.<wbr/>state</a> in the capture result metadata.<wbr/></p>
   9746             </td>
   9747           </tr>
   9748 
   9749 
   9750           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   9751            <!-- end of entry -->
   9752         
   9753                 
   9754           <tr class="entry" id="dynamic_android.flash.state">
   9755             <td class="entry_name
   9756              " rowspan="3">
   9757               android.<wbr/>flash.<wbr/>state
   9758             </td>
   9759             <td class="entry_type">
   9760                 <span class="entry_type_name entry_type_name_enum">byte</span>
   9761 
   9762               <span class="entry_type_visibility"> [public]</span>
   9763 
   9764 
   9765               <span class="entry_type_hwlevel">[limited] </span>
   9766 
   9767 
   9768 
   9769                 <ul class="entry_type_enum">
   9770                   <li>
   9771                     <span class="entry_type_enum_name">UNAVAILABLE</span>
   9772                     <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span>
   9773                   </li>
   9774                   <li>
   9775                     <span class="entry_type_enum_name">CHARGING</span>
   9776                     <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span>
   9777                   </li>
   9778                   <li>
   9779                     <span class="entry_type_enum_name">READY</span>
   9780                     <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span>
   9781                   </li>
   9782                   <li>
   9783                     <span class="entry_type_enum_name">FIRED</span>
   9784                     <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span>
   9785                   </li>
   9786                   <li>
   9787                     <span class="entry_type_enum_name">PARTIAL</span>
   9788                     <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p>
   9789 <p>This is usually due to the next or previous frame having
   9790 the flash fire,<wbr/> and the flash spilling into this capture
   9791 due to hardware limitations.<wbr/></p></span>
   9792                   </li>
   9793                 </ul>
   9794 
   9795             </td> <!-- entry_type -->
   9796 
   9797             <td class="entry_description">
   9798               <p>Current state of the flash
   9799 unit.<wbr/></p>
   9800             </td>
   9801 
   9802             <td class="entry_units">
   9803             </td>
   9804 
   9805             <td class="entry_range">
   9806             </td>
   9807 
   9808             <td class="entry_tags">
   9809             </td>
   9810 
   9811           </tr>
   9812           <tr class="entries_header">
   9813             <th class="th_details" colspan="5">Details</th>
   9814           </tr>
   9815           <tr class="entry_cont">
   9816             <td class="entry_details" colspan="5">
   9817               <p>When the camera device doesn't have flash unit
   9818 (i.<wbr/>e.<wbr/> <code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == false</code>),<wbr/> this state will always be UNAVAILABLE.<wbr/>
   9819 Other states indicate the current flash status.<wbr/></p>
   9820 <p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p>
   9821 <ul>
   9822 <li>Flash-less cameras always return UNAVAILABLE.<wbr/></li>
   9823 <li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH
   9824    will always return FIRED.<wbr/></li>
   9825 <li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH
   9826    will always return FIRED.<wbr/></li>
   9827 </ul>
   9828 <p>In all other conditions the state will not be available on
   9829 LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p>
   9830             </td>
   9831           </tr>
   9832 
   9833 
   9834           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   9835            <!-- end of entry -->
   9836         
   9837         
   9838 
   9839       <!-- end of kind -->
   9840       </tbody>
   9841 
   9842   <!-- end of section -->
   9843   <tr><td colspan="6" id="section_hotPixel" class="section">hotPixel</td></tr>
   9844 
   9845 
   9846       <tr><td colspan="6" class="kind">controls</td></tr>
   9847 
   9848       <thead class="entries_header">
   9849         <tr>
   9850           <th class="th_name">Property Name</th>
   9851           <th class="th_type">Type</th>
   9852           <th class="th_description">Description</th>
   9853           <th class="th_units">Units</th>
   9854           <th class="th_range">Range</th>
   9855           <th class="th_tags">Tags</th>
   9856         </tr>
   9857       </thead>
   9858 
   9859       <tbody>
   9860 
   9861         
   9862 
   9863         
   9864 
   9865         
   9866 
   9867         
   9868 
   9869                 
   9870           <tr class="entry" id="controls_android.hotPixel.mode">
   9871             <td class="entry_name
   9872              " rowspan="3">
   9873               android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
   9874             </td>
   9875             <td class="entry_type">
   9876                 <span class="entry_type_name entry_type_name_enum">byte</span>
   9877 
   9878               <span class="entry_type_visibility"> [public]</span>
   9879 
   9880 
   9881 
   9882 
   9883 
   9884                 <ul class="entry_type_enum">
   9885                   <li>
   9886                     <span class="entry_type_enum_name">OFF</span>
   9887                     <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
   9888 <p>The frame rate must not be reduced relative to sensor raw output
   9889 for this option.<wbr/></p>
   9890 <p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span>
   9891                   </li>
   9892                   <li>
   9893                     <span class="entry_type_enum_name">FAST</span>
   9894                     <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
   9895 rate relative to sensor raw output.<wbr/></p>
   9896 <p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span>
   9897                   </li>
   9898                   <li>
   9899                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
   9900                     <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
   9901 of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
   9902 <p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span>
   9903                   </li>
   9904                 </ul>
   9905 
   9906             </td> <!-- entry_type -->
   9907 
   9908             <td class="entry_description">
   9909               <p>Operational mode for hot pixel correction.<wbr/></p>
   9910             </td>
   9911 
   9912             <td class="entry_units">
   9913             </td>
   9914 
   9915             <td class="entry_range">
   9916               <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
   9917             </td>
   9918 
   9919             <td class="entry_tags">
   9920               <ul class="entry_tags">
   9921                   <li><a href="#tag_V1">V1</a></li>
   9922                   <li><a href="#tag_RAW">RAW</a></li>
   9923               </ul>
   9924             </td>
   9925 
   9926           </tr>
   9927           <tr class="entries_header">
   9928             <th class="th_details" colspan="5">Details</th>
   9929           </tr>
   9930           <tr class="entry_cont">
   9931             <td class="entry_details" colspan="5">
   9932               <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
   9933 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
   9934 are stuck at an arbitrary value or are oversensitive).<wbr/></p>
   9935             </td>
   9936           </tr>
   9937 
   9938 
   9939           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   9940            <!-- end of entry -->
   9941         
   9942         
   9943 
   9944       <!-- end of kind -->
   9945       </tbody>
   9946       <tr><td colspan="6" class="kind">static</td></tr>
   9947 
   9948       <thead class="entries_header">
   9949         <tr>
   9950           <th class="th_name">Property Name</th>
   9951           <th class="th_type">Type</th>
   9952           <th class="th_description">Description</th>
   9953           <th class="th_units">Units</th>
   9954           <th class="th_range">Range</th>
   9955           <th class="th_tags">Tags</th>
   9956         </tr>
   9957       </thead>
   9958 
   9959       <tbody>
   9960 
   9961         
   9962 
   9963         
   9964 
   9965         
   9966 
   9967         
   9968 
   9969                 
   9970           <tr class="entry" id="static_android.hotPixel.availableHotPixelModes">
   9971             <td class="entry_name
   9972              " rowspan="5">
   9973               android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes
   9974             </td>
   9975             <td class="entry_type">
   9976                 <span class="entry_type_name">byte</span>
   9977                 <span class="entry_type_container">x</span>
   9978 
   9979                 <span class="entry_type_array">
   9980                   n
   9981                 </span>
   9982               <span class="entry_type_visibility"> [public as enumList]</span>
   9983 
   9984 
   9985 
   9986 
   9987                 <div class="entry_type_notes">list of enums</div>
   9988 
   9989 
   9990             </td> <!-- entry_type -->
   9991 
   9992             <td class="entry_description">
   9993               <p>List of hot pixel correction modes for <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a> that are supported by this
   9994 camera device.<wbr/></p>
   9995             </td>
   9996 
   9997             <td class="entry_units">
   9998             </td>
   9999 
   10000             <td class="entry_range">
   10001               <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p>
   10002             </td>
   10003 
   10004             <td class="entry_tags">
   10005               <ul class="entry_tags">
   10006                   <li><a href="#tag_V1">V1</a></li>
   10007                   <li><a href="#tag_RAW">RAW</a></li>
   10008               </ul>
   10009             </td>
   10010 
   10011           </tr>
   10012           <tr class="entries_header">
   10013             <th class="th_details" colspan="5">Details</th>
   10014           </tr>
   10015           <tr class="entry_cont">
   10016             <td class="entry_details" colspan="5">
   10017               <p>FULL mode camera devices will always support FAST.<wbr/></p>
   10018             </td>
   10019           </tr>
   10020 
   10021           <tr class="entries_header">
   10022             <th class="th_details" colspan="5">HAL Implementation Details</th>
   10023           </tr>
   10024           <tr class="entry_cont">
   10025             <td class="entry_details" colspan="5">
   10026               <p>To avoid performance issues,<wbr/> there will be significantly fewer hot
   10027 pixels than actual pixels on the camera sensor.<wbr/>
   10028 HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available
   10029 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
   10030 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
   10031 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
   10032             </td>
   10033           </tr>
   10034 
   10035           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   10036            <!-- end of entry -->
   10037         
   10038         
   10039 
   10040       <!-- end of kind -->
   10041       </tbody>
   10042       <tr><td colspan="6" class="kind">dynamic</td></tr>
   10043 
   10044       <thead class="entries_header">
   10045         <tr>
   10046           <th class="th_name">Property Name</th>
   10047           <th class="th_type">Type</th>
   10048           <th class="th_description">Description</th>
   10049           <th class="th_units">Units</th>
   10050           <th class="th_range">Range</th>
   10051           <th class="th_tags">Tags</th>
   10052         </tr>
   10053       </thead>
   10054 
   10055       <tbody>
   10056 
   10057         
   10058 
   10059         
   10060 
   10061         
   10062 
   10063         
   10064 
   10065                 
   10066           <tr class="entry" id="dynamic_android.hotPixel.mode">
   10067             <td class="entry_name
   10068              " rowspan="3">
   10069               android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
   10070             </td>
   10071             <td class="entry_type">
   10072                 <span class="entry_type_name entry_type_name_enum">byte</span>
   10073 
   10074               <span class="entry_type_visibility"> [public]</span>
   10075 
   10076 
   10077 
   10078 
   10079 
   10080                 <ul class="entry_type_enum">
   10081                   <li>
   10082                     <span class="entry_type_enum_name">OFF</span>
   10083                     <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
   10084 <p>The frame rate must not be reduced relative to sensor raw output
   10085 for this option.<wbr/></p>
   10086 <p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span>
   10087                   </li>
   10088                   <li>
   10089                     <span class="entry_type_enum_name">FAST</span>
   10090                     <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
   10091 rate relative to sensor raw output.<wbr/></p>
   10092 <p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span>
   10093                   </li>
   10094                   <li>
   10095                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
   10096                     <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
   10097 of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
   10098 <p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span>
   10099                   </li>
   10100                 </ul>
   10101 
   10102             </td> <!-- entry_type -->
   10103 
   10104             <td class="entry_description">
   10105               <p>Operational mode for hot pixel correction.<wbr/></p>
   10106             </td>
   10107 
   10108             <td class="entry_units">
   10109             </td>
   10110 
   10111             <td class="entry_range">
   10112               <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
   10113             </td>
   10114 
   10115             <td class="entry_tags">
   10116               <ul class="entry_tags">
   10117                   <li><a href="#tag_V1">V1</a></li>
   10118                   <li><a href="#tag_RAW">RAW</a></li>
   10119               </ul>
   10120             </td>
   10121 
   10122           </tr>
   10123           <tr class="entries_header">
   10124             <th class="th_details" colspan="5">Details</th>
   10125           </tr>
   10126           <tr class="entry_cont">
   10127             <td class="entry_details" colspan="5">
   10128               <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
   10129 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
   10130 are stuck at an arbitrary value or are oversensitive).<wbr/></p>
   10131             </td>
   10132           </tr>
   10133 
   10134 
   10135           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   10136            <!-- end of entry -->
   10137         
   10138         
   10139 
   10140       <!-- end of kind -->
   10141       </tbody>
   10142 
   10143   <!-- end of section -->
   10144   <tr><td colspan="6" id="section_jpeg" class="section">jpeg</td></tr>
   10145 
   10146 
   10147       <tr><td colspan="6" class="kind">controls</td></tr>
   10148 
   10149       <thead class="entries_header">
   10150         <tr>
   10151           <th class="th_name">Property Name</th>
   10152           <th class="th_type">Type</th>
   10153           <th class="th_description">Description</th>
   10154           <th class="th_units">Units</th>
   10155           <th class="th_range">Range</th>
   10156           <th class="th_tags">Tags</th>
   10157         </tr>
   10158       </thead>
   10159 
   10160       <tbody>
   10161 
   10162         
   10163 
   10164         
   10165 
   10166         
   10167 
   10168         
   10169 
   10170                 
   10171           <tr class="entry" id="controls_android.jpeg.gpsLocation">
   10172             <td class="entry_name
   10173              " rowspan="3">
   10174               android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
   10175             </td>
   10176             <td class="entry_type">
   10177                 <span class="entry_type_name">byte</span>
   10178 
   10179               <span class="entry_type_visibility"> [public as location]</span>
   10180 
   10181               <span class="entry_type_synthetic">[synthetic] </span>
   10182 
   10183               <span class="entry_type_hwlevel">[legacy] </span>
   10184 
   10185 
   10186 
   10187 
   10188             </td> <!-- entry_type -->
   10189 
   10190             <td class="entry_description">
   10191               <p>A location object to use when generating image GPS metadata.<wbr/></p>
   10192             </td>
   10193 
   10194             <td class="entry_units">
   10195             </td>
   10196 
   10197             <td class="entry_range">
   10198             </td>
   10199 
   10200             <td class="entry_tags">
   10201             </td>
   10202 
   10203           </tr>
   10204           <tr class="entries_header">
   10205             <th class="th_details" colspan="5">Details</th>
   10206           </tr>
   10207           <tr class="entry_cont">
   10208             <td class="entry_details" colspan="5">
   10209               <p>Setting a location object in a request will include the GPS coordinates of the location
   10210 into any JPEG images captured based on the request.<wbr/> These coordinates can then be
   10211 viewed by anyone who receives the JPEG image.<wbr/></p>
   10212             </td>
   10213           </tr>
   10214 
   10215 
   10216           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   10217            <!-- end of entry -->
   10218         
   10219                 
   10220           <tr class="entry" id="controls_android.jpeg.gpsCoordinates">
   10221             <td class="entry_name
   10222              " rowspan="1">
   10223               android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
   10224             </td>
   10225             <td class="entry_type">
   10226                 <span class="entry_type_name">double</span>
   10227                 <span class="entry_type_container">x</span>
   10228 
   10229                 <span class="entry_type_array">
   10230                   3
   10231                 </span>
   10232               <span class="entry_type_visibility"> [hidden]</span>
   10233 
   10234 
   10235               <span class="entry_type_hwlevel">[legacy] </span>
   10236 
   10237 
   10238                 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
   10239 
   10240 
   10241             </td> <!-- entry_type -->
   10242 
   10243             <td class="entry_description">
   10244               <p>GPS coordinates to include in output JPEG
   10245 EXIF.<wbr/></p>
   10246             </td>
   10247 
   10248             <td class="entry_units">
   10249             </td>
   10250 
   10251             <td class="entry_range">
   10252               <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
   10253             </td>
   10254 
   10255             <td class="entry_tags">
   10256               <ul class="entry_tags">
   10257                   <li><a href="#tag_BC">BC</a></li>
   10258               </ul>
   10259             </td>
   10260 
   10261           </tr>
   10262 
   10263 
   10264           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   10265            <!-- end of entry -->
   10266         
   10267                 
   10268           <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod">
   10269             <td class="entry_name
   10270              " rowspan="1">
   10271               android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
   10272             </td>
   10273             <td class="entry_type">
   10274                 <span class="entry_type_name">byte</span>
   10275 
   10276               <span class="entry_type_visibility"> [hidden as string]</span>
   10277 
   10278 
   10279               <span class="entry_type_hwlevel">[legacy] </span>
   10280 
   10281 
   10282 
   10283 
   10284             </td> <!-- entry_type -->
   10285 
   10286             <td class="entry_description">
   10287               <p>32 characters describing GPS algorithm to
   10288 include in EXIF.<wbr/></p>
   10289             </td>
   10290 
   10291             <td class="entry_units">
   10292               UTF-8 null-terminated string
   10293             </td>
   10294 
   10295             <td class="entry_range">
   10296             </td>
   10297 
   10298             <td class="entry_tags">
   10299               <ul class="entry_tags">
   10300                   <li><a href="#tag_BC">BC</a></li>
   10301               </ul>
   10302             </td>
   10303 
   10304           </tr>
   10305 
   10306 
   10307           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   10308            <!-- end of entry -->
   10309         
   10310                 
   10311           <tr class="entry" id="controls_android.jpeg.gpsTimestamp">
   10312             <td class="entry_name
   10313              " rowspan="1">
   10314               android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
   10315             </td>
   10316             <td class="entry_type">
   10317                 <span class="entry_type_name">int64</span>
   10318 
   10319               <span class="entry_type_visibility"> [hidden]</span>
   10320 
   10321 
   10322               <span class="entry_type_hwlevel">[legacy] </span>
   10323 
   10324 
   10325 
   10326 
   10327             </td> <!-- entry_type -->
   10328 
   10329             <td class="entry_description">
   10330               <p>Time GPS fix was made to include in
   10331 EXIF.<wbr/></p>
   10332             </td>
   10333 
   10334             <td class="entry_units">
   10335               UTC in seconds since January 1,<wbr/> 1970
   10336             </td>
   10337 
   10338             <td class="entry_range">
   10339             </td>
   10340 
   10341             <td class="entry_tags">
   10342               <ul class="entry_tags">
   10343                   <li><a href="#tag_BC">BC</a></li>
   10344               </ul>
   10345             </td>
   10346 
   10347           </tr>
   10348 
   10349 
   10350           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   10351            <!-- end of entry -->
   10352         
   10353                 
   10354           <tr class="entry" id="controls_android.jpeg.orientation">
   10355             <td class="entry_name
   10356              " rowspan="3">
   10357               android.<wbr/>jpeg.<wbr/>orientation
   10358             </td>
   10359             <td class="entry_type">
   10360                 <span class="entry_type_name">int32</span>
   10361 
   10362               <span class="entry_type_visibility"> [public]</span>
   10363 
   10364 
   10365               <span class="entry_type_hwlevel">[legacy] </span>
   10366 
   10367 
   10368 
   10369 
   10370             </td> <!-- entry_type -->
   10371 
   10372             <td class="entry_description">
   10373               <p>The orientation for a JPEG image.<wbr/></p>
   10374             </td>
   10375 
   10376             <td class="entry_units">
   10377               Degrees in multiples of 90
   10378             </td>
   10379 
   10380             <td class="entry_range">
   10381               <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
   10382             </td>
   10383 
   10384             <td class="entry_tags">
   10385               <ul class="entry_tags">
   10386                   <li><a href="#tag_BC">BC</a></li>
   10387               </ul>
   10388             </td>
   10389 
   10390           </tr>
   10391           <tr class="entries_header">
   10392             <th class="th_details" colspan="5">Details</th>
   10393           </tr>
   10394           <tr class="entry_cont">
   10395             <td class="entry_details" colspan="5">
   10396               <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
   10397 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
   10398 upright.<wbr/></p>
   10399 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
   10400 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
   10401 the thumbnail data will also be rotated.<wbr/></p>
   10402 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
   10403 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
   10404 <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
   10405 sample code may be used:</p>
   10406 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
   10407     if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
   10408     int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
   10409 
   10410     //<wbr/> Round device orientation to a multiple of 90
   10411     deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
   10412 
   10413     //<wbr/> Reverse device orientation for front-facing cameras
   10414     boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
   10415     if (facingFront) deviceOrientation = -deviceOrientation;
   10416 
   10417     //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
   10418     //<wbr/> the image upright relative to the device orientation
   10419     int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
   10420 
   10421     return jpegOrientation;
   10422 }
   10423 </code></pre>
   10424             </td>
   10425           </tr>
   10426 
   10427 
   10428           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   10429            <!-- end of entry -->
   10430         
   10431                 
   10432           <tr class="entry" id="controls_android.jpeg.quality">
   10433             <td class="entry_name
   10434              " rowspan="3">
   10435               android.<wbr/>jpeg.<wbr/>quality
   10436             </td>
   10437             <td class="entry_type">
   10438                 <span class="entry_type_name">byte</span>
   10439 
   10440               <span class="entry_type_visibility"> [public]</span>
   10441 
   10442 
   10443               <span class="entry_type_hwlevel">[legacy] </span>
   10444 
   10445 
   10446 
   10447 
   10448             </td> <!-- entry_type -->
   10449 
   10450             <td class="entry_description">
   10451               <p>Compression quality of the final JPEG
   10452 image.<wbr/></p>
   10453             </td>
   10454 
   10455             <td class="entry_units">
   10456             </td>
   10457 
   10458             <td class="entry_range">
   10459               <p>1-100; larger is higher quality</p>
   10460             </td>
   10461 
   10462             <td class="entry_tags">
   10463               <ul class="entry_tags">
   10464                   <li><a href="#tag_BC">BC</a></li>
   10465               </ul>
   10466             </td>
   10467 
   10468           </tr>
   10469           <tr class="entries_header">
   10470             <th class="th_details" colspan="5">Details</th>
   10471           </tr>
   10472           <tr class="entry_cont">
   10473             <td class="entry_details" colspan="5">
   10474               <p>85-95 is typical usage range.<wbr/></p>
   10475             </td>
   10476           </tr>
   10477 
   10478 
   10479           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   10480            <!-- end of entry -->
   10481         
   10482                 
   10483           <tr class="entry" id="controls_android.jpeg.thumbnailQuality">
   10484             <td class="entry_name
   10485              " rowspan="1">
   10486               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
   10487             </td>
   10488             <td class="entry_type">
   10489                 <span class="entry_type_name">byte</span>
   10490 
   10491               <span class="entry_type_visibility"> [public]</span>
   10492 
   10493 
   10494               <span class="entry_type_hwlevel">[legacy] </span>
   10495 
   10496 
   10497 
   10498 
   10499             </td> <!-- entry_type -->
   10500 
   10501             <td class="entry_description">
   10502               <p>Compression quality of JPEG
   10503 thumbnail.<wbr/></p>
   10504             </td>
   10505 
   10506             <td class="entry_units">
   10507             </td>
   10508 
   10509             <td class="entry_range">
   10510               <p>1-100; larger is higher quality</p>
   10511             </td>
   10512 
   10513             <td class="entry_tags">
   10514               <ul class="entry_tags">
   10515                   <li><a href="#tag_BC">BC</a></li>
   10516               </ul>
   10517             </td>
   10518 
   10519           </tr>
   10520 
   10521 
   10522           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   10523            <!-- end of entry -->
   10524         
   10525                 
   10526           <tr class="entry" id="controls_android.jpeg.thumbnailSize">
   10527             <td class="entry_name
   10528              " rowspan="5">
   10529               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
   10530             </td>
   10531             <td class="entry_type">
   10532                 <span class="entry_type_name">int32</span>
   10533                 <span class="entry_type_container">x</span>
   10534 
   10535                 <span class="entry_type_array">
   10536                   2
   10537                 </span>
   10538               <span class="entry_type_visibility"> [public as size]</span>
   10539 
   10540 
   10541               <span class="entry_type_hwlevel">[legacy] </span>
   10542 
   10543 
   10544 
   10545 
   10546             </td> <!-- entry_type -->
   10547 
   10548             <td class="entry_description">
   10549               <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
   10550             </td>
   10551 
   10552             <td class="entry_units">
   10553             </td>
   10554 
   10555             <td class="entry_range">
   10556               <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
   10557             </td>
   10558 
   10559             <td class="entry_tags">
   10560               <ul class="entry_tags">
   10561                   <li><a href="#tag_BC">BC</a></li>
   10562               </ul>
   10563             </td>
   10564 
   10565           </tr>
   10566           <tr class="entries_header">
   10567             <th class="th_details" colspan="5">Details</th>
   10568           </tr>
   10569           <tr class="entry_cont">
   10570             <td class="entry_details" colspan="5">
   10571               <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
   10572 but the captured JPEG will still be a valid image.<wbr/></p>
   10573 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
   10574 should have the same aspect ratio as the main JPEG output.<wbr/></p>
   10575 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
   10576 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
   10577 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
   10578 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
   10579 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
   10580 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
   10581 <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
   10582 the camera device will handle thumbnail rotation in one of the following ways:</p>
   10583 <ul>
   10584 <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
   10585   and keep jpeg and thumbnail image data unrotated.<wbr/></li>
   10586 <li>Rotate the jpeg and thumbnail image data and not set
   10587   <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
   10588   case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
   10589   capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
   10590   orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
   10591   size.<wbr/></li>
   10592 </ul>
   10593             </td>
   10594           </tr>
   10595 
   10596           <tr class="entries_header">
   10597             <th class="th_details" colspan="5">HAL Implementation Details</th>
   10598           </tr>
   10599           <tr class="entry_cont">
   10600             <td class="entry_details" colspan="5">
   10601               <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
   10602 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
   10603 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
   10604 thumbnail image cropping.<wbr/></p>
   10605             </td>
   10606           </tr>
   10607 
   10608           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   10609            <!-- end of entry -->
   10610         
   10611         
   10612 
   10613       <!-- end of kind -->
   10614       </tbody>
   10615       <tr><td colspan="6" class="kind">static</td></tr>
   10616 
   10617       <thead class="entries_header">
   10618         <tr>
   10619           <th class="th_name">Property Name</th>
   10620           <th class="th_type">Type</th>
   10621           <th class="th_description">Description</th>
   10622           <th class="th_units">Units</th>
   10623           <th class="th_range">Range</th>
   10624           <th class="th_tags">Tags</th>
   10625         </tr>
   10626       </thead>
   10627 
   10628       <tbody>
   10629 
   10630         
   10631 
   10632         
   10633 
   10634         
   10635 
   10636         
   10637 
   10638                 
   10639           <tr class="entry" id="static_android.jpeg.availableThumbnailSizes">
   10640             <td class="entry_name
   10641              " rowspan="3">
   10642               android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes
   10643             </td>
   10644             <td class="entry_type">
   10645                 <span class="entry_type_name">int32</span>
   10646                 <span class="entry_type_container">x</span>
   10647 
   10648                 <span class="entry_type_array">
   10649                   2 x n
   10650                 </span>
   10651               <span class="entry_type_visibility"> [public as size]</span>
   10652 
   10653 
   10654               <span class="entry_type_hwlevel">[legacy] </span>
   10655 
   10656 
   10657 
   10658 
   10659             </td> <!-- entry_type -->
   10660 
   10661             <td class="entry_description">
   10662               <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this
   10663 camera device.<wbr/></p>
   10664             </td>
   10665 
   10666             <td class="entry_units">
   10667             </td>
   10668 
   10669             <td class="entry_range">
   10670             </td>
   10671 
   10672             <td class="entry_tags">
   10673               <ul class="entry_tags">
   10674                   <li><a href="#tag_BC">BC</a></li>
   10675               </ul>
   10676             </td>
   10677 
   10678           </tr>
   10679           <tr class="entries_header">
   10680             <th class="th_details" colspan="5">Details</th>
   10681           </tr>
   10682           <tr class="entry_cont">
   10683             <td class="entry_details" colspan="5">
   10684               <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no
   10685 thumbnail should be generated.<wbr/></p>
   10686 <p>Below condiditions will be satisfied for this size list:</p>
   10687 <ul>
   10688 <li>The sizes will be sorted by increasing pixel area (width x height).<wbr/>
   10689 If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li>
   10690 <li>The aspect ratio of the largest thumbnail size will be same as the
   10691 aspect ratio of largest JPEG output size in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
   10692 The largest size is defined as the size that has the largest pixel area
   10693 in a given size list.<wbr/></li>
   10694 <li>Each output JPEG size in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have at least
   10695 one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/>
   10696 and vice versa.<wbr/></li>
   10697 <li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li>
   10698 </ul>
   10699             </td>
   10700           </tr>
   10701 
   10702 
   10703           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   10704            <!-- end of entry -->
   10705         
   10706                 
   10707           <tr class="entry" id="static_android.jpeg.maxSize">
   10708             <td class="entry_name
   10709              " rowspan="3">
   10710               android.<wbr/>jpeg.<wbr/>max<wbr/>Size
   10711             </td>
   10712             <td class="entry_type">
   10713                 <span class="entry_type_name">int32</span>
   10714 
   10715               <span class="entry_type_visibility"> [system]</span>
   10716 
   10717 
   10718 
   10719 
   10720 
   10721 
   10722             </td> <!-- entry_type -->
   10723 
   10724             <td class="entry_description">
   10725               <p>Maximum size in bytes for the compressed
   10726 JPEG buffer</p>
   10727             </td>
   10728 
   10729             <td class="entry_units">
   10730             </td>
   10731 
   10732             <td class="entry_range">
   10733               <p>Must be large enough to fit any JPEG produced by
   10734 the camera</p>
   10735             </td>
   10736 
   10737             <td class="entry_tags">
   10738             </td>
   10739 
   10740           </tr>
   10741           <tr class="entries_header">
   10742             <th class="th_details" colspan="5">Details</th>
   10743           </tr>
   10744           <tr class="entry_cont">
   10745             <td class="entry_details" colspan="5">
   10746               <p>This is used for sizing the gralloc buffers for
   10747 JPEG</p>
   10748             </td>
   10749           </tr>
   10750 
   10751 
   10752           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   10753            <!-- end of entry -->
   10754         
   10755         
   10756 
   10757       <!-- end of kind -->
   10758       </tbody>
   10759       <tr><td colspan="6" class="kind">dynamic</td></tr>
   10760 
   10761       <thead class="entries_header">
   10762         <tr>
   10763           <th class="th_name">Property Name</th>
   10764           <th class="th_type">Type</th>
   10765           <th class="th_description">Description</th>
   10766           <th class="th_units">Units</th>
   10767           <th class="th_range">Range</th>
   10768           <th class="th_tags">Tags</th>
   10769         </tr>
   10770       </thead>
   10771 
   10772       <tbody>
   10773 
   10774         
   10775 
   10776         
   10777 
   10778         
   10779 
   10780         
   10781 
   10782                 
   10783           <tr class="entry" id="dynamic_android.jpeg.gpsLocation">
   10784             <td class="entry_name
   10785              " rowspan="3">
   10786               android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
   10787             </td>
   10788             <td class="entry_type">
   10789                 <span class="entry_type_name">byte</span>
   10790 
   10791               <span class="entry_type_visibility"> [public as location]</span>
   10792 
   10793               <span class="entry_type_synthetic">[synthetic] </span>
   10794 
   10795               <span class="entry_type_hwlevel">[legacy] </span>
   10796 
   10797 
   10798 
   10799 
   10800             </td> <!-- entry_type -->
   10801 
   10802             <td class="entry_description">
   10803               <p>A location object to use when generating image GPS metadata.<wbr/></p>
   10804             </td>
   10805 
   10806             <td class="entry_units">
   10807             </td>
   10808 
   10809             <td class="entry_range">
   10810             </td>
   10811 
   10812             <td class="entry_tags">
   10813             </td>
   10814 
   10815           </tr>
   10816           <tr class="entries_header">
   10817             <th class="th_details" colspan="5">Details</th>
   10818           </tr>
   10819           <tr class="entry_cont">
   10820             <td class="entry_details" colspan="5">
   10821               <p>Setting a location object in a request will include the GPS coordinates of the location
   10822 into any JPEG images captured based on the request.<wbr/> These coordinates can then be
   10823 viewed by anyone who receives the JPEG image.<wbr/></p>
   10824             </td>
   10825           </tr>
   10826 
   10827 
   10828           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   10829            <!-- end of entry -->
   10830         
   10831                 
   10832           <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates">
   10833             <td class="entry_name
   10834              " rowspan="1">
   10835               android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
   10836             </td>
   10837             <td class="entry_type">
   10838                 <span class="entry_type_name">double</span>
   10839                 <span class="entry_type_container">x</span>
   10840 
   10841                 <span class="entry_type_array">
   10842                   3
   10843                 </span>
   10844               <span class="entry_type_visibility"> [hidden]</span>
   10845 
   10846 
   10847               <span class="entry_type_hwlevel">[legacy] </span>
   10848 
   10849 
   10850                 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
   10851 
   10852 
   10853             </td> <!-- entry_type -->
   10854 
   10855             <td class="entry_description">
   10856               <p>GPS coordinates to include in output JPEG
   10857 EXIF.<wbr/></p>
   10858             </td>
   10859 
   10860             <td class="entry_units">
   10861             </td>
   10862 
   10863             <td class="entry_range">
   10864               <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
   10865             </td>
   10866 
   10867             <td class="entry_tags">
   10868               <ul class="entry_tags">
   10869                   <li><a href="#tag_BC">BC</a></li>
   10870               </ul>
   10871             </td>
   10872 
   10873           </tr>
   10874 
   10875 
   10876           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   10877            <!-- end of entry -->
   10878         
   10879                 
   10880           <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod">
   10881             <td class="entry_name
   10882              " rowspan="1">
   10883               android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
   10884             </td>
   10885             <td class="entry_type">
   10886                 <span class="entry_type_name">byte</span>
   10887 
   10888               <span class="entry_type_visibility"> [hidden as string]</span>
   10889 
   10890 
   10891               <span class="entry_type_hwlevel">[legacy] </span>
   10892 
   10893 
   10894 
   10895 
   10896             </td> <!-- entry_type -->
   10897 
   10898             <td class="entry_description">
   10899               <p>32 characters describing GPS algorithm to
   10900 include in EXIF.<wbr/></p>
   10901             </td>
   10902 
   10903             <td class="entry_units">
   10904               UTF-8 null-terminated string
   10905             </td>
   10906 
   10907             <td class="entry_range">
   10908             </td>
   10909 
   10910             <td class="entry_tags">
   10911               <ul class="entry_tags">
   10912                   <li><a href="#tag_BC">BC</a></li>
   10913               </ul>
   10914             </td>
   10915 
   10916           </tr>
   10917 
   10918 
   10919           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   10920            <!-- end of entry -->
   10921         
   10922                 
   10923           <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp">
   10924             <td class="entry_name
   10925              " rowspan="1">
   10926               android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
   10927             </td>
   10928             <td class="entry_type">
   10929                 <span class="entry_type_name">int64</span>
   10930 
   10931               <span class="entry_type_visibility"> [hidden]</span>
   10932 
   10933 
   10934               <span class="entry_type_hwlevel">[legacy] </span>
   10935 
   10936 
   10937 
   10938 
   10939             </td> <!-- entry_type -->
   10940 
   10941             <td class="entry_description">
   10942               <p>Time GPS fix was made to include in
   10943 EXIF.<wbr/></p>
   10944             </td>
   10945 
   10946             <td class="entry_units">
   10947               UTC in seconds since January 1,<wbr/> 1970
   10948             </td>
   10949 
   10950             <td class="entry_range">
   10951             </td>
   10952 
   10953             <td class="entry_tags">
   10954               <ul class="entry_tags">
   10955                   <li><a href="#tag_BC">BC</a></li>
   10956               </ul>
   10957             </td>
   10958 
   10959           </tr>
   10960 
   10961 
   10962           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   10963            <!-- end of entry -->
   10964         
   10965                 
   10966           <tr class="entry" id="dynamic_android.jpeg.orientation">
   10967             <td class="entry_name
   10968              " rowspan="3">
   10969               android.<wbr/>jpeg.<wbr/>orientation
   10970             </td>
   10971             <td class="entry_type">
   10972                 <span class="entry_type_name">int32</span>
   10973 
   10974               <span class="entry_type_visibility"> [public]</span>
   10975 
   10976 
   10977               <span class="entry_type_hwlevel">[legacy] </span>
   10978 
   10979 
   10980 
   10981 
   10982             </td> <!-- entry_type -->
   10983 
   10984             <td class="entry_description">
   10985               <p>The orientation for a JPEG image.<wbr/></p>
   10986             </td>
   10987 
   10988             <td class="entry_units">
   10989               Degrees in multiples of 90
   10990             </td>
   10991 
   10992             <td class="entry_range">
   10993               <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
   10994             </td>
   10995 
   10996             <td class="entry_tags">
   10997               <ul class="entry_tags">
   10998                   <li><a href="#tag_BC">BC</a></li>
   10999               </ul>
   11000             </td>
   11001 
   11002           </tr>
   11003           <tr class="entries_header">
   11004             <th class="th_details" colspan="5">Details</th>
   11005           </tr>
   11006           <tr class="entry_cont">
   11007             <td class="entry_details" colspan="5">
   11008               <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
   11009 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
   11010 upright.<wbr/></p>
   11011 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
   11012 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
   11013 the thumbnail data will also be rotated.<wbr/></p>
   11014 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
   11015 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
   11016 <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
   11017 sample code may be used:</p>
   11018 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
   11019     if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
   11020     int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
   11021 
   11022     //<wbr/> Round device orientation to a multiple of 90
   11023     deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
   11024 
   11025     //<wbr/> Reverse device orientation for front-facing cameras
   11026     boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
   11027     if (facingFront) deviceOrientation = -deviceOrientation;
   11028 
   11029     //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
   11030     //<wbr/> the image upright relative to the device orientation
   11031     int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
   11032 
   11033     return jpegOrientation;
   11034 }
   11035 </code></pre>
   11036             </td>
   11037           </tr>
   11038 
   11039 
   11040           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   11041            <!-- end of entry -->
   11042         
   11043                 
   11044           <tr class="entry" id="dynamic_android.jpeg.quality">
   11045             <td class="entry_name
   11046              " rowspan="3">
   11047               android.<wbr/>jpeg.<wbr/>quality
   11048             </td>
   11049             <td class="entry_type">
   11050                 <span class="entry_type_name">byte</span>
   11051 
   11052               <span class="entry_type_visibility"> [public]</span>
   11053 
   11054 
   11055               <span class="entry_type_hwlevel">[legacy] </span>
   11056 
   11057 
   11058 
   11059 
   11060             </td> <!-- entry_type -->
   11061 
   11062             <td class="entry_description">
   11063               <p>Compression quality of the final JPEG
   11064 image.<wbr/></p>
   11065             </td>
   11066 
   11067             <td class="entry_units">
   11068             </td>
   11069 
   11070             <td class="entry_range">
   11071               <p>1-100; larger is higher quality</p>
   11072             </td>
   11073 
   11074             <td class="entry_tags">
   11075               <ul class="entry_tags">
   11076                   <li><a href="#tag_BC">BC</a></li>
   11077               </ul>
   11078             </td>
   11079 
   11080           </tr>
   11081           <tr class="entries_header">
   11082             <th class="th_details" colspan="5">Details</th>
   11083           </tr>
   11084           <tr class="entry_cont">
   11085             <td class="entry_details" colspan="5">
   11086               <p>85-95 is typical usage range.<wbr/></p>
   11087             </td>
   11088           </tr>
   11089 
   11090 
   11091           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   11092            <!-- end of entry -->
   11093         
   11094                 
   11095           <tr class="entry" id="dynamic_android.jpeg.size">
   11096             <td class="entry_name
   11097              " rowspan="3">
   11098               android.<wbr/>jpeg.<wbr/>size
   11099             </td>
   11100             <td class="entry_type">
   11101                 <span class="entry_type_name">int32</span>
   11102 
   11103               <span class="entry_type_visibility"> [system]</span>
   11104 
   11105 
   11106 
   11107 
   11108 
   11109 
   11110             </td> <!-- entry_type -->
   11111 
   11112             <td class="entry_description">
   11113               <p>The size of the compressed JPEG image,<wbr/> in
   11114 bytes</p>
   11115             </td>
   11116 
   11117             <td class="entry_units">
   11118             </td>
   11119 
   11120             <td class="entry_range">
   11121               <p>&gt;= 0</p>
   11122             </td>
   11123 
   11124             <td class="entry_tags">
   11125               <ul class="entry_tags">
   11126                   <li><a href="#tag_FUTURE">FUTURE</a></li>
   11127               </ul>
   11128             </td>
   11129 
   11130           </tr>
   11131           <tr class="entries_header">
   11132             <th class="th_details" colspan="5">Details</th>
   11133           </tr>
   11134           <tr class="entry_cont">
   11135             <td class="entry_details" colspan="5">
   11136               <p>If no JPEG output is produced for the request,<wbr/>
   11137 this must be 0.<wbr/></p>
   11138 <p>Otherwise,<wbr/> this describes the real size of the compressed
   11139 JPEG image placed in the output stream.<wbr/>  More specifically,<wbr/>
   11140 if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture
   11141 has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from
   11142 the JPEG stream will be 1000000 bytes,<wbr/> of which the first
   11143 500000 make up the real data.<wbr/></p>
   11144             </td>
   11145           </tr>
   11146 
   11147 
   11148           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   11149            <!-- end of entry -->
   11150         
   11151                 
   11152           <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality">
   11153             <td class="entry_name
   11154              " rowspan="1">
   11155               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
   11156             </td>
   11157             <td class="entry_type">
   11158                 <span class="entry_type_name">byte</span>
   11159 
   11160               <span class="entry_type_visibility"> [public]</span>
   11161 
   11162 
   11163               <span class="entry_type_hwlevel">[legacy] </span>
   11164 
   11165 
   11166 
   11167 
   11168             </td> <!-- entry_type -->
   11169 
   11170             <td class="entry_description">
   11171               <p>Compression quality of JPEG
   11172 thumbnail.<wbr/></p>
   11173             </td>
   11174 
   11175             <td class="entry_units">
   11176             </td>
   11177 
   11178             <td class="entry_range">
   11179               <p>1-100; larger is higher quality</p>
   11180             </td>
   11181 
   11182             <td class="entry_tags">
   11183               <ul class="entry_tags">
   11184                   <li><a href="#tag_BC">BC</a></li>
   11185               </ul>
   11186             </td>
   11187 
   11188           </tr>
   11189 
   11190 
   11191           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   11192            <!-- end of entry -->
   11193         
   11194                 
   11195           <tr class="entry" id="dynamic_android.jpeg.thumbnailSize">
   11196             <td class="entry_name
   11197              " rowspan="5">
   11198               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
   11199             </td>
   11200             <td class="entry_type">
   11201                 <span class="entry_type_name">int32</span>
   11202                 <span class="entry_type_container">x</span>
   11203 
   11204                 <span class="entry_type_array">
   11205                   2
   11206                 </span>
   11207               <span class="entry_type_visibility"> [public as size]</span>
   11208 
   11209 
   11210               <span class="entry_type_hwlevel">[legacy] </span>
   11211 
   11212 
   11213 
   11214 
   11215             </td> <!-- entry_type -->
   11216 
   11217             <td class="entry_description">
   11218               <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
   11219             </td>
   11220 
   11221             <td class="entry_units">
   11222             </td>
   11223 
   11224             <td class="entry_range">
   11225               <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
   11226             </td>
   11227 
   11228             <td class="entry_tags">
   11229               <ul class="entry_tags">
   11230                   <li><a href="#tag_BC">BC</a></li>
   11231               </ul>
   11232             </td>
   11233 
   11234           </tr>
   11235           <tr class="entries_header">
   11236             <th class="th_details" colspan="5">Details</th>
   11237           </tr>
   11238           <tr class="entry_cont">
   11239             <td class="entry_details" colspan="5">
   11240               <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
   11241 but the captured JPEG will still be a valid image.<wbr/></p>
   11242 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
   11243 should have the same aspect ratio as the main JPEG output.<wbr/></p>
   11244 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
   11245 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
   11246 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
   11247 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
   11248 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
   11249 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
   11250 <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
   11251 the camera device will handle thumbnail rotation in one of the following ways:</p>
   11252 <ul>
   11253 <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
   11254   and keep jpeg and thumbnail image data unrotated.<wbr/></li>
   11255 <li>Rotate the jpeg and thumbnail image data and not set
   11256   <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
   11257   case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
   11258   capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
   11259   orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
   11260   size.<wbr/></li>
   11261 </ul>
   11262             </td>
   11263           </tr>
   11264 
   11265           <tr class="entries_header">
   11266             <th class="th_details" colspan="5">HAL Implementation Details</th>
   11267           </tr>
   11268           <tr class="entry_cont">
   11269             <td class="entry_details" colspan="5">
   11270               <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
   11271 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
   11272 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
   11273 thumbnail image cropping.<wbr/></p>
   11274             </td>
   11275           </tr>
   11276 
   11277           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   11278            <!-- end of entry -->
   11279         
   11280         
   11281 
   11282       <!-- end of kind -->
   11283       </tbody>
   11284 
   11285   <!-- end of section -->
   11286   <tr><td colspan="6" id="section_lens" class="section">lens</td></tr>
   11287 
   11288 
   11289       <tr><td colspan="6" class="kind">controls</td></tr>
   11290 
   11291       <thead class="entries_header">
   11292         <tr>
   11293           <th class="th_name">Property Name</th>
   11294           <th class="th_type">Type</th>
   11295           <th class="th_description">Description</th>
   11296           <th class="th_units">Units</th>
   11297           <th class="th_range">Range</th>
   11298           <th class="th_tags">Tags</th>
   11299         </tr>
   11300       </thead>
   11301 
   11302       <tbody>
   11303 
   11304         
   11305 
   11306         
   11307 
   11308         
   11309 
   11310         
   11311 
   11312                 
   11313           <tr class="entry" id="controls_android.lens.aperture">
   11314             <td class="entry_name
   11315              " rowspan="3">
   11316               android.<wbr/>lens.<wbr/>aperture
   11317             </td>
   11318             <td class="entry_type">
   11319                 <span class="entry_type_name">float</span>
   11320 
   11321               <span class="entry_type_visibility"> [public]</span>
   11322 
   11323 
   11324               <span class="entry_type_hwlevel">[full] </span>
   11325 
   11326 
   11327 
   11328 
   11329             </td> <!-- entry_type -->
   11330 
   11331             <td class="entry_description">
   11332               <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
   11333 effective aperture diameter.<wbr/></p>
   11334             </td>
   11335 
   11336             <td class="entry_units">
   11337               The f-number (f/<wbr/>N)
   11338             </td>
   11339 
   11340             <td class="entry_range">
   11341               <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
   11342             </td>
   11343 
   11344             <td class="entry_tags">
   11345               <ul class="entry_tags">
   11346                   <li><a href="#tag_V1">V1</a></li>
   11347               </ul>
   11348             </td>
   11349 
   11350           </tr>
   11351           <tr class="entries_header">
   11352             <th class="th_details" colspan="5">Details</th>
   11353           </tr>
   11354           <tr class="entry_cont">
   11355             <td class="entry_details" colspan="5">
   11356               <p>Setting this value is only supported on the camera devices that have a variable
   11357 aperture lens.<wbr/></p>
   11358 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
   11359 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
   11360 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>
   11361 to achieve manual exposure control.<wbr/></p>
   11362 <p>The requested aperture value may take several frames to reach the
   11363 requested value; the camera device will report the current (intermediate)
   11364 aperture size in capture result metadata while the aperture is changing.<wbr/>
   11365 While the aperture is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
   11366 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
   11367 the ON modes,<wbr/> this will be overridden by the camera device
   11368 auto-exposure algorithm,<wbr/> the overridden values are then provided
   11369 back to the user in the corresponding result.<wbr/></p>
   11370             </td>
   11371           </tr>
   11372 
   11373 
   11374           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   11375            <!-- end of entry -->
   11376         
   11377                 
   11378           <tr class="entry" id="controls_android.lens.filterDensity">
   11379             <td class="entry_name
   11380              " rowspan="3">
   11381               android.<wbr/>lens.<wbr/>filter<wbr/>Density
   11382             </td>
   11383             <td class="entry_type">
   11384                 <span class="entry_type_name">float</span>
   11385 
   11386               <span class="entry_type_visibility"> [public]</span>
   11387 
   11388 
   11389               <span class="entry_type_hwlevel">[full] </span>
   11390 
   11391 
   11392 
   11393 
   11394             </td> <!-- entry_type -->
   11395 
   11396             <td class="entry_description">
   11397               <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
   11398             </td>
   11399 
   11400             <td class="entry_units">
   11401               Exposure Value (EV)
   11402             </td>
   11403 
   11404             <td class="entry_range">
   11405               <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
   11406             </td>
   11407 
   11408             <td class="entry_tags">
   11409               <ul class="entry_tags">
   11410                   <li><a href="#tag_V1">V1</a></li>
   11411               </ul>
   11412             </td>
   11413 
   11414           </tr>
   11415           <tr class="entries_header">
   11416             <th class="th_details" colspan="5">Details</th>
   11417           </tr>
   11418           <tr class="entry_cont">
   11419             <td class="entry_details" colspan="5">
   11420               <p>This control will not be supported on most camera devices.<wbr/></p>
   11421 <p>Lens filters are typically used to lower the amount of light the
   11422 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
   11423 step is the standard logarithmic representation,<wbr/> which are
   11424 non-negative,<wbr/> and inversely proportional to the amount of light
   11425 hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
   11426 in no reduction of the incoming light,<wbr/> and setting this to 2 would
   11427 mean that the filter is set to reduce incoming light by two stops
   11428 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
   11429 <p>It may take several frames before the lens filter density changes
   11430 to the requested value.<wbr/> While the filter density is still changing,<wbr/>
   11431 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
   11432             </td>
   11433           </tr>
   11434 
   11435 
   11436           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   11437            <!-- end of entry -->
   11438         
   11439                 
   11440           <tr class="entry" id="controls_android.lens.focalLength">
   11441             <td class="entry_name
   11442              " rowspan="3">
   11443               android.<wbr/>lens.<wbr/>focal<wbr/>Length
   11444             </td>
   11445             <td class="entry_type">
   11446                 <span class="entry_type_name">float</span>
   11447 
   11448               <span class="entry_type_visibility"> [public]</span>
   11449 
   11450 
   11451               <span class="entry_type_hwlevel">[legacy] </span>
   11452 
   11453 
   11454 
   11455 
   11456             </td> <!-- entry_type -->
   11457 
   11458             <td class="entry_description">
   11459               <p>The desired lens focal length; used for optical zoom.<wbr/></p>
   11460             </td>
   11461 
   11462             <td class="entry_units">
   11463               Millimeters
   11464             </td>
   11465 
   11466             <td class="entry_range">
   11467               <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
   11468             </td>
   11469 
   11470             <td class="entry_tags">
   11471               <ul class="entry_tags">
   11472                   <li><a href="#tag_V1">V1</a></li>
   11473               </ul>
   11474             </td>
   11475 
   11476           </tr>
   11477           <tr class="entries_header">
   11478             <th class="th_details" colspan="5">Details</th>
   11479           </tr>
   11480           <tr class="entry_cont">
   11481             <td class="entry_details" colspan="5">
   11482               <p>This setting controls the physical focal length of the camera
   11483 device's lens.<wbr/> Changing the focal length changes the field of
   11484 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
   11485 <p>Like <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> and <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a>,<wbr/> this
   11486 setting won't be applied instantaneously,<wbr/> and it may take several
   11487 frames before the lens can change to the requested focal length.<wbr/>
   11488 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
   11489 be set to MOVING.<wbr/></p>
   11490 <p>Optical zoom will not be supported on most devices.<wbr/></p>
   11491             </td>
   11492           </tr>
   11493 
   11494 
   11495           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   11496            <!-- end of entry -->
   11497         
   11498                 
   11499           <tr class="entry" id="controls_android.lens.focusDistance">
   11500             <td class="entry_name
   11501              " rowspan="3">
   11502               android.<wbr/>lens.<wbr/>focus<wbr/>Distance
   11503             </td>
   11504             <td class="entry_type">
   11505                 <span class="entry_type_name">float</span>
   11506 
   11507               <span class="entry_type_visibility"> [public]</span>
   11508 
   11509 
   11510               <span class="entry_type_hwlevel">[full] </span>
   11511 
   11512 
   11513 
   11514 
   11515             </td> <!-- entry_type -->
   11516 
   11517             <td class="entry_description">
   11518               <p>Desired distance to plane of sharpest focus,<wbr/>
   11519 measured from frontmost surface of the lens.<wbr/></p>
   11520             </td>
   11521 
   11522             <td class="entry_units">
   11523               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
   11524             </td>
   11525 
   11526             <td class="entry_range">
   11527               <p>&gt;= 0</p>
   11528             </td>
   11529 
   11530             <td class="entry_tags">
   11531               <ul class="entry_tags">
   11532                   <li><a href="#tag_BC">BC</a></li>
   11533                   <li><a href="#tag_V1">V1</a></li>
   11534               </ul>
   11535             </td>
   11536 
   11537           </tr>
   11538           <tr class="entries_header">
   11539             <th class="th_details" colspan="5">Details</th>
   11540           </tr>
   11541           <tr class="entry_cont">
   11542             <td class="entry_details" colspan="5">
   11543               <p>This control can be used for setting manual focus,<wbr/> on devices that support
   11544 the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see
   11545 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p>
   11546 <p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to
   11547 <code>[0.<wbr/>0f,<wbr/> <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>]</code>.<wbr/></p>
   11548 <p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied
   11549 instantaneously,<wbr/> and it may take several frames before the lens
   11550 can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/>
   11551 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
   11552 <p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code>
   11553 for infinity focus.<wbr/></p>
   11554             </td>
   11555           </tr>
   11556 
   11557 
   11558           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   11559            <!-- end of entry -->
   11560         
   11561                 
   11562           <tr class="entry" id="controls_android.lens.opticalStabilizationMode">
   11563             <td class="entry_name
   11564              " rowspan="3">
   11565               android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
   11566             </td>
   11567             <td class="entry_type">
   11568                 <span class="entry_type_name entry_type_name_enum">byte</span>
   11569 
   11570               <span class="entry_type_visibility"> [public]</span>
   11571 
   11572 
   11573               <span class="entry_type_hwlevel">[limited] </span>
   11574 
   11575 
   11576 
   11577                 <ul class="entry_type_enum">
   11578                   <li>
   11579                     <span class="entry_type_enum_name">OFF</span>
   11580                     <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
   11581                   </li>
   11582                   <li>
   11583                     <span class="entry_type_enum_name">ON</span>
   11584                     <span class="entry_type_enum_optional">[optional]</span>
   11585                     <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
   11586                   </li>
   11587                 </ul>
   11588 
   11589             </td> <!-- entry_type -->
   11590 
   11591             <td class="entry_description">
   11592               <p>Sets whether the camera device uses optical image stabilization (OIS)
   11593 when capturing images.<wbr/></p>
   11594             </td>
   11595 
   11596             <td class="entry_units">
   11597             </td>
   11598 
   11599             <td class="entry_range">
   11600               <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
   11601             </td>
   11602 
   11603             <td class="entry_tags">
   11604               <ul class="entry_tags">
   11605                   <li><a href="#tag_V1">V1</a></li>
   11606               </ul>
   11607             </td>
   11608 
   11609           </tr>
   11610           <tr class="entries_header">
   11611             <th class="th_details" colspan="5">Details</th>
   11612           </tr>
   11613           <tr class="entry_cont">
   11614             <td class="entry_details" colspan="5">
   11615               <p>OIS is used to compensate for motion blur due to small
   11616 movements of the camera during capture.<wbr/> Unlike digital image
   11617 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
   11618 makes use of mechanical elements to stabilize the camera
   11619 sensor,<wbr/> and thus allows for longer exposure times before
   11620 camera shake becomes apparent.<wbr/></p>
   11621 <p>Switching between different optical stabilization modes may take several
   11622 frames to initialize,<wbr/> the camera device will report the current mode in
   11623 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
   11624 optical stabilization modes in the first several capture results may still
   11625 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
   11626 <p>If a camera device supports both OIS and digital image stabilization
   11627 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
   11628 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
   11629 <p>Not all devices will support OIS; see
   11630 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
   11631 available controls.<wbr/></p>
   11632             </td>
   11633           </tr>
   11634 
   11635 
   11636           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   11637            <!-- end of entry -->
   11638         
   11639         
   11640 
   11641       <!-- end of kind -->
   11642       </tbody>
   11643       <tr><td colspan="6" class="kind">static</td></tr>
   11644 
   11645       <thead class="entries_header">
   11646         <tr>
   11647           <th class="th_name">Property Name</th>
   11648           <th class="th_type">Type</th>
   11649           <th class="th_description">Description</th>
   11650           <th class="th_units">Units</th>
   11651           <th class="th_range">Range</th>
   11652           <th class="th_tags">Tags</th>
   11653         </tr>
   11654       </thead>
   11655 
   11656       <tbody>
   11657 
   11658         
   11659 
   11660         
   11661 
   11662         
   11663 
   11664         
   11665                 
   11666             
   11667 
   11668                 
   11669           <tr class="entry" id="static_android.lens.info.availableApertures">
   11670             <td class="entry_name
   11671              " rowspan="3">
   11672               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures
   11673             </td>
   11674             <td class="entry_type">
   11675                 <span class="entry_type_name">float</span>
   11676                 <span class="entry_type_container">x</span>
   11677 
   11678                 <span class="entry_type_array">
   11679                   n
   11680                 </span>
   11681               <span class="entry_type_visibility"> [public]</span>
   11682 
   11683 
   11684               <span class="entry_type_hwlevel">[full] </span>
   11685 
   11686 
   11687 
   11688 
   11689             </td> <!-- entry_type -->
   11690 
   11691             <td class="entry_description">
   11692               <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are
   11693 supported by this camera device.<wbr/></p>
   11694             </td>
   11695 
   11696             <td class="entry_units">
   11697               The aperture f-number
   11698             </td>
   11699 
   11700             <td class="entry_range">
   11701             </td>
   11702 
   11703             <td class="entry_tags">
   11704               <ul class="entry_tags">
   11705                   <li><a href="#tag_V1">V1</a></li>
   11706               </ul>
   11707             </td>
   11708 
   11709           </tr>
   11710           <tr class="entries_header">
   11711             <th class="th_details" colspan="5">Details</th>
   11712           </tr>
   11713           <tr class="entry_cont">
   11714             <td class="entry_details" colspan="5">
   11715               <p>If the camera device doesn't support a variable lens aperture,<wbr/>
   11716 this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p>
   11717 <p>If the camera device supports a variable aperture,<wbr/> the aperture values
   11718 in this list will be sorted in ascending order.<wbr/></p>
   11719             </td>
   11720           </tr>
   11721 
   11722 
   11723           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   11724            <!-- end of entry -->
   11725         
   11726                 
   11727           <tr class="entry" id="static_android.lens.info.availableFilterDensities">
   11728             <td class="entry_name
   11729              " rowspan="3">
   11730               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities
   11731             </td>
   11732             <td class="entry_type">
   11733                 <span class="entry_type_name">float</span>
   11734                 <span class="entry_type_container">x</span>
   11735 
   11736                 <span class="entry_type_array">
   11737                   n
   11738                 </span>
   11739               <span class="entry_type_visibility"> [public]</span>
   11740 
   11741 
   11742               <span class="entry_type_hwlevel">[full] </span>
   11743 
   11744 
   11745 
   11746 
   11747             </td> <!-- entry_type -->
   11748 
   11749             <td class="entry_description">
   11750               <p>List of neutral density filter values for
   11751 <a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p>
   11752             </td>
   11753 
   11754             <td class="entry_units">
   11755               Exposure value (EV)
   11756             </td>
   11757 
   11758             <td class="entry_range">
   11759               <p>Values are &gt;= 0</p>
   11760             </td>
   11761 
   11762             <td class="entry_tags">
   11763               <ul class="entry_tags">
   11764                   <li><a href="#tag_V1">V1</a></li>
   11765               </ul>
   11766             </td>
   11767 
   11768           </tr>
   11769           <tr class="entries_header">
   11770             <th class="th_details" colspan="5">Details</th>
   11771           </tr>
   11772           <tr class="entry_cont">
   11773             <td class="entry_details" colspan="5">
   11774               <p>If a neutral density filter is not supported by this camera device,<wbr/>
   11775 this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every
   11776 filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p>
   11777             </td>
   11778           </tr>
   11779 
   11780 
   11781           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   11782            <!-- end of entry -->
   11783         
   11784                 
   11785           <tr class="entry" id="static_android.lens.info.availableFocalLengths">
   11786             <td class="entry_name
   11787              " rowspan="3">
   11788               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths
   11789             </td>
   11790             <td class="entry_type">
   11791                 <span class="entry_type_name">float</span>
   11792                 <span class="entry_type_container">x</span>
   11793 
   11794                 <span class="entry_type_array">
   11795                   n
   11796                 </span>
   11797               <span class="entry_type_visibility"> [public]</span>
   11798 
   11799 
   11800               <span class="entry_type_hwlevel">[legacy] </span>
   11801 
   11802 
   11803                 <div class="entry_type_notes">The list of available focal lengths</div>
   11804 
   11805 
   11806             </td> <!-- entry_type -->
   11807 
   11808             <td class="entry_description">
   11809               <p>List of focal lengths for <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a> that are supported by this camera
   11810 device.<wbr/></p>
   11811             </td>
   11812 
   11813             <td class="entry_units">
   11814               Millimeters
   11815             </td>
   11816 
   11817             <td class="entry_range">
   11818               <p>Values are &gt; 0</p>
   11819             </td>
   11820 
   11821             <td class="entry_tags">
   11822               <ul class="entry_tags">
   11823                   <li><a href="#tag_BC">BC</a></li>
   11824                   <li><a href="#tag_V1">V1</a></li>
   11825               </ul>
   11826             </td>
   11827 
   11828           </tr>
   11829           <tr class="entries_header">
   11830             <th class="th_details" colspan="5">Details</th>
   11831           </tr>
   11832           <tr class="entry_cont">
   11833             <td class="entry_details" colspan="5">
   11834               <p>If optical zoom is not supported,<wbr/> this list will only contain
   11835 a single value corresponding to the fixed focal length of the
   11836 device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported
   11837 by the camera device,<wbr/> in ascending order.<wbr/></p>
   11838             </td>
   11839           </tr>
   11840 
   11841 
   11842           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   11843            <!-- end of entry -->
   11844         
   11845                 
   11846           <tr class="entry" id="static_android.lens.info.availableOpticalStabilization">
   11847             <td class="entry_name
   11848              " rowspan="3">
   11849               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization
   11850             </td>
   11851             <td class="entry_type">
   11852                 <span class="entry_type_name">byte</span>
   11853                 <span class="entry_type_container">x</span>
   11854 
   11855                 <span class="entry_type_array">
   11856                   n
   11857                 </span>
   11858               <span class="entry_type_visibility"> [public as enumList]</span>
   11859 
   11860 
   11861               <span class="entry_type_hwlevel">[limited] </span>
   11862 
   11863 
   11864                 <div class="entry_type_notes">list of enums</div>
   11865 
   11866 
   11867             </td> <!-- entry_type -->
   11868 
   11869             <td class="entry_description">
   11870               <p>List of optical image stabilization (OIS) modes for
   11871 <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> that are supported by this camera device.<wbr/></p>
   11872             </td>
   11873 
   11874             <td class="entry_units">
   11875             </td>
   11876 
   11877             <td class="entry_range">
   11878               <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p>
   11879             </td>
   11880 
   11881             <td class="entry_tags">
   11882               <ul class="entry_tags">
   11883                   <li><a href="#tag_V1">V1</a></li>
   11884               </ul>
   11885             </td>
   11886 
   11887           </tr>
   11888           <tr class="entries_header">
   11889             <th class="th_details" colspan="5">Details</th>
   11890           </tr>
   11891           <tr class="entry_cont">
   11892             <td class="entry_details" colspan="5">
   11893               <p>If OIS is not supported by a given camera device,<wbr/> this list will
   11894 contain only OFF.<wbr/></p>
   11895             </td>
   11896           </tr>
   11897 
   11898 
   11899           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   11900            <!-- end of entry -->
   11901         
   11902                 
   11903           <tr class="entry" id="static_android.lens.info.hyperfocalDistance">
   11904             <td class="entry_name
   11905              " rowspan="3">
   11906               android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance
   11907             </td>
   11908             <td class="entry_type">
   11909                 <span class="entry_type_name">float</span>
   11910 
   11911               <span class="entry_type_visibility"> [public]</span>
   11912 
   11913 
   11914               <span class="entry_type_hwlevel">[limited] </span>
   11915 
   11916 
   11917 
   11918 
   11919             </td> <!-- entry_type -->
   11920 
   11921             <td class="entry_description">
   11922               <p>Hyperfocal distance for this lens.<wbr/></p>
   11923             </td>
   11924 
   11925             <td class="entry_units">
   11926               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
   11927             </td>
   11928 
   11929             <td class="entry_range">
   11930               <p>If lens is fixed focus,<wbr/> &gt;= 0.<wbr/> If lens has focuser unit,<wbr/> the value is
   11931 within <code>(0.<wbr/>0f,<wbr/> <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>]</code></p>
   11932             </td>
   11933 
   11934             <td class="entry_tags">
   11935             </td>
   11936 
   11937           </tr>
   11938           <tr class="entries_header">
   11939             <th class="th_details" colspan="5">Details</th>
   11940           </tr>
   11941           <tr class="entry_cont">
   11942             <td class="entry_details" colspan="5">
   11943               <p>If the lens is not fixed focus,<wbr/> the camera device will report this
   11944 field when <a href="#static_android.lens.info.focusDistanceCalibration">android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration</a> is APPROXIMATE or CALIBRATED.<wbr/></p>
   11945             </td>
   11946           </tr>
   11947 
   11948 
   11949           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   11950            <!-- end of entry -->
   11951         
   11952                 
   11953           <tr class="entry" id="static_android.lens.info.minimumFocusDistance">
   11954             <td class="entry_name
   11955              " rowspan="5">
   11956               android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance
   11957             </td>
   11958             <td class="entry_type">
   11959                 <span class="entry_type_name">float</span>
   11960 
   11961               <span class="entry_type_visibility"> [public]</span>
   11962 
   11963 
   11964               <span class="entry_type_hwlevel">[limited] </span>
   11965 
   11966 
   11967 
   11968 
   11969             </td> <!-- entry_type -->
   11970 
   11971             <td class="entry_description">
   11972               <p>Shortest distance from frontmost surface
   11973 of the lens that can be brought into sharp focus.<wbr/></p>
   11974             </td>
   11975 
   11976             <td class="entry_units">
   11977               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
   11978             </td>
   11979 
   11980             <td class="entry_range">
   11981               <p>&gt;= 0</p>
   11982             </td>
   11983 
   11984             <td class="entry_tags">
   11985               <ul class="entry_tags">
   11986                   <li><a href="#tag_V1">V1</a></li>
   11987               </ul>
   11988             </td>
   11989 
   11990           </tr>
   11991           <tr class="entries_header">
   11992             <th class="th_details" colspan="5">Details</th>
   11993           </tr>
   11994           <tr class="entry_cont">
   11995             <td class="entry_details" colspan="5">
   11996               <p>If the lens is fixed-focus,<wbr/> this will be
   11997 0.<wbr/></p>
   11998             </td>
   11999           </tr>
   12000 
   12001           <tr class="entries_header">
   12002             <th class="th_details" colspan="5">HAL Implementation Details</th>
   12003           </tr>
   12004           <tr class="entry_cont">
   12005             <td class="entry_details" colspan="5">
   12006               <p>Mandatory for FULL devices; LIMITED devices
   12007 must always set this value to 0 for fixed-focus; and may omit
   12008 the minimum focus distance otherwise.<wbr/></p>
   12009 <p>This field is also mandatory for all devices advertising
   12010 the MANUAL_<wbr/>SENSOR capability.<wbr/></p>
   12011             </td>
   12012           </tr>
   12013 
   12014           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   12015            <!-- end of entry -->
   12016         
   12017                 
   12018           <tr class="entry" id="static_android.lens.info.shadingMapSize">
   12019             <td class="entry_name
   12020              " rowspan="3">
   12021               android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size
   12022             </td>
   12023             <td class="entry_type">
   12024                 <span class="entry_type_name">int32</span>
   12025                 <span class="entry_type_container">x</span>
   12026 
   12027                 <span class="entry_type_array">
   12028                   2
   12029                 </span>
   12030               <span class="entry_type_visibility"> [hidden as size]</span>
   12031 
   12032 
   12033               <span class="entry_type_hwlevel">[full] </span>
   12034 
   12035 
   12036                 <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div>
   12037 
   12038 
   12039             </td> <!-- entry_type -->
   12040 
   12041             <td class="entry_description">
   12042               <p>Dimensions of lens shading map.<wbr/></p>
   12043             </td>
   12044 
   12045             <td class="entry_units">
   12046             </td>
   12047 
   12048             <td class="entry_range">
   12049               <p>Both values &gt;= 1</p>
   12050             </td>
   12051 
   12052             <td class="entry_tags">
   12053               <ul class="entry_tags">
   12054                   <li><a href="#tag_V1">V1</a></li>
   12055               </ul>
   12056             </td>
   12057 
   12058           </tr>
   12059           <tr class="entries_header">
   12060             <th class="th_details" colspan="5">Details</th>
   12061           </tr>
   12062           <tr class="entry_cont">
   12063             <td class="entry_details" colspan="5">
   12064               <p>The map should be on the order of 30-40 rows and columns,<wbr/> and
   12065 must be smaller than 64x64.<wbr/></p>
   12066             </td>
   12067           </tr>
   12068 
   12069 
   12070           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   12071            <!-- end of entry -->
   12072         
   12073                 
   12074           <tr class="entry" id="static_android.lens.info.focusDistanceCalibration">
   12075             <td class="entry_name
   12076              " rowspan="5">
   12077               android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration
   12078             </td>
   12079             <td class="entry_type">
   12080                 <span class="entry_type_name entry_type_name_enum">byte</span>
   12081 
   12082               <span class="entry_type_visibility"> [public]</span>
   12083 
   12084 
   12085               <span class="entry_type_hwlevel">[limited] </span>
   12086 
   12087 
   12088 
   12089                 <ul class="entry_type_enum">
   12090                   <li>
   12091                     <span class="entry_type_enum_name">UNCALIBRATED</span>
   12092                     <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for
   12093 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p>
   12094 <p>Setting the lens to the same focus distance on separate occasions may
   12095 result in a different real focus distance,<wbr/> depending on factors such
   12096 as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/>
   12097 and the device temperature.<wbr/> The focus distance value will still be
   12098 in the range of <code>[0,<wbr/> <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>]</code>,<wbr/> where 0
   12099 represents the farthest focus.<wbr/></p></span>
   12100                   </li>
   12101                   <li>
   12102                     <span class="entry_type_enum_name">APPROXIMATE</span>
   12103                     <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p>
   12104 <p>However,<wbr/> setting the lens to the same focus distance
   12105 on separate occasions may result in a different real
   12106 focus distance,<wbr/> depending on factors such as the
   12107 orientation of the device,<wbr/> the age of the focusing
   12108 mechanism,<wbr/> and the device temperature.<wbr/></p></span>
   12109                   </li>
   12110                   <li>
   12111                     <span class="entry_type_enum_name">CALIBRATED</span>
   12112                     <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and
   12113 is calibrated.<wbr/></p>
   12114 <p>The lens mechanism is calibrated so that setting the
   12115 same focus distance is repeatable on multiple
   12116 occasions with good accuracy,<wbr/> and the focus distance
   12117 corresponds to the real physical distance to the plane
   12118 of best focus.<wbr/></p></span>
   12119                   </li>
   12120                 </ul>
   12121 
   12122             </td> <!-- entry_type -->
   12123 
   12124             <td class="entry_description">
   12125               <p>The lens focus distance calibration quality.<wbr/></p>
   12126             </td>
   12127 
   12128             <td class="entry_units">
   12129             </td>
   12130 
   12131             <td class="entry_range">
   12132             </td>
   12133 
   12134             <td class="entry_tags">
   12135               <ul class="entry_tags">
   12136                   <li><a href="#tag_V1">V1</a></li>
   12137               </ul>
   12138             </td>
   12139 
   12140           </tr>
   12141           <tr class="entries_header">
   12142             <th class="th_details" colspan="5">Details</th>
   12143           </tr>
   12144           <tr class="entry_cont">
   12145             <td class="entry_details" colspan="5">
   12146               <p>The lens focus distance calibration quality determines the reliability of
   12147 focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
   12148 <a href="#dynamic_android.lens.focusRange">android.<wbr/>lens.<wbr/>focus<wbr/>Range</a>,<wbr/> <a href="#static_android.lens.info.hyperfocalDistance">android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance</a>,<wbr/> and
   12149 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p>
   12150 <p>APPROXIMATE and CALIBRATED devices report the focus metadata in
   12151 units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/>
   12152 and increasing positive numbers represent focusing closer and closer
   12153 to the camera device.<wbr/> The focus distance control also uses diopters
   12154 on these devices.<wbr/></p>
   12155 <p>UNCALIBRATED devices do not use units that are directly comparable
   12156 to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest
   12157 focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the
   12158 nearest focus the device can achieve.<wbr/></p>
   12159             </td>
   12160           </tr>
   12161 
   12162           <tr class="entries_header">
   12163             <th class="th_details" colspan="5">HAL Implementation Details</th>
   12164           </tr>
   12165           <tr class="entry_cont">
   12166             <td class="entry_details" colspan="5">
   12167               <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity
   12168 focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF)
   12169 and the lens focus distance is set to 0 diopters
   12170 (<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity
   12171 and is stably focused at infinity even if the device tilts.<wbr/> It may take the
   12172 lens some time to move; during the move the lens state should be MOVING and
   12173 the output diopter value should be changing toward 0.<wbr/></p>
   12174             </td>
   12175           </tr>
   12176 
   12177           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   12178            <!-- end of entry -->
   12179         
   12180         
   12181         
   12182 
   12183                 
   12184           <tr class="entry" id="static_android.lens.facing">
   12185             <td class="entry_name
   12186              " rowspan="1">
   12187               android.<wbr/>lens.<wbr/>facing
   12188             </td>
   12189             <td class="entry_type">
   12190                 <span class="entry_type_name entry_type_name_enum">byte</span>
   12191 
   12192               <span class="entry_type_visibility"> [public]</span>
   12193 
   12194 
   12195               <span class="entry_type_hwlevel">[legacy] </span>
   12196 
   12197 
   12198 
   12199                 <ul class="entry_type_enum">
   12200                   <li>
   12201                     <span class="entry_type_enum_name">FRONT</span>
   12202                     <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span>
   12203                   </li>
   12204                   <li>
   12205                     <span class="entry_type_enum_name">BACK</span>
   12206                     <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span>
   12207                   </li>
   12208                   <li>
   12209                     <span class="entry_type_enum_name">EXTERNAL</span>
   12210                     <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the
   12211 device's screen.<wbr/></p></span>
   12212                   </li>
   12213                 </ul>
   12214 
   12215             </td> <!-- entry_type -->
   12216 
   12217             <td class="entry_description">
   12218               <p>Direction the camera faces relative to
   12219 device screen.<wbr/></p>
   12220             </td>
   12221 
   12222             <td class="entry_units">
   12223             </td>
   12224 
   12225             <td class="entry_range">
   12226             </td>
   12227 
   12228             <td class="entry_tags">
   12229             </td>
   12230 
   12231           </tr>
   12232 
   12233 
   12234           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   12235            <!-- end of entry -->
   12236         
   12237                 
   12238           <tr class="entry" id="static_android.lens.poseRotation">
   12239             <td class="entry_name
   12240              " rowspan="3">
   12241               android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
   12242             </td>
   12243             <td class="entry_type">
   12244                 <span class="entry_type_name">float</span>
   12245                 <span class="entry_type_container">x</span>
   12246 
   12247                 <span class="entry_type_array">
   12248                   4
   12249                 </span>
   12250               <span class="entry_type_visibility"> [public]</span>
   12251 
   12252 
   12253 
   12254 
   12255 
   12256 
   12257             </td> <!-- entry_type -->
   12258 
   12259             <td class="entry_description">
   12260               <p>The orientation of the camera relative to the sensor
   12261 coordinate system.<wbr/></p>
   12262             </td>
   12263 
   12264             <td class="entry_units">
   12265               
   12266             Quaternion coefficients
   12267           
   12268             </td>
   12269 
   12270             <td class="entry_range">
   12271             </td>
   12272 
   12273             <td class="entry_tags">
   12274               <ul class="entry_tags">
   12275                   <li><a href="#tag_DEPTH">DEPTH</a></li>
   12276               </ul>
   12277             </td>
   12278 
   12279           </tr>
   12280           <tr class="entries_header">
   12281             <th class="th_details" colspan="5">Details</th>
   12282           </tr>
   12283           <tr class="entry_cont">
   12284             <td class="entry_details" colspan="5">
   12285               <p>The four coefficients that describe the quaternion
   12286 rotation from the Android sensor coordinate system to a
   12287 camera-aligned coordinate system where the X-axis is
   12288 aligned with the long side of the image sensor,<wbr/> the Y-axis
   12289 is aligned with the short side of the image sensor,<wbr/> and
   12290 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
   12291 <p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
   12292 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
   12293 amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
   12294 <pre><code> theta = 2 * acos(w)
   12295 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
   12296 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
   12297 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
   12298 </code></pre>
   12299 <p>To create a 3x3 rotation matrix that applies the rotation
   12300 defined by this quaternion,<wbr/> the following matrix can be
   12301 used:</p>
   12302 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
   12303            2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
   12304            2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
   12305 </code></pre>
   12306 <p>This matrix can then be used to apply the rotation to a
   12307  column vector point with</p>
   12308 <p><code>p' = Rp</code></p>
   12309 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
   12310  <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
   12311             </td>
   12312           </tr>
   12313 
   12314 
   12315           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   12316            <!-- end of entry -->
   12317         
   12318                 
   12319           <tr class="entry" id="static_android.lens.poseTranslation">
   12320             <td class="entry_name
   12321              " rowspan="3">
   12322               android.<wbr/>lens.<wbr/>pose<wbr/>Translation
   12323             </td>
   12324             <td class="entry_type">
   12325                 <span class="entry_type_name">float</span>
   12326                 <span class="entry_type_container">x</span>
   12327 
   12328                 <span class="entry_type_array">
   12329                   3
   12330                 </span>
   12331               <span class="entry_type_visibility"> [public]</span>
   12332 
   12333 
   12334 
   12335 
   12336 
   12337 
   12338             </td> <!-- entry_type -->
   12339 
   12340             <td class="entry_description">
   12341               <p>Position of the camera optical center.<wbr/></p>
   12342             </td>
   12343 
   12344             <td class="entry_units">
   12345               Meters
   12346             </td>
   12347 
   12348             <td class="entry_range">
   12349             </td>
   12350 
   12351             <td class="entry_tags">
   12352               <ul class="entry_tags">
   12353                   <li><a href="#tag_DEPTH">DEPTH</a></li>
   12354               </ul>
   12355             </td>
   12356 
   12357           </tr>
   12358           <tr class="entries_header">
   12359             <th class="th_details" colspan="5">Details</th>
   12360           </tr>
   12361           <tr class="entry_cont">
   12362             <td class="entry_details" colspan="5">
   12363               <p>The position of the camera device's lens optical center,<wbr/>
   12364 as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the
   12365 optical center of the largest camera device facing in the
   12366 same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate
   12367 axes</a>.<wbr/> Note that only the axis definitions are shared with
   12368 the sensor coordinate system,<wbr/> but not the origin.<wbr/></p>
   12369 <p>If this device is the largest or only camera device with a
   12370 given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a
   12371 camera device with a lens optical center located 3 cm from
   12372 the main sensor along the +X axis (to the right from the
   12373 user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
   12374 <p>To transform a pixel coordinates between two cameras
   12375 facing the same direction,<wbr/> first the source camera
   12376 <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/>  Then
   12377 the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs
   12378 to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>
   12379 of the source camera,<wbr/> the translation of the source camera
   12380 relative to the destination camera,<wbr/> the
   12381 <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and
   12382 finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
   12383 of the destination camera.<wbr/> This obtains a
   12384 radial-distortion-free coordinate in the destination
   12385 camera pixel coordinates.<wbr/></p>
   12386 <p>To compare this against a real image from the destination
   12387 camera,<wbr/> the destination camera image then needs to be
   12388 corrected for radial distortion before comparison or
   12389 sampling.<wbr/></p>
   12390             </td>
   12391           </tr>
   12392 
   12393 
   12394           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   12395            <!-- end of entry -->
   12396         
   12397                 
   12398           <tr class="entry" id="static_android.lens.intrinsicCalibration">
   12399             <td class="entry_name
   12400              " rowspan="3">
   12401               android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
   12402             </td>
   12403             <td class="entry_type">
   12404                 <span class="entry_type_name">float</span>
   12405                 <span class="entry_type_container">x</span>
   12406 
   12407                 <span class="entry_type_array">
   12408                   5
   12409                 </span>
   12410               <span class="entry_type_visibility"> [public]</span>
   12411 
   12412 
   12413 
   12414 
   12415 
   12416 
   12417             </td> <!-- entry_type -->
   12418 
   12419             <td class="entry_description">
   12420               <p>The parameters for this camera device's intrinsic
   12421 calibration.<wbr/></p>
   12422             </td>
   12423 
   12424             <td class="entry_units">
   12425               
   12426             Pixels in the
   12427             android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
   12428             coordinate system.<wbr/>
   12429           
   12430             </td>
   12431 
   12432             <td class="entry_range">
   12433             </td>
   12434 
   12435             <td class="entry_tags">
   12436               <ul class="entry_tags">
   12437                   <li><a href="#tag_DEPTH">DEPTH</a></li>
   12438               </ul>
   12439             </td>
   12440 
   12441           </tr>
   12442           <tr class="entries_header">
   12443             <th class="th_details" colspan="5">Details</th>
   12444           </tr>
   12445           <tr class="entry_cont">
   12446             <td class="entry_details" colspan="5">
   12447               <p>The five calibration parameters that describe the
   12448 transform from camera-centric 3D coordinates to sensor
   12449 pixel coordinates:</p>
   12450 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
   12451 </code></pre>
   12452 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
   12453 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
   12454 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
   12455 being aligned with the lens plane.<wbr/></p>
   12456 <p>These are typically used within a transformation matrix K:</p>
   12457 <pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
   12458        0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
   12459        0    0,<wbr/>   1 ]
   12460 </code></pre>
   12461 <p>which can then be combined with the camera pose rotation
   12462 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
   12463 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
   12464 complete transform from world coordinates to pixel
   12465 coordinates:</p>
   12466 <pre><code>P = [ K 0   * [ R t
   12467      0 1 ]     0 1 ]
   12468 </code></pre>
   12469 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
   12470 and <code>p_<wbr/>s</code> being a point in the camera active pixel array
   12471 coordinate system,<wbr/> and with the mapping including the
   12472 homogeneous division by z:</p>
   12473 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
   12474 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
   12475 </code></pre>
   12476 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
   12477 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
   12478 (depth) in pixel coordinates.<wbr/></p>
   12479 <p>Note that the coordinate system for this transform is the
   12480 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> system,<wbr/>
   12481 where <code>(0,<wbr/>0)</code> is the top-left of the
   12482 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
   12483 intrinsic calibration transforms have been applied to a
   12484 world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>
   12485 transform needs to be applied,<wbr/> and the result adjusted to
   12486 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
   12487 system (where <code>(0,<wbr/> 0)</code> is the top-left of the
   12488 activeArraySize rectangle),<wbr/> to determine the final pixel
   12489 coordinate of the world point for processed (non-RAW)
   12490 output buffers.<wbr/></p>
   12491             </td>
   12492           </tr>
   12493 
   12494 
   12495           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   12496            <!-- end of entry -->
   12497         
   12498                 
   12499           <tr class="entry" id="static_android.lens.radialDistortion">
   12500             <td class="entry_name
   12501              " rowspan="3">
   12502               android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
   12503             </td>
   12504             <td class="entry_type">
   12505                 <span class="entry_type_name">float</span>
   12506                 <span class="entry_type_container">x</span>
   12507 
   12508                 <span class="entry_type_array">
   12509                   6
   12510                 </span>
   12511               <span class="entry_type_visibility"> [public]</span>
   12512 
   12513 
   12514 
   12515 
   12516 
   12517 
   12518             </td> <!-- entry_type -->
   12519 
   12520             <td class="entry_description">
   12521               <p>The correction coefficients to correct for this camera device's
   12522 radial and tangential lens distortion.<wbr/></p>
   12523             </td>
   12524 
   12525             <td class="entry_units">
   12526               
   12527             Unitless coefficients.<wbr/>
   12528           
   12529             </td>
   12530 
   12531             <td class="entry_range">
   12532             </td>
   12533 
   12534             <td class="entry_tags">
   12535               <ul class="entry_tags">
   12536                   <li><a href="#tag_DEPTH">DEPTH</a></li>
   12537               </ul>
   12538             </td>
   12539 
   12540           </tr>
   12541           <tr class="entries_header">
   12542             <th class="th_details" colspan="5">Details</th>
   12543           </tr>
   12544           <tr class="entry_cont">
   12545             <td class="entry_details" colspan="5">
   12546               <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
   12547 kappa_<wbr/>3]</code> and two tangential distortion coefficients
   12548 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
   12549 lens's geometric distortion with the mapping equations:</p>
   12550 <pre><code> x_<wbr/>c = x_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
   12551        kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
   12552  y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
   12553        kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
   12554 </code></pre>
   12555 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
   12556 input image that correspond to the pixel values in the
   12557 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
   12558 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
   12559 </code></pre>
   12560 <p>The pixel coordinates are defined in a normalized
   12561 coordinate system related to the
   12562 <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
   12563 Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> have <code>(0,<wbr/>0)</code> at the
   12564 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
   12565 of both x and y coordinates are normalized to be 1 at the
   12566 edge further from the optical center,<wbr/> so the range
   12567 for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
   12568 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
   12569 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
   12570 is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
   12571 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
   12572             </td>
   12573           </tr>
   12574 
   12575 
   12576           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   12577            <!-- end of entry -->
   12578         
   12579         
   12580 
   12581       <!-- end of kind -->
   12582       </tbody>
   12583       <tr><td colspan="6" class="kind">dynamic</td></tr>
   12584 
   12585       <thead class="entries_header">
   12586         <tr>
   12587           <th class="th_name">Property Name</th>
   12588           <th class="th_type">Type</th>
   12589           <th class="th_description">Description</th>
   12590           <th class="th_units">Units</th>
   12591           <th class="th_range">Range</th>
   12592           <th class="th_tags">Tags</th>
   12593         </tr>
   12594       </thead>
   12595 
   12596       <tbody>
   12597 
   12598         
   12599 
   12600         
   12601 
   12602         
   12603 
   12604         
   12605 
   12606                 
   12607           <tr class="entry" id="dynamic_android.lens.aperture">
   12608             <td class="entry_name
   12609              " rowspan="3">
   12610               android.<wbr/>lens.<wbr/>aperture
   12611             </td>
   12612             <td class="entry_type">
   12613                 <span class="entry_type_name">float</span>
   12614 
   12615               <span class="entry_type_visibility"> [public]</span>
   12616 
   12617 
   12618               <span class="entry_type_hwlevel">[full] </span>
   12619 
   12620 
   12621 
   12622 
   12623             </td> <!-- entry_type -->
   12624 
   12625             <td class="entry_description">
   12626               <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
   12627 effective aperture diameter.<wbr/></p>
   12628             </td>
   12629 
   12630             <td class="entry_units">
   12631               The f-number (f/<wbr/>N)
   12632             </td>
   12633 
   12634             <td class="entry_range">
   12635               <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
   12636             </td>
   12637 
   12638             <td class="entry_tags">
   12639               <ul class="entry_tags">
   12640                   <li><a href="#tag_V1">V1</a></li>
   12641               </ul>
   12642             </td>
   12643 
   12644           </tr>
   12645           <tr class="entries_header">
   12646             <th class="th_details" colspan="5">Details</th>
   12647           </tr>
   12648           <tr class="entry_cont">
   12649             <td class="entry_details" colspan="5">
   12650               <p>Setting this value is only supported on the camera devices that have a variable
   12651 aperture lens.<wbr/></p>
   12652 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
   12653 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
   12654 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>
   12655 to achieve manual exposure control.<wbr/></p>
   12656 <p>The requested aperture value may take several frames to reach the
   12657 requested value; the camera device will report the current (intermediate)
   12658 aperture size in capture result metadata while the aperture is changing.<wbr/>
   12659 While the aperture is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
   12660 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
   12661 the ON modes,<wbr/> this will be overridden by the camera device
   12662 auto-exposure algorithm,<wbr/> the overridden values are then provided
   12663 back to the user in the corresponding result.<wbr/></p>
   12664             </td>
   12665           </tr>
   12666 
   12667 
   12668           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   12669            <!-- end of entry -->
   12670         
   12671                 
   12672           <tr class="entry" id="dynamic_android.lens.filterDensity">
   12673             <td class="entry_name
   12674              " rowspan="3">
   12675               android.<wbr/>lens.<wbr/>filter<wbr/>Density
   12676             </td>
   12677             <td class="entry_type">
   12678                 <span class="entry_type_name">float</span>
   12679 
   12680               <span class="entry_type_visibility"> [public]</span>
   12681 
   12682 
   12683               <span class="entry_type_hwlevel">[full] </span>
   12684 
   12685 
   12686 
   12687 
   12688             </td> <!-- entry_type -->
   12689 
   12690             <td class="entry_description">
   12691               <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
   12692             </td>
   12693 
   12694             <td class="entry_units">
   12695               Exposure Value (EV)
   12696             </td>
   12697 
   12698             <td class="entry_range">
   12699               <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
   12700             </td>
   12701 
   12702             <td class="entry_tags">
   12703               <ul class="entry_tags">
   12704                   <li><a href="#tag_V1">V1</a></li>
   12705               </ul>
   12706             </td>
   12707 
   12708           </tr>
   12709           <tr class="entries_header">
   12710             <th class="th_details" colspan="5">Details</th>
   12711           </tr>
   12712           <tr class="entry_cont">
   12713             <td class="entry_details" colspan="5">
   12714               <p>This control will not be supported on most camera devices.<wbr/></p>
   12715 <p>Lens filters are typically used to lower the amount of light the
   12716 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
   12717 step is the standard logarithmic representation,<wbr/> which are
   12718 non-negative,<wbr/> and inversely proportional to the amount of light
   12719 hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
   12720 in no reduction of the incoming light,<wbr/> and setting this to 2 would
   12721 mean that the filter is set to reduce incoming light by two stops
   12722 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
   12723 <p>It may take several frames before the lens filter density changes
   12724 to the requested value.<wbr/> While the filter density is still changing,<wbr/>
   12725 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
   12726             </td>
   12727           </tr>
   12728 
   12729 
   12730           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   12731            <!-- end of entry -->
   12732         
   12733                 
   12734           <tr class="entry" id="dynamic_android.lens.focalLength">
   12735             <td class="entry_name
   12736              " rowspan="3">
   12737               android.<wbr/>lens.<wbr/>focal<wbr/>Length
   12738             </td>
   12739             <td class="entry_type">
   12740                 <span class="entry_type_name">float</span>
   12741 
   12742               <span class="entry_type_visibility"> [public]</span>
   12743 
   12744 
   12745               <span class="entry_type_hwlevel">[legacy] </span>
   12746 
   12747 
   12748 
   12749 
   12750             </td> <!-- entry_type -->
   12751 
   12752             <td class="entry_description">
   12753               <p>The desired lens focal length; used for optical zoom.<wbr/></p>
   12754             </td>
   12755 
   12756             <td class="entry_units">
   12757               Millimeters
   12758             </td>
   12759 
   12760             <td class="entry_range">
   12761               <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
   12762             </td>
   12763 
   12764             <td class="entry_tags">
   12765               <ul class="entry_tags">
   12766                   <li><a href="#tag_BC">BC</a></li>
   12767               </ul>
   12768             </td>
   12769 
   12770           </tr>
   12771           <tr class="entries_header">
   12772             <th class="th_details" colspan="5">Details</th>
   12773           </tr>
   12774           <tr class="entry_cont">
   12775             <td class="entry_details" colspan="5">
   12776               <p>This setting controls the physical focal length of the camera
   12777 device's lens.<wbr/> Changing the focal length changes the field of
   12778 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
   12779 <p>Like <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> and <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a>,<wbr/> this
   12780 setting won't be applied instantaneously,<wbr/> and it may take several
   12781 frames before the lens can change to the requested focal length.<wbr/>
   12782 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
   12783 be set to MOVING.<wbr/></p>
   12784 <p>Optical zoom will not be supported on most devices.<wbr/></p>
   12785             </td>
   12786           </tr>
   12787 
   12788 
   12789           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   12790            <!-- end of entry -->
   12791         
   12792                 
   12793           <tr class="entry" id="dynamic_android.lens.focusDistance">
   12794             <td class="entry_name
   12795              " rowspan="3">
   12796               android.<wbr/>lens.<wbr/>focus<wbr/>Distance
   12797             </td>
   12798             <td class="entry_type">
   12799                 <span class="entry_type_name">float</span>
   12800 
   12801               <span class="entry_type_visibility"> [public]</span>
   12802 
   12803 
   12804               <span class="entry_type_hwlevel">[full] </span>
   12805 
   12806 
   12807 
   12808 
   12809             </td> <!-- entry_type -->
   12810 
   12811             <td class="entry_description">
   12812               <p>Desired distance to plane of sharpest focus,<wbr/>
   12813 measured from frontmost surface of the lens.<wbr/></p>
   12814             </td>
   12815 
   12816             <td class="entry_units">
   12817               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
   12818             </td>
   12819 
   12820             <td class="entry_range">
   12821               <p>&gt;= 0</p>
   12822             </td>
   12823 
   12824             <td class="entry_tags">
   12825               <ul class="entry_tags">
   12826                   <li><a href="#tag_BC">BC</a></li>
   12827               </ul>
   12828             </td>
   12829 
   12830           </tr>
   12831           <tr class="entries_header">
   12832             <th class="th_details" colspan="5">Details</th>
   12833           </tr>
   12834           <tr class="entry_cont">
   12835             <td class="entry_details" colspan="5">
   12836               <p>Should be zero for fixed-focus cameras</p>
   12837             </td>
   12838           </tr>
   12839 
   12840 
   12841           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   12842            <!-- end of entry -->
   12843         
   12844                 
   12845           <tr class="entry" id="dynamic_android.lens.focusRange">
   12846             <td class="entry_name
   12847              " rowspan="3">
   12848               android.<wbr/>lens.<wbr/>focus<wbr/>Range
   12849             </td>
   12850             <td class="entry_type">
   12851                 <span class="entry_type_name">float</span>
   12852                 <span class="entry_type_container">x</span>
   12853 
   12854                 <span class="entry_type_array">
   12855                   2
   12856                 </span>
   12857               <span class="entry_type_visibility"> [public as pairFloatFloat]</span>
   12858 
   12859 
   12860               <span class="entry_type_hwlevel">[limited] </span>
   12861 
   12862 
   12863                 <div class="entry_type_notes">Range of scene distances that are in focus</div>
   12864 
   12865 
   12866             </td> <!-- entry_type -->
   12867 
   12868             <td class="entry_description">
   12869               <p>The range of scene distances that are in
   12870 sharp focus (depth of field).<wbr/></p>
   12871             </td>
   12872 
   12873             <td class="entry_units">
   12874               A pair of focus distances in diopters: (near,<wbr/>
   12875           far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/>
   12876             </td>
   12877 
   12878             <td class="entry_range">
   12879               <p>&gt;=0</p>
   12880             </td>
   12881 
   12882             <td class="entry_tags">
   12883               <ul class="entry_tags">
   12884                   <li><a href="#tag_BC">BC</a></li>
   12885               </ul>
   12886             </td>
   12887 
   12888           </tr>
   12889           <tr class="entries_header">
   12890             <th class="th_details" colspan="5">Details</th>
   12891           </tr>
   12892           <tr class="entry_cont">
   12893             <td class="entry_details" colspan="5">
   12894               <p>If variable focus not supported,<wbr/> can still report
   12895 fixed depth of field range</p>
   12896             </td>
   12897           </tr>
   12898 
   12899 
   12900           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   12901            <!-- end of entry -->
   12902         
   12903                 
   12904           <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode">
   12905             <td class="entry_name
   12906              " rowspan="3">
   12907               android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
   12908             </td>
   12909             <td class="entry_type">
   12910                 <span class="entry_type_name entry_type_name_enum">byte</span>
   12911 
   12912               <span class="entry_type_visibility"> [public]</span>
   12913 
   12914 
   12915               <span class="entry_type_hwlevel">[limited] </span>
   12916 
   12917 
   12918 
   12919                 <ul class="entry_type_enum">
   12920                   <li>
   12921                     <span class="entry_type_enum_name">OFF</span>
   12922                     <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
   12923                   </li>
   12924                   <li>
   12925                     <span class="entry_type_enum_name">ON</span>
   12926                     <span class="entry_type_enum_optional">[optional]</span>
   12927                     <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
   12928                   </li>
   12929                 </ul>
   12930 
   12931             </td> <!-- entry_type -->
   12932 
   12933             <td class="entry_description">
   12934               <p>Sets whether the camera device uses optical image stabilization (OIS)
   12935 when capturing images.<wbr/></p>
   12936             </td>
   12937 
   12938             <td class="entry_units">
   12939             </td>
   12940 
   12941             <td class="entry_range">
   12942               <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
   12943             </td>
   12944 
   12945             <td class="entry_tags">
   12946               <ul class="entry_tags">
   12947                   <li><a href="#tag_V1">V1</a></li>
   12948               </ul>
   12949             </td>
   12950 
   12951           </tr>
   12952           <tr class="entries_header">
   12953             <th class="th_details" colspan="5">Details</th>
   12954           </tr>
   12955           <tr class="entry_cont">
   12956             <td class="entry_details" colspan="5">
   12957               <p>OIS is used to compensate for motion blur due to small
   12958 movements of the camera during capture.<wbr/> Unlike digital image
   12959 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
   12960 makes use of mechanical elements to stabilize the camera
   12961 sensor,<wbr/> and thus allows for longer exposure times before
   12962 camera shake becomes apparent.<wbr/></p>
   12963 <p>Switching between different optical stabilization modes may take several
   12964 frames to initialize,<wbr/> the camera device will report the current mode in
   12965 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
   12966 optical stabilization modes in the first several capture results may still
   12967 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
   12968 <p>If a camera device supports both OIS and digital image stabilization
   12969 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
   12970 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
   12971 <p>Not all devices will support OIS; see
   12972 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
   12973 available controls.<wbr/></p>
   12974             </td>
   12975           </tr>
   12976 
   12977 
   12978           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   12979            <!-- end of entry -->
   12980         
   12981                 
   12982           <tr class="entry" id="dynamic_android.lens.state">
   12983             <td class="entry_name
   12984              " rowspan="3">
   12985               android.<wbr/>lens.<wbr/>state
   12986             </td>
   12987             <td class="entry_type">
   12988                 <span class="entry_type_name entry_type_name_enum">byte</span>
   12989 
   12990               <span class="entry_type_visibility"> [public]</span>
   12991 
   12992 
   12993               <span class="entry_type_hwlevel">[limited] </span>
   12994 
   12995 
   12996 
   12997                 <ul class="entry_type_enum">
   12998                   <li>
   12999                     <span class="entry_type_enum_name">STATIONARY</span>
   13000                     <span class="entry_type_enum_notes"><p>The lens parameters (<a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
   13001 <a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> and <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a>) are not changing.<wbr/></p></span>
   13002                   </li>
   13003                   <li>
   13004                     <span class="entry_type_enum_name">MOVING</span>
   13005                     <span class="entry_type_enum_notes"><p>One or several of the lens parameters
   13006 (<a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
   13007 <a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> or <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a>) is
   13008 currently changing.<wbr/></p></span>
   13009                   </li>
   13010                 </ul>
   13011 
   13012             </td> <!-- entry_type -->
   13013 
   13014             <td class="entry_description">
   13015               <p>Current lens status.<wbr/></p>
   13016             </td>
   13017 
   13018             <td class="entry_units">
   13019             </td>
   13020 
   13021             <td class="entry_range">
   13022             </td>
   13023 
   13024             <td class="entry_tags">
   13025               <ul class="entry_tags">
   13026                   <li><a href="#tag_V1">V1</a></li>
   13027               </ul>
   13028             </td>
   13029 
   13030           </tr>
   13031           <tr class="entries_header">
   13032             <th class="th_details" colspan="5">Details</th>
   13033           </tr>
   13034           <tr class="entry_cont">
   13035             <td class="entry_details" colspan="5">
   13036               <p>For lens parameters <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
   13037 <a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> and <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a>,<wbr/> when changes are requested,<wbr/>
   13038 they may take several frames to reach the requested values.<wbr/> This state indicates
   13039 the current status of the lens parameters.<wbr/></p>
   13040 <p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be
   13041 either because the parameters are all fixed,<wbr/> or because the lens has had enough
   13042 time to reach the most recently-requested values.<wbr/>
   13043 If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p>
   13044 <ul>
   13045 <li>Fixed focus (<code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> == 0</code>),<wbr/> which means
   13046 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li>
   13047 <li>Fixed focal length (<a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a> contains single value),<wbr/>
   13048 which means the optical zoom is not supported.<wbr/></li>
   13049 <li>No ND filter (<a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a> contains only 0).<wbr/></li>
   13050 <li>Fixed aperture (<a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a> contains single value).<wbr/></li>
   13051 </ul>
   13052 <p>Then this state will always be STATIONARY.<wbr/></p>
   13053 <p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters
   13054 is changing.<wbr/></p>
   13055             </td>
   13056           </tr>
   13057 
   13058 
   13059           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   13060            <!-- end of entry -->
   13061         
   13062                 
   13063           <tr class="entry" id="dynamic_android.lens.poseRotation">
   13064             <td class="entry_name
   13065              " rowspan="3">
   13066               android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
   13067             </td>
   13068             <td class="entry_type">
   13069                 <span class="entry_type_name">float</span>
   13070                 <span class="entry_type_container">x</span>
   13071 
   13072                 <span class="entry_type_array">
   13073                   4
   13074                 </span>
   13075               <span class="entry_type_visibility"> [public]</span>
   13076 
   13077 
   13078 
   13079 
   13080 
   13081 
   13082             </td> <!-- entry_type -->
   13083 
   13084             <td class="entry_description">
   13085               <p>The orientation of the camera relative to the sensor
   13086 coordinate system.<wbr/></p>
   13087             </td>
   13088 
   13089             <td class="entry_units">
   13090               
   13091             Quaternion coefficients
   13092           
   13093             </td>
   13094 
   13095             <td class="entry_range">
   13096             </td>
   13097 
   13098             <td class="entry_tags">
   13099               <ul class="entry_tags">
   13100                   <li><a href="#tag_DEPTH">DEPTH</a></li>
   13101               </ul>
   13102             </td>
   13103 
   13104           </tr>
   13105           <tr class="entries_header">
   13106             <th class="th_details" colspan="5">Details</th>
   13107           </tr>
   13108           <tr class="entry_cont">
   13109             <td class="entry_details" colspan="5">
   13110               <p>The four coefficients that describe the quaternion
   13111 rotation from the Android sensor coordinate system to a
   13112 camera-aligned coordinate system where the X-axis is
   13113 aligned with the long side of the image sensor,<wbr/> the Y-axis
   13114 is aligned with the short side of the image sensor,<wbr/> and
   13115 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
   13116 <p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
   13117 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
   13118 amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
   13119 <pre><code> theta = 2 * acos(w)
   13120 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
   13121 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
   13122 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
   13123 </code></pre>
   13124 <p>To create a 3x3 rotation matrix that applies the rotation
   13125 defined by this quaternion,<wbr/> the following matrix can be
   13126 used:</p>
   13127 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
   13128            2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
   13129            2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
   13130 </code></pre>
   13131 <p>This matrix can then be used to apply the rotation to a
   13132  column vector point with</p>
   13133 <p><code>p' = Rp</code></p>
   13134 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
   13135  <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
   13136             </td>
   13137           </tr>
   13138 
   13139 
   13140           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   13141            <!-- end of entry -->
   13142         
   13143                 
   13144           <tr class="entry" id="dynamic_android.lens.poseTranslation">
   13145             <td class="entry_name
   13146              " rowspan="3">
   13147               android.<wbr/>lens.<wbr/>pose<wbr/>Translation
   13148             </td>
   13149             <td class="entry_type">
   13150                 <span class="entry_type_name">float</span>
   13151                 <span class="entry_type_container">x</span>
   13152 
   13153                 <span class="entry_type_array">
   13154                   3
   13155                 </span>
   13156               <span class="entry_type_visibility"> [public]</span>
   13157 
   13158 
   13159 
   13160 
   13161 
   13162 
   13163             </td> <!-- entry_type -->
   13164 
   13165             <td class="entry_description">
   13166               <p>Position of the camera optical center.<wbr/></p>
   13167             </td>
   13168 
   13169             <td class="entry_units">
   13170               Meters
   13171             </td>
   13172 
   13173             <td class="entry_range">
   13174             </td>
   13175 
   13176             <td class="entry_tags">
   13177               <ul class="entry_tags">
   13178                   <li><a href="#tag_DEPTH">DEPTH</a></li>
   13179               </ul>
   13180             </td>
   13181 
   13182           </tr>
   13183           <tr class="entries_header">
   13184             <th class="th_details" colspan="5">Details</th>
   13185           </tr>
   13186           <tr class="entry_cont">
   13187             <td class="entry_details" colspan="5">
   13188               <p>The position of the camera device's lens optical center,<wbr/>
   13189 as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the
   13190 optical center of the largest camera device facing in the
   13191 same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate
   13192 axes</a>.<wbr/> Note that only the axis definitions are shared with
   13193 the sensor coordinate system,<wbr/> but not the origin.<wbr/></p>
   13194 <p>If this device is the largest or only camera device with a
   13195 given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a
   13196 camera device with a lens optical center located 3 cm from
   13197 the main sensor along the +X axis (to the right from the
   13198 user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
   13199 <p>To transform a pixel coordinates between two cameras
   13200 facing the same direction,<wbr/> first the source camera
   13201 <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/>  Then
   13202 the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs
   13203 to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>
   13204 of the source camera,<wbr/> the translation of the source camera
   13205 relative to the destination camera,<wbr/> the
   13206 <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and
   13207 finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
   13208 of the destination camera.<wbr/> This obtains a
   13209 radial-distortion-free coordinate in the destination
   13210 camera pixel coordinates.<wbr/></p>
   13211 <p>To compare this against a real image from the destination
   13212 camera,<wbr/> the destination camera image then needs to be
   13213 corrected for radial distortion before comparison or
   13214 sampling.<wbr/></p>
   13215             </td>
   13216           </tr>
   13217 
   13218 
   13219           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   13220            <!-- end of entry -->
   13221         
   13222                 
   13223           <tr class="entry" id="dynamic_android.lens.intrinsicCalibration">
   13224             <td class="entry_name
   13225              " rowspan="3">
   13226               android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
   13227             </td>
   13228             <td class="entry_type">
   13229                 <span class="entry_type_name">float</span>
   13230                 <span class="entry_type_container">x</span>
   13231 
   13232                 <span class="entry_type_array">
   13233                   5
   13234                 </span>
   13235               <span class="entry_type_visibility"> [public]</span>
   13236 
   13237 
   13238 
   13239 
   13240 
   13241 
   13242             </td> <!-- entry_type -->
   13243 
   13244             <td class="entry_description">
   13245               <p>The parameters for this camera device's intrinsic
   13246 calibration.<wbr/></p>
   13247             </td>
   13248 
   13249             <td class="entry_units">
   13250               
   13251             Pixels in the
   13252             android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
   13253             coordinate system.<wbr/>
   13254           
   13255             </td>
   13256 
   13257             <td class="entry_range">
   13258             </td>
   13259 
   13260             <td class="entry_tags">
   13261               <ul class="entry_tags">
   13262                   <li><a href="#tag_DEPTH">DEPTH</a></li>
   13263               </ul>
   13264             </td>
   13265 
   13266           </tr>
   13267           <tr class="entries_header">
   13268             <th class="th_details" colspan="5">Details</th>
   13269           </tr>
   13270           <tr class="entry_cont">
   13271             <td class="entry_details" colspan="5">
   13272               <p>The five calibration parameters that describe the
   13273 transform from camera-centric 3D coordinates to sensor
   13274 pixel coordinates:</p>
   13275 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
   13276 </code></pre>
   13277 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
   13278 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
   13279 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
   13280 being aligned with the lens plane.<wbr/></p>
   13281 <p>These are typically used within a transformation matrix K:</p>
   13282 <pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
   13283        0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
   13284        0    0,<wbr/>   1 ]
   13285 </code></pre>
   13286 <p>which can then be combined with the camera pose rotation
   13287 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
   13288 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
   13289 complete transform from world coordinates to pixel
   13290 coordinates:</p>
   13291 <pre><code>P = [ K 0   * [ R t
   13292      0 1 ]     0 1 ]
   13293 </code></pre>
   13294 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
   13295 and <code>p_<wbr/>s</code> being a point in the camera active pixel array
   13296 coordinate system,<wbr/> and with the mapping including the
   13297 homogeneous division by z:</p>
   13298 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
   13299 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
   13300 </code></pre>
   13301 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
   13302 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
   13303 (depth) in pixel coordinates.<wbr/></p>
   13304 <p>Note that the coordinate system for this transform is the
   13305 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> system,<wbr/>
   13306 where <code>(0,<wbr/>0)</code> is the top-left of the
   13307 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
   13308 intrinsic calibration transforms have been applied to a
   13309 world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>
   13310 transform needs to be applied,<wbr/> and the result adjusted to
   13311 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
   13312 system (where <code>(0,<wbr/> 0)</code> is the top-left of the
   13313 activeArraySize rectangle),<wbr/> to determine the final pixel
   13314 coordinate of the world point for processed (non-RAW)
   13315 output buffers.<wbr/></p>
   13316             </td>
   13317           </tr>
   13318 
   13319 
   13320           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   13321            <!-- end of entry -->
   13322         
   13323                 
   13324           <tr class="entry" id="dynamic_android.lens.radialDistortion">
   13325             <td class="entry_name
   13326              " rowspan="3">
   13327               android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
   13328             </td>
   13329             <td class="entry_type">
   13330                 <span class="entry_type_name">float</span>
   13331                 <span class="entry_type_container">x</span>
   13332 
   13333                 <span class="entry_type_array">
   13334                   6
   13335                 </span>
   13336               <span class="entry_type_visibility"> [public]</span>
   13337 
   13338 
   13339 
   13340 
   13341 
   13342 
   13343             </td> <!-- entry_type -->
   13344 
   13345             <td class="entry_description">
   13346               <p>The correction coefficients to correct for this camera device's
   13347 radial and tangential lens distortion.<wbr/></p>
   13348             </td>
   13349 
   13350             <td class="entry_units">
   13351               
   13352             Unitless coefficients.<wbr/>
   13353           
   13354             </td>
   13355 
   13356             <td class="entry_range">
   13357             </td>
   13358 
   13359             <td class="entry_tags">
   13360               <ul class="entry_tags">
   13361                   <li><a href="#tag_DEPTH">DEPTH</a></li>
   13362               </ul>
   13363             </td>
   13364 
   13365           </tr>
   13366           <tr class="entries_header">
   13367             <th class="th_details" colspan="5">Details</th>
   13368           </tr>
   13369           <tr class="entry_cont">
   13370             <td class="entry_details" colspan="5">
   13371               <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
   13372 kappa_<wbr/>3]</code> and two tangential distortion coefficients
   13373 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
   13374 lens's geometric distortion with the mapping equations:</p>
   13375 <pre><code> x_<wbr/>c = x_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
   13376        kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
   13377  y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
   13378        kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
   13379 </code></pre>
   13380 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
   13381 input image that correspond to the pixel values in the
   13382 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
   13383 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
   13384 </code></pre>
   13385 <p>The pixel coordinates are defined in a normalized
   13386 coordinate system related to the
   13387 <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
   13388 Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> have <code>(0,<wbr/>0)</code> at the
   13389 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
   13390 of both x and y coordinates are normalized to be 1 at the
   13391 edge further from the optical center,<wbr/> so the range
   13392 for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
   13393 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
   13394 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
   13395 is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
   13396 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
   13397             </td>
   13398           </tr>
   13399 
   13400 
   13401           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   13402            <!-- end of entry -->
   13403         
   13404         
   13405 
   13406       <!-- end of kind -->
   13407       </tbody>
   13408 
   13409   <!-- end of section -->
   13410   <tr><td colspan="6" id="section_noiseReduction" class="section">noiseReduction</td></tr>
   13411 
   13412 
   13413       <tr><td colspan="6" class="kind">controls</td></tr>
   13414 
   13415       <thead class="entries_header">
   13416         <tr>
   13417           <th class="th_name">Property Name</th>
   13418           <th class="th_type">Type</th>
   13419           <th class="th_description">Description</th>
   13420           <th class="th_units">Units</th>
   13421           <th class="th_range">Range</th>
   13422           <th class="th_tags">Tags</th>
   13423         </tr>
   13424       </thead>
   13425 
   13426       <tbody>
   13427 
   13428         
   13429 
   13430         
   13431 
   13432         
   13433 
   13434         
   13435 
   13436                 
   13437           <tr class="entry" id="controls_android.noiseReduction.mode">
   13438             <td class="entry_name
   13439              " rowspan="5">
   13440               android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
   13441             </td>
   13442             <td class="entry_type">
   13443                 <span class="entry_type_name entry_type_name_enum">byte</span>
   13444 
   13445               <span class="entry_type_visibility"> [public]</span>
   13446 
   13447 
   13448               <span class="entry_type_hwlevel">[full] </span>
   13449 
   13450 
   13451 
   13452                 <ul class="entry_type_enum">
   13453                   <li>
   13454                     <span class="entry_type_enum_name">OFF</span>
   13455                     <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
   13456                   </li>
   13457                   <li>
   13458                     <span class="entry_type_enum_name">FAST</span>
   13459                     <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
   13460 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
   13461 relative to sensor.<wbr/></p></span>
   13462                   </li>
   13463                   <li>
   13464                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
   13465                     <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
   13466 rate relative to sensor output.<wbr/></p></span>
   13467                   </li>
   13468                   <li>
   13469                     <span class="entry_type_enum_name">MINIMAL</span>
   13470                     <span class="entry_type_enum_optional">[optional]</span>
   13471                     <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
   13472 sensor output.<wbr/> </p></span>
   13473                   </li>
   13474                   <li>
   13475                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
   13476                     <span class="entry_type_enum_optional">[optional]</span>
   13477                     <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
   13478 based on resolution.<wbr/> Streams at maximum recording resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) or below have noise
   13479 reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if supported) or no
   13480 noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of noise reduction
   13481 for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> and the quality
   13482 is equal to or better than FAST (since it is only applied to lower-resolution outputs,<wbr/>
   13483 quality may improve from FAST).<wbr/></p>
   13484 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
   13485 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
   13486 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
   13487 produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
   13488 high-resolution buffers must not have noise reduction applied to maximize efficiency of
   13489 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
   13490 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
   13491 applied for reasonable preview quality.<wbr/></p>
   13492 <p>This mode is guaranteed to be supported by devices that support either the
   13493 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
   13494 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
   13495 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
   13496                   </li>
   13497                 </ul>
   13498 
   13499             </td> <!-- entry_type -->
   13500 
   13501             <td class="entry_description">
   13502               <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
   13503             </td>
   13504 
   13505             <td class="entry_units">
   13506             </td>
   13507 
   13508             <td class="entry_range">
   13509               <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
   13510             </td>
   13511 
   13512             <td class="entry_tags">
   13513               <ul class="entry_tags">
   13514                   <li><a href="#tag_V1">V1</a></li>
   13515                   <li><a href="#tag_REPROC">REPROC</a></li>
   13516               </ul>
   13517             </td>
   13518 
   13519           </tr>
   13520           <tr class="entries_header">
   13521             <th class="th_details" colspan="5">Details</th>
   13522           </tr>
   13523           <tr class="entry_cont">
   13524             <td class="entry_details" colspan="5">
   13525               <p>The noise reduction algorithm attempts to improve image quality by removing
   13526 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
   13527 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
   13528 YUV domain.<wbr/></p>
   13529 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
   13530 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
   13531 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
   13532 <a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> before using it.<wbr/></p>
   13533 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
   13534 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
   13535 will use the highest-quality noise filtering algorithms,<wbr/>
   13536 even if it slows down capture rate.<wbr/> FAST means the camera device will not
   13537 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
   13538 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
   13539 Every output stream will have a similar amount of enhancement applied.<wbr/></p>
   13540 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
   13541 buffer of high-resolution images during preview and reprocess image(s) from that buffer
   13542 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
   13543 noise reduction to low-resolution streams (below maximum recording resolution) to maximize
   13544 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
   13545 those will be reprocessed later if necessary.<wbr/></p>
   13546 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
   13547 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
   13548 may adjust the noise reduction parameters for best image quality based on the
   13549 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
   13550             </td>
   13551           </tr>
   13552 
   13553           <tr class="entries_header">
   13554             <th class="th_details" colspan="5">HAL Implementation Details</th>
   13555           </tr>
   13556           <tr class="entry_cont">
   13557             <td class="entry_details" colspan="5">
   13558               <p>For YUV_<wbr/>REPROCESSING The HAL can use <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> to
   13559 adjust the internal noise reduction parameters appropriately to get the best quality
   13560 images.<wbr/></p>
   13561             </td>
   13562           </tr>
   13563 
   13564           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   13565            <!-- end of entry -->
   13566         
   13567                 
   13568           <tr class="entry" id="controls_android.noiseReduction.strength">
   13569             <td class="entry_name
   13570              " rowspan="1">
   13571               android.<wbr/>noise<wbr/>Reduction.<wbr/>strength
   13572             </td>
   13573             <td class="entry_type">
   13574                 <span class="entry_type_name">byte</span>
   13575 
   13576               <span class="entry_type_visibility"> [system]</span>
   13577 
   13578 
   13579 
   13580 
   13581 
   13582 
   13583             </td> <!-- entry_type -->
   13584 
   13585             <td class="entry_description">
   13586               <p>Control the amount of noise reduction
   13587 applied to the images</p>
   13588             </td>
   13589 
   13590             <td class="entry_units">
   13591               1-10; 10 is max noise reduction
   13592             </td>
   13593 
   13594             <td class="entry_range">
   13595               <p>1 - 10</p>
   13596             </td>
   13597 
   13598             <td class="entry_tags">
   13599               <ul class="entry_tags">
   13600                   <li><a href="#tag_FUTURE">FUTURE</a></li>
   13601               </ul>
   13602             </td>
   13603 
   13604           </tr>
   13605 
   13606 
   13607           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   13608            <!-- end of entry -->
   13609         
   13610         
   13611 
   13612       <!-- end of kind -->
   13613       </tbody>
   13614       <tr><td colspan="6" class="kind">static</td></tr>
   13615 
   13616       <thead class="entries_header">
   13617         <tr>
   13618           <th class="th_name">Property Name</th>
   13619           <th class="th_type">Type</th>
   13620           <th class="th_description">Description</th>
   13621           <th class="th_units">Units</th>
   13622           <th class="th_range">Range</th>
   13623           <th class="th_tags">Tags</th>
   13624         </tr>
   13625       </thead>
   13626 
   13627       <tbody>
   13628 
   13629         
   13630 
   13631         
   13632 
   13633         
   13634 
   13635         
   13636 
   13637                 
   13638           <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes">
   13639             <td class="entry_name
   13640              " rowspan="5">
   13641               android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes
   13642             </td>
   13643             <td class="entry_type">
   13644                 <span class="entry_type_name">byte</span>
   13645                 <span class="entry_type_container">x</span>
   13646 
   13647                 <span class="entry_type_array">
   13648                   n
   13649                 </span>
   13650               <span class="entry_type_visibility"> [public as enumList]</span>
   13651 
   13652 
   13653               <span class="entry_type_hwlevel">[limited] </span>
   13654 
   13655 
   13656                 <div class="entry_type_notes">list of enums</div>
   13657 
   13658 
   13659             </td> <!-- entry_type -->
   13660 
   13661             <td class="entry_description">
   13662               <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported
   13663 by this camera device.<wbr/></p>
   13664             </td>
   13665 
   13666             <td class="entry_units">
   13667             </td>
   13668 
   13669             <td class="entry_range">
   13670               <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p>
   13671             </td>
   13672 
   13673             <td class="entry_tags">
   13674               <ul class="entry_tags">
   13675                   <li><a href="#tag_V1">V1</a></li>
   13676                   <li><a href="#tag_REPROC">REPROC</a></li>
   13677               </ul>
   13678             </td>
   13679 
   13680           </tr>
   13681           <tr class="entries_header">
   13682             <th class="th_details" colspan="5">Details</th>
   13683           </tr>
   13684           <tr class="entry_cont">
   13685             <td class="entry_details" colspan="5">
   13686               <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p>
   13687 <p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support
   13688 ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p>
   13689 <p>Legacy-capability camera devices will only support FAST mode.<wbr/></p>
   13690             </td>
   13691           </tr>
   13692 
   13693           <tr class="entries_header">
   13694             <th class="th_details" colspan="5">HAL Implementation Details</th>
   13695           </tr>
   13696           <tr class="entry_cont">
   13697             <td class="entry_details" colspan="5">
   13698               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available
   13699 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
   13700 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
   13701 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
   13702             </td>
   13703           </tr>
   13704 
   13705           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   13706            <!-- end of entry -->
   13707         
   13708         
   13709 
   13710       <!-- end of kind -->
   13711       </tbody>
   13712       <tr><td colspan="6" class="kind">dynamic</td></tr>
   13713 
   13714       <thead class="entries_header">
   13715         <tr>
   13716           <th class="th_name">Property Name</th>
   13717           <th class="th_type">Type</th>
   13718           <th class="th_description">Description</th>
   13719           <th class="th_units">Units</th>
   13720           <th class="th_range">Range</th>
   13721           <th class="th_tags">Tags</th>
   13722         </tr>
   13723       </thead>
   13724 
   13725       <tbody>
   13726 
   13727         
   13728 
   13729         
   13730 
   13731         
   13732 
   13733         
   13734 
   13735                 
   13736           <tr class="entry" id="dynamic_android.noiseReduction.mode">
   13737             <td class="entry_name
   13738              " rowspan="5">
   13739               android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
   13740             </td>
   13741             <td class="entry_type">
   13742                 <span class="entry_type_name entry_type_name_enum">byte</span>
   13743 
   13744               <span class="entry_type_visibility"> [public]</span>
   13745 
   13746 
   13747               <span class="entry_type_hwlevel">[full] </span>
   13748 
   13749 
   13750 
   13751                 <ul class="entry_type_enum">
   13752                   <li>
   13753                     <span class="entry_type_enum_name">OFF</span>
   13754                     <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
   13755                   </li>
   13756                   <li>
   13757                     <span class="entry_type_enum_name">FAST</span>
   13758                     <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
   13759 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
   13760 relative to sensor.<wbr/></p></span>
   13761                   </li>
   13762                   <li>
   13763                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
   13764                     <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
   13765 rate relative to sensor output.<wbr/></p></span>
   13766                   </li>
   13767                   <li>
   13768                     <span class="entry_type_enum_name">MINIMAL</span>
   13769                     <span class="entry_type_enum_optional">[optional]</span>
   13770                     <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
   13771 sensor output.<wbr/> </p></span>
   13772                   </li>
   13773                   <li>
   13774                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
   13775                     <span class="entry_type_enum_optional">[optional]</span>
   13776                     <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
   13777 based on resolution.<wbr/> Streams at maximum recording resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) or below have noise
   13778 reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if supported) or no
   13779 noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of noise reduction
   13780 for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> and the quality
   13781 is equal to or better than FAST (since it is only applied to lower-resolution outputs,<wbr/>
   13782 quality may improve from FAST).<wbr/></p>
   13783 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
   13784 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
   13785 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
   13786 produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
   13787 high-resolution buffers must not have noise reduction applied to maximize efficiency of
   13788 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
   13789 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
   13790 applied for reasonable preview quality.<wbr/></p>
   13791 <p>This mode is guaranteed to be supported by devices that support either the
   13792 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
   13793 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
   13794 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
   13795                   </li>
   13796                 </ul>
   13797 
   13798             </td> <!-- entry_type -->
   13799 
   13800             <td class="entry_description">
   13801               <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
   13802             </td>
   13803 
   13804             <td class="entry_units">
   13805             </td>
   13806 
   13807             <td class="entry_range">
   13808               <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
   13809             </td>
   13810 
   13811             <td class="entry_tags">
   13812               <ul class="entry_tags">
   13813                   <li><a href="#tag_V1">V1</a></li>
   13814                   <li><a href="#tag_REPROC">REPROC</a></li>
   13815               </ul>
   13816             </td>
   13817 
   13818           </tr>
   13819           <tr class="entries_header">
   13820             <th class="th_details" colspan="5">Details</th>
   13821           </tr>
   13822           <tr class="entry_cont">
   13823             <td class="entry_details" colspan="5">
   13824               <p>The noise reduction algorithm attempts to improve image quality by removing
   13825 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
   13826 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
   13827 YUV domain.<wbr/></p>
   13828 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
   13829 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
   13830 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
   13831 <a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> before using it.<wbr/></p>
   13832 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
   13833 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
   13834 will use the highest-quality noise filtering algorithms,<wbr/>
   13835 even if it slows down capture rate.<wbr/> FAST means the camera device will not
   13836 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
   13837 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
   13838 Every output stream will have a similar amount of enhancement applied.<wbr/></p>
   13839 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
   13840 buffer of high-resolution images during preview and reprocess image(s) from that buffer
   13841 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
   13842 noise reduction to low-resolution streams (below maximum recording resolution) to maximize
   13843 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
   13844 those will be reprocessed later if necessary.<wbr/></p>
   13845 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
   13846 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
   13847 may adjust the noise reduction parameters for best image quality based on the
   13848 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
   13849             </td>
   13850           </tr>
   13851 
   13852           <tr class="entries_header">
   13853             <th class="th_details" colspan="5">HAL Implementation Details</th>
   13854           </tr>
   13855           <tr class="entry_cont">
   13856             <td class="entry_details" colspan="5">
   13857               <p>For YUV_<wbr/>REPROCESSING The HAL can use <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> to
   13858 adjust the internal noise reduction parameters appropriately to get the best quality
   13859 images.<wbr/></p>
   13860             </td>
   13861           </tr>
   13862 
   13863           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   13864            <!-- end of entry -->
   13865         
   13866         
   13867 
   13868       <!-- end of kind -->
   13869       </tbody>
   13870 
   13871   <!-- end of section -->
   13872   <tr><td colspan="6" id="section_quirks" class="section">quirks</td></tr>
   13873 
   13874 
   13875       <tr><td colspan="6" class="kind">static</td></tr>
   13876 
   13877       <thead class="entries_header">
   13878         <tr>
   13879           <th class="th_name">Property Name</th>
   13880           <th class="th_type">Type</th>
   13881           <th class="th_description">Description</th>
   13882           <th class="th_units">Units</th>
   13883           <th class="th_range">Range</th>
   13884           <th class="th_tags">Tags</th>
   13885         </tr>
   13886       </thead>
   13887 
   13888       <tbody>
   13889 
   13890         
   13891 
   13892         
   13893 
   13894         
   13895 
   13896         
   13897 
   13898                 
   13899           <tr class="entry" id="static_android.quirks.meteringCropRegion">
   13900             <td class="entry_name
   13901                 entry_name_deprecated
   13902              " rowspan="3">
   13903               android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region
   13904             </td>
   13905             <td class="entry_type">
   13906                 <span class="entry_type_name">byte</span>
   13907 
   13908               <span class="entry_type_visibility"> [system]</span>
   13909 
   13910 
   13911 
   13912               <span class="entry_type_deprecated">[deprecated] </span>
   13913 
   13914 
   13915 
   13916             </td> <!-- entry_type -->
   13917 
   13918             <td class="entry_description">
   13919               <p>If set to 1,<wbr/> the camera service does not
   13920 scale 'normalized' coordinates with respect to the crop
   13921 region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region
   13922 and output (face rectangles).<wbr/></p>
   13923             </td>
   13924 
   13925             <td class="entry_units">
   13926             </td>
   13927 
   13928             <td class="entry_range">
   13929               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
   13930             </td>
   13931 
   13932             <td class="entry_tags">
   13933             </td>
   13934 
   13935           </tr>
   13936           <tr class="entries_header">
   13937             <th class="th_details" colspan="5">Details</th>
   13938           </tr>
   13939           <tr class="entry_cont">
   13940             <td class="entry_details" colspan="5">
   13941               <p>Normalized coordinates refer to those in the
   13942 (-1000,<wbr/>1000) range mentioned in the
   13943 android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
   13944 <p>HAL implementations should instead always use and emit
   13945 sensor array-relative coordinates for all region data.<wbr/> Does
   13946 not need to be listed in static metadata.<wbr/> Support will be
   13947 removed in future versions of camera service.<wbr/></p>
   13948             </td>
   13949           </tr>
   13950 
   13951 
   13952           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   13953            <!-- end of entry -->
   13954         
   13955                 
   13956           <tr class="entry" id="static_android.quirks.triggerAfWithAuto">
   13957             <td class="entry_name
   13958                 entry_name_deprecated
   13959              " rowspan="3">
   13960               android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto
   13961             </td>
   13962             <td class="entry_type">
   13963                 <span class="entry_type_name">byte</span>
   13964 
   13965               <span class="entry_type_visibility"> [system]</span>
   13966 
   13967 
   13968 
   13969               <span class="entry_type_deprecated">[deprecated] </span>
   13970 
   13971 
   13972 
   13973             </td> <!-- entry_type -->
   13974 
   13975             <td class="entry_description">
   13976               <p>If set to 1,<wbr/> then the camera service always
   13977 switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF
   13978 trigger.<wbr/></p>
   13979             </td>
   13980 
   13981             <td class="entry_units">
   13982             </td>
   13983 
   13984             <td class="entry_range">
   13985               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
   13986             </td>
   13987 
   13988             <td class="entry_tags">
   13989             </td>
   13990 
   13991           </tr>
   13992           <tr class="entries_header">
   13993             <th class="th_details" colspan="5">Details</th>
   13994           </tr>
   13995           <tr class="entry_cont">
   13996             <td class="entry_details" colspan="5">
   13997               <p>HAL implementations should implement AF trigger
   13998 modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and
   13999 CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does
   14000 not need to be listed in static metadata.<wbr/> Support will be
   14001 removed in future versions of camera service</p>
   14002             </td>
   14003           </tr>
   14004 
   14005 
   14006           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   14007            <!-- end of entry -->
   14008         
   14009                 
   14010           <tr class="entry" id="static_android.quirks.useZslFormat">
   14011             <td class="entry_name
   14012                 entry_name_deprecated
   14013              " rowspan="3">
   14014               android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format
   14015             </td>
   14016             <td class="entry_type">
   14017                 <span class="entry_type_name">byte</span>
   14018 
   14019               <span class="entry_type_visibility"> [system]</span>
   14020 
   14021 
   14022 
   14023               <span class="entry_type_deprecated">[deprecated] </span>
   14024 
   14025 
   14026 
   14027             </td> <!-- entry_type -->
   14028 
   14029             <td class="entry_description">
   14030               <p>If set to 1,<wbr/> the camera service uses
   14031 CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of
   14032 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero
   14033 shutter lag stream</p>
   14034             </td>
   14035 
   14036             <td class="entry_units">
   14037             </td>
   14038 
   14039             <td class="entry_range">
   14040               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
   14041             </td>
   14042 
   14043             <td class="entry_tags">
   14044             </td>
   14045 
   14046           </tr>
   14047           <tr class="entries_header">
   14048             <th class="th_details" colspan="5">Details</th>
   14049           </tr>
   14050           <tr class="entry_cont">
   14051             <td class="entry_details" colspan="5">
   14052               <p>HAL implementations should use gralloc usage flags
   14053 to determine that a stream will be used for
   14054 zero-shutter-lag,<wbr/> instead of relying on an explicit
   14055 format setting.<wbr/> Does not need to be listed in static
   14056 metadata.<wbr/> Support will be removed in future versions of
   14057 camera service.<wbr/></p>
   14058             </td>
   14059           </tr>
   14060 
   14061 
   14062           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   14063            <!-- end of entry -->
   14064         
   14065                 
   14066           <tr class="entry" id="static_android.quirks.usePartialResult">
   14067             <td class="entry_name
   14068                 entry_name_deprecated
   14069              " rowspan="5">
   14070               android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result
   14071             </td>
   14072             <td class="entry_type">
   14073                 <span class="entry_type_name">byte</span>
   14074 
   14075               <span class="entry_type_visibility"> [hidden]</span>
   14076 
   14077 
   14078 
   14079               <span class="entry_type_deprecated">[deprecated] </span>
   14080 
   14081 
   14082 
   14083             </td> <!-- entry_type -->
   14084 
   14085             <td class="entry_description">
   14086               <p>If set to 1,<wbr/> the HAL will always split result
   14087 metadata for a single capture into multiple buffers,<wbr/>
   14088 returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p>
   14089             </td>
   14090 
   14091             <td class="entry_units">
   14092             </td>
   14093 
   14094             <td class="entry_range">
   14095               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
   14096             </td>
   14097 
   14098             <td class="entry_tags">
   14099             </td>
   14100 
   14101           </tr>
   14102           <tr class="entries_header">
   14103             <th class="th_details" colspan="5">Details</th>
   14104           </tr>
   14105           <tr class="entry_cont">
   14106             <td class="entry_details" colspan="5">
   14107               <p>Does not need to be listed in static
   14108 metadata.<wbr/> Support for partial results will be reworked in
   14109 future versions of camera service.<wbr/> This quirk will stop
   14110 working at that point; DO NOT USE without careful
   14111 consideration of future support.<wbr/></p>
   14112             </td>
   14113           </tr>
   14114 
   14115           <tr class="entries_header">
   14116             <th class="th_details" colspan="5">HAL Implementation Details</th>
   14117           </tr>
   14118           <tr class="entry_cont">
   14119             <td class="entry_details" colspan="5">
   14120               <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
   14121 for information on how to implement partial results.<wbr/></p>
   14122             </td>
   14123           </tr>
   14124 
   14125           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   14126            <!-- end of entry -->
   14127         
   14128         
   14129 
   14130       <!-- end of kind -->
   14131       </tbody>
   14132       <tr><td colspan="6" class="kind">dynamic</td></tr>
   14133 
   14134       <thead class="entries_header">
   14135         <tr>
   14136           <th class="th_name">Property Name</th>
   14137           <th class="th_type">Type</th>
   14138           <th class="th_description">Description</th>
   14139           <th class="th_units">Units</th>
   14140           <th class="th_range">Range</th>
   14141           <th class="th_tags">Tags</th>
   14142         </tr>
   14143       </thead>
   14144 
   14145       <tbody>
   14146 
   14147         
   14148 
   14149         
   14150 
   14151         
   14152 
   14153         
   14154 
   14155                 
   14156           <tr class="entry" id="dynamic_android.quirks.partialResult">
   14157             <td class="entry_name
   14158                 entry_name_deprecated
   14159              " rowspan="5">
   14160               android.<wbr/>quirks.<wbr/>partial<wbr/>Result
   14161             </td>
   14162             <td class="entry_type">
   14163                 <span class="entry_type_name entry_type_name_enum">byte</span>
   14164 
   14165               <span class="entry_type_visibility"> [hidden as boolean]</span>
   14166 
   14167 
   14168 
   14169               <span class="entry_type_deprecated">[deprecated] </span>
   14170 
   14171 
   14172                 <ul class="entry_type_enum">
   14173                   <li>
   14174                     <span class="entry_type_enum_name">FINAL</span>
   14175                     <span class="entry_type_enum_notes"><p>The last or only metadata result buffer
   14176 for this capture.<wbr/></p></span>
   14177                   </li>
   14178                   <li>
   14179                     <span class="entry_type_enum_name">PARTIAL</span>
   14180                     <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this
   14181 capture.<wbr/> More result buffers for this capture will be sent
   14182 by the camera device,<wbr/> the last of which will be marked
   14183 FINAL.<wbr/></p></span>
   14184                   </li>
   14185                 </ul>
   14186 
   14187             </td> <!-- entry_type -->
   14188 
   14189             <td class="entry_description">
   14190               <p>Whether a result given to the framework is the
   14191 final one for the capture,<wbr/> or only a partial that contains a
   14192 subset of the full set of dynamic metadata
   14193 values.<wbr/></p>
   14194             </td>
   14195 
   14196             <td class="entry_units">
   14197             </td>
   14198 
   14199             <td class="entry_range">
   14200               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
   14201               <p>Optional.<wbr/> Default value is FINAL.<wbr/></p>
   14202             </td>
   14203 
   14204             <td class="entry_tags">
   14205             </td>
   14206 
   14207           </tr>
   14208           <tr class="entries_header">
   14209             <th class="th_details" colspan="5">Details</th>
   14210           </tr>
   14211           <tr class="entry_cont">
   14212             <td class="entry_details" colspan="5">
   14213               <p>The entries in the result metadata buffers for a
   14214 single capture may not overlap,<wbr/> except for this entry.<wbr/> The
   14215 FINAL buffers must retain FIFO ordering relative to the
   14216 requests that generate them,<wbr/> so the FINAL buffer for frame 3 must
   14217 always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and
   14218 before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned
   14219 in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given
   14220 capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may
   14221 only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p>
   14222             </td>
   14223           </tr>
   14224 
   14225           <tr class="entries_header">
   14226             <th class="th_details" colspan="5">HAL Implementation Details</th>
   14227           </tr>
   14228           <tr class="entry_cont">
   14229             <td class="entry_details" colspan="5">
   14230               <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
   14231 for information on how to implement partial results.<wbr/></p>
   14232             </td>
   14233           </tr>
   14234 
   14235           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   14236            <!-- end of entry -->
   14237         
   14238         
   14239 
   14240       <!-- end of kind -->
   14241       </tbody>
   14242 
   14243   <!-- end of section -->
   14244   <tr><td colspan="6" id="section_request" class="section">request</td></tr>
   14245 
   14246 
   14247       <tr><td colspan="6" class="kind">controls</td></tr>
   14248 
   14249       <thead class="entries_header">
   14250         <tr>
   14251           <th class="th_name">Property Name</th>
   14252           <th class="th_type">Type</th>
   14253           <th class="th_description">Description</th>
   14254           <th class="th_units">Units</th>
   14255           <th class="th_range">Range</th>
   14256           <th class="th_tags">Tags</th>
   14257         </tr>
   14258       </thead>
   14259 
   14260       <tbody>
   14261 
   14262         
   14263 
   14264         
   14265 
   14266         
   14267 
   14268         
   14269 
   14270                 
   14271           <tr class="entry" id="controls_android.request.frameCount">
   14272             <td class="entry_name
   14273                 entry_name_deprecated
   14274              " rowspan="1">
   14275               android.<wbr/>request.<wbr/>frame<wbr/>Count
   14276             </td>
   14277             <td class="entry_type">
   14278                 <span class="entry_type_name">int32</span>
   14279 
   14280               <span class="entry_type_visibility"> [system]</span>
   14281 
   14282 
   14283 
   14284               <span class="entry_type_deprecated">[deprecated] </span>
   14285 
   14286 
   14287 
   14288             </td> <!-- entry_type -->
   14289 
   14290             <td class="entry_description">
   14291               <p>A frame counter set by the framework.<wbr/> Must
   14292 be maintained unchanged in output frame.<wbr/> This value monotonically
   14293 increases with every new result (that is,<wbr/> each new result has a unique
   14294 frameCount value).<wbr/></p>
   14295             </td>
   14296 
   14297             <td class="entry_units">
   14298               incrementing integer
   14299             </td>
   14300 
   14301             <td class="entry_range">
   14302               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
   14303               <p>Any int.<wbr/></p>
   14304             </td>
   14305 
   14306             <td class="entry_tags">
   14307             </td>
   14308 
   14309           </tr>
   14310 
   14311 
   14312           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   14313            <!-- end of entry -->
   14314         
   14315                 
   14316           <tr class="entry" id="controls_android.request.id">
   14317             <td class="entry_name
   14318              " rowspan="1">
   14319               android.<wbr/>request.<wbr/>id
   14320             </td>
   14321             <td class="entry_type">
   14322                 <span class="entry_type_name">int32</span>
   14323 
   14324               <span class="entry_type_visibility"> [hidden]</span>
   14325 
   14326 
   14327 
   14328 
   14329 
   14330 
   14331             </td> <!-- entry_type -->
   14332 
   14333             <td class="entry_description">
   14334               <p>An application-specified ID for the current
   14335 request.<wbr/> Must be maintained unchanged in output
   14336 frame</p>
   14337             </td>
   14338 
   14339             <td class="entry_units">
   14340               arbitrary integer assigned by application
   14341             </td>
   14342 
   14343             <td class="entry_range">
   14344               <p>Any int</p>
   14345             </td>
   14346 
   14347             <td class="entry_tags">
   14348               <ul class="entry_tags">
   14349                   <li><a href="#tag_V1">V1</a></li>
   14350               </ul>
   14351             </td>
   14352 
   14353           </tr>
   14354 
   14355 
   14356           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   14357            <!-- end of entry -->
   14358         
   14359                 
   14360           <tr class="entry" id="controls_android.request.inputStreams">
   14361             <td class="entry_name
   14362                 entry_name_deprecated
   14363              " rowspan="3">
   14364               android.<wbr/>request.<wbr/>input<wbr/>Streams
   14365             </td>
   14366             <td class="entry_type">
   14367                 <span class="entry_type_name">int32</span>
   14368                 <span class="entry_type_container">x</span>
   14369 
   14370                 <span class="entry_type_array">
   14371                   n
   14372                 </span>
   14373               <span class="entry_type_visibility"> [system]</span>
   14374 
   14375 
   14376 
   14377               <span class="entry_type_deprecated">[deprecated] </span>
   14378 
   14379 
   14380 
   14381             </td> <!-- entry_type -->
   14382 
   14383             <td class="entry_description">
   14384               <p>List which camera reprocess stream is used
   14385 for the source of reprocessing data.<wbr/></p>
   14386             </td>
   14387 
   14388             <td class="entry_units">
   14389               List of camera reprocess stream IDs
   14390             </td>
   14391 
   14392             <td class="entry_range">
   14393               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
   14394               <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p>
   14395             </td>
   14396 
   14397             <td class="entry_tags">
   14398               <ul class="entry_tags">
   14399                   <li><a href="#tag_HAL2">HAL2</a></li>
   14400               </ul>
   14401             </td>
   14402 
   14403           </tr>
   14404           <tr class="entries_header">
   14405             <th class="th_details" colspan="5">Details</th>
   14406           </tr>
   14407           <tr class="entry_cont">
   14408             <td class="entry_details" colspan="5">
   14409               <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> ==
   14410 REPROCESS.<wbr/> Ignored otherwise</p>
   14411             </td>
   14412           </tr>
   14413 
   14414 
   14415           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   14416            <!-- end of entry -->
   14417         
   14418                 
   14419           <tr class="entry" id="controls_android.request.metadataMode">
   14420             <td class="entry_name
   14421              " rowspan="1">
   14422               android.<wbr/>request.<wbr/>metadata<wbr/>Mode
   14423             </td>
   14424             <td class="entry_type">
   14425                 <span class="entry_type_name entry_type_name_enum">byte</span>
   14426 
   14427               <span class="entry_type_visibility"> [system]</span>
   14428 
   14429 
   14430 
   14431 
   14432 
   14433                 <ul class="entry_type_enum">
   14434                   <li>
   14435                     <span class="entry_type_enum_name">NONE</span>
   14436                     <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
   14437 for application-bound buffer data.<wbr/> If no
   14438 application-bound streams exist,<wbr/> no frame should be
   14439 placed in the output frame queue.<wbr/> If such streams
   14440 exist,<wbr/> a frame should be placed on the output queue
   14441 with null metadata but with the necessary output buffer
   14442 information.<wbr/> Timestamp information should still be
   14443 included with any output stream buffers</p></span>
   14444                   </li>
   14445                   <li>
   14446                     <span class="entry_type_enum_name">FULL</span>
   14447                     <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
   14448 only be produced if they are separately
   14449 enabled</p></span>
   14450                   </li>
   14451                 </ul>
   14452 
   14453             </td> <!-- entry_type -->
   14454 
   14455             <td class="entry_description">
   14456               <p>How much metadata to produce on
   14457 output</p>
   14458             </td>
   14459 
   14460             <td class="entry_units">
   14461             </td>
   14462 
   14463             <td class="entry_range">
   14464             </td>
   14465 
   14466             <td class="entry_tags">
   14467               <ul class="entry_tags">
   14468                   <li><a href="#tag_FUTURE">FUTURE</a></li>
   14469               </ul>
   14470             </td>
   14471 
   14472           </tr>
   14473 
   14474 
   14475           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   14476            <!-- end of entry -->
   14477         
   14478                 
   14479           <tr class="entry" id="controls_android.request.outputStreams">
   14480             <td class="entry_name
   14481                 entry_name_deprecated
   14482              " rowspan="3">
   14483               android.<wbr/>request.<wbr/>output<wbr/>Streams
   14484             </td>
   14485             <td class="entry_type">
   14486                 <span class="entry_type_name">int32</span>
   14487                 <span class="entry_type_container">x</span>
   14488 
   14489                 <span class="entry_type_array">
   14490                   n
   14491                 </span>
   14492               <span class="entry_type_visibility"> [system]</span>
   14493 
   14494 
   14495 
   14496               <span class="entry_type_deprecated">[deprecated] </span>
   14497 
   14498 
   14499 
   14500             </td> <!-- entry_type -->
   14501 
   14502             <td class="entry_description">
   14503               <p>Lists which camera output streams image data
   14504 from this capture must be sent to</p>
   14505             </td>
   14506 
   14507             <td class="entry_units">
   14508               List of camera stream IDs
   14509             </td>
   14510 
   14511             <td class="entry_range">
   14512               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
   14513               <p>List must only include streams that have been
   14514 created</p>
   14515             </td>
   14516 
   14517             <td class="entry_tags">
   14518               <ul class="entry_tags">
   14519                   <li><a href="#tag_HAL2">HAL2</a></li>
   14520               </ul>
   14521             </td>
   14522 
   14523           </tr>
   14524           <tr class="entries_header">
   14525             <th class="th_details" colspan="5">Details</th>
   14526           </tr>
   14527           <tr class="entry_cont">
   14528             <td class="entry_details" colspan="5">
   14529               <p>If no output streams are listed,<wbr/> then the image
   14530 data should simply be discarded.<wbr/> The image data must
   14531 still be captured for metadata and statistics production,<wbr/>
   14532 and the lens and flash must operate as requested.<wbr/></p>
   14533             </td>
   14534           </tr>
   14535 
   14536 
   14537           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   14538            <!-- end of entry -->
   14539         
   14540                 
   14541           <tr class="entry" id="controls_android.request.type">
   14542             <td class="entry_name
   14543                 entry_name_deprecated
   14544              " rowspan="1">
   14545               android.<wbr/>request.<wbr/>type
   14546             </td>
   14547             <td class="entry_type">
   14548                 <span class="entry_type_name entry_type_name_enum">byte</span>
   14549 
   14550               <span class="entry_type_visibility"> [system]</span>
   14551 
   14552 
   14553 
   14554               <span class="entry_type_deprecated">[deprecated] </span>
   14555 
   14556 
   14557                 <ul class="entry_type_enum">
   14558                   <li>
   14559                     <span class="entry_type_enum_name">CAPTURE</span>
   14560                     <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/>
   14561 and process it according to the
   14562 settings</p></span>
   14563                   </li>
   14564                   <li>
   14565                     <span class="entry_type_enum_name">REPROCESS</span>
   14566                     <span class="entry_type_enum_notes"><p>Process previously captured data; the
   14567 <a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the
   14568 source reprocessing stream.<wbr/> TODO: Mark dynamic metadata
   14569 needed for reprocessing with [RP]</p></span>
   14570                   </li>
   14571                 </ul>
   14572 
   14573             </td> <!-- entry_type -->
   14574 
   14575             <td class="entry_description">
   14576               <p>The type of the request; either CAPTURE or
   14577 REPROCESS.<wbr/> For HAL3,<wbr/> this tag is redundant.<wbr/></p>
   14578             </td>
   14579 
   14580             <td class="entry_units">
   14581             </td>
   14582 
   14583             <td class="entry_range">
   14584               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
   14585             </td>
   14586 
   14587             <td class="entry_tags">
   14588               <ul class="entry_tags">
   14589                   <li><a href="#tag_HAL2">HAL2</a></li>
   14590               </ul>
   14591             </td>
   14592 
   14593           </tr>
   14594 
   14595 
   14596           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   14597            <!-- end of entry -->
   14598         
   14599         
   14600 
   14601       <!-- end of kind -->
   14602       </tbody>
   14603       <tr><td colspan="6" class="kind">static</td></tr>
   14604 
   14605       <thead class="entries_header">
   14606         <tr>
   14607           <th class="th_name">Property Name</th>
   14608           <th class="th_type">Type</th>
   14609           <th class="th_description">Description</th>
   14610           <th class="th_units">Units</th>
   14611           <th class="th_range">Range</th>
   14612           <th class="th_tags">Tags</th>
   14613         </tr>
   14614       </thead>
   14615 
   14616       <tbody>
   14617 
   14618         
   14619 
   14620         
   14621 
   14622         
   14623 
   14624         
   14625 
   14626                 
   14627           <tr class="entry" id="static_android.request.maxNumOutputStreams">
   14628             <td class="entry_name
   14629              " rowspan="3">
   14630               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams
   14631             </td>
   14632             <td class="entry_type">
   14633                 <span class="entry_type_name">int32</span>
   14634                 <span class="entry_type_container">x</span>
   14635 
   14636                 <span class="entry_type_array">
   14637                   3
   14638                 </span>
   14639               <span class="entry_type_visibility"> [hidden]</span>
   14640 
   14641 
   14642               <span class="entry_type_hwlevel">[legacy] </span>
   14643 
   14644 
   14645 
   14646 
   14647             </td> <!-- entry_type -->
   14648 
   14649             <td class="entry_description">
   14650               <p>The maximum numbers of different types of output streams
   14651 that can be configured and used simultaneously by a camera device.<wbr/></p>
   14652             </td>
   14653 
   14654             <td class="entry_units">
   14655             </td>
   14656 
   14657             <td class="entry_range">
   14658               <p>For processed (and stalling) format streams,<wbr/> &gt;= 1.<wbr/></p>
   14659 <p>For Raw format (either stalling or non-stalling) streams,<wbr/> &gt;= 0.<wbr/></p>
   14660 <p>For processed (but not stalling) format streams,<wbr/> &gt;= 3
   14661 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
   14662 &gt;= 2 for LIMITED mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>).<wbr/></p>
   14663             </td>
   14664 
   14665             <td class="entry_tags">
   14666               <ul class="entry_tags">
   14667                   <li><a href="#tag_BC">BC</a></li>
   14668               </ul>
   14669             </td>
   14670 
   14671           </tr>
   14672           <tr class="entries_header">
   14673             <th class="th_details" colspan="5">Details</th>
   14674           </tr>
   14675           <tr class="entry_cont">
   14676             <td class="entry_details" colspan="5">
   14677               <p>This is a 3 element tuple that contains the max number of output simultaneous
   14678 streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling)
   14679 formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and
   14680 stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams
   14681 number is 3,<wbr/> and max JPEG stream number is 2,<wbr/> then this tuple should be <code>(1,<wbr/> 3,<wbr/> 2)</code>.<wbr/></p>
   14682 <p>This lists the upper bound of the number of output streams supported by
   14683 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
   14684 CPU resources that will consume more power.<wbr/> The image format for an output stream can
   14685 be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
   14686 The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized
   14687 into the 3 stream types as below:</p>
   14688 <ul>
   14689 <li>Processed (but stalling): any non-RAW format with a stallDurations &gt; 0.<wbr/>
   14690   Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li>
   14691 <li>Raw formats: <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a>,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a>,<wbr/> or <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a>.<wbr/></li>
   14692 <li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/>
   14693   Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/>
   14694   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a>,<wbr/> or
   14695   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a>.<wbr/></li>
   14696 </ul>
   14697             </td>
   14698           </tr>
   14699 
   14700 
   14701           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   14702            <!-- end of entry -->
   14703         
   14704                 
   14705           <tr class="entry" id="static_android.request.maxNumOutputRaw">
   14706             <td class="entry_name
   14707              " rowspan="3">
   14708               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw
   14709             </td>
   14710             <td class="entry_type">
   14711                 <span class="entry_type_name">int32</span>
   14712 
   14713               <span class="entry_type_visibility"> [public]</span>
   14714 
   14715               <span class="entry_type_synthetic">[synthetic] </span>
   14716 
   14717               <span class="entry_type_hwlevel">[legacy] </span>
   14718 
   14719 
   14720 
   14721 
   14722             </td> <!-- entry_type -->
   14723 
   14724             <td class="entry_description">
   14725               <p>The maximum numbers of different types of output streams
   14726 that can be configured and used simultaneously by a camera device
   14727 for any <code>RAW</code> formats.<wbr/></p>
   14728             </td>
   14729 
   14730             <td class="entry_units">
   14731             </td>
   14732 
   14733             <td class="entry_range">
   14734               <p>&gt;= 0</p>
   14735             </td>
   14736 
   14737             <td class="entry_tags">
   14738             </td>
   14739 
   14740           </tr>
   14741           <tr class="entries_header">
   14742             <th class="th_details" colspan="5">Details</th>
   14743           </tr>
   14744           <tr class="entry_cont">
   14745             <td class="entry_details" colspan="5">
   14746               <p>This value contains the max number of output simultaneous
   14747 streams from the raw sensor.<wbr/></p>
   14748 <p>This lists the upper bound of the number of output streams supported by
   14749 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
   14750 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
   14751 be any <code>RAW</code> and supported format provided by <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/></p>
   14752 <p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p>
   14753 <ul>
   14754 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li>
   14755 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li>
   14756 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li>
   14757 </ul>
   14758 <p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY)
   14759 never support raw streams.<wbr/></p>
   14760             </td>
   14761           </tr>
   14762 
   14763 
   14764           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   14765            <!-- end of entry -->
   14766         
   14767                 
   14768           <tr class="entry" id="static_android.request.maxNumOutputProc">
   14769             <td class="entry_name
   14770              " rowspan="3">
   14771               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc
   14772             </td>
   14773             <td class="entry_type">
   14774                 <span class="entry_type_name">int32</span>
   14775 
   14776               <span class="entry_type_visibility"> [public]</span>
   14777 
   14778               <span class="entry_type_synthetic">[synthetic] </span>
   14779 
   14780               <span class="entry_type_hwlevel">[legacy] </span>
   14781 
   14782 
   14783 
   14784 
   14785             </td> <!-- entry_type -->
   14786 
   14787             <td class="entry_description">
   14788               <p>The maximum numbers of different types of output streams
   14789 that can be configured and used simultaneously by a camera device
   14790 for any processed (but not-stalling) formats.<wbr/></p>
   14791             </td>
   14792 
   14793             <td class="entry_units">
   14794             </td>
   14795 
   14796             <td class="entry_range">
   14797               <p>&gt;= 3
   14798 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
   14799 &gt;= 2 for LIMITED mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>).<wbr/></p>
   14800             </td>
   14801 
   14802             <td class="entry_tags">
   14803             </td>
   14804 
   14805           </tr>
   14806           <tr class="entries_header">
   14807             <th class="th_details" colspan="5">Details</th>
   14808           </tr>
   14809           <tr class="entry_cont">
   14810             <td class="entry_details" colspan="5">
   14811               <p>This value contains the max number of output simultaneous
   14812 streams for any processed (but not-stalling) formats.<wbr/></p>
   14813 <p>This lists the upper bound of the number of output streams supported by
   14814 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
   14815 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
   14816 be any non-<code>RAW</code> and supported format provided by <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/></p>
   14817 <p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/>
   14818 Typically:</p>
   14819 <ul>
   14820 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li>
   14821 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li>
   14822 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li>
   14823 <li>Implementation-defined formats,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#isOutputSupportedFor(Class)">StreamConfigurationMap#isOutputSupportedFor(Class)</a></li>
   14824 </ul>
   14825 <p>For full guarantees,<wbr/> query <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> with a
   14826 processed format -- it will return 0 for a non-stalling stream.<wbr/></p>
   14827 <p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p>
   14828             </td>
   14829           </tr>
   14830 
   14831 
   14832           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   14833            <!-- end of entry -->
   14834         
   14835                 
   14836           <tr class="entry" id="static_android.request.maxNumOutputProcStalling">
   14837             <td class="entry_name
   14838              " rowspan="3">
   14839               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling
   14840             </td>
   14841             <td class="entry_type">
   14842                 <span class="entry_type_name">int32</span>
   14843 
   14844               <span class="entry_type_visibility"> [public]</span>
   14845 
   14846               <span class="entry_type_synthetic">[synthetic] </span>
   14847 
   14848               <span class="entry_type_hwlevel">[legacy] </span>
   14849 
   14850 
   14851 
   14852 
   14853             </td> <!-- entry_type -->
   14854 
   14855             <td class="entry_description">
   14856               <p>The maximum numbers of different types of output streams
   14857 that can be configured and used simultaneously by a camera device
   14858 for any processed (and stalling) formats.<wbr/></p>
   14859             </td>
   14860 
   14861             <td class="entry_units">
   14862             </td>
   14863 
   14864             <td class="entry_range">
   14865               <p>&gt;= 1</p>
   14866             </td>
   14867 
   14868             <td class="entry_tags">
   14869             </td>
   14870 
   14871           </tr>
   14872           <tr class="entries_header">
   14873             <th class="th_details" colspan="5">Details</th>
   14874           </tr>
   14875           <tr class="entry_cont">
   14876             <td class="entry_details" colspan="5">
   14877               <p>This value contains the max number of output simultaneous
   14878 streams for any processed (but not-stalling) formats.<wbr/></p>
   14879 <p>This lists the upper bound of the number of output streams supported by
   14880 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
   14881 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
   14882 be any non-<code>RAW</code> and supported format provided by <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/></p>
   14883 <p>A processed and stalling format is defined as any non-RAW format with a stallDurations
   14884 &gt; 0.<wbr/>  Typically only the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a> is a
   14885 stalling format.<wbr/></p>
   14886 <p>For full guarantees,<wbr/> query <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> with a
   14887 processed format -- it will return a non-0 value for a stalling stream.<wbr/></p>
   14888 <p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p>
   14889             </td>
   14890           </tr>
   14891 
   14892 
   14893           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   14894            <!-- end of entry -->
   14895         
   14896                 
   14897           <tr class="entry" id="static_android.request.maxNumReprocessStreams">
   14898             <td class="entry_name
   14899                 entry_name_deprecated
   14900              " rowspan="3">
   14901               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams
   14902             </td>
   14903             <td class="entry_type">
   14904                 <span class="entry_type_name">int32</span>
   14905                 <span class="entry_type_container">x</span>
   14906 
   14907                 <span class="entry_type_array">
   14908                   1
   14909                 </span>
   14910               <span class="entry_type_visibility"> [system]</span>
   14911 
   14912 
   14913 
   14914               <span class="entry_type_deprecated">[deprecated] </span>
   14915 
   14916 
   14917 
   14918             </td> <!-- entry_type -->
   14919 
   14920             <td class="entry_description">
   14921               <p>How many reprocessing streams of any type
   14922 can be allocated at the same time.<wbr/></p>
   14923             </td>
   14924 
   14925             <td class="entry_units">
   14926             </td>
   14927 
   14928             <td class="entry_range">
   14929               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
   14930               <p>&gt;= 0</p>
   14931             </td>
   14932 
   14933             <td class="entry_tags">
   14934               <ul class="entry_tags">
   14935                   <li><a href="#tag_HAL2">HAL2</a></li>
   14936               </ul>
   14937             </td>
   14938 
   14939           </tr>
   14940           <tr class="entries_header">
   14941             <th class="th_details" colspan="5">Details</th>
   14942           </tr>
   14943           <tr class="entry_cont">
   14944             <td class="entry_details" colspan="5">
   14945               <p>Only used by HAL2.<wbr/>x.<wbr/></p>
   14946 <p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p>
   14947             </td>
   14948           </tr>
   14949 
   14950 
   14951           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   14952            <!-- end of entry -->
   14953         
   14954                 
   14955           <tr class="entry" id="static_android.request.maxNumInputStreams">
   14956             <td class="entry_name
   14957              " rowspan="5">
   14958               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams
   14959             </td>
   14960             <td class="entry_type">
   14961                 <span class="entry_type_name">int32</span>
   14962 
   14963               <span class="entry_type_visibility"> [public]</span>
   14964 
   14965 
   14966               <span class="entry_type_hwlevel">[full] </span>
   14967 
   14968 
   14969 
   14970 
   14971             </td> <!-- entry_type -->
   14972 
   14973             <td class="entry_description">
   14974               <p>The maximum numbers of any type of input streams
   14975 that can be configured and used simultaneously by a camera device.<wbr/></p>
   14976             </td>
   14977 
   14978             <td class="entry_units">
   14979             </td>
   14980 
   14981             <td class="entry_range">
   14982               <p>0 or 1.<wbr/></p>
   14983             </td>
   14984 
   14985             <td class="entry_tags">
   14986               <ul class="entry_tags">
   14987                   <li><a href="#tag_REPROC">REPROC</a></li>
   14988               </ul>
   14989             </td>
   14990 
   14991           </tr>
   14992           <tr class="entries_header">
   14993             <th class="th_details" colspan="5">Details</th>
   14994           </tr>
   14995           <tr class="entry_cont">
   14996             <td class="entry_details" colspan="5">
   14997               <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p>
   14998 <p>The image format for a input stream can be any supported format returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a>.<wbr/> When using an
   14999 input stream,<wbr/> there must be at least one output stream configured to to receive the
   15000 reprocessed images.<wbr/></p>
   15001 <p>When an input stream and some output streams are used in a reprocessing request,<wbr/>
   15002 only the input buffer will be used to produce these output stream buffers,<wbr/> and a
   15003 new sensor image will not be captured.<wbr/></p>
   15004 <p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input
   15005 stream image format will be PRIVATE,<wbr/> the associated output stream image format
   15006 should be JPEG.<wbr/></p>
   15007             </td>
   15008           </tr>
   15009 
   15010           <tr class="entries_header">
   15011             <th class="th_details" colspan="5">HAL Implementation Details</th>
   15012           </tr>
   15013           <tr class="entry_cont">
   15014             <td class="entry_details" colspan="5">
   15015               <p>For the reprocessing flow and controls,<wbr/> see
   15016 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p>
   15017             </td>
   15018           </tr>
   15019 
   15020           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   15021            <!-- end of entry -->
   15022         
   15023                 
   15024           <tr class="entry" id="static_android.request.pipelineMaxDepth">
   15025             <td class="entry_name
   15026              " rowspan="5">
   15027               android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth
   15028             </td>
   15029             <td class="entry_type">
   15030                 <span class="entry_type_name">byte</span>
   15031 
   15032               <span class="entry_type_visibility"> [public]</span>
   15033 
   15034 
   15035               <span class="entry_type_hwlevel">[legacy] </span>
   15036 
   15037 
   15038 
   15039 
   15040             </td> <!-- entry_type -->
   15041 
   15042             <td class="entry_description">
   15043               <p>Specifies the number of maximum pipeline stages a frame
   15044 has to go through from when it's exposed to when it's available
   15045 to the framework.<wbr/></p>
   15046             </td>
   15047 
   15048             <td class="entry_units">
   15049             </td>
   15050 
   15051             <td class="entry_range">
   15052             </td>
   15053 
   15054             <td class="entry_tags">
   15055             </td>
   15056 
   15057           </tr>
   15058           <tr class="entries_header">
   15059             <th class="th_details" colspan="5">Details</th>
   15060           </tr>
   15061           <tr class="entry_cont">
   15062             <td class="entry_details" colspan="5">
   15063               <p>A typical minimum value for this is 2 (one stage to expose,<wbr/>
   15064 one stage to readout) from the sensor.<wbr/> The ISP then usually adds
   15065 its own stages to do custom HW processing.<wbr/> Further stages may be
   15066 added by SW processing.<wbr/></p>
   15067 <p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what
   15068 processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline
   15069 depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than
   15070 the max pipeline depth.<wbr/></p>
   15071 <p>A pipeline depth of X stages is equivalent to a pipeline latency of
   15072 X frame intervals.<wbr/></p>
   15073 <p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/>
   15074 the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p>
   15075             </td>
   15076           </tr>
   15077 
   15078           <tr class="entries_header">
   15079             <th class="th_details" colspan="5">HAL Implementation Details</th>
   15080           </tr>
   15081           <tr class="entry_cont">
   15082             <td class="entry_details" colspan="5">
   15083               <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the
   15084 max batch sizes may be larger than 1.<wbr/></p>
   15085             </td>
   15086           </tr>
   15087 
   15088           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   15089            <!-- end of entry -->
   15090         
   15091                 
   15092           <tr class="entry" id="static_android.request.partialResultCount">
   15093             <td class="entry_name
   15094              " rowspan="3">
   15095               android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count
   15096             </td>
   15097             <td class="entry_type">
   15098                 <span class="entry_type_name">int32</span>
   15099 
   15100               <span class="entry_type_visibility"> [public]</span>
   15101 
   15102 
   15103 
   15104 
   15105 
   15106 
   15107             </td> <!-- entry_type -->
   15108 
   15109             <td class="entry_description">
   15110               <p>Defines how many sub-components
   15111 a result will be composed of.<wbr/></p>
   15112             </td>
   15113 
   15114             <td class="entry_units">
   15115             </td>
   15116 
   15117             <td class="entry_range">
   15118               <p>&gt;= 1</p>
   15119             </td>
   15120 
   15121             <td class="entry_tags">
   15122             </td>
   15123 
   15124           </tr>
   15125           <tr class="entries_header">
   15126             <th class="th_details" colspan="5">Details</th>
   15127           </tr>
   15128           <tr class="entry_cont">
   15129             <td class="entry_details" colspan="5">
   15130               <p>In order to combat the pipeline latency,<wbr/> partial results
   15131 may be delivered to the application layer from the camera device as
   15132 soon as they are available.<wbr/></p>
   15133 <p>Optional; defaults to 1.<wbr/> A value of 1 means that partial
   15134 results are not supported,<wbr/> and only the final TotalCaptureResult will
   15135 be produced by the camera device.<wbr/></p>
   15136 <p>A typical use case for this might be: after requesting an
   15137 auto-focus (AF) lock the new AF state might be available 50%
   15138 of the way through the pipeline.<wbr/>  The camera device could
   15139 then immediately dispatch this state via a partial result to
   15140 the application,<wbr/> and the rest of the metadata via later
   15141 partial results.<wbr/></p>
   15142             </td>
   15143           </tr>
   15144 
   15145 
   15146           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   15147            <!-- end of entry -->
   15148         
   15149                 
   15150           <tr class="entry" id="static_android.request.availableCapabilities">
   15151             <td class="entry_name
   15152              " rowspan="5">
   15153               android.<wbr/>request.<wbr/>available<wbr/>Capabilities
   15154             </td>
   15155             <td class="entry_type">
   15156                 <span class="entry_type_name entry_type_name_enum">byte</span>
   15157                 <span class="entry_type_container">x</span>
   15158 
   15159                 <span class="entry_type_array">
   15160                   n
   15161                 </span>
   15162               <span class="entry_type_visibility"> [public]</span>
   15163 
   15164 
   15165               <span class="entry_type_hwlevel">[legacy] </span>
   15166 
   15167 
   15168 
   15169                 <ul class="entry_type_enum">
   15170                   <li>
   15171                     <span class="entry_type_enum_name">BACKWARD_COMPATIBLE</span>
   15172                     <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera
   15173 device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>)
   15174 supports.<wbr/></p>
   15175 <p>This capability is listed by all normal devices,<wbr/> and
   15176 indicates that the camera device has a feature set
   15177 that's comparable to the baseline requirements for the
   15178 older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
   15179 <p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this
   15180 capability,<wbr/> indicating that they support only depth measurement,<wbr/>
   15181 not standard color output.<wbr/></p></span>
   15182                   </li>
   15183                   <li>
   15184                     <span class="entry_type_enum_name">MANUAL_SENSOR</span>
   15185                     <span class="entry_type_enum_optional">[optional]</span>
   15186                     <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such
   15187 as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/>
   15188 The camera device supports basic manual control of the sensor image
   15189 acquisition related stages.<wbr/> This means the following controls are
   15190 guaranteed to be supported:</p>
   15191 <ul>
   15192 <li>Manual frame duration control<ul>
   15193 <li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li>
   15194 <li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
   15195 </ul>
   15196 </li>
   15197 <li>Manual exposure control<ul>
   15198 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
   15199 <li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
   15200 </ul>
   15201 </li>
   15202 <li>Manual sensitivity control<ul>
   15203 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
   15204 <li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li>
   15205 </ul>
   15206 </li>
   15207 <li>Manual lens control (if the lens is adjustable)<ul>
   15208 <li>android.<wbr/>lens.<wbr/>*</li>
   15209 </ul>
   15210 </li>
   15211 <li>Manual flash control (if a flash unit is present)<ul>
   15212 <li>android.<wbr/>flash.<wbr/>*</li>
   15213 </ul>
   15214 </li>
   15215 <li>Manual black level locking<ul>
   15216 <li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li>
   15217 </ul>
   15218 </li>
   15219 <li>Auto exposure lock<ul>
   15220 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
   15221 </ul>
   15222 </li>
   15223 </ul>
   15224 <p>If any of the above 3A algorithms are enabled,<wbr/> then the camera
   15225 device will accurately report the values applied by 3A in the
   15226 result.<wbr/></p>
   15227 <p>A given camera device may also support additional manual sensor controls,<wbr/>
   15228 but this capability only covers the above list of controls.<wbr/></p>
   15229 <p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will
   15230 additionally return a min frame duration that is greater than
   15231 zero for each supported size-format combination.<wbr/></p></span>
   15232                   </li>
   15233                   <li>
   15234                     <span class="entry_type_enum_name">MANUAL_POST_PROCESSING</span>
   15235                     <span class="entry_type_enum_optional">[optional]</span>
   15236                     <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/>
   15237 The camera device supports basic manual control of the image post-processing
   15238 stages.<wbr/> This means the following controls are guaranteed to be supported:</p>
   15239 <ul>
   15240 <li>
   15241 <p>Manual tonemap control</p>
   15242 <ul>
   15243 <li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li>
   15244 <li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li>
   15245 <li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li>
   15246 <li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li>
   15247 <li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li>
   15248 </ul>
   15249 </li>
   15250 <li>
   15251 <p>Manual white balance control</p>
   15252 <ul>
   15253 <li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li>
   15254 <li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li>
   15255 </ul>
   15256 </li>
   15257 <li>Manual lens shading map control<ul>
   15258 <li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li>
   15259 <li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li>
   15260 <li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li>
   15261 <li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li>
   15262 </ul>
   15263 </li>
   15264 <li>Manual aberration correction control (if aberration correction is supported)<ul>
   15265 <li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li>
   15266 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li>
   15267 </ul>
   15268 </li>
   15269 <li>Auto white balance lock<ul>
   15270 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
   15271 </ul>
   15272 </li>
   15273 </ul>
   15274 <p>If auto white balance is enabled,<wbr/> then the camera device
   15275 will accurately report the values applied by AWB in the result.<wbr/></p>
   15276 <p>A given camera device may also support additional post-processing
   15277 controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span>
   15278                   </li>
   15279                   <li>
   15280                     <span class="entry_type_enum_name">RAW</span>
   15281                     <span class="entry_type_enum_optional">[optional]</span>
   15282                     <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and
   15283 metadata for interpreting them.<wbr/></p>
   15284 <p>Devices supporting the RAW capability allow both for
   15285 saving DNG files,<wbr/> and for direct application processing of
   15286 raw sensor images.<wbr/></p>
   15287 <ul>
   15288 <li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li>
   15289 <li>The maximum available resolution for RAW_<wbr/>SENSOR streams
   15290   will match either the value in
   15291   <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
   15292   <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
   15293 <li>All DNG-related optional metadata entries are provided
   15294   by the camera device.<wbr/></li>
   15295 </ul></span>
   15296                   </li>
   15297                   <li>
   15298                     <span class="entry_type_enum_name">PRIVATE_REPROCESSING</span>
   15299                     <span class="entry_type_enum_optional">[optional]</span>
   15300                     <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p>
   15301 <ul>
   15302 <li>One input stream is supported,<wbr/> that is,<wbr/> <code><a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> == 1</code>.<wbr/></li>
   15303 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is supported as an output/<wbr/>input format,<wbr/>
   15304   that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of
   15305   formats returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a> and <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputFormats">StreamConfigurationMap#getOutputFormats</a>.<wbr/></li>
   15306 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
   15307   returns non empty int[] for each supported input format returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a>.<wbr/></li>
   15308 <li>Each size returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputSizes">getInputSizes(ImageFormat.<wbr/>PRIVATE)</a> is also included in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">getOutputSizes(ImageFormat.<wbr/>PRIVATE)</a></li>
   15309 <li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop
   15310   relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
   15311 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both
   15312   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and
   15313   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li>
   15314 <li>The maximum available resolution for PRIVATE streams
   15315   (both input/<wbr/>output) will match the maximum available
   15316   resolution of JPEG streams.<wbr/></li>
   15317 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
   15318 <li>Only below controls are effective for reprocessing requests and
   15319   will be present in capture results,<wbr/> other controls in reprocess
   15320   requests will be ignored by the camera device.<wbr/><ul>
   15321 <li>android.<wbr/>jpeg.<wbr/>*</li>
   15322 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
   15323 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
   15324 </ul>
   15325 </li>
   15326 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
   15327   <a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a> will both list ZERO_<wbr/>SHUTTER_<wbr/>LAG as a supported mode.<wbr/></li>
   15328 </ul></span>
   15329                   </li>
   15330                   <li>
   15331                     <span class="entry_type_enum_name">READ_SENSOR_SETTINGS</span>
   15332                     <span class="entry_type_enum_optional">[optional]</span>
   15333                     <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of
   15334 the sensor controls while the built-in 3A algorithm is running.<wbr/>  This allows
   15335 reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p>
   15336 <p>The values reported for the following controls are guaranteed to be available
   15337 in the CaptureResult,<wbr/> including when 3A is enabled:</p>
   15338 <ul>
   15339 <li>Exposure control<ul>
   15340 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
   15341 </ul>
   15342 </li>
   15343 <li>Sensitivity control<ul>
   15344 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
   15345 </ul>
   15346 </li>
   15347 <li>Lens controls (if the lens is adjustable)<ul>
   15348 <li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li>
   15349 <li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li>
   15350 </ul>
   15351 </li>
   15352 </ul>
   15353 <p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will
   15354 always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span>
   15355                   </li>
   15356                   <li>
   15357                     <span class="entry_type_enum_name">BURST_CAPTURE</span>
   15358                     <span class="entry_type_enum_optional">[optional]</span>
   15359                     <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at &gt;= 20 frames per
   15360 second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are set
   15361 to FAST.<wbr/> Additionally,<wbr/> maximum-resolution images can be captured at &gt;= 10 frames
   15362 per second.<wbr/>  Here,<wbr/> 'high resolution' means at least 8 megapixels,<wbr/> or the maximum
   15363 resolution of the device,<wbr/> whichever is smaller.<wbr/></p>
   15364 <p>More specifically,<wbr/> this means that a size matching the camera device's active array
   15365 size is listed as a supported size for the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> format in either <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> or <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighResolutionOutputSizes">StreamConfigurationMap#getHighResolutionOutputSizes</a>,<wbr/>
   15366 with a minimum frame duration for that format and size of either &lt;= 1/<wbr/>20 s,<wbr/> or
   15367 &lt;= 1/<wbr/>10 s,<wbr/> respectively; and the <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a> entry
   15368 lists at least one FPS range where the minimum FPS is &gt;= 1 /<wbr/> minimumFrameDuration
   15369 for the maximum-size YUV_<wbr/>420_<wbr/>888 format.<wbr/>  If that maximum size is listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighResolutionOutputSizes">StreamConfigurationMap#getHighResolutionOutputSizes</a>,<wbr/>
   15370 then the list of resolutions for YUV_<wbr/>420_<wbr/>888 from <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> contains at
   15371 least one resolution &gt;= 8 megapixels,<wbr/> with a minimum frame duration of &lt;= 1/<wbr/>20
   15372 s.<wbr/></p>
   15373 <p>If the device supports the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a>,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">ImageFormat#RAW12</a>,<wbr/> then those can also be captured at the same rate
   15374 as the maximum-size YUV_<wbr/>420_<wbr/>888 resolution is.<wbr/></p>
   15375 <p>If the device supports the PRIVATE_<wbr/>REPROCESSING capability,<wbr/> then the same guarantees
   15376 as for the YUV_<wbr/>420_<wbr/>888 format also apply to the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> format.<wbr/></p>
   15377 <p>In addition,<wbr/> the <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> field is guaranted to have a value between 0
   15378 and 4,<wbr/> inclusive.<wbr/> <a href="#static_android.control.aeLockAvailable">android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available</a> and <a href="#static_android.control.awbLockAvailable">android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available</a>
   15379 are also guaranteed to be <code>true</code> so burst capture with these two locks ON yields
   15380 consistent image output.<wbr/></p></span>
   15381                   </li>
   15382                   <li>
   15383                     <span class="entry_type_enum_name">YUV_REPROCESSING</span>
   15384                     <span class="entry_type_enum_optional">[optional]</span>
   15385                     <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as
   15386 PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the
   15387 following:</p>
   15388 <ul>
   15389 <li>One input stream is supported,<wbr/> that is,<wbr/> <code><a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> == 1</code>.<wbr/></li>
   15390 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> is supported as an output/<wbr/>input format,<wbr/> that is,<wbr/>
   15391   YUV_<wbr/>420_<wbr/>888 is included in the lists of formats returned by
   15392   <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a> and
   15393   <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputFormats">StreamConfigurationMap#getOutputFormats</a>.<wbr/></li>
   15394 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
   15395   returns non-empty int[] for each supported input format returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a>.<wbr/></li>
   15396 <li>Each size returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputSizes">get<wbr/>Input<wbr/>Sizes(YUV_<wbr/>420_<wbr/>888)</a> is also included in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">get<wbr/>Output<wbr/>Sizes(YUV_<wbr/>420_<wbr/>888)</a></li>
   15397 <li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> does not cause a frame rate drop
   15398   relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
   15399 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> will be reprocessable into both
   15400   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li>
   15401 <li>The maximum available resolution for <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> streams (both input/<wbr/>output) will match the
   15402   maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li>
   15403 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
   15404 <li>Only the below controls are effective for reprocessing requests and will be present
   15405   in capture results.<wbr/> The reprocess requests are from the original capture results that
   15406   are associated with the intermediate <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a>
   15407   output buffers.<wbr/>  All other controls in the reprocess requests will be ignored by the
   15408   camera device.<wbr/><ul>
   15409 <li>android.<wbr/>jpeg.<wbr/>*</li>
   15410 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
   15411 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
   15412 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li>
   15413 </ul>
   15414 </li>
   15415 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
   15416   <a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a> will both list ZERO_<wbr/>SHUTTER_<wbr/>LAG as a supported mode.<wbr/></li>
   15417 </ul></span>
   15418                   </li>
   15419                   <li>
   15420                     <span class="entry_type_enum_name">DEPTH_OUTPUT</span>
   15421                     <span class="entry_type_enum_optional">[optional]</span>
   15422                     <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p>
   15423 <p>This capability requires the camera device to support the following:</p>
   15424 <ul>
   15425 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as an output format.<wbr/></li>
   15426 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH_POINT_CLOUD">Image<wbr/>Format#DEPTH_<wbr/>POINT_<wbr/>CLOUD</a> is optionally supported as an
   15427   output format.<wbr/></li>
   15428 <li>This camera device,<wbr/> and all camera devices with the same <a href="#static_android.lens.facing">android.<wbr/>lens.<wbr/>facing</a>,<wbr/>
   15429   will list the following calibration entries in both
   15430   <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a> and
   15431   <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul>
   15432 <li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
   15433 <li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
   15434 <li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
   15435 <li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a></li>
   15436 </ul>
   15437 </li>
   15438 <li>The <a href="#static_android.depth.depthIsExclusive">android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive</a> entry is listed by this device.<wbr/></li>
   15439 <li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support
   15440   normal YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the DEPTH16
   15441   format.<wbr/></li>
   15442 </ul>
   15443 <p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/>
   15444 so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that
   15445 should be accounted for (see
   15446 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/>
   15447 On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/>
   15448 using a repeating burst is recommended,<wbr/> where a depth-output target is only included
   15449 once every N frames,<wbr/> where N is the ratio between preview output rate and depth output
   15450 rate,<wbr/> including depth stall time.<wbr/></p></span>
   15451                   </li>
   15452                   <li>
   15453                     <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO</span>
   15454                     <span class="entry_type_enum_optional">[optional]</span>
   15455                     <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate &gt;=120fps)
   15456 use case.<wbr/> The camera device will support high speed capture session created by
   15457 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>,<wbr/> which
   15458 only accepts high speed request lists created by
   15459 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/></p>
   15460 <p>A camera device can still support high speed video streaming by advertising the high speed
   15461 FPS ranges in <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a>.<wbr/> For this case,<wbr/> all normal
   15462 capture request per frame control and synchronization requirements will apply to
   15463 the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability describes
   15464 the capability of a specialized operating mode with many limitations (see below),<wbr/> which
   15465 is only targeted at high speed video recording.<wbr/></p>
   15466 <p>The supported high speed video sizes and fps ranges are specified in
   15467 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/>
   15468 To get desired output frame rates,<wbr/> the application is only allowed to select video size
   15469 and FPS range combinations provided by
   15470 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/>
   15471 The fps range can be controlled via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
   15472 <p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
   15473 ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
   15474 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
   15475 and post-processing parameters is possible.<wbr/> All other controls operate the
   15476 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
   15477 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
   15478 <ul>
   15479 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
   15480 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
   15481 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
   15482 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
   15483 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
   15484 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
   15485 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
   15486 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
   15487 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
   15488 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
   15489 </ul>
   15490 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
   15491 <ul>
   15492 <li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not
   15493 work since aeMode is ON)</li>
   15494 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
   15495 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
   15496 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li>
   15497 </ul>
   15498 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
   15499 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
   15500 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
   15501 the application need check if the video encoder is capable of supporting the
   15502 high frame rate for a given video size,<wbr/> or it will end up with lower recording
   15503 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame
   15504 rate will be bounded by the screen refresh rate.<wbr/></p>
   15505 <p>The camera device will only support up to 2 high speed simultaneous output surfaces
   15506 (preview and recording surfaces)
   15507 in this mode.<wbr/> Above controls will be effective only if all of below conditions are true:</p>
   15508 <ul>
   15509 <li>The application creates a camera capture session with no more than 2 surfaces via
   15510 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The
   15511 targeted surfaces must be preview surface (either from
   15512 <a href="https://developer.android.com/reference/android/view/SurfaceView.html">SurfaceView</a> or <a href="https://developer.android.com/reference/android/graphics/SurfaceTexture.html">SurfaceTexture</a>) or
   15513 recording surface(either from <a href="https://developer.android.com/reference/android/media/MediaRecorder.html#getSurface">MediaRecorder#getSurface</a> or
   15514 <a href="https://developer.android.com/reference/android/media/MediaCodec.html#createInputSurface">MediaCodec#createInputSurface</a>).<wbr/></li>
   15515 <li>The stream sizes are selected from the sizes reported by
   15516 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li>
   15517 <li>The FPS ranges are selected from
   15518 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/></li>
   15519 </ul>
   15520 <p>When above conditions are NOT satistied,<wbr/>
   15521 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
   15522 will fail.<wbr/></p>
   15523 <p>Switching to a FPS range that has different maximum FPS may trigger some camera device
   15524 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
   15525 the application avoids unnecessary maximum target FPS changes as much as possible
   15526 during high speed streaming.<wbr/></p></span>
   15527                   </li>
   15528                 </ul>
   15529 
   15530             </td> <!-- entry_type -->
   15531 
   15532             <td class="entry_description">
   15533               <p>List of capabilities that this camera device
   15534 advertises as fully supporting.<wbr/></p>
   15535             </td>
   15536 
   15537             <td class="entry_units">
   15538             </td>
   15539 
   15540             <td class="entry_range">
   15541             </td>
   15542 
   15543             <td class="entry_tags">
   15544             </td>
   15545 
   15546           </tr>
   15547           <tr class="entries_header">
   15548             <th class="th_details" colspan="5">Details</th>
   15549           </tr>
   15550           <tr class="entry_cont">
   15551             <td class="entry_details" colspan="5">
   15552               <p>A capability is a contract that the camera device makes in order
   15553 to be able to satisfy one or more use cases.<wbr/></p>
   15554 <p>Listing a capability guarantees that the whole set of features
   15555 required to support a common use will all be available.<wbr/></p>
   15556 <p>Using a subset of the functionality provided by an unsupported
   15557 capability may be possible on a specific camera device implementation;
   15558 to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/>
   15559 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/>
   15560 <a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p>
   15561 <p>The following capabilities are guaranteed to be available on
   15562 <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p>
   15563 <ul>
   15564 <li>MANUAL_<wbr/>SENSOR</li>
   15565 <li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li>
   15566 </ul>
   15567 <p>Other capabilities may be available on either FULL or LIMITED
   15568 devices,<wbr/> but the application should query this key to be sure.<wbr/></p>
   15569             </td>
   15570           </tr>
   15571 
   15572           <tr class="entries_header">
   15573             <th class="th_details" colspan="5">HAL Implementation Details</th>
   15574           </tr>
   15575           <tr class="entry_cont">
   15576             <td class="entry_details" colspan="5">
   15577               <p>Additional constraint details per-capability will be available
   15578 in the Compatibility Test Suite.<wbr/></p>
   15579 <p>Minimum baseline requirements required for the
   15580 BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/>
   15581 Instead refer to "BC" tags and the camera CTS tests in the
   15582 android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p>
   15583 <p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/>
   15584 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the
   15585 request and the result in order to be considered to be
   15586 capability-compliant.<wbr/></p>
   15587 <p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/>
   15588 then exposure time must be configurable via the request <em>and</em>
   15589 the actual exposure applied must be available via
   15590 the result.<wbr/></p>
   15591 <p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the
   15592 <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p>
   15593 <p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see
   15594 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p>
   15595 <p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the
   15596 CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p>
   15597 <p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the
   15598 YUV_<wbr/>REPROCESSING capability must support the
   15599 CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p>
   15600 <p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys
   15601 <a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/>
   15602 <a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/>
   15603 <a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in
   15604 addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT
   15605 enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available
   15606 if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace
   15607 DEPTH).<wbr/></p>
   15608             </td>
   15609           </tr>
   15610 
   15611           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   15612            <!-- end of entry -->
   15613         
   15614                 
   15615           <tr class="entry" id="static_android.request.availableRequestKeys">
   15616             <td class="entry_name
   15617              " rowspan="5">
   15618               android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys
   15619             </td>
   15620             <td class="entry_type">
   15621                 <span class="entry_type_name">int32</span>
   15622                 <span class="entry_type_container">x</span>
   15623 
   15624                 <span class="entry_type_array">
   15625                   n
   15626                 </span>
   15627               <span class="entry_type_visibility"> [hidden]</span>
   15628 
   15629 
   15630               <span class="entry_type_hwlevel">[legacy] </span>
   15631 
   15632 
   15633 
   15634 
   15635             </td> <!-- entry_type -->
   15636 
   15637             <td class="entry_description">
   15638               <p>A list of all keys that the camera device has available
   15639 to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p>
   15640             </td>
   15641 
   15642             <td class="entry_units">
   15643             </td>
   15644 
   15645             <td class="entry_range">
   15646             </td>
   15647 
   15648             <td class="entry_tags">
   15649             </td>
   15650 
   15651           </tr>
   15652           <tr class="entries_header">
   15653             <th class="th_details" colspan="5">Details</th>
   15654           </tr>
   15655           <tr class="entry_cont">
   15656             <td class="entry_details" colspan="5">
   15657               <p>Attempting to set a key into a CaptureRequest that is not
   15658 listed here will result in an invalid request and will be rejected
   15659 by the camera device.<wbr/></p>
   15660 <p>This field can be used to query the feature set of a camera device
   15661 at a more granular level than capabilities.<wbr/> This is especially
   15662 important for optional keys that are not listed under any capability
   15663 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
   15664             </td>
   15665           </tr>
   15666 
   15667           <tr class="entries_header">
   15668             <th class="th_details" colspan="5">HAL Implementation Details</th>
   15669           </tr>
   15670           <tr class="entry_cont">
   15671             <td class="entry_details" colspan="5">
   15672               <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
   15673 extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
   15674 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
   15675 vendor extensions API and not against this field.<wbr/></p>
   15676 <p>The HAL must not consume any request tags that are not listed either
   15677 here or in the vendor tag list.<wbr/></p>
   15678 <p>The public camera2 API will always make the vendor tags visible
   15679 via
   15680 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
   15681             </td>
   15682           </tr>
   15683 
   15684           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   15685            <!-- end of entry -->
   15686         
   15687                 
   15688           <tr class="entry" id="static_android.request.availableResultKeys">
   15689             <td class="entry_name
   15690              " rowspan="5">
   15691               android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys
   15692             </td>
   15693             <td class="entry_type">
   15694                 <span class="entry_type_name">int32</span>
   15695                 <span class="entry_type_container">x</span>
   15696 
   15697                 <span class="entry_type_array">
   15698                   n
   15699                 </span>
   15700               <span class="entry_type_visibility"> [hidden]</span>
   15701 
   15702 
   15703               <span class="entry_type_hwlevel">[legacy] </span>
   15704 
   15705 
   15706 
   15707 
   15708             </td> <!-- entry_type -->
   15709 
   15710             <td class="entry_description">
   15711               <p>A list of all keys that the camera device has available
   15712 to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>.<wbr/></p>
   15713             </td>
   15714 
   15715             <td class="entry_units">
   15716             </td>
   15717 
   15718             <td class="entry_range">
   15719             </td>
   15720 
   15721             <td class="entry_tags">
   15722             </td>
   15723 
   15724           </tr>
   15725           <tr class="entries_header">
   15726             <th class="th_details" colspan="5">Details</th>
   15727           </tr>
   15728           <tr class="entry_cont">
   15729             <td class="entry_details" colspan="5">
   15730               <p>Attempting to get a key from a CaptureResult that is not
   15731 listed here will always return a <code>null</code> value.<wbr/> Getting a key from
   15732 a CaptureResult that is listed here will generally never return a <code>null</code>
   15733 value.<wbr/></p>
   15734 <p>The following keys may return <code>null</code> unless they are enabled:</p>
   15735 <ul>
   15736 <li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> (non-null iff <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a> == ON)</li>
   15737 </ul>
   15738 <p>(Those sometimes-null keys will nevertheless be listed here
   15739 if they are available.<wbr/>)</p>
   15740 <p>This field can be used to query the feature set of a camera device
   15741 at a more granular level than capabilities.<wbr/> This is especially
   15742 important for optional keys that are not listed under any capability
   15743 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
   15744             </td>
   15745           </tr>
   15746 
   15747           <tr class="entries_header">
   15748             <th class="th_details" colspan="5">HAL Implementation Details</th>
   15749           </tr>
   15750           <tr class="entry_cont">
   15751             <td class="entry_details" colspan="5">
   15752               <p>Tags listed here must always have an entry in the result metadata,<wbr/>
   15753 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
   15754 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
   15755 <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
   15756 extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
   15757 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
   15758 vendor extensions API and not against this field.<wbr/></p>
   15759 <p>The HAL must not produce any result tags that are not listed either
   15760 here or in the vendor tag list.<wbr/></p>
   15761 <p>The public camera2 API will always make the vendor tags visible via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p>
   15762             </td>
   15763           </tr>
   15764 
   15765           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   15766            <!-- end of entry -->
   15767         
   15768                 
   15769           <tr class="entry" id="static_android.request.availableCharacteristicsKeys">
   15770             <td class="entry_name
   15771              " rowspan="5">
   15772               android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys
   15773             </td>
   15774             <td class="entry_type">
   15775                 <span class="entry_type_name">int32</span>
   15776                 <span class="entry_type_container">x</span>
   15777 
   15778                 <span class="entry_type_array">
   15779                   n
   15780                 </span>
   15781               <span class="entry_type_visibility"> [hidden]</span>
   15782 
   15783 
   15784               <span class="entry_type_hwlevel">[legacy] </span>
   15785 
   15786 
   15787 
   15788 
   15789             </td> <!-- entry_type -->
   15790 
   15791             <td class="entry_description">
   15792               <p>A list of all keys that the camera device has available
   15793 to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
   15794             </td>
   15795 
   15796             <td class="entry_units">
   15797             </td>
   15798 
   15799             <td class="entry_range">
   15800             </td>
   15801 
   15802             <td class="entry_tags">
   15803             </td>
   15804 
   15805           </tr>
   15806           <tr class="entries_header">
   15807             <th class="th_details" colspan="5">Details</th>
   15808           </tr>
   15809           <tr class="entry_cont">
   15810             <td class="entry_details" colspan="5">
   15811               <p>This entry follows the same rules as
   15812 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for
   15813 CameraCharacteristics instead of CaptureResult).<wbr/> See above for more
   15814 details.<wbr/></p>
   15815             </td>
   15816           </tr>
   15817 
   15818           <tr class="entries_header">
   15819             <th class="th_details" colspan="5">HAL Implementation Details</th>
   15820           </tr>
   15821           <tr class="entry_cont">
   15822             <td class="entry_details" colspan="5">
   15823               <p>Keys listed here must always have an entry in the static info metadata,<wbr/>
   15824 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
   15825 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
   15826 <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
   15827 extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
   15828 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
   15829 vendor extensions API and not against this field.<wbr/></p>
   15830 <p>The HAL must not have any tags in its static info that are not listed
   15831 either here or in the vendor tag list.<wbr/></p>
   15832 <p>The public camera2 API will always make the vendor tags visible
   15833 via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p>
   15834             </td>
   15835           </tr>
   15836 
   15837           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   15838            <!-- end of entry -->
   15839         
   15840         
   15841 
   15842       <!-- end of kind -->
   15843       </tbody>
   15844       <tr><td colspan="6" class="kind">dynamic</td></tr>
   15845 
   15846       <thead class="entries_header">
   15847         <tr>
   15848           <th class="th_name">Property Name</th>
   15849           <th class="th_type">Type</th>
   15850           <th class="th_description">Description</th>
   15851           <th class="th_units">Units</th>
   15852           <th class="th_range">Range</th>
   15853           <th class="th_tags">Tags</th>
   15854         </tr>
   15855       </thead>
   15856 
   15857       <tbody>
   15858 
   15859         
   15860 
   15861         
   15862 
   15863         
   15864 
   15865         
   15866 
   15867                 
   15868           <tr class="entry" id="dynamic_android.request.frameCount">
   15869             <td class="entry_name
   15870                 entry_name_deprecated
   15871              " rowspan="3">
   15872               android.<wbr/>request.<wbr/>frame<wbr/>Count
   15873             </td>
   15874             <td class="entry_type">
   15875                 <span class="entry_type_name">int32</span>
   15876 
   15877               <span class="entry_type_visibility"> [hidden]</span>
   15878 
   15879 
   15880 
   15881               <span class="entry_type_deprecated">[deprecated] </span>
   15882 
   15883 
   15884 
   15885             </td> <!-- entry_type -->
   15886 
   15887             <td class="entry_description">
   15888               <p>A frame counter set by the framework.<wbr/> This value monotonically
   15889 increases with every new result (that is,<wbr/> each new result has a unique
   15890 frameCount value).<wbr/></p>
   15891             </td>
   15892 
   15893             <td class="entry_units">
   15894               count of frames
   15895             </td>
   15896 
   15897             <td class="entry_range">
   15898               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
   15899               <p>&gt; 0</p>
   15900             </td>
   15901 
   15902             <td class="entry_tags">
   15903             </td>
   15904 
   15905           </tr>
   15906           <tr class="entries_header">
   15907             <th class="th_details" colspan="5">Details</th>
   15908           </tr>
   15909           <tr class="entry_cont">
   15910             <td class="entry_details" colspan="5">
   15911               <p>Reset on release()</p>
   15912             </td>
   15913           </tr>
   15914 
   15915 
   15916           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   15917            <!-- end of entry -->
   15918         
   15919                 
   15920           <tr class="entry" id="dynamic_android.request.id">
   15921             <td class="entry_name
   15922              " rowspan="1">
   15923               android.<wbr/>request.<wbr/>id
   15924             </td>
   15925             <td class="entry_type">
   15926                 <span class="entry_type_name">int32</span>
   15927 
   15928               <span class="entry_type_visibility"> [hidden]</span>
   15929 
   15930 
   15931 
   15932 
   15933 
   15934 
   15935             </td> <!-- entry_type -->
   15936 
   15937             <td class="entry_description">
   15938               <p>An application-specified ID for the current
   15939 request.<wbr/> Must be maintained unchanged in output
   15940 frame</p>
   15941             </td>
   15942 
   15943             <td class="entry_units">
   15944               arbitrary integer assigned by application
   15945             </td>
   15946 
   15947             <td class="entry_range">
   15948               <p>Any int</p>
   15949             </td>
   15950 
   15951             <td class="entry_tags">
   15952               <ul class="entry_tags">
   15953                   <li><a href="#tag_V1">V1</a></li>
   15954               </ul>
   15955             </td>
   15956 
   15957           </tr>
   15958 
   15959 
   15960           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   15961            <!-- end of entry -->
   15962         
   15963                 
   15964           <tr class="entry" id="dynamic_android.request.metadataMode">
   15965             <td class="entry_name
   15966              " rowspan="1">
   15967               android.<wbr/>request.<wbr/>metadata<wbr/>Mode
   15968             </td>
   15969             <td class="entry_type">
   15970                 <span class="entry_type_name entry_type_name_enum">byte</span>
   15971 
   15972               <span class="entry_type_visibility"> [system]</span>
   15973 
   15974 
   15975 
   15976 
   15977 
   15978                 <ul class="entry_type_enum">
   15979                   <li>
   15980                     <span class="entry_type_enum_name">NONE</span>
   15981                     <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
   15982 for application-bound buffer data.<wbr/> If no
   15983 application-bound streams exist,<wbr/> no frame should be
   15984 placed in the output frame queue.<wbr/> If such streams
   15985 exist,<wbr/> a frame should be placed on the output queue
   15986 with null metadata but with the necessary output buffer
   15987 information.<wbr/> Timestamp information should still be
   15988 included with any output stream buffers</p></span>
   15989                   </li>
   15990                   <li>
   15991                     <span class="entry_type_enum_name">FULL</span>
   15992                     <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
   15993 only be produced if they are separately
   15994 enabled</p></span>
   15995                   </li>
   15996                 </ul>
   15997 
   15998             </td> <!-- entry_type -->
   15999 
   16000             <td class="entry_description">
   16001               <p>How much metadata to produce on
   16002 output</p>
   16003             </td>
   16004 
   16005             <td class="entry_units">
   16006             </td>
   16007 
   16008             <td class="entry_range">
   16009             </td>
   16010 
   16011             <td class="entry_tags">
   16012               <ul class="entry_tags">
   16013                   <li><a href="#tag_FUTURE">FUTURE</a></li>
   16014               </ul>
   16015             </td>
   16016 
   16017           </tr>
   16018 
   16019 
   16020           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   16021            <!-- end of entry -->
   16022         
   16023                 
   16024           <tr class="entry" id="dynamic_android.request.outputStreams">
   16025             <td class="entry_name
   16026                 entry_name_deprecated
   16027              " rowspan="3">
   16028               android.<wbr/>request.<wbr/>output<wbr/>Streams
   16029             </td>
   16030             <td class="entry_type">
   16031                 <span class="entry_type_name">int32</span>
   16032                 <span class="entry_type_container">x</span>
   16033 
   16034                 <span class="entry_type_array">
   16035                   n
   16036                 </span>
   16037               <span class="entry_type_visibility"> [system]</span>
   16038 
   16039 
   16040 
   16041               <span class="entry_type_deprecated">[deprecated] </span>
   16042 
   16043 
   16044 
   16045             </td> <!-- entry_type -->
   16046 
   16047             <td class="entry_description">
   16048               <p>Lists which camera output streams image data
   16049 from this capture must be sent to</p>
   16050             </td>
   16051 
   16052             <td class="entry_units">
   16053               List of camera stream IDs
   16054             </td>
   16055 
   16056             <td class="entry_range">
   16057               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
   16058               <p>List must only include streams that have been
   16059 created</p>
   16060             </td>
   16061 
   16062             <td class="entry_tags">
   16063               <ul class="entry_tags">
   16064                   <li><a href="#tag_HAL2">HAL2</a></li>
   16065               </ul>
   16066             </td>
   16067 
   16068           </tr>
   16069           <tr class="entries_header">
   16070             <th class="th_details" colspan="5">Details</th>
   16071           </tr>
   16072           <tr class="entry_cont">
   16073             <td class="entry_details" colspan="5">
   16074               <p>If no output streams are listed,<wbr/> then the image
   16075 data should simply be discarded.<wbr/> The image data must
   16076 still be captured for metadata and statistics production,<wbr/>
   16077 and the lens and flash must operate as requested.<wbr/></p>
   16078             </td>
   16079           </tr>
   16080 
   16081 
   16082           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   16083            <!-- end of entry -->
   16084         
   16085                 
   16086           <tr class="entry" id="dynamic_android.request.pipelineDepth">
   16087             <td class="entry_name
   16088              " rowspan="5">
   16089               android.<wbr/>request.<wbr/>pipeline<wbr/>Depth
   16090             </td>
   16091             <td class="entry_type">
   16092                 <span class="entry_type_name">byte</span>
   16093 
   16094               <span class="entry_type_visibility"> [public]</span>
   16095 
   16096 
   16097               <span class="entry_type_hwlevel">[legacy] </span>
   16098 
   16099 
   16100 
   16101 
   16102             </td> <!-- entry_type -->
   16103 
   16104             <td class="entry_description">
   16105               <p>Specifies the number of pipeline stages the frame went
   16106 through from when it was exposed to when the final completed result
   16107 was available to the framework.<wbr/></p>
   16108             </td>
   16109 
   16110             <td class="entry_units">
   16111             </td>
   16112 
   16113             <td class="entry_range">
   16114               <p>&lt;= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p>
   16115             </td>
   16116 
   16117             <td class="entry_tags">
   16118             </td>
   16119 
   16120           </tr>
   16121           <tr class="entries_header">
   16122             <th class="th_details" colspan="5">Details</th>
   16123           </tr>
   16124           <tr class="entry_cont">
   16125             <td class="entry_details" colspan="5">
   16126               <p>Depending on what settings are used in the request,<wbr/> and
   16127 what streams are configured,<wbr/> the data may undergo less processing,<wbr/>
   16128 and some pipeline stages skipped.<wbr/></p>
   16129 <p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p>
   16130             </td>
   16131           </tr>
   16132 
   16133           <tr class="entries_header">
   16134             <th class="th_details" colspan="5">HAL Implementation Details</th>
   16135           </tr>
   16136           <tr class="entry_cont">
   16137             <td class="entry_details" colspan="5">
   16138               <p>This value must always represent the accurate count of how many
   16139 pipeline stages were actually used.<wbr/></p>
   16140             </td>
   16141           </tr>
   16142 
   16143           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   16144            <!-- end of entry -->
   16145         
   16146         
   16147 
   16148       <!-- end of kind -->
   16149       </tbody>
   16150 
   16151   <!-- end of section -->
   16152   <tr><td colspan="6" id="section_scaler" class="section">scaler</td></tr>
   16153 
   16154 
   16155       <tr><td colspan="6" class="kind">controls</td></tr>
   16156 
   16157       <thead class="entries_header">
   16158         <tr>
   16159           <th class="th_name">Property Name</th>
   16160           <th class="th_type">Type</th>
   16161           <th class="th_description">Description</th>
   16162           <th class="th_units">Units</th>
   16163           <th class="th_range">Range</th>
   16164           <th class="th_tags">Tags</th>
   16165         </tr>
   16166       </thead>
   16167 
   16168       <tbody>
   16169 
   16170         
   16171 
   16172         
   16173 
   16174         
   16175 
   16176         
   16177 
   16178                 
   16179           <tr class="entry" id="controls_android.scaler.cropRegion">
   16180             <td class="entry_name
   16181              " rowspan="5">
   16182               android.<wbr/>scaler.<wbr/>crop<wbr/>Region
   16183             </td>
   16184             <td class="entry_type">
   16185                 <span class="entry_type_name">int32</span>
   16186                 <span class="entry_type_container">x</span>
   16187 
   16188                 <span class="entry_type_array">
   16189                   4
   16190                 </span>
   16191               <span class="entry_type_visibility"> [public as rectangle]</span>
   16192 
   16193 
   16194               <span class="entry_type_hwlevel">[legacy] </span>
   16195 
   16196 
   16197 
   16198 
   16199             </td> <!-- entry_type -->
   16200 
   16201             <td class="entry_description">
   16202               <p>The desired region of the sensor to read out for this capture.<wbr/></p>
   16203             </td>
   16204 
   16205             <td class="entry_units">
   16206               Pixel coordinates relative to
   16207           android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
   16208             </td>
   16209 
   16210             <td class="entry_range">
   16211             </td>
   16212 
   16213             <td class="entry_tags">
   16214               <ul class="entry_tags">
   16215                   <li><a href="#tag_BC">BC</a></li>
   16216               </ul>
   16217             </td>
   16218 
   16219           </tr>
   16220           <tr class="entries_header">
   16221             <th class="th_details" colspan="5">Details</th>
   16222           </tr>
   16223           <tr class="entry_cont">
   16224             <td class="entry_details" colspan="5">
   16225               <p>This control can be used to implement digital zoom.<wbr/></p>
   16226 <p>The crop region coordinate system is based off
   16227 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with <code>(0,<wbr/> 0)</code> being the
   16228 top-left corner of the sensor active array.<wbr/></p>
   16229 <p>Output streams use this rectangle to produce their output,<wbr/>
   16230 cropping to a smaller region if necessary to maintain the
   16231 stream's aspect ratio,<wbr/> then scaling the sensor input to
   16232 match the output's configured resolution.<wbr/></p>
   16233 <p>The crop region is applied after the RAW to other color
   16234 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
   16235 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
   16236 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
   16237 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
   16238 be done to maximize the final pixel area of the stream.<wbr/></p>
   16239 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
   16240 ratio,<wbr/> then 4:3 streams will use the exact crop
   16241 region.<wbr/> 16:9 streams will further crop vertically
   16242 (letterbox).<wbr/></p>
   16243 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
   16244 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
   16245 streams will match exactly.<wbr/> These additional crops will
   16246 be centered within the crop region.<wbr/></p>
   16247 <p>The width and height of the crop region cannot
   16248 be set to be smaller than
   16249 <code>floor( activeArraySize.<wbr/>width /<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> )</code> and
   16250 <code>floor( activeArraySize.<wbr/>height /<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> )</code>,<wbr/> respectively.<wbr/></p>
   16251 <p>The camera device may adjust the crop region to account
   16252 for rounding and other hardware requirements; the final
   16253 crop region used will be included in the output capture
   16254 result.<wbr/></p>
   16255             </td>
   16256           </tr>
   16257 
   16258           <tr class="entries_header">
   16259             <th class="th_details" colspan="5">HAL Implementation Details</th>
   16260           </tr>
   16261           <tr class="entry_cont">
   16262             <td class="entry_details" colspan="5">
   16263               <p>The output streams must maintain square pixels at all
   16264 times,<wbr/> no matter what the relative aspect ratios of the
   16265 crop region and the stream are.<wbr/>  Negative values for
   16266 corner are allowed for raw output if full pixel array is
   16267 larger than active pixel array.<wbr/> Width and height may be
   16268 rounded to nearest larger supportable width,<wbr/> especially
   16269 for raw output,<wbr/> where only a few fixed scales may be
   16270 possible.<wbr/></p>
   16271 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
   16272 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
   16273 <ul>
   16274 <li>
   16275 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
   16276 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
   16277 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> to the sensor cropped pixel area size in this way:</p>
   16278 <ol>
   16279 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
   16280 cropped pixel area by (tx,<wbr/> ty),<wbr/>
   16281 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
   16282 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
   16283 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
   16284 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
   16285 <li>Scale the width and height of requested cropRegion with scaling factor of
   16286 sensor<wbr/>Crop.<wbr/>width/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>width and sensor<wbr/>Crop.<wbr/>height/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>height
   16287 respectively.<wbr/>
   16288 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
   16289 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
   16290 follow the general cropping rule for this new cropRegion and effective active
   16291 array size.<wbr/></li>
   16292 </ol>
   16293 </li>
   16294 <li>
   16295 <p>The HAL must report the cropRegion with regard to <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>
   16296 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
   16297 The reported cropRegion may be slightly different with the requested cropRegion since
   16298 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
   16299 hardware limitations.<wbr/></p>
   16300 </li>
   16301 </ul>
   16302 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
   16303             </td>
   16304           </tr>
   16305 
   16306           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   16307            <!-- end of entry -->
   16308         
   16309         
   16310 
   16311       <!-- end of kind -->
   16312       </tbody>
   16313       <tr><td colspan="6" class="kind">static</td></tr>
   16314 
   16315       <thead class="entries_header">
   16316         <tr>
   16317           <th class="th_name">Property Name</th>
   16318           <th class="th_type">Type</th>
   16319           <th class="th_description">Description</th>
   16320           <th class="th_units">Units</th>
   16321           <th class="th_range">Range</th>
   16322           <th class="th_tags">Tags</th>
   16323         </tr>
   16324       </thead>
   16325 
   16326       <tbody>
   16327 
   16328         
   16329 
   16330         
   16331 
   16332         
   16333 
   16334         
   16335 
   16336                 
   16337           <tr class="entry" id="static_android.scaler.availableFormats">
   16338             <td class="entry_name
   16339                 entry_name_deprecated
   16340              " rowspan="5">
   16341               android.<wbr/>scaler.<wbr/>available<wbr/>Formats
   16342             </td>
   16343             <td class="entry_type">
   16344                 <span class="entry_type_name entry_type_name_enum">int32</span>
   16345                 <span class="entry_type_container">x</span>
   16346 
   16347                 <span class="entry_type_array">
   16348                   n
   16349                 </span>
   16350               <span class="entry_type_visibility"> [hidden as imageFormat]</span>
   16351 
   16352 
   16353 
   16354               <span class="entry_type_deprecated">[deprecated] </span>
   16355 
   16356 
   16357                 <ul class="entry_type_enum">
   16358                   <li>
   16359                     <span class="entry_type_enum_name">RAW16</span>
   16360                     <span class="entry_type_enum_optional">[optional]</span>
   16361                     <span class="entry_type_enum_value">0x20</span>
   16362                     <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image
   16363 buffers with 16-bit pixels.<wbr/></p>
   16364 <p>Buffers of this format are typically expected to have a
   16365 Bayer Color Filter Array (CFA) layout,<wbr/> which is given in
   16366 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with
   16367 CFAs that are not representable by a format in
   16368 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not
   16369 use this format.<wbr/></p>
   16370 <p>Buffers of this format will also follow the constraints given for
   16371 RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p>
   16372 <p>This format is intended to give users access to the full contents
   16373 of the buffers coming directly from the image sensor prior to any
   16374 cropping or scaling operations,<wbr/> and all coordinate systems for
   16375 metadata used for this format are relative to the size of the
   16376 active region of the image sensor before any geometric distortion
   16377 correction has been applied (i.<wbr/>e.<wbr/>
   16378 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>).<wbr/> Supported
   16379 dimensions for this format are limited to the full dimensions of
   16380 the sensor (e.<wbr/>g.<wbr/> either <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
   16381 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> will be the
   16382 only supported output size).<wbr/></p>
   16383 <p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for
   16384 the full set of performance guarantees.<wbr/></p></span>
   16385                   </li>
   16386                   <li>
   16387                     <span class="entry_type_enum_name">RAW_OPAQUE</span>
   16388                     <span class="entry_type_enum_optional">[optional]</span>
   16389                     <span class="entry_type_enum_value">0x24</span>
   16390                     <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE is a format for raw image buffers coming from an
   16391 image sensor.<wbr/></p>
   16392 <p>The actual structure of buffers of this format is
   16393 platform-specific,<wbr/> but must follow several constraints:</p>
   16394 <ol>
   16395 <li>No image post-processing operations may have been applied to
   16396 buffers of this type.<wbr/> These buffers contain raw image data coming
   16397 directly from the image sensor.<wbr/></li>
   16398 <li>If a buffer of this format is passed to the camera device for
   16399 reprocessing,<wbr/> the resulting images will be identical to the images
   16400 produced if the buffer had come directly from the sensor and was
   16401 processed with the same settings.<wbr/></li>
   16402 </ol>
   16403 <p>The intended use for this format is to allow access to the native
   16404 raw format buffers coming directly from the camera sensor without
   16405 any additional conversions or decrease in framerate.<wbr/></p>
   16406 <p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for the full set of
   16407 performance guarantees.<wbr/></p></span>
   16408                   </li>
   16409                   <li>
   16410                     <span class="entry_type_enum_name">YV12</span>
   16411                     <span class="entry_type_enum_optional">[optional]</span>
   16412                     <span class="entry_type_enum_value">0x32315659</span>
   16413                     <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span>
   16414                   </li>
   16415                   <li>
   16416                     <span class="entry_type_enum_name">YCrCb_420_SP</span>
   16417                     <span class="entry_type_enum_optional">[optional]</span>
   16418                     <span class="entry_type_enum_value">0x11</span>
   16419                     <span class="entry_type_enum_notes"><p>NV21</p></span>
   16420                   </li>
   16421                   <li>
   16422                     <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED</span>
   16423                     <span class="entry_type_enum_value">0x22</span>
   16424                     <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span>
   16425                   </li>
   16426                   <li>
   16427                     <span class="entry_type_enum_name">YCbCr_420_888</span>
   16428                     <span class="entry_type_enum_value">0x23</span>
   16429                     <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span>
   16430                   </li>
   16431                   <li>
   16432                     <span class="entry_type_enum_name">BLOB</span>
   16433                     <span class="entry_type_enum_value">0x21</span>
   16434                     <span class="entry_type_enum_notes"><p>JPEG format</p></span>
   16435                   </li>
   16436                 </ul>
   16437 
   16438             </td> <!-- entry_type -->
   16439 
   16440             <td class="entry_description">
   16441               <p>The list of image formats that are supported by this
   16442 camera device for output streams.<wbr/></p>
   16443             </td>
   16444 
   16445             <td class="entry_units">
   16446             </td>
   16447 
   16448             <td class="entry_range">
   16449               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
   16450             </td>
   16451 
   16452             <td class="entry_tags">
   16453               <ul class="entry_tags">
   16454                   <li><a href="#tag_BC">BC</a></li>
   16455               </ul>
   16456             </td>
   16457 
   16458           </tr>
   16459           <tr class="entries_header">
   16460             <th class="th_details" colspan="5">Details</th>
   16461           </tr>
   16462           <tr class="entry_cont">
   16463             <td class="entry_details" colspan="5">
   16464               <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p>
   16465 <p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p>
   16466             </td>
   16467           </tr>
   16468 
   16469           <tr class="entries_header">
   16470             <th class="th_details" colspan="5">HAL Implementation Details</th>
   16471           </tr>
   16472           <tr class="entry_cont">
   16473             <td class="entry_details" colspan="5">
   16474               <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
   16475 system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p>
   16476 <p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform
   16477 gralloc module will select a format based on the usage flags provided
   16478 by the camera HAL device and the other endpoint of the stream.<wbr/> It is
   16479 usually used by preview and recording streams,<wbr/> where the application doesn't
   16480 need access the image data.<wbr/></p>
   16481 <p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream
   16482 needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p>
   16483 <p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p>
   16484 <p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly
   16485 recommended that any information used by the camera device when
   16486 processing images is fully expressed by the result metadata
   16487 for that image buffer.<wbr/></p>
   16488             </td>
   16489           </tr>
   16490 
   16491           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   16492            <!-- end of entry -->
   16493         
   16494                 
   16495           <tr class="entry" id="static_android.scaler.availableJpegMinDurations">
   16496             <td class="entry_name
   16497                 entry_name_deprecated
   16498              " rowspan="3">
   16499               android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations
   16500             </td>
   16501             <td class="entry_type">
   16502                 <span class="entry_type_name">int64</span>
   16503                 <span class="entry_type_container">x</span>
   16504 
   16505                 <span class="entry_type_array">
   16506                   n
   16507                 </span>
   16508               <span class="entry_type_visibility"> [hidden]</span>
   16509 
   16510 
   16511 
   16512               <span class="entry_type_deprecated">[deprecated] </span>
   16513 
   16514 
   16515 
   16516             </td> <!-- entry_type -->
   16517 
   16518             <td class="entry_description">
   16519               <p>The minimum frame duration that is supported
   16520 for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p>
   16521             </td>
   16522 
   16523             <td class="entry_units">
   16524               Nanoseconds
   16525             </td>
   16526 
   16527             <td class="entry_range">
   16528               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
   16529               <p>TODO: Remove property.<wbr/></p>
   16530             </td>
   16531 
   16532             <td class="entry_tags">
   16533               <ul class="entry_tags">
   16534                   <li><a href="#tag_BC">BC</a></li>
   16535               </ul>
   16536             </td>
   16537 
   16538           </tr>
   16539           <tr class="entries_header">
   16540             <th class="th_details" colspan="5">Details</th>
   16541           </tr>
   16542           <tr class="entry_cont">
   16543             <td class="entry_details" colspan="5">
   16544               <p>This corresponds to the minimum steady-state frame duration when only
   16545 that JPEG stream is active and captured in a burst,<wbr/> with all
   16546 processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p>
   16547 <p>When multiple streams are configured,<wbr/> the minimum
   16548 frame duration will be &gt;= max(individual stream min
   16549 durations)</p>
   16550             </td>
   16551           </tr>
   16552 
   16553 
   16554           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   16555            <!-- end of entry -->
   16556         
   16557                 
   16558           <tr class="entry" id="static_android.scaler.availableJpegSizes">
   16559             <td class="entry_name
   16560                 entry_name_deprecated
   16561              " rowspan="5">
   16562               android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes
   16563             </td>
   16564             <td class="entry_type">
   16565                 <span class="entry_type_name">int32</span>
   16566                 <span class="entry_type_container">x</span>
   16567 
   16568                 <span class="entry_type_array">
   16569                   n x 2
   16570                 </span>
   16571               <span class="entry_type_visibility"> [hidden as size]</span>
   16572 
   16573 
   16574 
   16575               <span class="entry_type_deprecated">[deprecated] </span>
   16576 
   16577 
   16578 
   16579             </td> <!-- entry_type -->
   16580 
   16581             <td class="entry_description">
   16582               <p>The JPEG resolutions that are supported by this camera device.<wbr/></p>
   16583             </td>
   16584 
   16585             <td class="entry_units">
   16586             </td>
   16587 
   16588             <td class="entry_range">
   16589               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
   16590               <p>TODO: Remove property.<wbr/></p>
   16591             </td>
   16592 
   16593             <td class="entry_tags">
   16594               <ul class="entry_tags">
   16595                   <li><a href="#tag_BC">BC</a></li>
   16596               </ul>
   16597             </td>
   16598 
   16599           </tr>
   16600           <tr class="entries_header">
   16601             <th class="th_details" colspan="5">Details</th>
   16602           </tr>
   16603           <tr class="entry_cont">
   16604             <td class="entry_details" colspan="5">
   16605               <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support
   16606 sensor maximum resolution (defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
   16607             </td>
   16608           </tr>
   16609 
   16610           <tr class="entries_header">
   16611             <th class="th_details" colspan="5">HAL Implementation Details</th>
   16612           </tr>
   16613           <tr class="entry_cont">
   16614             <td class="entry_details" colspan="5">
   16615               <p>The HAL must include sensor maximum resolution
   16616 (defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/>
   16617 and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p>
   16618             </td>
   16619           </tr>
   16620 
   16621           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   16622            <!-- end of entry -->
   16623         
   16624                 
   16625           <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom">
   16626             <td class="entry_name
   16627              " rowspan="3">
   16628               android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom
   16629             </td>
   16630             <td class="entry_type">
   16631                 <span class="entry_type_name">float</span>
   16632 
   16633               <span class="entry_type_visibility"> [public]</span>
   16634 
   16635 
   16636               <span class="entry_type_hwlevel">[legacy] </span>
   16637 
   16638 
   16639 
   16640 
   16641             </td> <!-- entry_type -->
   16642 
   16643             <td class="entry_description">
   16644               <p>The maximum ratio between both active area width
   16645 and crop region width,<wbr/> and active area height and
   16646 crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
   16647             </td>
   16648 
   16649             <td class="entry_units">
   16650               Zoom scale factor
   16651             </td>
   16652 
   16653             <td class="entry_range">
   16654               <p>&gt;=1</p>
   16655             </td>
   16656 
   16657             <td class="entry_tags">
   16658               <ul class="entry_tags">
   16659                   <li><a href="#tag_BC">BC</a></li>
   16660               </ul>
   16661             </td>
   16662 
   16663           </tr>
   16664           <tr class="entries_header">
   16665             <th class="th_details" colspan="5">Details</th>
   16666           </tr>
   16667           <tr class="entry_cont">
   16668             <td class="entry_details" colspan="5">
   16669               <p>This represents the maximum amount of zooming possible by
   16670 the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping
   16671 window size.<wbr/></p>
   16672 <p>Crop regions that have a width or height that is smaller
   16673 than this ratio allows will be rounded up to the minimum
   16674 allowed size by the camera device.<wbr/></p>
   16675             </td>
   16676           </tr>
   16677 
   16678 
   16679           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   16680            <!-- end of entry -->
   16681         
   16682                 
   16683           <tr class="entry" id="static_android.scaler.availableProcessedMinDurations">
   16684             <td class="entry_name
   16685                 entry_name_deprecated
   16686              " rowspan="3">
   16687               android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations
   16688             </td>
   16689             <td class="entry_type">
   16690                 <span class="entry_type_name">int64</span>
   16691                 <span class="entry_type_container">x</span>
   16692 
   16693                 <span class="entry_type_array">
   16694                   n
   16695                 </span>
   16696               <span class="entry_type_visibility"> [hidden]</span>
   16697 
   16698 
   16699 
   16700               <span class="entry_type_deprecated">[deprecated] </span>
   16701 
   16702 
   16703 
   16704             </td> <!-- entry_type -->
   16705 
   16706             <td class="entry_description">
   16707               <p>For each available processed output size (defined in
   16708 <a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the
   16709 minimum supportable frame duration for that size.<wbr/></p>
   16710             </td>
   16711 
   16712             <td class="entry_units">
   16713               Nanoseconds
   16714             </td>
   16715 
   16716             <td class="entry_range">
   16717               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
   16718             </td>
   16719 
   16720             <td class="entry_tags">
   16721               <ul class="entry_tags">
   16722                   <li><a href="#tag_BC">BC</a></li>
   16723               </ul>
   16724             </td>
   16725 
   16726           </tr>
   16727           <tr class="entries_header">
   16728             <th class="th_details" colspan="5">Details</th>
   16729           </tr>
   16730           <tr class="entry_cont">
   16731             <td class="entry_details" colspan="5">
   16732               <p>This should correspond to the frame duration when only that processed
   16733 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
   16734 set to FAST.<wbr/></p>
   16735 <p>When multiple streams are configured,<wbr/> the minimum frame duration will
   16736 be &gt;= max(individual stream min durations).<wbr/></p>
   16737             </td>
   16738           </tr>
   16739 
   16740 
   16741           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   16742            <!-- end of entry -->
   16743         
   16744                 
   16745           <tr class="entry" id="static_android.scaler.availableProcessedSizes">
   16746             <td class="entry_name
   16747                 entry_name_deprecated
   16748              " rowspan="5">
   16749               android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes
   16750             </td>
   16751             <td class="entry_type">
   16752                 <span class="entry_type_name">int32</span>
   16753                 <span class="entry_type_container">x</span>
   16754 
   16755                 <span class="entry_type_array">
   16756                   n x 2
   16757                 </span>
   16758               <span class="entry_type_visibility"> [hidden as size]</span>
   16759 
   16760 
   16761 
   16762               <span class="entry_type_deprecated">[deprecated] </span>
   16763 
   16764 
   16765 
   16766             </td> <!-- entry_type -->
   16767 
   16768             <td class="entry_description">
   16769               <p>The resolutions available for use with
   16770 processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and
   16771 platform opaque YUV/<wbr/>RGB streams to the GPU or video
   16772 encoders.<wbr/></p>
   16773             </td>
   16774 
   16775             <td class="entry_units">
   16776             </td>
   16777 
   16778             <td class="entry_range">
   16779               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
   16780             </td>
   16781 
   16782             <td class="entry_tags">
   16783               <ul class="entry_tags">
   16784                   <li><a href="#tag_BC">BC</a></li>
   16785               </ul>
   16786             </td>
   16787 
   16788           </tr>
   16789           <tr class="entries_header">
   16790             <th class="th_details" colspan="5">Details</th>
   16791           </tr>
   16792           <tr class="entry_cont">
   16793             <td class="entry_details" colspan="5">
   16794               <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p>
   16795 <p>For a given use case,<wbr/> the actual maximum supported resolution
   16796 may be lower than what is listed here,<wbr/> depending on the destination
   16797 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
   16798 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
   16799 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
   16800 can provide.<wbr/></p>
   16801 <p>Please reference the documentation for the image data destination to
   16802 check if it limits the maximum size for image data.<wbr/></p>
   16803             </td>
   16804           </tr>
   16805 
   16806           <tr class="entries_header">
   16807             <th class="th_details" colspan="5">HAL Implementation Details</th>
   16808           </tr>
   16809           <tr class="entry_cont">
   16810             <td class="entry_details" colspan="5">
   16811               <p>For FULL capability devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>),<wbr/>
   16812 the HAL must include all JPEG sizes listed in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>
   16813 and each below resolution if it is smaller than or equal to the sensor
   16814 maximum resolution (if they are not listed in JPEG sizes already):</p>
   16815 <ul>
   16816 <li>240p (320 x 240)</li>
   16817 <li>480p (640 x 480)</li>
   16818 <li>720p (1280 x 720)</li>
   16819 <li>1080p (1920 x 1080)</li>
   16820 </ul>
   16821 <p>For LIMITED capability devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
   16822 the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p>
   16823             </td>
   16824           </tr>
   16825 
   16826           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   16827            <!-- end of entry -->
   16828         
   16829                 
   16830           <tr class="entry" id="static_android.scaler.availableRawMinDurations">
   16831             <td class="entry_name
   16832                 entry_name_deprecated
   16833              " rowspan="3">
   16834               android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations
   16835             </td>
   16836             <td class="entry_type">
   16837                 <span class="entry_type_name">int64</span>
   16838                 <span class="entry_type_container">x</span>
   16839 
   16840                 <span class="entry_type_array">
   16841                   n
   16842                 </span>
   16843               <span class="entry_type_visibility"> [system]</span>
   16844 
   16845 
   16846 
   16847               <span class="entry_type_deprecated">[deprecated] </span>
   16848 
   16849 
   16850 
   16851             </td> <!-- entry_type -->
   16852 
   16853             <td class="entry_description">
   16854               <p>For each available raw output size (defined in
   16855 <a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum
   16856 supportable frame duration for that size.<wbr/></p>
   16857             </td>
   16858 
   16859             <td class="entry_units">
   16860               Nanoseconds
   16861             </td>
   16862 
   16863             <td class="entry_range">
   16864               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
   16865             </td>
   16866 
   16867             <td class="entry_tags">
   16868               <ul class="entry_tags">
   16869                   <li><a href="#tag_BC">BC</a></li>
   16870               </ul>
   16871             </td>
   16872 
   16873           </tr>
   16874           <tr class="entries_header">
   16875             <th class="th_details" colspan="5">Details</th>
   16876           </tr>
   16877           <tr class="entry_cont">
   16878             <td class="entry_details" colspan="5">
   16879               <p>Should correspond to the frame duration when only the raw stream is
   16880 active.<wbr/></p>
   16881 <p>When multiple streams are configured,<wbr/> the minimum
   16882 frame duration will be &gt;= max(individual stream min
   16883 durations)</p>
   16884             </td>
   16885           </tr>
   16886 
   16887 
   16888           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   16889            <!-- end of entry -->
   16890         
   16891                 
   16892           <tr class="entry" id="static_android.scaler.availableRawSizes">
   16893             <td class="entry_name
   16894                 entry_name_deprecated
   16895              " rowspan="1">
   16896               android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes
   16897             </td>
   16898             <td class="entry_type">
   16899                 <span class="entry_type_name">int32</span>
   16900                 <span class="entry_type_container">x</span>
   16901 
   16902                 <span class="entry_type_array">
   16903                   n x 2
   16904                 </span>
   16905               <span class="entry_type_visibility"> [system as size]</span>
   16906 
   16907 
   16908 
   16909               <span class="entry_type_deprecated">[deprecated] </span>
   16910 
   16911 
   16912 
   16913             </td> <!-- entry_type -->
   16914 
   16915             <td class="entry_description">
   16916               <p>The resolutions available for use with raw
   16917 sensor output streams,<wbr/> listed as width,<wbr/>
   16918 height</p>
   16919             </td>
   16920 
   16921             <td class="entry_units">
   16922             </td>
   16923 
   16924             <td class="entry_range">
   16925               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
   16926             </td>
   16927 
   16928             <td class="entry_tags">
   16929             </td>
   16930 
   16931           </tr>
   16932 
   16933 
   16934           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   16935            <!-- end of entry -->
   16936         
   16937                 
   16938           <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap">
   16939             <td class="entry_name
   16940              " rowspan="5">
   16941               android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
   16942             </td>
   16943             <td class="entry_type">
   16944                 <span class="entry_type_name">int32</span>
   16945 
   16946               <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span>
   16947 
   16948 
   16949 
   16950 
   16951 
   16952 
   16953             </td> <!-- entry_type -->
   16954 
   16955             <td class="entry_description">
   16956               <p>The mapping of image formats that are supported by this
   16957 camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
   16958             </td>
   16959 
   16960             <td class="entry_units">
   16961             </td>
   16962 
   16963             <td class="entry_range">
   16964             </td>
   16965 
   16966             <td class="entry_tags">
   16967               <ul class="entry_tags">
   16968                   <li><a href="#tag_REPROC">REPROC</a></li>
   16969               </ul>
   16970             </td>
   16971 
   16972           </tr>
   16973           <tr class="entries_header">
   16974             <th class="th_details" colspan="5">Details</th>
   16975           </tr>
   16976           <tr class="entry_cont">
   16977             <td class="entry_details" colspan="5">
   16978               <p>All camera devices with at least 1
   16979 <a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one
   16980 available input format.<wbr/></p>
   16981 <p>The camera device will support the following map of formats,<wbr/>
   16982 if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p>
   16983 <table>
   16984 <thead>
   16985 <tr>
   16986 <th align="left">Input Format</th>
   16987 <th align="left">Output Format</th>
   16988 <th align="left">Capability</th>
   16989 </tr>
   16990 </thead>
   16991 <tbody>
   16992 <tr>
   16993 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
   16994 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
   16995 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
   16996 </tr>
   16997 <tr>
   16998 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
   16999 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td>
   17000 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
   17001 </tr>
   17002 <tr>
   17003 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td>
   17004 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
   17005 <td align="left">YUV_<wbr/>REPROCESSING</td>
   17006 </tr>
   17007 <tr>
   17008 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td>
   17009 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td>
   17010 <td align="left">YUV_<wbr/>REPROCESSING</td>
   17011 </tr>
   17012 </tbody>
   17013 </table>
   17014 <p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/>  A
   17015 PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a>
   17016 with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p>
   17017 <p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input
   17018 or output will never hurt maximum frame rate (i.<wbr/>e.<wbr/>  <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">getOutputStallDuration(ImageFormat.<wbr/>PRIVATE,<wbr/> size)</a> is always 0),<wbr/></p>
   17019 <p>Attempting to configure an input stream with output streams not
   17020 listed as available in this map is not valid.<wbr/></p>
   17021             </td>
   17022           </tr>
   17023 
   17024           <tr class="entries_header">
   17025             <th class="th_details" colspan="5">HAL Implementation Details</th>
   17026           </tr>
   17027           <tr class="entry_cont">
   17028             <td class="entry_details" colspan="5">
   17029               <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition
   17030 of the image format enumerations.<wbr/> The PRIVATE format refers to the
   17031 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine
   17032 the actual format by using the gralloc usage flags.<wbr/>
   17033 For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially
   17034 processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/>
   17035 See camera3.<wbr/>h for more details.<wbr/></p>
   17036 <p>This value is encoded as a variable-size array-of-arrays.<wbr/>
   17037 The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where
   17038 <code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another
   17039 inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p>
   17040 <p>A code sample to read/<wbr/>write this encoding (with a device that
   17041 supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/>
   17042 and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p>
   17043 <pre><code>//<wbr/> reading
   17044 int32_<wbr/>t* contents = &amp;entry.<wbr/>i32[0];
   17045 for (size_<wbr/>t i = 0; i &lt; entry.<wbr/>count; ) {
   17046     int32_<wbr/>t format = contents[i++];
   17047     int32_<wbr/>t length = contents[i++];
   17048     int32_<wbr/>t output_<wbr/>formats[length];
   17049     memcpy(&amp;output_<wbr/>formats[0],<wbr/> &amp;contents[i],<wbr/>
   17050            length * sizeof(int32_<wbr/>t));
   17051     i += length;
   17052 }
   17053 
   17054 //<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING)
   17055 int32_<wbr/>t[] contents = {
   17056   IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
   17057   YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
   17058 };
   17059 update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &amp;contents[0],<wbr/>
   17060       sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &amp;updated_<wbr/>entry);
   17061 </code></pre>
   17062 <p>If the HAL claims to support any of the capabilities listed in the
   17063 above details,<wbr/> then it must also support all the input-output
   17064 combinations listed for that capability.<wbr/> It can optionally support
   17065 additional formats if it so chooses.<wbr/></p>
   17066             </td>
   17067           </tr>
   17068 
   17069           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   17070            <!-- end of entry -->
   17071         
   17072                 
   17073           <tr class="entry" id="static_android.scaler.availableStreamConfigurations">
   17074             <td class="entry_name
   17075              " rowspan="5">
   17076               android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations
   17077             </td>
   17078             <td class="entry_type">
   17079                 <span class="entry_type_name entry_type_name_enum">int32</span>
   17080                 <span class="entry_type_container">x</span>
   17081 
   17082                 <span class="entry_type_array">
   17083                   n x 4
   17084                 </span>
   17085               <span class="entry_type_visibility"> [hidden as streamConfiguration]</span>
   17086 
   17087 
   17088               <span class="entry_type_hwlevel">[legacy] </span>
   17089 
   17090 
   17091 
   17092                 <ul class="entry_type_enum">
   17093                   <li>
   17094                     <span class="entry_type_enum_name">OUTPUT</span>
   17095                   </li>
   17096                   <li>
   17097                     <span class="entry_type_enum_name">INPUT</span>
   17098                   </li>
   17099                 </ul>
   17100 
   17101             </td> <!-- entry_type -->
   17102 
   17103             <td class="entry_description">
   17104               <p>The available stream configurations that this
   17105 camera device supports
   17106 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
   17107             </td>
   17108 
   17109             <td class="entry_units">
   17110             </td>
   17111 
   17112             <td class="entry_range">
   17113             </td>
   17114 
   17115             <td class="entry_tags">
   17116             </td>
   17117 
   17118           </tr>
   17119           <tr class="entries_header">
   17120             <th class="th_details" colspan="5">Details</th>
   17121           </tr>
   17122           <tr class="entry_cont">
   17123             <td class="entry_details" colspan="5">
   17124               <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code>
   17125 tuples.<wbr/></p>
   17126 <p>For a given use case,<wbr/> the actual maximum supported resolution
   17127 may be lower than what is listed here,<wbr/> depending on the destination
   17128 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
   17129 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
   17130 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
   17131 can provide.<wbr/></p>
   17132 <p>Please reference the documentation for the image data destination to
   17133 check if it limits the maximum size for image data.<wbr/></p>
   17134 <p>Not all output formats may be supported in a configuration with
   17135 an input stream of a particular format.<wbr/> For more details,<wbr/> see
   17136 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
   17137 <p>The following table describes the minimum required output stream
   17138 configurations based on the hardware level
   17139 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
   17140 <table>
   17141 <thead>
   17142 <tr>
   17143 <th align="center">Format</th>
   17144 <th align="center">Size</th>
   17145 <th align="center">Hardware Level</th>
   17146 <th align="center">Notes</th>
   17147 </tr>
   17148 </thead>
   17149 <tbody>
   17150 <tr>
   17151 <td align="center">JPEG</td>
   17152 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
   17153 <td align="center">Any</td>
   17154 <td align="center"></td>
   17155 </tr>
   17156 <tr>
   17157 <td align="center">JPEG</td>
   17158 <td align="center">1920x1080 (1080p)</td>
   17159 <td align="center">Any</td>
   17160 <td align="center">if 1080p &lt;= activeArraySize</td>
   17161 </tr>
   17162 <tr>
   17163 <td align="center">JPEG</td>
   17164 <td align="center">1280x720 (720)</td>
   17165 <td align="center">Any</td>
   17166 <td align="center">if 720p &lt;= activeArraySize</td>
   17167 </tr>
   17168 <tr>
   17169 <td align="center">JPEG</td>
   17170 <td align="center">640x480 (480p)</td>
   17171 <td align="center">Any</td>
   17172 <td align="center">if 480p &lt;= activeArraySize</td>
   17173 </tr>
   17174 <tr>
   17175 <td align="center">JPEG</td>
   17176 <td align="center">320x240 (240p)</td>
   17177 <td align="center">Any</td>
   17178 <td align="center">if 240p &lt;= activeArraySize</td>
   17179 </tr>
   17180 <tr>
   17181 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
   17182 <td align="center">all output sizes available for JPEG</td>
   17183 <td align="center">FULL</td>
   17184 <td align="center"></td>
   17185 </tr>
   17186 <tr>
   17187 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
   17188 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
   17189 <td align="center">LIMITED</td>
   17190 <td align="center"></td>
   17191 </tr>
   17192 <tr>
   17193 <td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
   17194 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
   17195 <td align="center">Any</td>
   17196 <td align="center"></td>
   17197 </tr>
   17198 </tbody>
   17199 </table>
   17200 <p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
   17201 mandatory stream configurations on a per-capability basis.<wbr/></p>
   17202             </td>
   17203           </tr>
   17204 
   17205           <tr class="entries_header">
   17206             <th class="th_details" colspan="5">HAL Implementation Details</th>
   17207           </tr>
   17208           <tr class="entry_cont">
   17209             <td class="entry_details" colspan="5">
   17210               <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
   17211 of sensor maximum resolution for JPEG formats (regardless of hardware
   17212 level).<wbr/></p>
   17213 <p>(The following is a rewording of the above required table):</p>
   17214 <p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
   17215 <ul>
   17216 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
   17217 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
   17218 (defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>) has an aspect ratio other than these,<wbr/>
   17219 it does not have to be included in the supported JPEG sizes.<wbr/></li>
   17220 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
   17221 the dimensions being a multiple of 16.<wbr/></li>
   17222 </ul>
   17223 <p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
   17224 However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum
   17225 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
   17226 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
   17227 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
   17228 ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
   17229 3264x2448.<wbr/></p>
   17230 <p>For FULL capability devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>),<wbr/>
   17231 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
   17232 here as output streams.<wbr/></p>
   17233 <p>It must also include each below resolution if it is smaller than or
   17234 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
   17235 formats),<wbr/> as output streams:</p>
   17236 <ul>
   17237 <li>240p (320 x 240)</li>
   17238 <li>480p (640 x 480)</li>
   17239 <li>720p (1280 x 720)</li>
   17240 <li>1080p (1920 x 1080)</li>
   17241 </ul>
   17242 <p>For LIMITED capability devices
   17243 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
   17244 the HAL only has to list up to the maximum video size
   17245 supported by the device.<wbr/></p>
   17246 <p>Regardless of hardware level,<wbr/> every output resolution available for
   17247 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
   17248 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
   17249 <ul>
   17250 <li>availableFormats</li>
   17251 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
   17252 </ul>
   17253             </td>
   17254           </tr>
   17255 
   17256           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   17257            <!-- end of entry -->
   17258         
   17259                 
   17260           <tr class="entry" id="static_android.scaler.availableMinFrameDurations">
   17261             <td class="entry_name
   17262              " rowspan="3">
   17263               android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations
   17264             </td>
   17265             <td class="entry_type">
   17266                 <span class="entry_type_name">int64</span>
   17267                 <span class="entry_type_container">x</span>
   17268 
   17269                 <span class="entry_type_array">
   17270                   4 x n
   17271                 </span>
   17272               <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
   17273 
   17274 
   17275               <span class="entry_type_hwlevel">[legacy] </span>
   17276 
   17277 
   17278 
   17279 
   17280             </td> <!-- entry_type -->
   17281 
   17282             <td class="entry_description">
   17283               <p>This lists the minimum frame duration for each
   17284 format/<wbr/>size combination.<wbr/></p>
   17285             </td>
   17286 
   17287             <td class="entry_units">
   17288               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
   17289             </td>
   17290 
   17291             <td class="entry_range">
   17292             </td>
   17293 
   17294             <td class="entry_tags">
   17295               <ul class="entry_tags">
   17296                   <li><a href="#tag_V1">V1</a></li>
   17297               </ul>
   17298             </td>
   17299 
   17300           </tr>
   17301           <tr class="entries_header">
   17302             <th class="th_details" colspan="5">Details</th>
   17303           </tr>
   17304           <tr class="entry_cont">
   17305             <td class="entry_details" colspan="5">
   17306               <p>This should correspond to the frame duration when only that
   17307 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
   17308 set to either OFF or FAST.<wbr/></p>
   17309 <p>When multiple streams are used in a request,<wbr/> the minimum frame
   17310 duration will be max(individual stream min durations).<wbr/></p>
   17311 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
   17312 is the same regardless of whether the stream is input or output.<wbr/></p>
   17313 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
   17314 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
   17315 calculating the max frame rate.<wbr/></p>
   17316 <p>(Keep in sync with
   17317 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>)</p>
   17318             </td>
   17319           </tr>
   17320 
   17321 
   17322           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   17323            <!-- end of entry -->
   17324         
   17325                 
   17326           <tr class="entry" id="static_android.scaler.availableStallDurations">
   17327             <td class="entry_name
   17328              " rowspan="5">
   17329               android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations
   17330             </td>
   17331             <td class="entry_type">
   17332                 <span class="entry_type_name">int64</span>
   17333                 <span class="entry_type_container">x</span>
   17334 
   17335                 <span class="entry_type_array">
   17336                   4 x n
   17337                 </span>
   17338               <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
   17339 
   17340 
   17341               <span class="entry_type_hwlevel">[legacy] </span>
   17342 
   17343 
   17344 
   17345 
   17346             </td> <!-- entry_type -->
   17347 
   17348             <td class="entry_description">
   17349               <p>This lists the maximum stall duration for each
   17350 output format/<wbr/>size combination.<wbr/></p>
   17351             </td>
   17352 
   17353             <td class="entry_units">
   17354               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
   17355             </td>
   17356 
   17357             <td class="entry_range">
   17358             </td>
   17359 
   17360             <td class="entry_tags">
   17361               <ul class="entry_tags">
   17362                   <li><a href="#tag_V1">V1</a></li>
   17363               </ul>
   17364             </td>
   17365 
   17366           </tr>
   17367           <tr class="entries_header">
   17368             <th class="th_details" colspan="5">Details</th>
   17369           </tr>
   17370           <tr class="entry_cont">
   17371             <td class="entry_details" colspan="5">
   17372               <p>A stall duration is how much extra time would get added
   17373 to the normal minimum frame duration for a repeating request
   17374 that has streams with non-zero stall.<wbr/></p>
   17375 <p>For example,<wbr/> consider JPEG captures which have the following
   17376 characteristics:</p>
   17377 <ul>
   17378 <li>JPEG streams act like processed YUV streams in requests for which
   17379 they are not included; in requests in which they are directly
   17380 referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a
   17381 JPEG stream requires the underlying YUV data to always be ready for
   17382 use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact
   17383 frame duration) on requests that actually reference a JPEG stream.<wbr/></li>
   17384 <li>The JPEG processor can run concurrently to the rest of the camera
   17385 pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li>
   17386 </ul>
   17387 <p>In other words,<wbr/> using a repeating YUV request would result
   17388 in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single
   17389 JPEG request is submitted periodically,<wbr/> the frame rate will stay
   17390 at 30 FPS (as long as we wait for the previous JPEG to return each
   17391 time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then
   17392 the frame rate will drop from 30 FPS.<wbr/></p>
   17393 <p>In general,<wbr/> submitting a new request with a non-0 stall time
   17394 stream will <em>not</em> cause a frame rate drop unless there are still
   17395 outstanding buffers for that stream from previous requests.<wbr/></p>
   17396 <p>Submitting a repeating request with streams (call this <code>S</code>)
   17397 is the same as setting the minimum frame duration from
   17398 the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with
   17399 the maximum stall duration for <code>S</code>.<wbr/></p>
   17400 <p>If interleaving requests with and without a stall duration,<wbr/>
   17401 a request will stall by the maximum of the remaining times
   17402 for each can-stall stream with outstanding buffers.<wbr/></p>
   17403 <p>This means that a stalling request will not have an exposure start
   17404 until the stall has completed.<wbr/></p>
   17405 <p>This should correspond to the stall duration when only that stream is
   17406 active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST
   17407 or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY
   17408 effectively results in an indeterminate stall duration for all
   17409 streams in a request (the regular stall calculation rules are
   17410 ignored).<wbr/></p>
   17411 <p>The following formats may always have a stall duration:</p>
   17412 <ul>
   17413 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li>
   17414 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li>
   17415 </ul>
   17416 <p>The following formats will never have a stall duration:</p>
   17417 <ul>
   17418 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></li>
   17419 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li>
   17420 </ul>
   17421 <p>All other formats may or may not have an allowed stall duration on
   17422 a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
   17423 for more details.<wbr/></p>
   17424 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about
   17425 calculating the max frame rate (absent stalls).<wbr/></p>
   17426 <p>(Keep up to date with
   17427 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> )</p>
   17428             </td>
   17429           </tr>
   17430 
   17431           <tr class="entries_header">
   17432             <th class="th_details" colspan="5">HAL Implementation Details</th>
   17433           </tr>
   17434           <tr class="entry_cont">
   17435             <td class="entry_details" colspan="5">
   17436               <p>If possible,<wbr/> it is recommended that all non-JPEG formats
   17437 (such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE
   17438 and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
   17439             </td>
   17440           </tr>
   17441 
   17442           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   17443            <!-- end of entry -->
   17444         
   17445                 
   17446           <tr class="entry" id="static_android.scaler.streamConfigurationMap">
   17447             <td class="entry_name
   17448              " rowspan="5">
   17449               android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map
   17450             </td>
   17451             <td class="entry_type">
   17452                 <span class="entry_type_name">int32</span>
   17453 
   17454               <span class="entry_type_visibility"> [public as streamConfigurationMap]</span>
   17455 
   17456               <span class="entry_type_synthetic">[synthetic] </span>
   17457 
   17458               <span class="entry_type_hwlevel">[legacy] </span>
   17459 
   17460 
   17461 
   17462 
   17463             </td> <!-- entry_type -->
   17464 
   17465             <td class="entry_description">
   17466               <p>The available stream configurations that this
   17467 camera device supports; also includes the minimum frame durations
   17468 and the stall durations for each format/<wbr/>size combination.<wbr/></p>
   17469             </td>
   17470 
   17471             <td class="entry_units">
   17472             </td>
   17473 
   17474             <td class="entry_range">
   17475             </td>
   17476 
   17477             <td class="entry_tags">
   17478             </td>
   17479 
   17480           </tr>
   17481           <tr class="entries_header">
   17482             <th class="th_details" colspan="5">Details</th>
   17483           </tr>
   17484           <tr class="entry_cont">
   17485             <td class="entry_details" colspan="5">
   17486               <p>All camera devices will support sensor maximum resolution (defined by
   17487 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>) for the JPEG format.<wbr/></p>
   17488 <p>For a given use case,<wbr/> the actual maximum supported resolution
   17489 may be lower than what is listed here,<wbr/> depending on the destination
   17490 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
   17491 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
   17492 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
   17493 can provide.<wbr/></p>
   17494 <p>Please reference the documentation for the image data destination to
   17495 check if it limits the maximum size for image data.<wbr/></p>
   17496 <p>The following table describes the minimum required output stream
   17497 configurations based on the hardware level
   17498 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
   17499 <table>
   17500 <thead>
   17501 <tr>
   17502 <th align="center">Format</th>
   17503 <th align="center">Size</th>
   17504 <th align="center">Hardware Level</th>
   17505 <th align="center">Notes</th>
   17506 </tr>
   17507 </thead>
   17508 <tbody>
   17509 <tr>
   17510 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
   17511 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td>
   17512 <td align="center">Any</td>
   17513 <td align="center"></td>
   17514 </tr>
   17515 <tr>
   17516 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
   17517 <td align="center">1920x1080 (1080p)</td>
   17518 <td align="center">Any</td>
   17519 <td align="center">if 1080p &lt;= activeArraySize</td>
   17520 </tr>
   17521 <tr>
   17522 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
   17523 <td align="center">1280x720 (720p)</td>
   17524 <td align="center">Any</td>
   17525 <td align="center">if 720p &lt;= activeArraySize</td>
   17526 </tr>
   17527 <tr>
   17528 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
   17529 <td align="center">640x480 (480p)</td>
   17530 <td align="center">Any</td>
   17531 <td align="center">if 480p &lt;= activeArraySize</td>
   17532 </tr>
   17533 <tr>
   17534 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
   17535 <td align="center">320x240 (240p)</td>
   17536 <td align="center">Any</td>
   17537 <td align="center">if 240p &lt;= activeArraySize</td>
   17538 </tr>
   17539 <tr>
   17540 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td>
   17541 <td align="center">all output sizes available for JPEG</td>
   17542 <td align="center">FULL</td>
   17543 <td align="center"></td>
   17544 </tr>
   17545 <tr>
   17546 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td>
   17547 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
   17548 <td align="center">LIMITED</td>
   17549 <td align="center"></td>
   17550 </tr>
   17551 <tr>
   17552 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
   17553 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
   17554 <td align="center">Any</td>
   17555 <td align="center"></td>
   17556 </tr>
   17557 </tbody>
   17558 </table>
   17559 <p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a> for additional mandatory
   17560 stream configurations on a per-capability basis.<wbr/></p>
   17561 <p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
   17562 <ul>
   17563 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
   17564 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
   17565 (defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>) has an aspect ratio other than these,<wbr/>
   17566 it does not have to be included in the supported JPEG sizes.<wbr/></li>
   17567 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
   17568 the dimensions being a multiple of 16.<wbr/>
   17569 Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
   17570 However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum
   17571 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
   17572 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
   17573 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
   17574 ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
   17575 3264x2448.<wbr/></li>
   17576 </ul>
   17577             </td>
   17578           </tr>
   17579 
   17580           <tr class="entries_header">
   17581             <th class="th_details" colspan="5">HAL Implementation Details</th>
   17582           </tr>
   17583           <tr class="entry_cont">
   17584             <td class="entry_details" colspan="5">
   17585               <p>Do not set this property directly
   17586 (it is synthetic and will not be available at the HAL layer);
   17587 set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p>
   17588 <p>Not all output formats may be supported in a configuration with
   17589 an input stream of a particular format.<wbr/> For more details,<wbr/> see
   17590 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
   17591 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
   17592 of sensor maximum resolution for JPEG formats (regardless of hardware
   17593 level).<wbr/></p>
   17594 <p>(The following is a rewording of the above required table):</p>
   17595 <p>The HAL must include sensor maximum resolution (defined by
   17596 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
   17597 <p>For FULL capability devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>),<wbr/>
   17598 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
   17599 here as output streams.<wbr/></p>
   17600 <p>It must also include each below resolution if it is smaller than or
   17601 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
   17602 formats),<wbr/> as output streams:</p>
   17603 <ul>
   17604 <li>240p (320 x 240)</li>
   17605 <li>480p (640 x 480)</li>
   17606 <li>720p (1280 x 720)</li>
   17607 <li>1080p (1920 x 1080)</li>
   17608 </ul>
   17609 <p>For LIMITED capability devices
   17610 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
   17611 the HAL only has to list up to the maximum video size
   17612 supported by the device.<wbr/></p>
   17613 <p>Regardless of hardware level,<wbr/> every output resolution available for
   17614 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
   17615 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
   17616 <ul>
   17617 <li>availableFormats</li>
   17618 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
   17619 </ul>
   17620             </td>
   17621           </tr>
   17622 
   17623           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   17624            <!-- end of entry -->
   17625         
   17626                 
   17627           <tr class="entry" id="static_android.scaler.croppingType">
   17628             <td class="entry_name
   17629              " rowspan="3">
   17630               android.<wbr/>scaler.<wbr/>cropping<wbr/>Type
   17631             </td>
   17632             <td class="entry_type">
   17633                 <span class="entry_type_name entry_type_name_enum">byte</span>
   17634 
   17635               <span class="entry_type_visibility"> [public]</span>
   17636 
   17637 
   17638               <span class="entry_type_hwlevel">[legacy] </span>
   17639 
   17640 
   17641 
   17642                 <ul class="entry_type_enum">
   17643                   <li>
   17644                     <span class="entry_type_enum_name">CENTER_ONLY</span>
   17645                     <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span>
   17646                   </li>
   17647                   <li>
   17648                     <span class="entry_type_enum_name">FREEFORM</span>
   17649                     <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span>
   17650                   </li>
   17651                 </ul>
   17652 
   17653             </td> <!-- entry_type -->
   17654 
   17655             <td class="entry_description">
   17656               <p>The crop type that this camera device supports.<wbr/></p>
   17657             </td>
   17658 
   17659             <td class="entry_units">
   17660             </td>
   17661 
   17662             <td class="entry_range">
   17663             </td>
   17664 
   17665             <td class="entry_tags">
   17666             </td>
   17667 
   17668           </tr>
   17669           <tr class="entries_header">
   17670             <th class="th_details" colspan="5">Details</th>
   17671           </tr>
   17672           <tr class="entry_cont">
   17673             <td class="entry_details" colspan="5">
   17674               <p>When passing a non-centered crop region (<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>) to a camera
   17675 device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the
   17676 crop region to the center of the sensor active array (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>)
   17677 and keep the crop region width and height unchanged.<wbr/> The camera device will return the
   17678 final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
   17679 <p>Camera devices that support FREEFORM cropping will support any crop region that
   17680 is inside of the active array.<wbr/> The camera device will apply the same crop region and
   17681 return the final used crop region in capture result metadata <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
   17682 <p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p>
   17683             </td>
   17684           </tr>
   17685 
   17686 
   17687           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   17688            <!-- end of entry -->
   17689         
   17690         
   17691 
   17692       <!-- end of kind -->
   17693       </tbody>
   17694       <tr><td colspan="6" class="kind">dynamic</td></tr>
   17695 
   17696       <thead class="entries_header">
   17697         <tr>
   17698           <th class="th_name">Property Name</th>
   17699           <th class="th_type">Type</th>
   17700           <th class="th_description">Description</th>
   17701           <th class="th_units">Units</th>
   17702           <th class="th_range">Range</th>
   17703           <th class="th_tags">Tags</th>
   17704         </tr>
   17705       </thead>
   17706 
   17707       <tbody>
   17708 
   17709         
   17710 
   17711         
   17712 
   17713         
   17714 
   17715         
   17716 
   17717                 
   17718           <tr class="entry" id="dynamic_android.scaler.cropRegion">
   17719             <td class="entry_name
   17720              " rowspan="5">
   17721               android.<wbr/>scaler.<wbr/>crop<wbr/>Region
   17722             </td>
   17723             <td class="entry_type">
   17724                 <span class="entry_type_name">int32</span>
   17725                 <span class="entry_type_container">x</span>
   17726 
   17727                 <span class="entry_type_array">
   17728                   4
   17729                 </span>
   17730               <span class="entry_type_visibility"> [public as rectangle]</span>
   17731 
   17732 
   17733               <span class="entry_type_hwlevel">[legacy] </span>
   17734 
   17735 
   17736 
   17737 
   17738             </td> <!-- entry_type -->
   17739 
   17740             <td class="entry_description">
   17741               <p>The desired region of the sensor to read out for this capture.<wbr/></p>
   17742             </td>
   17743 
   17744             <td class="entry_units">
   17745               Pixel coordinates relative to
   17746           android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
   17747             </td>
   17748 
   17749             <td class="entry_range">
   17750             </td>
   17751 
   17752             <td class="entry_tags">
   17753               <ul class="entry_tags">
   17754                   <li><a href="#tag_BC">BC</a></li>
   17755               </ul>
   17756             </td>
   17757 
   17758           </tr>
   17759           <tr class="entries_header">
   17760             <th class="th_details" colspan="5">Details</th>
   17761           </tr>
   17762           <tr class="entry_cont">
   17763             <td class="entry_details" colspan="5">
   17764               <p>This control can be used to implement digital zoom.<wbr/></p>
   17765 <p>The crop region coordinate system is based off
   17766 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with <code>(0,<wbr/> 0)</code> being the
   17767 top-left corner of the sensor active array.<wbr/></p>
   17768 <p>Output streams use this rectangle to produce their output,<wbr/>
   17769 cropping to a smaller region if necessary to maintain the
   17770 stream's aspect ratio,<wbr/> then scaling the sensor input to
   17771 match the output's configured resolution.<wbr/></p>
   17772 <p>The crop region is applied after the RAW to other color
   17773 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
   17774 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
   17775 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
   17776 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
   17777 be done to maximize the final pixel area of the stream.<wbr/></p>
   17778 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
   17779 ratio,<wbr/> then 4:3 streams will use the exact crop
   17780 region.<wbr/> 16:9 streams will further crop vertically
   17781 (letterbox).<wbr/></p>
   17782 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
   17783 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
   17784 streams will match exactly.<wbr/> These additional crops will
   17785 be centered within the crop region.<wbr/></p>
   17786 <p>The width and height of the crop region cannot
   17787 be set to be smaller than
   17788 <code>floor( activeArraySize.<wbr/>width /<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> )</code> and
   17789 <code>floor( activeArraySize.<wbr/>height /<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> )</code>,<wbr/> respectively.<wbr/></p>
   17790 <p>The camera device may adjust the crop region to account
   17791 for rounding and other hardware requirements; the final
   17792 crop region used will be included in the output capture
   17793 result.<wbr/></p>
   17794             </td>
   17795           </tr>
   17796 
   17797           <tr class="entries_header">
   17798             <th class="th_details" colspan="5">HAL Implementation Details</th>
   17799           </tr>
   17800           <tr class="entry_cont">
   17801             <td class="entry_details" colspan="5">
   17802               <p>The output streams must maintain square pixels at all
   17803 times,<wbr/> no matter what the relative aspect ratios of the
   17804 crop region and the stream are.<wbr/>  Negative values for
   17805 corner are allowed for raw output if full pixel array is
   17806 larger than active pixel array.<wbr/> Width and height may be
   17807 rounded to nearest larger supportable width,<wbr/> especially
   17808 for raw output,<wbr/> where only a few fixed scales may be
   17809 possible.<wbr/></p>
   17810 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
   17811 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
   17812 <ul>
   17813 <li>
   17814 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
   17815 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
   17816 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> to the sensor cropped pixel area size in this way:</p>
   17817 <ol>
   17818 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
   17819 cropped pixel area by (tx,<wbr/> ty),<wbr/>
   17820 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
   17821 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
   17822 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
   17823 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
   17824 <li>Scale the width and height of requested cropRegion with scaling factor of
   17825 sensor<wbr/>Crop.<wbr/>width/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>width and sensor<wbr/>Crop.<wbr/>height/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>height
   17826 respectively.<wbr/>
   17827 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
   17828 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
   17829 follow the general cropping rule for this new cropRegion and effective active
   17830 array size.<wbr/></li>
   17831 </ol>
   17832 </li>
   17833 <li>
   17834 <p>The HAL must report the cropRegion with regard to <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>
   17835 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
   17836 The reported cropRegion may be slightly different with the requested cropRegion since
   17837 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
   17838 hardware limitations.<wbr/></p>
   17839 </li>
   17840 </ul>
   17841 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
   17842             </td>
   17843           </tr>
   17844 
   17845           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   17846            <!-- end of entry -->
   17847         
   17848         
   17849 
   17850       <!-- end of kind -->
   17851       </tbody>
   17852 
   17853   <!-- end of section -->
   17854   <tr><td colspan="6" id="section_sensor" class="section">sensor</td></tr>
   17855 
   17856 
   17857       <tr><td colspan="6" class="kind">controls</td></tr>
   17858 
   17859       <thead class="entries_header">
   17860         <tr>
   17861           <th class="th_name">Property Name</th>
   17862           <th class="th_type">Type</th>
   17863           <th class="th_description">Description</th>
   17864           <th class="th_units">Units</th>
   17865           <th class="th_range">Range</th>
   17866           <th class="th_tags">Tags</th>
   17867         </tr>
   17868       </thead>
   17869 
   17870       <tbody>
   17871 
   17872         
   17873 
   17874         
   17875 
   17876         
   17877 
   17878         
   17879 
   17880                 
   17881           <tr class="entry" id="controls_android.sensor.exposureTime">
   17882             <td class="entry_name
   17883              " rowspan="3">
   17884               android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
   17885             </td>
   17886             <td class="entry_type">
   17887                 <span class="entry_type_name">int64</span>
   17888 
   17889               <span class="entry_type_visibility"> [public]</span>
   17890 
   17891 
   17892               <span class="entry_type_hwlevel">[full] </span>
   17893 
   17894 
   17895 
   17896 
   17897             </td> <!-- entry_type -->
   17898 
   17899             <td class="entry_description">
   17900               <p>Duration each pixel is exposed to
   17901 light.<wbr/></p>
   17902             </td>
   17903 
   17904             <td class="entry_units">
   17905               Nanoseconds
   17906             </td>
   17907 
   17908             <td class="entry_range">
   17909               <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
   17910             </td>
   17911 
   17912             <td class="entry_tags">
   17913               <ul class="entry_tags">
   17914                   <li><a href="#tag_V1">V1</a></li>
   17915               </ul>
   17916             </td>
   17917 
   17918           </tr>
   17919           <tr class="entries_header">
   17920             <th class="th_details" colspan="5">Details</th>
   17921           </tr>
   17922           <tr class="entry_cont">
   17923             <td class="entry_details" colspan="5">
   17924               <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
   17925 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
   17926 The final exposure time used will be available in the output capture result.<wbr/></p>
   17927 <p>This control is only effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is set to
   17928 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
   17929             </td>
   17930           </tr>
   17931 
   17932 
   17933           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   17934            <!-- end of entry -->
   17935         
   17936                 
   17937           <tr class="entry" id="controls_android.sensor.frameDuration">
   17938             <td class="entry_name
   17939              " rowspan="5">
   17940               android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
   17941             </td>
   17942             <td class="entry_type">
   17943                 <span class="entry_type_name">int64</span>
   17944 
   17945               <span class="entry_type_visibility"> [public]</span>
   17946 
   17947 
   17948               <span class="entry_type_hwlevel">[full] </span>
   17949 
   17950 
   17951 
   17952 
   17953             </td> <!-- entry_type -->
   17954 
   17955             <td class="entry_description">
   17956               <p>Duration from start of frame exposure to
   17957 start of next frame exposure.<wbr/></p>
   17958             </td>
   17959 
   17960             <td class="entry_units">
   17961               Nanoseconds
   17962             </td>
   17963 
   17964             <td class="entry_range">
   17965               <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/>
   17966 <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration
   17967 is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
   17968             </td>
   17969 
   17970             <td class="entry_tags">
   17971               <ul class="entry_tags">
   17972                   <li><a href="#tag_V1">V1</a></li>
   17973               </ul>
   17974             </td>
   17975 
   17976           </tr>
   17977           <tr class="entries_header">
   17978             <th class="th_details" colspan="5">Details</th>
   17979           </tr>
   17980           <tr class="entry_cont">
   17981             <td class="entry_details" colspan="5">
   17982               <p>The maximum frame rate that can be supported by a camera subsystem is
   17983 a function of many factors:</p>
   17984 <ul>
   17985 <li>Requested resolutions of output image streams</li>
   17986 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
   17987 <li>The bandwidth of the imager interface</li>
   17988 <li>The bandwidth of the various ISP processing blocks</li>
   17989 </ul>
   17990 <p>Since these factors can vary greatly between different ISPs and
   17991 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
   17992 restrictions with as simple a model as possible.<wbr/></p>
   17993 <p>The model presented has the following characteristics:</p>
   17994 <ul>
   17995 <li>The image sensor is always configured to output the smallest
   17996 resolution possible given the application's requested output stream
   17997 sizes.<wbr/>  The smallest resolution is defined as being at least as large
   17998 as the largest requested output stream size; the camera pipeline must
   17999 never digitally upsample sensor data when the crop region covers the
   18000 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
   18001 resolutions are configured,<wbr/> the sensor can provide a higher frame
   18002 rate.<wbr/></li>
   18003 <li>Since any request may use any or all the currently configured
   18004 output streams,<wbr/> the sensor and ISP must be configured to support
   18005 scaling a single capture to all the streams at the same time.<wbr/>  This
   18006 means the camera pipeline must be ready to produce the largest
   18007 requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
   18008 frame rate of a given configured stream set is governed only by the
   18009 largest requested stream resolution.<wbr/></li>
   18010 <li>Using more than one output stream in a request does not affect the
   18011 frame duration.<wbr/></li>
   18012 <li>Certain format-streams may need to do additional background processing
   18013 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
   18014 can run concurrently to the rest of the camera pipeline,<wbr/> but
   18015 cannot process more than 1 capture at a time.<wbr/></li>
   18016 </ul>
   18017 <p>The necessary information for the application,<wbr/> given the model above,<wbr/>
   18018 is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field using
   18019 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
   18020 These are used to determine the maximum frame rate /<wbr/> minimum frame
   18021 duration that is possible for a given stream configuration.<wbr/></p>
   18022 <p>Specifically,<wbr/> the application can use the following rules to
   18023 determine the minimum frame duration it can request from the camera
   18024 device:</p>
   18025 <ol>
   18026 <li>Let the set of currently configured input/<wbr/>output streams
   18027 be called <code>S</code>.<wbr/></li>
   18028 <li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking
   18029 it up in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> using <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
   18030 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be
   18031 called <code>F</code>.<wbr/></li>
   18032 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed
   18033 for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams
   18034 used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
   18035 </ol>
   18036 <p>If none of the streams in <code>S_<wbr/>r</code> have a stall time (listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>
   18037 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code>
   18038 determines the steady state frame rate that the application will get
   18039 if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind of
   18040 request be called <code>Rsimple</code>.<wbr/></p>
   18041 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved
   18042 by a single capture of a new request <code>Rstall</code> (which has at least
   18043 one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the
   18044 same minimum frame duration this will not cause a frame rate loss
   18045 if all buffers from the previous <code>Rstall</code> have already been
   18046 delivered.<wbr/></p>
   18047 <p>For more details about stalling,<wbr/> see
   18048 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p>
   18049 <p>This control is only effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is set to
   18050 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
   18051             </td>
   18052           </tr>
   18053 
   18054           <tr class="entries_header">
   18055             <th class="th_details" colspan="5">HAL Implementation Details</th>
   18056           </tr>
   18057           <tr class="entry_cont">
   18058             <td class="entry_details" colspan="5">
   18059               <p>For more details about stalling,<wbr/> see
   18060 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
   18061             </td>
   18062           </tr>
   18063 
   18064           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   18065            <!-- end of entry -->
   18066         
   18067                 
   18068           <tr class="entry" id="controls_android.sensor.sensitivity">
   18069             <td class="entry_name
   18070              " rowspan="5">
   18071               android.<wbr/>sensor.<wbr/>sensitivity
   18072             </td>
   18073             <td class="entry_type">
   18074                 <span class="entry_type_name">int32</span>
   18075 
   18076               <span class="entry_type_visibility"> [public]</span>
   18077 
   18078 
   18079               <span class="entry_type_hwlevel">[full] </span>
   18080 
   18081 
   18082 
   18083 
   18084             </td> <!-- entry_type -->
   18085 
   18086             <td class="entry_description">
   18087               <p>The amount of gain applied to sensor data
   18088 before processing.<wbr/></p>
   18089             </td>
   18090 
   18091             <td class="entry_units">
   18092               ISO arithmetic units
   18093             </td>
   18094 
   18095             <td class="entry_range">
   18096               <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
   18097             </td>
   18098 
   18099             <td class="entry_tags">
   18100               <ul class="entry_tags">
   18101                   <li><a href="#tag_V1">V1</a></li>
   18102               </ul>
   18103             </td>
   18104 
   18105           </tr>
   18106           <tr class="entries_header">
   18107             <th class="th_details" colspan="5">Details</th>
   18108           </tr>
   18109           <tr class="entry_cont">
   18110             <td class="entry_details" colspan="5">
   18111               <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
   18112 as defined in ISO 12232:2006.<wbr/></p>
   18113 <p>The sensitivity must be within <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a>,<wbr/> and
   18114 if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device
   18115 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
   18116 <p>If the camera device cannot apply the exact sensitivity
   18117 requested,<wbr/> it will reduce the gain to the nearest supported
   18118 value.<wbr/> The final sensitivity used will be available in the
   18119 output capture result.<wbr/></p>
   18120             </td>
   18121           </tr>
   18122 
   18123           <tr class="entries_header">
   18124             <th class="th_details" colspan="5">HAL Implementation Details</th>
   18125           </tr>
   18126           <tr class="entry_cont">
   18127             <td class="entry_details" colspan="5">
   18128               <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
   18129             </td>
   18130           </tr>
   18131 
   18132           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   18133            <!-- end of entry -->
   18134         
   18135                 
   18136           <tr class="entry" id="controls_android.sensor.testPatternData">
   18137             <td class="entry_name
   18138              " rowspan="5">
   18139               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
   18140             </td>
   18141             <td class="entry_type">
   18142                 <span class="entry_type_name">int32</span>
   18143                 <span class="entry_type_container">x</span>
   18144 
   18145                 <span class="entry_type_array">
   18146                   4
   18147                 </span>
   18148               <span class="entry_type_visibility"> [public]</span>
   18149 
   18150 
   18151 
   18152 
   18153 
   18154 
   18155             </td> <!-- entry_type -->
   18156 
   18157             <td class="entry_description">
   18158               <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
   18159 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
   18160             </td>
   18161 
   18162             <td class="entry_units">
   18163             </td>
   18164 
   18165             <td class="entry_range">
   18166             </td>
   18167 
   18168             <td class="entry_tags">
   18169             </td>
   18170 
   18171           </tr>
   18172           <tr class="entries_header">
   18173             <th class="th_details" colspan="5">Details</th>
   18174           </tr>
   18175           <tr class="entry_cont">
   18176             <td class="entry_details" colspan="5">
   18177               <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
   18178 The camera device then uses the most significant X bits
   18179 that correspond to how many bits are in its Bayer raw sensor
   18180 output.<wbr/></p>
   18181 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
   18182 10 most significant bits from each color channel.<wbr/></p>
   18183             </td>
   18184           </tr>
   18185 
   18186           <tr class="entries_header">
   18187             <th class="th_details" colspan="5">HAL Implementation Details</th>
   18188           </tr>
   18189           <tr class="entry_cont">
   18190             <td class="entry_details" colspan="5">
   18191               
   18192             </td>
   18193           </tr>
   18194 
   18195           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   18196            <!-- end of entry -->
   18197         
   18198                 
   18199           <tr class="entry" id="controls_android.sensor.testPatternMode">
   18200             <td class="entry_name
   18201              " rowspan="5">
   18202               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
   18203             </td>
   18204             <td class="entry_type">
   18205                 <span class="entry_type_name entry_type_name_enum">int32</span>
   18206 
   18207               <span class="entry_type_visibility"> [public]</span>
   18208 
   18209 
   18210 
   18211 
   18212 
   18213                 <ul class="entry_type_enum">
   18214                   <li>
   18215                     <span class="entry_type_enum_name">OFF</span>
   18216                     <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
   18217 device returns captures from the image sensor.<wbr/></p>
   18218 <p>This is the default if the key is not set.<wbr/></p></span>
   18219                   </li>
   18220                   <li>
   18221                     <span class="entry_type_enum_name">SOLID_COLOR</span>
   18222                     <span class="entry_type_enum_notes"><p>Each pixel in <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> is replaced by its
   18223 respective color channel provided in
   18224 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
   18225 <p>For example:</p>
   18226 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
   18227 </code></pre>
   18228 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
   18229 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
   18230 </code></pre>
   18231 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
   18232 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
   18233                   </li>
   18234                   <li>
   18235                     <span class="entry_type_enum_name">COLOR_BARS</span>
   18236                     <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
   18237 <p>The vertical bars (left-to-right) are as follows:</p>
   18238 <ul>
   18239 <li>100% white</li>
   18240 <li>yellow</li>
   18241 <li>cyan</li>
   18242 <li>green</li>
   18243 <li>magenta</li>
   18244 <li>red</li>
   18245 <li>blue</li>
   18246 <li>black</li>
   18247 </ul>
   18248 <p>In general the image would look like the following:</p>
   18249 <pre><code>W Y C G M R B K
   18250 W Y C G M R B K
   18251 W Y C G M R B K
   18252 W Y C G M R B K
   18253 W Y C G M R B K
   18254 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
   18255 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
   18256 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
   18257 
   18258 (B = Blue,<wbr/> K = Black)
   18259 </code></pre>
   18260 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
   18261 When this is not possible,<wbr/> the bar size should be rounded
   18262 down to the nearest integer and the pattern can repeat
   18263 on the right side.<wbr/></p>
   18264 <p>Each bar's height must always take up the full sensor
   18265 pixel array height.<wbr/></p>
   18266 <p>Each pixel in this test pattern must be set to either
   18267 0% intensity or 100% intensity.<wbr/></p></span>
   18268                   </li>
   18269                   <li>
   18270                     <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span>
   18271                     <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
   18272 each bar should start at its specified color at the top,<wbr/>
   18273 and fade to gray at the bottom.<wbr/></p>
   18274 <p>Furthermore each bar is further subdivided into a left and
   18275 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
   18276 and the right half should have a quantized gradient.<wbr/></p>
   18277 <p>In particular,<wbr/> the right half's should consist of blocks of the
   18278 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
   18279 <p>The least significant bits in the quantized gradient should
   18280 be copied from the most significant bits of the smooth gradient.<wbr/></p>
   18281 <p>The height of each bar should always be a multiple of 128.<wbr/>
   18282 When this is not the case,<wbr/> the pattern should repeat at the bottom
   18283 of the image.<wbr/></p></span>
   18284                   </li>
   18285                   <li>
   18286                     <span class="entry_type_enum_name">PN9</span>
   18287                     <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
   18288 generated from a PN9 512-bit sequence (typically implemented
   18289 in hardware with a linear feedback shift register).<wbr/></p>
   18290 <p>The generator should be reset at the beginning of each frame,<wbr/>
   18291 and thus each subsequent raw frame with this test pattern should
   18292 be exactly the same as the last.<wbr/></p></span>
   18293                   </li>
   18294                   <li>
   18295                     <span class="entry_type_enum_name">CUSTOM1</span>
   18296                     <span class="entry_type_enum_value">256</span>
   18297                     <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
   18298 available only on this camera device are at least this numeric
   18299 value.<wbr/></p>
   18300 <p>All of the custom test patterns will be static
   18301 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
   18302                   </li>
   18303                 </ul>
   18304 
   18305             </td> <!-- entry_type -->
   18306 
   18307             <td class="entry_description">
   18308               <p>When enabled,<wbr/> the sensor sends a test pattern instead of
   18309 doing a real exposure from the camera.<wbr/></p>
   18310             </td>
   18311 
   18312             <td class="entry_units">
   18313             </td>
   18314 
   18315             <td class="entry_range">
   18316               <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
   18317             </td>
   18318 
   18319             <td class="entry_tags">
   18320             </td>
   18321 
   18322           </tr>
   18323           <tr class="entries_header">
   18324             <th class="th_details" colspan="5">Details</th>
   18325           </tr>
   18326           <tr class="entry_cont">
   18327             <td class="entry_details" colspan="5">
   18328               <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
   18329 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
   18330 work as normal.<wbr/></p>
   18331 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
   18332 occur (and that the test pattern remain unmodified,<wbr/> since the flash
   18333 would not actually affect it).<wbr/></p>
   18334 <p>Defaults to OFF.<wbr/></p>
   18335             </td>
   18336           </tr>
   18337 
   18338           <tr class="entries_header">
   18339             <th class="th_details" colspan="5">HAL Implementation Details</th>
   18340           </tr>
   18341           <tr class="entry_cont">
   18342             <td class="entry_details" colspan="5">
   18343               <p>All test patterns are specified in the Bayer domain.<wbr/></p>
   18344 <p>The HAL may choose to substitute test patterns from the sensor
   18345 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
   18346 indistinguishable to the ISP whether the data came from the
   18347 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
   18348             </td>
   18349           </tr>
   18350 
   18351           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   18352            <!-- end of entry -->
   18353         
   18354         
   18355 
   18356       <!-- end of kind -->
   18357       </tbody>
   18358       <tr><td colspan="6" class="kind">static</td></tr>
   18359 
   18360       <thead class="entries_header">
   18361         <tr>
   18362           <th class="th_name">Property Name</th>
   18363           <th class="th_type">Type</th>
   18364           <th class="th_description">Description</th>
   18365           <th class="th_units">Units</th>
   18366           <th class="th_range">Range</th>
   18367           <th class="th_tags">Tags</th>
   18368         </tr>
   18369       </thead>
   18370 
   18371       <tbody>
   18372 
   18373         
   18374 
   18375         
   18376 
   18377         
   18378 
   18379         
   18380                 
   18381             
   18382 
   18383                 
   18384           <tr class="entry" id="static_android.sensor.info.activeArraySize">
   18385             <td class="entry_name
   18386              " rowspan="5">
   18387               android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
   18388             </td>
   18389             <td class="entry_type">
   18390                 <span class="entry_type_name">int32</span>
   18391                 <span class="entry_type_container">x</span>
   18392 
   18393                 <span class="entry_type_array">
   18394                   4
   18395                 </span>
   18396               <span class="entry_type_visibility"> [public as rectangle]</span>
   18397 
   18398 
   18399               <span class="entry_type_hwlevel">[legacy] </span>
   18400 
   18401 
   18402                 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
   18403 
   18404 
   18405             </td> <!-- entry_type -->
   18406 
   18407             <td class="entry_description">
   18408               <p>The area of the image sensor which corresponds to active pixels after any geometric
   18409 distortion correction has been applied.<wbr/></p>
   18410             </td>
   18411 
   18412             <td class="entry_units">
   18413               Pixel coordinates on the image sensor
   18414             </td>
   18415 
   18416             <td class="entry_range">
   18417             </td>
   18418 
   18419             <td class="entry_tags">
   18420               <ul class="entry_tags">
   18421                   <li><a href="#tag_RAW">RAW</a></li>
   18422               </ul>
   18423             </td>
   18424 
   18425           </tr>
   18426           <tr class="entries_header">
   18427             <th class="th_details" colspan="5">Details</th>
   18428           </tr>
   18429           <tr class="entry_cont">
   18430             <td class="entry_details" colspan="5">
   18431               <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
   18432 the region that actually receives light from the scene) after any geometric correction
   18433 has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the
   18434 image output formats aside from the raw formats.<wbr/></p>
   18435 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
   18436 the full pixel array,<wbr/> and the size of the full pixel array is given by
   18437 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
   18438 <p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including
   18439 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>,<wbr/> is defined relative to the active array rectangle given in
   18440 this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p>
   18441 <p>The active array may be smaller than the full pixel array,<wbr/> since the full array may
   18442 include black calibration pixels or other inactive regions,<wbr/> and geometric correction
   18443 resulting in scaling or cropping may have been applied.<wbr/></p>
   18444             </td>
   18445           </tr>
   18446 
   18447           <tr class="entries_header">
   18448             <th class="th_details" colspan="5">HAL Implementation Details</th>
   18449           </tr>
   18450           <tr class="entry_cont">
   18451             <td class="entry_details" colspan="5">
   18452               <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
   18453 &gt;= <code>(0,<wbr/>0)</code>.<wbr/>
   18454 The <code>(width,<wbr/> height)</code> must be &lt;= <code><a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a></code>.<wbr/></p>
   18455             </td>
   18456           </tr>
   18457 
   18458           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   18459            <!-- end of entry -->
   18460         
   18461                 
   18462           <tr class="entry" id="static_android.sensor.info.sensitivityRange">
   18463             <td class="entry_name
   18464              " rowspan="3">
   18465               android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range
   18466             </td>
   18467             <td class="entry_type">
   18468                 <span class="entry_type_name">int32</span>
   18469                 <span class="entry_type_container">x</span>
   18470 
   18471                 <span class="entry_type_array">
   18472                   2
   18473                 </span>
   18474               <span class="entry_type_visibility"> [public as rangeInt]</span>
   18475 
   18476 
   18477               <span class="entry_type_hwlevel">[full] </span>
   18478 
   18479 
   18480                 <div class="entry_type_notes">Range of supported sensitivities</div>
   18481 
   18482 
   18483             </td> <!-- entry_type -->
   18484 
   18485             <td class="entry_description">
   18486               <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this
   18487 camera device.<wbr/></p>
   18488             </td>
   18489 
   18490             <td class="entry_units">
   18491             </td>
   18492 
   18493             <td class="entry_range">
   18494               <p>Min &lt;= 100,<wbr/> Max &gt;= 800</p>
   18495             </td>
   18496 
   18497             <td class="entry_tags">
   18498               <ul class="entry_tags">
   18499                   <li><a href="#tag_BC">BC</a></li>
   18500                   <li><a href="#tag_V1">V1</a></li>
   18501               </ul>
   18502             </td>
   18503 
   18504           </tr>
   18505           <tr class="entries_header">
   18506             <th class="th_details" colspan="5">Details</th>
   18507           </tr>
   18508           <tr class="entry_cont">
   18509             <td class="entry_details" colspan="5">
   18510               <p>The values are the standard ISO sensitivity values,<wbr/>
   18511 as defined in ISO 12232:2006.<wbr/></p>
   18512             </td>
   18513           </tr>
   18514 
   18515 
   18516           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   18517            <!-- end of entry -->
   18518         
   18519                 
   18520           <tr class="entry" id="static_android.sensor.info.colorFilterArrangement">
   18521             <td class="entry_name
   18522              " rowspan="1">
   18523               android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement
   18524             </td>
   18525             <td class="entry_type">
   18526                 <span class="entry_type_name entry_type_name_enum">byte</span>
   18527 
   18528               <span class="entry_type_visibility"> [public]</span>
   18529 
   18530 
   18531               <span class="entry_type_hwlevel">[full] </span>
   18532 
   18533 
   18534 
   18535                 <ul class="entry_type_enum">
   18536                   <li>
   18537                     <span class="entry_type_enum_name">RGGB</span>
   18538                   </li>
   18539                   <li>
   18540                     <span class="entry_type_enum_name">GRBG</span>
   18541                   </li>
   18542                   <li>
   18543                     <span class="entry_type_enum_name">GBRG</span>
   18544                   </li>
   18545                   <li>
   18546                     <span class="entry_type_enum_name">BGGR</span>
   18547                   </li>
   18548                   <li>
   18549                     <span class="entry_type_enum_name">RGB</span>
   18550                     <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit
   18551 values for each pixel,<wbr/> instead of just 1 16-bit value
   18552 per pixel.<wbr/></p></span>
   18553                   </li>
   18554                 </ul>
   18555 
   18556             </td> <!-- entry_type -->
   18557 
   18558             <td class="entry_description">
   18559               <p>The arrangement of color filters on sensor;
   18560 represents the colors in the top-left 2x2 section of
   18561 the sensor,<wbr/> in reading order.<wbr/></p>
   18562             </td>
   18563 
   18564             <td class="entry_units">
   18565             </td>
   18566 
   18567             <td class="entry_range">
   18568             </td>
   18569 
   18570             <td class="entry_tags">
   18571               <ul class="entry_tags">
   18572                   <li><a href="#tag_RAW">RAW</a></li>
   18573               </ul>
   18574             </td>
   18575 
   18576           </tr>
   18577 
   18578 
   18579           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   18580            <!-- end of entry -->
   18581         
   18582                 
   18583           <tr class="entry" id="static_android.sensor.info.exposureTimeRange">
   18584             <td class="entry_name
   18585              " rowspan="3">
   18586               android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range
   18587             </td>
   18588             <td class="entry_type">
   18589                 <span class="entry_type_name">int64</span>
   18590                 <span class="entry_type_container">x</span>
   18591 
   18592                 <span class="entry_type_array">
   18593                   2
   18594                 </span>
   18595               <span class="entry_type_visibility"> [public as rangeLong]</span>
   18596 
   18597 
   18598               <span class="entry_type_hwlevel">[full] </span>
   18599 
   18600 
   18601                 <div class="entry_type_notes">nanoseconds</div>
   18602 
   18603 
   18604             </td> <!-- entry_type -->
   18605 
   18606             <td class="entry_description">
   18607               <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported
   18608 by this camera device.<wbr/></p>
   18609             </td>
   18610 
   18611             <td class="entry_units">
   18612               Nanoseconds
   18613             </td>
   18614 
   18615             <td class="entry_range">
   18616               <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL
   18617 capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
   18618 the maximum exposure time will be greater than 100ms.<wbr/></p>
   18619             </td>
   18620 
   18621             <td class="entry_tags">
   18622               <ul class="entry_tags">
   18623                   <li><a href="#tag_V1">V1</a></li>
   18624               </ul>
   18625             </td>
   18626 
   18627           </tr>
   18628 
   18629           <tr class="entries_header">
   18630             <th class="th_details" colspan="5">HAL Implementation Details</th>
   18631           </tr>
   18632           <tr class="entry_cont">
   18633             <td class="entry_details" colspan="5">
   18634               <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
   18635 The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least
   18636 100ms.<wbr/></p>
   18637             </td>
   18638           </tr>
   18639 
   18640           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   18641            <!-- end of entry -->
   18642         
   18643                 
   18644           <tr class="entry" id="static_android.sensor.info.maxFrameDuration">
   18645             <td class="entry_name
   18646              " rowspan="5">
   18647               android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration
   18648             </td>
   18649             <td class="entry_type">
   18650                 <span class="entry_type_name">int64</span>
   18651 
   18652               <span class="entry_type_visibility"> [public]</span>
   18653 
   18654 
   18655               <span class="entry_type_hwlevel">[full] </span>
   18656 
   18657 
   18658 
   18659 
   18660             </td> <!-- entry_type -->
   18661 
   18662             <td class="entry_description">
   18663               <p>The maximum possible frame duration (minimum frame rate) for
   18664 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p>
   18665             </td>
   18666 
   18667             <td class="entry_units">
   18668               Nanoseconds
   18669             </td>
   18670 
   18671             <td class="entry_range">
   18672               <p>For FULL capability devices
   18673 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p>
   18674             </td>
   18675 
   18676             <td class="entry_tags">
   18677               <ul class="entry_tags">
   18678                   <li><a href="#tag_V1">V1</a></li>
   18679               </ul>
   18680             </td>
   18681 
   18682           </tr>
   18683           <tr class="entries_header">
   18684             <th class="th_details" colspan="5">Details</th>
   18685           </tr>
   18686           <tr class="entry_cont">
   18687             <td class="entry_details" colspan="5">
   18688               <p>Attempting to use frame durations beyond the maximum will result in the frame
   18689 duration being clipped to the maximum.<wbr/> See that control for a full definition of frame
   18690 durations.<wbr/></p>
   18691 <p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
   18692 for the minimum frame duration values.<wbr/></p>
   18693             </td>
   18694           </tr>
   18695 
   18696           <tr class="entries_header">
   18697             <th class="th_details" colspan="5">HAL Implementation Details</th>
   18698           </tr>
   18699           <tr class="entry_cont">
   18700             <td class="entry_details" colspan="5">
   18701               <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
   18702 The maximum of the range SHOULD be at least
   18703 1 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p>
   18704 <p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or
   18705 equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max
   18706 value (since exposure time overrides frame duration).<wbr/></p>
   18707 <p>Available minimum frame durations for JPEG must be no greater
   18708 than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED
   18709 minimum frame durations (for that respective size).<wbr/></p>
   18710 <p>Since JPEG processing is considered offline and can take longer than
   18711 a single uncompressed capture,<wbr/> refer to
   18712 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>
   18713 for details about encoding this scenario.<wbr/></p>
   18714             </td>
   18715           </tr>
   18716 
   18717           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   18718            <!-- end of entry -->
   18719         
   18720                 
   18721           <tr class="entry" id="static_android.sensor.info.physicalSize">
   18722             <td class="entry_name
   18723              " rowspan="5">
   18724               android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size
   18725             </td>
   18726             <td class="entry_type">
   18727                 <span class="entry_type_name">float</span>
   18728                 <span class="entry_type_container">x</span>
   18729 
   18730                 <span class="entry_type_array">
   18731                   2
   18732                 </span>
   18733               <span class="entry_type_visibility"> [public as sizeF]</span>
   18734 
   18735 
   18736               <span class="entry_type_hwlevel">[legacy] </span>
   18737 
   18738 
   18739                 <div class="entry_type_notes">width x height</div>
   18740 
   18741 
   18742             </td> <!-- entry_type -->
   18743 
   18744             <td class="entry_description">
   18745               <p>The physical dimensions of the full pixel
   18746 array.<wbr/></p>
   18747             </td>
   18748 
   18749             <td class="entry_units">
   18750               Millimeters
   18751             </td>
   18752 
   18753             <td class="entry_range">
   18754             </td>
   18755 
   18756             <td class="entry_tags">
   18757               <ul class="entry_tags">
   18758                   <li><a href="#tag_V1">V1</a></li>
   18759                   <li><a href="#tag_BC">BC</a></li>
   18760               </ul>
   18761             </td>
   18762 
   18763           </tr>
   18764           <tr class="entries_header">
   18765             <th class="th_details" colspan="5">Details</th>
   18766           </tr>
   18767           <tr class="entry_cont">
   18768             <td class="entry_details" colspan="5">
   18769               <p>This is the physical size of the sensor pixel
   18770 array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
   18771             </td>
   18772           </tr>
   18773 
   18774           <tr class="entries_header">
   18775             <th class="th_details" colspan="5">HAL Implementation Details</th>
   18776           </tr>
   18777           <tr class="entry_cont">
   18778             <td class="entry_details" colspan="5">
   18779               <p>Needed for FOV calculation for old API</p>
   18780             </td>
   18781           </tr>
   18782 
   18783           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   18784            <!-- end of entry -->
   18785         
   18786                 
   18787           <tr class="entry" id="static_android.sensor.info.pixelArraySize">
   18788             <td class="entry_name
   18789              " rowspan="3">
   18790               android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size
   18791             </td>
   18792             <td class="entry_type">
   18793                 <span class="entry_type_name">int32</span>
   18794                 <span class="entry_type_container">x</span>
   18795 
   18796                 <span class="entry_type_array">
   18797                   2
   18798                 </span>
   18799               <span class="entry_type_visibility"> [public as size]</span>
   18800 
   18801 
   18802               <span class="entry_type_hwlevel">[legacy] </span>
   18803 
   18804 
   18805 
   18806 
   18807             </td> <!-- entry_type -->
   18808 
   18809             <td class="entry_description">
   18810               <p>Dimensions of the full pixel array,<wbr/> possibly
   18811 including black calibration pixels.<wbr/></p>
   18812             </td>
   18813 
   18814             <td class="entry_units">
   18815               Pixels
   18816             </td>
   18817 
   18818             <td class="entry_range">
   18819             </td>
   18820 
   18821             <td class="entry_tags">
   18822               <ul class="entry_tags">
   18823                   <li><a href="#tag_RAW">RAW</a></li>
   18824                   <li><a href="#tag_BC">BC</a></li>
   18825               </ul>
   18826             </td>
   18827 
   18828           </tr>
   18829           <tr class="entries_header">
   18830             <th class="th_details" colspan="5">Details</th>
   18831           </tr>
   18832           <tr class="entry_cont">
   18833             <td class="entry_details" colspan="5">
   18834               <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers
   18835 <a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a> area.<wbr/>  This represents the full pixel dimensions of
   18836 the raw buffers produced by this sensor.<wbr/></p>
   18837 <p>If a camera device supports raw sensor formats,<wbr/> either this or
   18838 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> is the maximum dimensions for the raw
   18839 output formats listed in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> (this depends on
   18840 whether or not the image sensor returns buffers containing pixels that are not
   18841 part of the active array region for blacklevel calibration or other purposes).<wbr/></p>
   18842 <p>Some parts of the full pixel array may not receive light from the scene,<wbr/>
   18843 or be otherwise inactive.<wbr/>  The <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> key
   18844 defines the rectangle of active pixels that will be included in processed image
   18845 formats.<wbr/></p>
   18846             </td>
   18847           </tr>
   18848 
   18849 
   18850           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   18851            <!-- end of entry -->
   18852         
   18853                 
   18854           <tr class="entry" id="static_android.sensor.info.whiteLevel">
   18855             <td class="entry_name
   18856              " rowspan="5">
   18857               android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level
   18858             </td>
   18859             <td class="entry_type">
   18860                 <span class="entry_type_name">int32</span>
   18861 
   18862               <span class="entry_type_visibility"> [public]</span>
   18863 
   18864 
   18865 
   18866 
   18867 
   18868 
   18869             </td> <!-- entry_type -->
   18870 
   18871             <td class="entry_description">
   18872               <p>Maximum raw value output by sensor.<wbr/></p>
   18873             </td>
   18874 
   18875             <td class="entry_units">
   18876             </td>
   18877 
   18878             <td class="entry_range">
   18879               <p>&gt; 255 (8-bit output)</p>
   18880             </td>
   18881 
   18882             <td class="entry_tags">
   18883               <ul class="entry_tags">
   18884                   <li><a href="#tag_RAW">RAW</a></li>
   18885               </ul>
   18886             </td>
   18887 
   18888           </tr>
   18889           <tr class="entries_header">
   18890             <th class="th_details" colspan="5">Details</th>
   18891           </tr>
   18892           <tr class="entry_cont">
   18893             <td class="entry_details" colspan="5">
   18894               <p>This specifies the fully-saturated encoding level for the raw
   18895 sample values from the sensor.<wbr/>  This is typically caused by the
   18896 sensor becoming highly non-linear or clipping.<wbr/> The minimum for
   18897 each channel is specified by the offset in the
   18898 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p>
   18899 <p>The white level is typically determined either by sensor bit depth
   18900 (8-14 bits is expected),<wbr/> or by the point where the sensor response
   18901 becomes too non-linear to be useful.<wbr/>  The default value for this is
   18902 maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p>
   18903             </td>
   18904           </tr>
   18905 
   18906           <tr class="entries_header">
   18907             <th class="th_details" colspan="5">HAL Implementation Details</th>
   18908           </tr>
   18909           <tr class="entry_cont">
   18910             <td class="entry_details" colspan="5">
   18911               <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
   18912 so the value for linear sensors should not be significantly lower
   18913 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
   18914             </td>
   18915           </tr>
   18916 
   18917           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   18918            <!-- end of entry -->
   18919         
   18920                 
   18921           <tr class="entry" id="static_android.sensor.info.timestampSource">
   18922             <td class="entry_name
   18923              " rowspan="3">
   18924               android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source
   18925             </td>
   18926             <td class="entry_type">
   18927                 <span class="entry_type_name entry_type_name_enum">byte</span>
   18928 
   18929               <span class="entry_type_visibility"> [public]</span>
   18930 
   18931 
   18932               <span class="entry_type_hwlevel">[legacy] </span>
   18933 
   18934 
   18935 
   18936                 <ul class="entry_type_enum">
   18937                   <li>
   18938                     <span class="entry_type_enum_name">UNKNOWN</span>
   18939                     <span class="entry_type_enum_notes"><p>Timestamps from <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> are in nanoseconds and monotonic,<wbr/>
   18940 but can not be compared to timestamps from other subsystems
   18941 (e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different
   18942 camera devices in the same system.<wbr/> Timestamps between streams and results for
   18943 a single camera instance are comparable,<wbr/> and the timestamps for all buffers
   18944 and the result metadata generated by a single capture are identical.<wbr/></p></span>
   18945                   </li>
   18946                   <li>
   18947                     <span class="entry_type_enum_name">REALTIME</span>
   18948                     <span class="entry_type_enum_notes"><p>Timestamps from <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> are in the same timebase as
   18949 <a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/>
   18950 and they can be compared to other timestamps using that base.<wbr/></p></span>
   18951                   </li>
   18952                 </ul>
   18953 
   18954             </td> <!-- entry_type -->
   18955 
   18956             <td class="entry_description">
   18957               <p>The time base source for sensor capture start timestamps.<wbr/></p>
   18958             </td>
   18959 
   18960             <td class="entry_units">
   18961             </td>
   18962 
   18963             <td class="entry_range">
   18964             </td>
   18965 
   18966             <td class="entry_tags">
   18967               <ul class="entry_tags">
   18968                   <li><a href="#tag_V1">V1</a></li>
   18969               </ul>
   18970             </td>
   18971 
   18972           </tr>
   18973           <tr class="entries_header">
   18974             <th class="th_details" colspan="5">Details</th>
   18975           </tr>
   18976           <tr class="entry_cont">
   18977             <td class="entry_details" colspan="5">
   18978               <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but
   18979 may not based on a time source that can be compared to other system time sources.<wbr/></p>
   18980 <p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they
   18981 can be compared against other system time sources/<wbr/>timestamps.<wbr/></p>
   18982             </td>
   18983           </tr>
   18984 
   18985 
   18986           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   18987            <!-- end of entry -->
   18988         
   18989                 
   18990           <tr class="entry" id="static_android.sensor.info.lensShadingApplied">
   18991             <td class="entry_name
   18992              " rowspan="3">
   18993               android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied
   18994             </td>
   18995             <td class="entry_type">
   18996                 <span class="entry_type_name entry_type_name_enum">byte</span>
   18997 
   18998               <span class="entry_type_visibility"> [public as boolean]</span>
   18999 
   19000 
   19001 
   19002 
   19003 
   19004                 <ul class="entry_type_enum">
   19005                   <li>
   19006                     <span class="entry_type_enum_name">FALSE</span>
   19007                   </li>
   19008                   <li>
   19009                     <span class="entry_type_enum_name">TRUE</span>
   19010                   </li>
   19011                 </ul>
   19012 
   19013             </td> <!-- entry_type -->
   19014 
   19015             <td class="entry_description">
   19016               <p>Whether the RAW images output from this camera device are subject to
   19017 lens shading correction.<wbr/></p>
   19018             </td>
   19019 
   19020             <td class="entry_units">
   19021             </td>
   19022 
   19023             <td class="entry_range">
   19024             </td>
   19025 
   19026             <td class="entry_tags">
   19027             </td>
   19028 
   19029           </tr>
   19030           <tr class="entries_header">
   19031             <th class="th_details" colspan="5">Details</th>
   19032           </tr>
   19033           <tr class="entry_cont">
   19034             <td class="entry_details" colspan="5">
   19035               <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will
   19036 have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will
   19037 not be adjusted for lens shading correction.<wbr/>
   19038 See <a href="#static_android.request.maxNumOutputRaw">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw</a> for a list of RAW image formats.<wbr/></p>
   19039 <p>This key will be <code>null</code> for all devices do not report this information.<wbr/>
   19040 Devices with RAW capability will always report this information in this key.<wbr/></p>
   19041             </td>
   19042           </tr>
   19043 
   19044 
   19045           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   19046            <!-- end of entry -->
   19047         
   19048                 
   19049           <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize">
   19050             <td class="entry_name
   19051              " rowspan="5">
   19052               android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
   19053             </td>
   19054             <td class="entry_type">
   19055                 <span class="entry_type_name">int32</span>
   19056                 <span class="entry_type_container">x</span>
   19057 
   19058                 <span class="entry_type_array">
   19059                   4
   19060                 </span>
   19061               <span class="entry_type_visibility"> [public as rectangle]</span>
   19062 
   19063 
   19064               <span class="entry_type_hwlevel">[legacy] </span>
   19065 
   19066 
   19067                 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
   19068 
   19069 
   19070             </td> <!-- entry_type -->
   19071 
   19072             <td class="entry_description">
   19073               <p>The area of the image sensor which corresponds to active pixels prior to the
   19074 application of any geometric distortion correction.<wbr/></p>
   19075             </td>
   19076 
   19077             <td class="entry_units">
   19078               Pixel coordinates on the image sensor
   19079             </td>
   19080 
   19081             <td class="entry_range">
   19082             </td>
   19083 
   19084             <td class="entry_tags">
   19085               <ul class="entry_tags">
   19086                   <li><a href="#tag_RAW">RAW</a></li>
   19087               </ul>
   19088             </td>
   19089 
   19090           </tr>
   19091           <tr class="entries_header">
   19092             <th class="th_details" colspan="5">Details</th>
   19093           </tr>
   19094           <tr class="entry_cont">
   19095             <td class="entry_details" colspan="5">
   19096               <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
   19097 the region that actually receives light from the scene) before any geometric correction
   19098 has been applied,<wbr/> and should be treated as the active region rectangle for any of the
   19099 raw formats.<wbr/>  All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading
   19100 correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as
   19101 the origin,<wbr/> (0,<wbr/>0).<wbr/></p>
   19102 <p>The size of this region determines the maximum field of view and the maximum number of
   19103 pixels that an image from this sensor can contain,<wbr/> prior to the application of
   19104 geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a
   19105 post-distortion-corrected image is given by the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>
   19106 field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image
   19107 can be calculated by applying the geometric distortion correction fields to this
   19108 rectangle,<wbr/> and cropping to the rectangle given in <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
   19109 <p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the
   19110 dimensions in <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> given the position of a pixel,<wbr/>
   19111 (x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions give in
   19112 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p>
   19113 <ol>
   19114 <li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in
   19115 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> otherwise this pixel is considered
   19116 to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li>
   19117 <li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/>
   19118 (x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw
   19119 buffers is defined relative to the top,<wbr/> left of the
   19120 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> rectangle.<wbr/></li>
   19121 <li>If the resulting corrected pixel coordinate is within the region given in
   19122 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> then the position of this pixel in the
   19123 processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/>
   19124 when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li>
   19125 </ol>
   19126 <p>Thus,<wbr/> for pixel x',<wbr/>y' = (25,<wbr/> 25) on a sensor where <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>
   19127 is (100,<wbr/>100),<wbr/> <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> is (10,<wbr/> 10,<wbr/> 100,<wbr/> 100),<wbr/>
   19128 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> is (20,<wbr/> 20,<wbr/> 80,<wbr/> 80),<wbr/> and the geometric distortion
   19129 correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in
   19130 pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer
   19131 with dimensions given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>,<wbr/> and would be (5,<wbr/> 5)
   19132 relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in
   19133 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
   19134 <p>The currently supported fields that correct for geometric distortion are:</p>
   19135 <ol>
   19136 <li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>.<wbr/></li>
   19137 </ol>
   19138 <p>If all of the geometric distortion fields are no-ops,<wbr/> this rectangle will be the same
   19139 as the post-distortion-corrected rectangle given in
   19140 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
   19141 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
   19142 the full pixel array,<wbr/> and the size of the full pixel array is given by
   19143 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
   19144 <p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the
   19145 full array may include black calibration pixels or other inactive regions.<wbr/></p>
   19146             </td>
   19147           </tr>
   19148 
   19149           <tr class="entries_header">
   19150             <th class="th_details" colspan="5">HAL Implementation Details</th>
   19151           </tr>
   19152           <tr class="entry_cont">
   19153             <td class="entry_details" colspan="5">
   19154               <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
   19155 &gt;= <code>(0,<wbr/>0)</code>.<wbr/>
   19156 The <code>(width,<wbr/> height)</code> must be &lt;= <code><a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a></code>.<wbr/></p>
   19157 <p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is
   19158 the same as the post-correction active array region given in
   19159 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
   19160             </td>
   19161           </tr>
   19162 
   19163           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   19164            <!-- end of entry -->
   19165         
   19166         
   19167         
   19168 
   19169                 
   19170           <tr class="entry" id="static_android.sensor.referenceIlluminant1">
   19171             <td class="entry_name
   19172              " rowspan="5">
   19173               android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1
   19174             </td>
   19175             <td class="entry_type">
   19176                 <span class="entry_type_name entry_type_name_enum">byte</span>
   19177 
   19178               <span class="entry_type_visibility"> [public]</span>
   19179 
   19180 
   19181 
   19182 
   19183 
   19184                 <ul class="entry_type_enum">
   19185                   <li>
   19186                     <span class="entry_type_enum_name">DAYLIGHT</span>
   19187                     <span class="entry_type_enum_value">1</span>
   19188                   </li>
   19189                   <li>
   19190                     <span class="entry_type_enum_name">FLUORESCENT</span>
   19191                     <span class="entry_type_enum_value">2</span>
   19192                   </li>
   19193                   <li>
   19194                     <span class="entry_type_enum_name">TUNGSTEN</span>
   19195                     <span class="entry_type_enum_value">3</span>
   19196                     <span class="entry_type_enum_notes"><p>Incandescent light</p></span>
   19197                   </li>
   19198                   <li>
   19199                     <span class="entry_type_enum_name">FLASH</span>
   19200                     <span class="entry_type_enum_value">4</span>
   19201                   </li>
   19202                   <li>
   19203                     <span class="entry_type_enum_name">FINE_WEATHER</span>
   19204                     <span class="entry_type_enum_value">9</span>
   19205                   </li>
   19206                   <li>
   19207                     <span class="entry_type_enum_name">CLOUDY_WEATHER</span>
   19208                     <span class="entry_type_enum_value">10</span>
   19209                   </li>
   19210                   <li>
   19211                     <span class="entry_type_enum_name">SHADE</span>
   19212                     <span class="entry_type_enum_value">11</span>
   19213                   </li>
   19214                   <li>
   19215                     <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT</span>
   19216                     <span class="entry_type_enum_value">12</span>
   19217                     <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span>
   19218                   </li>
   19219                   <li>
   19220                     <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT</span>
   19221                     <span class="entry_type_enum_value">13</span>
   19222                     <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span>
   19223                   </li>
   19224                   <li>
   19225                     <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT</span>
   19226                     <span class="entry_type_enum_value">14</span>
   19227                     <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span>
   19228                   </li>
   19229                   <li>
   19230                     <span class="entry_type_enum_name">WHITE_FLUORESCENT</span>
   19231                     <span class="entry_type_enum_value">15</span>
   19232                     <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span>
   19233                   </li>
   19234                   <li>
   19235                     <span class="entry_type_enum_name">STANDARD_A</span>
   19236                     <span class="entry_type_enum_value">17</span>
   19237                   </li>
   19238                   <li>
   19239                     <span class="entry_type_enum_name">STANDARD_B</span>
   19240                     <span class="entry_type_enum_value">18</span>
   19241                   </li>
   19242                   <li>
   19243                     <span class="entry_type_enum_name">STANDARD_C</span>
   19244                     <span class="entry_type_enum_value">19</span>
   19245                   </li>
   19246                   <li>
   19247                     <span class="entry_type_enum_name">D55</span>
   19248                     <span class="entry_type_enum_value">20</span>
   19249                   </li>
   19250                   <li>
   19251                     <span class="entry_type_enum_name">D65</span>
   19252                     <span class="entry_type_enum_value">21</span>
   19253                   </li>
   19254                   <li>
   19255                     <span class="entry_type_enum_name">D75</span>
   19256                     <span class="entry_type_enum_value">22</span>
   19257                   </li>
   19258                   <li>
   19259                     <span class="entry_type_enum_name">D50</span>
   19260                     <span class="entry_type_enum_value">23</span>
   19261                   </li>
   19262                   <li>
   19263                     <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN</span>
   19264                     <span class="entry_type_enum_value">24</span>
   19265                   </li>
   19266                 </ul>
   19267 
   19268             </td> <!-- entry_type -->
   19269 
   19270             <td class="entry_description">
   19271               <p>The standard reference illuminant used as the scene light source when
   19272 calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
   19273 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
   19274 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p>
   19275             </td>
   19276 
   19277             <td class="entry_units">
   19278             </td>
   19279 
   19280             <td class="entry_range">
   19281             </td>
   19282 
   19283             <td class="entry_tags">
   19284               <ul class="entry_tags">
   19285                   <li><a href="#tag_RAW">RAW</a></li>
   19286               </ul>
   19287             </td>
   19288 
   19289           </tr>
   19290           <tr class="entries_header">
   19291             <th class="th_details" colspan="5">Details</th>
   19292           </tr>
   19293           <tr class="entry_cont">
   19294             <td class="entry_details" colspan="5">
   19295               <p>The values in this key correspond to the values defined for the
   19296 EXIF LightSource tag.<wbr/> These illuminants are standard light sources
   19297 that are often used calibrating camera devices.<wbr/></p>
   19298 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
   19299 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
   19300 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p>
   19301 <p>Some devices may choose to provide a second set of calibration
   19302 information for improved quality,<wbr/> including
   19303 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p>
   19304             </td>
   19305           </tr>
   19306 
   19307           <tr class="entries_header">
   19308             <th class="th_details" colspan="5">HAL Implementation Details</th>
   19309           </tr>
   19310           <tr class="entry_cont">
   19311             <td class="entry_details" colspan="5">
   19312               <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
   19313 and corresponding matrices must be present to support the RAW capability
   19314 and DNG output.<wbr/></p>
   19315 <p>When producing raw images with a color profile that has only been
   19316 calibrated against a single light source,<wbr/> it is valid to omit
   19317 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the
   19318 <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/> <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/>
   19319 and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
   19320 <p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be
   19321 chosen so that it is representative of typical scene lighting.<wbr/>  In
   19322 general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p>
   19323 <p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and
   19324 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be
   19325 chosen to represent the typical range of scene lighting conditions.<wbr/>
   19326 In general,<wbr/> low color temperature illuminant such as Standard-A will
   19327 be chosen for the first reference illuminant and a higher color
   19328 temperature illuminant such as D65 will be chosen for the second
   19329 reference illuminant.<wbr/></p>
   19330             </td>
   19331           </tr>
   19332 
   19333           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   19334            <!-- end of entry -->
   19335         
   19336                 
   19337           <tr class="entry" id="static_android.sensor.referenceIlluminant2">
   19338             <td class="entry_name
   19339              " rowspan="3">
   19340               android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2
   19341             </td>
   19342             <td class="entry_type">
   19343                 <span class="entry_type_name">byte</span>
   19344 
   19345               <span class="entry_type_visibility"> [public]</span>
   19346 
   19347 
   19348 
   19349 
   19350 
   19351 
   19352             </td> <!-- entry_type -->
   19353 
   19354             <td class="entry_description">
   19355               <p>The standard reference illuminant used as the scene light source when
   19356 calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
   19357 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
   19358 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
   19359             </td>
   19360 
   19361             <td class="entry_units">
   19362             </td>
   19363 
   19364             <td class="entry_range">
   19365               <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p>
   19366             </td>
   19367 
   19368             <td class="entry_tags">
   19369               <ul class="entry_tags">
   19370                   <li><a href="#tag_RAW">RAW</a></li>
   19371               </ul>
   19372             </td>
   19373 
   19374           </tr>
   19375           <tr class="entries_header">
   19376             <th class="th_details" colspan="5">Details</th>
   19377           </tr>
   19378           <tr class="entry_cont">
   19379             <td class="entry_details" colspan="5">
   19380               <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p>
   19381 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
   19382 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
   19383 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p>
   19384             </td>
   19385           </tr>
   19386 
   19387 
   19388           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   19389            <!-- end of entry -->
   19390         
   19391                 
   19392           <tr class="entry" id="static_android.sensor.calibrationTransform1">
   19393             <td class="entry_name
   19394              " rowspan="3">
   19395               android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1
   19396             </td>
   19397             <td class="entry_type">
   19398                 <span class="entry_type_name">rational</span>
   19399                 <span class="entry_type_container">x</span>
   19400 
   19401                 <span class="entry_type_array">
   19402                   3 x 3
   19403                 </span>
   19404               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
   19405 
   19406 
   19407 
   19408 
   19409                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
   19410 
   19411 
   19412             </td> <!-- entry_type -->
   19413 
   19414             <td class="entry_description">
   19415               <p>A per-device calibration transform matrix that maps from the
   19416 reference sensor colorspace to the actual device sensor colorspace.<wbr/></p>
   19417             </td>
   19418 
   19419             <td class="entry_units">
   19420             </td>
   19421 
   19422             <td class="entry_range">
   19423             </td>
   19424 
   19425             <td class="entry_tags">
   19426               <ul class="entry_tags">
   19427                   <li><a href="#tag_RAW">RAW</a></li>
   19428               </ul>
   19429             </td>
   19430 
   19431           </tr>
   19432           <tr class="entries_header">
   19433             <th class="th_details" colspan="5">Details</th>
   19434           </tr>
   19435           <tr class="entry_cont">
   19436             <td class="entry_details" colspan="5">
   19437               <p>This matrix is used to correct for per-device variations in the
   19438 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
   19439 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
   19440 contains a per-device calibration transform that maps colors
   19441 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
   19442 colorspace) into this camera device's native sensor color
   19443 space under the first reference illuminant
   19444 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
   19445             </td>
   19446           </tr>
   19447 
   19448 
   19449           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   19450            <!-- end of entry -->
   19451         
   19452                 
   19453           <tr class="entry" id="static_android.sensor.calibrationTransform2">
   19454             <td class="entry_name
   19455              " rowspan="3">
   19456               android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2
   19457             </td>
   19458             <td class="entry_type">
   19459                 <span class="entry_type_name">rational</span>
   19460                 <span class="entry_type_container">x</span>
   19461 
   19462                 <span class="entry_type_array">
   19463                   3 x 3
   19464                 </span>
   19465               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
   19466 
   19467 
   19468 
   19469 
   19470                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
   19471 
   19472 
   19473             </td> <!-- entry_type -->
   19474 
   19475             <td class="entry_description">
   19476               <p>A per-device calibration transform matrix that maps from the
   19477 reference sensor colorspace to the actual device sensor colorspace
   19478 (this is the colorspace of the raw buffer data).<wbr/></p>
   19479             </td>
   19480 
   19481             <td class="entry_units">
   19482             </td>
   19483 
   19484             <td class="entry_range">
   19485             </td>
   19486 
   19487             <td class="entry_tags">
   19488               <ul class="entry_tags">
   19489                   <li><a href="#tag_RAW">RAW</a></li>
   19490               </ul>
   19491             </td>
   19492 
   19493           </tr>
   19494           <tr class="entries_header">
   19495             <th class="th_details" colspan="5">Details</th>
   19496           </tr>
   19497           <tr class="entry_cont">
   19498             <td class="entry_details" colspan="5">
   19499               <p>This matrix is used to correct for per-device variations in the
   19500 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
   19501 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
   19502 contains a per-device calibration transform that maps colors
   19503 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
   19504 colorspace) into this camera device's native sensor color
   19505 space under the second reference illuminant
   19506 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
   19507 <p>This matrix will only be present if the second reference
   19508 illuminant is present.<wbr/></p>
   19509             </td>
   19510           </tr>
   19511 
   19512 
   19513           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   19514            <!-- end of entry -->
   19515         
   19516                 
   19517           <tr class="entry" id="static_android.sensor.colorTransform1">
   19518             <td class="entry_name
   19519              " rowspan="3">
   19520               android.<wbr/>sensor.<wbr/>color<wbr/>Transform1
   19521             </td>
   19522             <td class="entry_type">
   19523                 <span class="entry_type_name">rational</span>
   19524                 <span class="entry_type_container">x</span>
   19525 
   19526                 <span class="entry_type_array">
   19527                   3 x 3
   19528                 </span>
   19529               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
   19530 
   19531 
   19532 
   19533 
   19534                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
   19535 
   19536 
   19537             </td> <!-- entry_type -->
   19538 
   19539             <td class="entry_description">
   19540               <p>A matrix that transforms color values from CIE XYZ color space to
   19541 reference sensor color space.<wbr/></p>
   19542             </td>
   19543 
   19544             <td class="entry_units">
   19545             </td>
   19546 
   19547             <td class="entry_range">
   19548             </td>
   19549 
   19550             <td class="entry_tags">
   19551               <ul class="entry_tags">
   19552                   <li><a href="#tag_RAW">RAW</a></li>
   19553               </ul>
   19554             </td>
   19555 
   19556           </tr>
   19557           <tr class="entries_header">
   19558             <th class="th_details" colspan="5">Details</th>
   19559           </tr>
   19560           <tr class="entry_cont">
   19561             <td class="entry_details" colspan="5">
   19562               <p>This matrix is used to convert from the standard CIE XYZ color
   19563 space to the reference sensor colorspace,<wbr/> and is used when processing
   19564 raw buffer data.<wbr/></p>
   19565 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
   19566 contains a color transform matrix that maps colors from the CIE
   19567 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
   19568 "golden module" colorspace) under the first reference illuminant
   19569 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
   19570 <p>The white points chosen in both the reference sensor color space
   19571 and the CIE XYZ colorspace when calculating this transform will
   19572 match the standard white point for the first reference illuminant
   19573 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
   19574             </td>
   19575           </tr>
   19576 
   19577 
   19578           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   19579            <!-- end of entry -->
   19580         
   19581                 
   19582           <tr class="entry" id="static_android.sensor.colorTransform2">
   19583             <td class="entry_name
   19584              " rowspan="3">
   19585               android.<wbr/>sensor.<wbr/>color<wbr/>Transform2
   19586             </td>
   19587             <td class="entry_type">
   19588                 <span class="entry_type_name">rational</span>
   19589                 <span class="entry_type_container">x</span>
   19590 
   19591                 <span class="entry_type_array">
   19592                   3 x 3
   19593                 </span>
   19594               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
   19595 
   19596 
   19597 
   19598 
   19599                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
   19600 
   19601 
   19602             </td> <!-- entry_type -->
   19603 
   19604             <td class="entry_description">
   19605               <p>A matrix that transforms color values from CIE XYZ color space to
   19606 reference sensor color space.<wbr/></p>
   19607             </td>
   19608 
   19609             <td class="entry_units">
   19610             </td>
   19611 
   19612             <td class="entry_range">
   19613             </td>
   19614 
   19615             <td class="entry_tags">
   19616               <ul class="entry_tags">
   19617                   <li><a href="#tag_RAW">RAW</a></li>
   19618               </ul>
   19619             </td>
   19620 
   19621           </tr>
   19622           <tr class="entries_header">
   19623             <th class="th_details" colspan="5">Details</th>
   19624           </tr>
   19625           <tr class="entry_cont">
   19626             <td class="entry_details" colspan="5">
   19627               <p>This matrix is used to convert from the standard CIE XYZ color
   19628 space to the reference sensor colorspace,<wbr/> and is used when processing
   19629 raw buffer data.<wbr/></p>
   19630 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
   19631 contains a color transform matrix that maps colors from the CIE
   19632 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
   19633 "golden module" colorspace) under the second reference illuminant
   19634 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
   19635 <p>The white points chosen in both the reference sensor color space
   19636 and the CIE XYZ colorspace when calculating this transform will
   19637 match the standard white point for the second reference illuminant
   19638 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
   19639 <p>This matrix will only be present if the second reference
   19640 illuminant is present.<wbr/></p>
   19641             </td>
   19642           </tr>
   19643 
   19644 
   19645           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   19646            <!-- end of entry -->
   19647         
   19648                 
   19649           <tr class="entry" id="static_android.sensor.forwardMatrix1">
   19650             <td class="entry_name
   19651              " rowspan="3">
   19652               android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1
   19653             </td>
   19654             <td class="entry_type">
   19655                 <span class="entry_type_name">rational</span>
   19656                 <span class="entry_type_container">x</span>
   19657 
   19658                 <span class="entry_type_array">
   19659                   3 x 3
   19660                 </span>
   19661               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
   19662 
   19663 
   19664 
   19665 
   19666                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
   19667 
   19668 
   19669             </td> <!-- entry_type -->
   19670 
   19671             <td class="entry_description">
   19672               <p>A matrix that transforms white balanced camera colors from the reference
   19673 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
   19674             </td>
   19675 
   19676             <td class="entry_units">
   19677             </td>
   19678 
   19679             <td class="entry_range">
   19680             </td>
   19681 
   19682             <td class="entry_tags">
   19683               <ul class="entry_tags">
   19684                   <li><a href="#tag_RAW">RAW</a></li>
   19685               </ul>
   19686             </td>
   19687 
   19688           </tr>
   19689           <tr class="entries_header">
   19690             <th class="th_details" colspan="5">Details</th>
   19691           </tr>
   19692           <tr class="entry_cont">
   19693             <td class="entry_details" colspan="5">
   19694               <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
   19695 is used when processing raw buffer data.<wbr/></p>
   19696 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
   19697 a color transform matrix that maps white balanced colors from the
   19698 reference sensor color space to the CIE XYZ color space with a D50 white
   19699 point.<wbr/></p>
   19700 <p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
   19701 this matrix is chosen so that the standard white point for this reference
   19702 illuminant in the reference sensor colorspace is mapped to D50 in the
   19703 CIE XYZ colorspace.<wbr/></p>
   19704             </td>
   19705           </tr>
   19706 
   19707 
   19708           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   19709            <!-- end of entry -->
   19710         
   19711                 
   19712           <tr class="entry" id="static_android.sensor.forwardMatrix2">
   19713             <td class="entry_name
   19714              " rowspan="3">
   19715               android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2
   19716             </td>
   19717             <td class="entry_type">
   19718                 <span class="entry_type_name">rational</span>
   19719                 <span class="entry_type_container">x</span>
   19720 
   19721                 <span class="entry_type_array">
   19722                   3 x 3
   19723                 </span>
   19724               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
   19725 
   19726 
   19727 
   19728 
   19729                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
   19730 
   19731 
   19732             </td> <!-- entry_type -->
   19733 
   19734             <td class="entry_description">
   19735               <p>A matrix that transforms white balanced camera colors from the reference
   19736 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
   19737             </td>
   19738 
   19739             <td class="entry_units">
   19740             </td>
   19741 
   19742             <td class="entry_range">
   19743             </td>
   19744 
   19745             <td class="entry_tags">
   19746               <ul class="entry_tags">
   19747                   <li><a href="#tag_RAW">RAW</a></li>
   19748               </ul>
   19749             </td>
   19750 
   19751           </tr>
   19752           <tr class="entries_header">
   19753             <th class="th_details" colspan="5">Details</th>
   19754           </tr>
   19755           <tr class="entry_cont">
   19756             <td class="entry_details" colspan="5">
   19757               <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
   19758 is used when processing raw buffer data.<wbr/></p>
   19759 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
   19760 a color transform matrix that maps white balanced colors from the
   19761 reference sensor color space to the CIE XYZ color space with a D50 white
   19762 point.<wbr/></p>
   19763 <p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>)
   19764 this matrix is chosen so that the standard white point for this reference
   19765 illuminant in the reference sensor colorspace is mapped to D50 in the
   19766 CIE XYZ colorspace.<wbr/></p>
   19767 <p>This matrix will only be present if the second reference
   19768 illuminant is present.<wbr/></p>
   19769             </td>
   19770           </tr>
   19771 
   19772 
   19773           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   19774            <!-- end of entry -->
   19775         
   19776                 
   19777           <tr class="entry" id="static_android.sensor.baseGainFactor">
   19778             <td class="entry_name
   19779              " rowspan="1">
   19780               android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor
   19781             </td>
   19782             <td class="entry_type">
   19783                 <span class="entry_type_name">rational</span>
   19784 
   19785               <span class="entry_type_visibility"> [system]</span>
   19786 
   19787 
   19788 
   19789 
   19790 
   19791 
   19792             </td> <!-- entry_type -->
   19793 
   19794             <td class="entry_description">
   19795               <p>Gain factor from electrons to raw units when
   19796 ISO=100</p>
   19797             </td>
   19798 
   19799             <td class="entry_units">
   19800             </td>
   19801 
   19802             <td class="entry_range">
   19803             </td>
   19804 
   19805             <td class="entry_tags">
   19806               <ul class="entry_tags">
   19807                   <li><a href="#tag_FUTURE">FUTURE</a></li>
   19808               </ul>
   19809             </td>
   19810 
   19811           </tr>
   19812 
   19813 
   19814           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   19815            <!-- end of entry -->
   19816         
   19817                 
   19818           <tr class="entry" id="static_android.sensor.blackLevelPattern">
   19819             <td class="entry_name
   19820              " rowspan="5">
   19821               android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern
   19822             </td>
   19823             <td class="entry_type">
   19824                 <span class="entry_type_name">int32</span>
   19825                 <span class="entry_type_container">x</span>
   19826 
   19827                 <span class="entry_type_array">
   19828                   4
   19829                 </span>
   19830               <span class="entry_type_visibility"> [public as blackLevelPattern]</span>
   19831 
   19832 
   19833 
   19834 
   19835                 <div class="entry_type_notes">2x2 raw count block</div>
   19836 
   19837 
   19838             </td> <!-- entry_type -->
   19839 
   19840             <td class="entry_description">
   19841               <p>A fixed black level offset for each of the color filter arrangement
   19842 (CFA) mosaic channels.<wbr/></p>
   19843             </td>
   19844 
   19845             <td class="entry_units">
   19846             </td>
   19847 
   19848             <td class="entry_range">
   19849               <p>&gt;= 0 for each.<wbr/></p>
   19850             </td>
   19851 
   19852             <td class="entry_tags">
   19853               <ul class="entry_tags">
   19854                   <li><a href="#tag_RAW">RAW</a></li>
   19855               </ul>
   19856             </td>
   19857 
   19858           </tr>
   19859           <tr class="entries_header">
   19860             <th class="th_details" colspan="5">Details</th>
   19861           </tr>
   19862           <tr class="entry_cont">
   19863             <td class="entry_details" colspan="5">
   19864               <p>This key specifies the zero light value for each of the CFA mosaic
   19865 channels in the camera sensor.<wbr/>  The maximal value output by the
   19866 sensor is represented by the value in <a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>.<wbr/></p>
   19867 <p>The values are given in the same order as channels listed for the CFA
   19868 layout key (see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>),<wbr/> i.<wbr/>e.<wbr/> the
   19869 nth value given corresponds to the black level offset for the nth
   19870 color channel listed in the CFA.<wbr/></p>
   19871             </td>
   19872           </tr>
   19873 
   19874           <tr class="entries_header">
   19875             <th class="th_details" colspan="5">HAL Implementation Details</th>
   19876           </tr>
   19877           <tr class="entry_cont">
   19878             <td class="entry_details" colspan="5">
   19879               <p>The values are given in row-column scan order,<wbr/> with the first value
   19880 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
   19881             </td>
   19882           </tr>
   19883 
   19884           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   19885            <!-- end of entry -->
   19886         
   19887                 
   19888           <tr class="entry" id="static_android.sensor.maxAnalogSensitivity">
   19889             <td class="entry_name
   19890              " rowspan="3">
   19891               android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity
   19892             </td>
   19893             <td class="entry_type">
   19894                 <span class="entry_type_name">int32</span>
   19895 
   19896               <span class="entry_type_visibility"> [public]</span>
   19897 
   19898 
   19899               <span class="entry_type_hwlevel">[full] </span>
   19900 
   19901 
   19902 
   19903 
   19904             </td> <!-- entry_type -->
   19905 
   19906             <td class="entry_description">
   19907               <p>Maximum sensitivity that is implemented
   19908 purely through analog gain.<wbr/></p>
   19909             </td>
   19910 
   19911             <td class="entry_units">
   19912             </td>
   19913 
   19914             <td class="entry_range">
   19915             </td>
   19916 
   19917             <td class="entry_tags">
   19918               <ul class="entry_tags">
   19919                   <li><a href="#tag_V1">V1</a></li>
   19920                   <li><a href="#tag_FULL">FULL</a></li>
   19921               </ul>
   19922             </td>
   19923 
   19924           </tr>
   19925           <tr class="entries_header">
   19926             <th class="th_details" colspan="5">Details</th>
   19927           </tr>
   19928           <tr class="entry_cont">
   19929             <td class="entry_details" colspan="5">
   19930               <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or
   19931 equal to this,<wbr/> all applied gain must be analog.<wbr/> For
   19932 values above this,<wbr/> the gain applied can be a mix of analog and
   19933 digital.<wbr/></p>
   19934             </td>
   19935           </tr>
   19936 
   19937 
   19938           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   19939            <!-- end of entry -->
   19940         
   19941                 
   19942           <tr class="entry" id="static_android.sensor.orientation">
   19943             <td class="entry_name
   19944              " rowspan="3">
   19945               android.<wbr/>sensor.<wbr/>orientation
   19946             </td>
   19947             <td class="entry_type">
   19948                 <span class="entry_type_name">int32</span>
   19949 
   19950               <span class="entry_type_visibility"> [public]</span>
   19951 
   19952 
   19953               <span class="entry_type_hwlevel">[legacy] </span>
   19954 
   19955 
   19956 
   19957 
   19958             </td> <!-- entry_type -->
   19959 
   19960             <td class="entry_description">
   19961               <p>Clockwise angle through which the output image needs to be rotated to be
   19962 upright on the device screen in its native orientation.<wbr/></p>
   19963             </td>
   19964 
   19965             <td class="entry_units">
   19966               Degrees of clockwise rotation; always a multiple of
   19967           90
   19968             </td>
   19969 
   19970             <td class="entry_range">
   19971               <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
   19972             </td>
   19973 
   19974             <td class="entry_tags">
   19975               <ul class="entry_tags">
   19976                   <li><a href="#tag_BC">BC</a></li>
   19977               </ul>
   19978             </td>
   19979 
   19980           </tr>
   19981           <tr class="entries_header">
   19982             <th class="th_details" colspan="5">Details</th>
   19983           </tr>
   19984           <tr class="entry_cont">
   19985             <td class="entry_details" colspan="5">
   19986               <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in
   19987 the sensor's coordinate system.<wbr/></p>
   19988             </td>
   19989           </tr>
   19990 
   19991 
   19992           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   19993            <!-- end of entry -->
   19994         
   19995                 
   19996           <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions">
   19997             <td class="entry_name
   19998              " rowspan="3">
   19999               android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions
   20000             </td>
   20001             <td class="entry_type">
   20002                 <span class="entry_type_name">int32</span>
   20003                 <span class="entry_type_container">x</span>
   20004 
   20005                 <span class="entry_type_array">
   20006                   3
   20007                 </span>
   20008               <span class="entry_type_visibility"> [system]</span>
   20009 
   20010 
   20011 
   20012 
   20013                 <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div>
   20014 
   20015 
   20016             </td> <!-- entry_type -->
   20017 
   20018             <td class="entry_description">
   20019               <p>The number of input samples for each dimension of
   20020 <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p>
   20021             </td>
   20022 
   20023             <td class="entry_units">
   20024             </td>
   20025 
   20026             <td class="entry_range">
   20027               <p>Hue &gt;= 1,<wbr/>
   20028 Saturation &gt;= 2,<wbr/>
   20029 Value &gt;= 1</p>
   20030             </td>
   20031 
   20032             <td class="entry_tags">
   20033               <ul class="entry_tags">
   20034                   <li><a href="#tag_RAW">RAW</a></li>
   20035               </ul>
   20036             </td>
   20037 
   20038           </tr>
   20039           <tr class="entries_header">
   20040             <th class="th_details" colspan="5">Details</th>
   20041           </tr>
   20042           <tr class="entry_cont">
   20043             <td class="entry_details" colspan="5">
   20044               <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value
   20045 dimension of <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/> The order of the
   20046 dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th
   20047 element.<wbr/></p>
   20048             </td>
   20049           </tr>
   20050 
   20051 
   20052           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   20053            <!-- end of entry -->
   20054         
   20055                 
   20056           <tr class="entry" id="static_android.sensor.availableTestPatternModes">
   20057             <td class="entry_name
   20058              " rowspan="5">
   20059               android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes
   20060             </td>
   20061             <td class="entry_type">
   20062                 <span class="entry_type_name">int32</span>
   20063                 <span class="entry_type_container">x</span>
   20064 
   20065                 <span class="entry_type_array">
   20066                   n
   20067                 </span>
   20068               <span class="entry_type_visibility"> [public]</span>
   20069 
   20070 
   20071 
   20072 
   20073                 <div class="entry_type_notes">list of enums</div>
   20074 
   20075 
   20076             </td> <!-- entry_type -->
   20077 
   20078             <td class="entry_description">
   20079               <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>
   20080 supported by this camera device.<wbr/></p>
   20081             </td>
   20082 
   20083             <td class="entry_units">
   20084             </td>
   20085 
   20086             <td class="entry_range">
   20087               <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p>
   20088             </td>
   20089 
   20090             <td class="entry_tags">
   20091             </td>
   20092 
   20093           </tr>
   20094           <tr class="entries_header">
   20095             <th class="th_details" colspan="5">Details</th>
   20096           </tr>
   20097           <tr class="entry_cont">
   20098             <td class="entry_details" colspan="5">
   20099               <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p>
   20100             </td>
   20101           </tr>
   20102 
   20103           <tr class="entries_header">
   20104             <th class="th_details" colspan="5">HAL Implementation Details</th>
   20105           </tr>
   20106           <tr class="entry_cont">
   20107             <td class="entry_details" colspan="5">
   20108               <p>All custom modes must be &gt;= CUSTOM1.<wbr/></p>
   20109             </td>
   20110           </tr>
   20111 
   20112           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   20113            <!-- end of entry -->
   20114         
   20115         
   20116 
   20117       <!-- end of kind -->
   20118       </tbody>
   20119       <tr><td colspan="6" class="kind">dynamic</td></tr>
   20120 
   20121       <thead class="entries_header">
   20122         <tr>
   20123           <th class="th_name">Property Name</th>
   20124           <th class="th_type">Type</th>
   20125           <th class="th_description">Description</th>
   20126           <th class="th_units">Units</th>
   20127           <th class="th_range">Range</th>
   20128           <th class="th_tags">Tags</th>
   20129         </tr>
   20130       </thead>
   20131 
   20132       <tbody>
   20133 
   20134         
   20135 
   20136         
   20137 
   20138         
   20139 
   20140         
   20141 
   20142                 
   20143           <tr class="entry" id="dynamic_android.sensor.exposureTime">
   20144             <td class="entry_name
   20145              " rowspan="3">
   20146               android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
   20147             </td>
   20148             <td class="entry_type">
   20149                 <span class="entry_type_name">int64</span>
   20150 
   20151               <span class="entry_type_visibility"> [public]</span>
   20152 
   20153 
   20154               <span class="entry_type_hwlevel">[full] </span>
   20155 
   20156 
   20157 
   20158 
   20159             </td> <!-- entry_type -->
   20160 
   20161             <td class="entry_description">
   20162               <p>Duration each pixel is exposed to
   20163 light.<wbr/></p>
   20164             </td>
   20165 
   20166             <td class="entry_units">
   20167               Nanoseconds
   20168             </td>
   20169 
   20170             <td class="entry_range">
   20171               <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
   20172             </td>
   20173 
   20174             <td class="entry_tags">
   20175               <ul class="entry_tags">
   20176                   <li><a href="#tag_V1">V1</a></li>
   20177               </ul>
   20178             </td>
   20179 
   20180           </tr>
   20181           <tr class="entries_header">
   20182             <th class="th_details" colspan="5">Details</th>
   20183           </tr>
   20184           <tr class="entry_cont">
   20185             <td class="entry_details" colspan="5">
   20186               <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
   20187 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
   20188 The final exposure time used will be available in the output capture result.<wbr/></p>
   20189 <p>This control is only effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is set to
   20190 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
   20191             </td>
   20192           </tr>
   20193 
   20194 
   20195           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   20196            <!-- end of entry -->
   20197         
   20198                 
   20199           <tr class="entry" id="dynamic_android.sensor.frameDuration">
   20200             <td class="entry_name
   20201              " rowspan="5">
   20202               android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
   20203             </td>
   20204             <td class="entry_type">
   20205                 <span class="entry_type_name">int64</span>
   20206 
   20207               <span class="entry_type_visibility"> [public]</span>
   20208 
   20209 
   20210               <span class="entry_type_hwlevel">[full] </span>
   20211 
   20212 
   20213 
   20214 
   20215             </td> <!-- entry_type -->
   20216 
   20217             <td class="entry_description">
   20218               <p>Duration from start of frame exposure to
   20219 start of next frame exposure.<wbr/></p>
   20220             </td>
   20221 
   20222             <td class="entry_units">
   20223               Nanoseconds
   20224             </td>
   20225 
   20226             <td class="entry_range">
   20227               <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/>
   20228 <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration
   20229 is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
   20230             </td>
   20231 
   20232             <td class="entry_tags">
   20233               <ul class="entry_tags">
   20234                   <li><a href="#tag_V1">V1</a></li>
   20235               </ul>
   20236             </td>
   20237 
   20238           </tr>
   20239           <tr class="entries_header">
   20240             <th class="th_details" colspan="5">Details</th>
   20241           </tr>
   20242           <tr class="entry_cont">
   20243             <td class="entry_details" colspan="5">
   20244               <p>The maximum frame rate that can be supported by a camera subsystem is
   20245 a function of many factors:</p>
   20246 <ul>
   20247 <li>Requested resolutions of output image streams</li>
   20248 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
   20249 <li>The bandwidth of the imager interface</li>
   20250 <li>The bandwidth of the various ISP processing blocks</li>
   20251 </ul>
   20252 <p>Since these factors can vary greatly between different ISPs and
   20253 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
   20254 restrictions with as simple a model as possible.<wbr/></p>
   20255 <p>The model presented has the following characteristics:</p>
   20256 <ul>
   20257 <li>The image sensor is always configured to output the smallest
   20258 resolution possible given the application's requested output stream
   20259 sizes.<wbr/>  The smallest resolution is defined as being at least as large
   20260 as the largest requested output stream size; the camera pipeline must
   20261 never digitally upsample sensor data when the crop region covers the
   20262 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
   20263 resolutions are configured,<wbr/> the sensor can provide a higher frame
   20264 rate.<wbr/></li>
   20265 <li>Since any request may use any or all the currently configured
   20266 output streams,<wbr/> the sensor and ISP must be configured to support
   20267 scaling a single capture to all the streams at the same time.<wbr/>  This
   20268 means the camera pipeline must be ready to produce the largest
   20269 requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
   20270 frame rate of a given configured stream set is governed only by the
   20271 largest requested stream resolution.<wbr/></li>
   20272 <li>Using more than one output stream in a request does not affect the
   20273 frame duration.<wbr/></li>
   20274 <li>Certain format-streams may need to do additional background processing
   20275 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
   20276 can run concurrently to the rest of the camera pipeline,<wbr/> but
   20277 cannot process more than 1 capture at a time.<wbr/></li>
   20278 </ul>
   20279 <p>The necessary information for the application,<wbr/> given the model above,<wbr/>
   20280 is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field using
   20281 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
   20282 These are used to determine the maximum frame rate /<wbr/> minimum frame
   20283 duration that is possible for a given stream configuration.<wbr/></p>
   20284 <p>Specifically,<wbr/> the application can use the following rules to
   20285 determine the minimum frame duration it can request from the camera
   20286 device:</p>
   20287 <ol>
   20288 <li>Let the set of currently configured input/<wbr/>output streams
   20289 be called <code>S</code>.<wbr/></li>
   20290 <li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking
   20291 it up in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> using <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
   20292 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be
   20293 called <code>F</code>.<wbr/></li>
   20294 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed
   20295 for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams
   20296 used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
   20297 </ol>
   20298 <p>If none of the streams in <code>S_<wbr/>r</code> have a stall time (listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>
   20299 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code>
   20300 determines the steady state frame rate that the application will get
   20301 if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind of
   20302 request be called <code>Rsimple</code>.<wbr/></p>
   20303 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved
   20304 by a single capture of a new request <code>Rstall</code> (which has at least
   20305 one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the
   20306 same minimum frame duration this will not cause a frame rate loss
   20307 if all buffers from the previous <code>Rstall</code> have already been
   20308 delivered.<wbr/></p>
   20309 <p>For more details about stalling,<wbr/> see
   20310 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p>
   20311 <p>This control is only effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is set to
   20312 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
   20313             </td>
   20314           </tr>
   20315 
   20316           <tr class="entries_header">
   20317             <th class="th_details" colspan="5">HAL Implementation Details</th>
   20318           </tr>
   20319           <tr class="entry_cont">
   20320             <td class="entry_details" colspan="5">
   20321               <p>For more details about stalling,<wbr/> see
   20322 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
   20323             </td>
   20324           </tr>
   20325 
   20326           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   20327            <!-- end of entry -->
   20328         
   20329                 
   20330           <tr class="entry" id="dynamic_android.sensor.sensitivity">
   20331             <td class="entry_name
   20332              " rowspan="5">
   20333               android.<wbr/>sensor.<wbr/>sensitivity
   20334             </td>
   20335             <td class="entry_type">
   20336                 <span class="entry_type_name">int32</span>
   20337 
   20338               <span class="entry_type_visibility"> [public]</span>
   20339 
   20340 
   20341               <span class="entry_type_hwlevel">[full] </span>
   20342 
   20343 
   20344 
   20345 
   20346             </td> <!-- entry_type -->
   20347 
   20348             <td class="entry_description">
   20349               <p>The amount of gain applied to sensor data
   20350 before processing.<wbr/></p>
   20351             </td>
   20352 
   20353             <td class="entry_units">
   20354               ISO arithmetic units
   20355             </td>
   20356 
   20357             <td class="entry_range">
   20358               <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
   20359             </td>
   20360 
   20361             <td class="entry_tags">
   20362               <ul class="entry_tags">
   20363                   <li><a href="#tag_V1">V1</a></li>
   20364               </ul>
   20365             </td>
   20366 
   20367           </tr>
   20368           <tr class="entries_header">
   20369             <th class="th_details" colspan="5">Details</th>
   20370           </tr>
   20371           <tr class="entry_cont">
   20372             <td class="entry_details" colspan="5">
   20373               <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
   20374 as defined in ISO 12232:2006.<wbr/></p>
   20375 <p>The sensitivity must be within <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a>,<wbr/> and
   20376 if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device
   20377 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
   20378 <p>If the camera device cannot apply the exact sensitivity
   20379 requested,<wbr/> it will reduce the gain to the nearest supported
   20380 value.<wbr/> The final sensitivity used will be available in the
   20381 output capture result.<wbr/></p>
   20382             </td>
   20383           </tr>
   20384 
   20385           <tr class="entries_header">
   20386             <th class="th_details" colspan="5">HAL Implementation Details</th>
   20387           </tr>
   20388           <tr class="entry_cont">
   20389             <td class="entry_details" colspan="5">
   20390               <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
   20391             </td>
   20392           </tr>
   20393 
   20394           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   20395            <!-- end of entry -->
   20396         
   20397                 
   20398           <tr class="entry" id="dynamic_android.sensor.timestamp">
   20399             <td class="entry_name
   20400              " rowspan="5">
   20401               android.<wbr/>sensor.<wbr/>timestamp
   20402             </td>
   20403             <td class="entry_type">
   20404                 <span class="entry_type_name">int64</span>
   20405 
   20406               <span class="entry_type_visibility"> [public]</span>
   20407 
   20408 
   20409               <span class="entry_type_hwlevel">[legacy] </span>
   20410 
   20411 
   20412 
   20413 
   20414             </td> <!-- entry_type -->
   20415 
   20416             <td class="entry_description">
   20417               <p>Time at start of exposure of first
   20418 row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p>
   20419             </td>
   20420 
   20421             <td class="entry_units">
   20422               Nanoseconds
   20423             </td>
   20424 
   20425             <td class="entry_range">
   20426               <p>&gt; 0</p>
   20427             </td>
   20428 
   20429             <td class="entry_tags">
   20430               <ul class="entry_tags">
   20431                   <li><a href="#tag_BC">BC</a></li>
   20432               </ul>
   20433             </td>
   20434 
   20435           </tr>
   20436           <tr class="entries_header">
   20437             <th class="th_details" colspan="5">Details</th>
   20438           </tr>
   20439           <tr class="entry_cont">
   20440             <td class="entry_details" colspan="5">
   20441               <p>The timestamps are also included in all image
   20442 buffers produced for the same capture,<wbr/> and will be identical
   20443 on all the outputs.<wbr/></p>
   20444 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/>
   20445 the timestamps measure time since an unspecified starting point,<wbr/>
   20446 and are monotonically increasing.<wbr/> They can be compared with the
   20447 timestamps for other captures from the same camera device,<wbr/> but are
   20448 not guaranteed to be comparable to any other time source.<wbr/></p>
   20449 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the
   20450 timestamps measure time in the same timebase as <a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/> and they can
   20451 be compared to other timestamps from other subsystems that
   20452 are using that base.<wbr/></p>
   20453 <p>For reprocessing,<wbr/> the timestamp will match the start of exposure of
   20454 the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the
   20455 timestamp</a> in the TotalCaptureResult that was used to create the
   20456 reprocess capture request.<wbr/></p>
   20457             </td>
   20458           </tr>
   20459 
   20460           <tr class="entries_header">
   20461             <th class="th_details" colspan="5">HAL Implementation Details</th>
   20462           </tr>
   20463           <tr class="entry_cont">
   20464             <td class="entry_details" colspan="5">
   20465               <p>All timestamps must be in reference to the kernel's
   20466 CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for
   20467 time spent asleep.<wbr/> This allows for synchronization with
   20468 sensors that continue to operate while the system is
   20469 otherwise asleep.<wbr/></p>
   20470 <p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/>
   20471 The timestamp must be synchronized with the timestamps from other
   20472 sensor subsystems that are using the same timebase.<wbr/></p>
   20473 <p>For reprocessing,<wbr/> the input image's start of exposure can be looked up
   20474 with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the
   20475 capture request.<wbr/></p>
   20476             </td>
   20477           </tr>
   20478 
   20479           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   20480            <!-- end of entry -->
   20481         
   20482                 
   20483           <tr class="entry" id="dynamic_android.sensor.temperature">
   20484             <td class="entry_name
   20485              " rowspan="1">
   20486               android.<wbr/>sensor.<wbr/>temperature
   20487             </td>
   20488             <td class="entry_type">
   20489                 <span class="entry_type_name">float</span>
   20490 
   20491               <span class="entry_type_visibility"> [system]</span>
   20492 
   20493 
   20494 
   20495 
   20496 
   20497 
   20498             </td> <!-- entry_type -->
   20499 
   20500             <td class="entry_description">
   20501               <p>The temperature of the sensor,<wbr/> sampled at the time
   20502 exposure began for this frame.<wbr/></p>
   20503 <p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or
   20504 somewhere close to it.<wbr/></p>
   20505             </td>
   20506 
   20507             <td class="entry_units">
   20508               Celsius
   20509             </td>
   20510 
   20511             <td class="entry_range">
   20512               <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p>
   20513             </td>
   20514 
   20515             <td class="entry_tags">
   20516               <ul class="entry_tags">
   20517                   <li><a href="#tag_FUTURE">FUTURE</a></li>
   20518               </ul>
   20519             </td>
   20520 
   20521           </tr>
   20522 
   20523 
   20524           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   20525            <!-- end of entry -->
   20526         
   20527                 
   20528           <tr class="entry" id="dynamic_android.sensor.neutralColorPoint">
   20529             <td class="entry_name
   20530              " rowspan="3">
   20531               android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point
   20532             </td>
   20533             <td class="entry_type">
   20534                 <span class="entry_type_name">rational</span>
   20535                 <span class="entry_type_container">x</span>
   20536 
   20537                 <span class="entry_type_array">
   20538                   3
   20539                 </span>
   20540               <span class="entry_type_visibility"> [public]</span>
   20541 
   20542 
   20543 
   20544 
   20545 
   20546 
   20547             </td> <!-- entry_type -->
   20548 
   20549             <td class="entry_description">
   20550               <p>The estimated camera neutral color in the native sensor colorspace at
   20551 the time of capture.<wbr/></p>
   20552             </td>
   20553 
   20554             <td class="entry_units">
   20555             </td>
   20556 
   20557             <td class="entry_range">
   20558             </td>
   20559 
   20560             <td class="entry_tags">
   20561               <ul class="entry_tags">
   20562                   <li><a href="#tag_RAW">RAW</a></li>
   20563               </ul>
   20564             </td>
   20565 
   20566           </tr>
   20567           <tr class="entries_header">
   20568             <th class="th_details" colspan="5">Details</th>
   20569           </tr>
   20570           <tr class="entry_cont">
   20571             <td class="entry_details" colspan="5">
   20572               <p>This value gives the neutral color point encoded as an RGB value in the
   20573 native sensor color space.<wbr/>  The neutral color point indicates the
   20574 currently estimated white point of the scene illumination.<wbr/>  It can be
   20575 used to interpolate between the provided color transforms when
   20576 processing raw sensor data.<wbr/></p>
   20577 <p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p>
   20578             </td>
   20579           </tr>
   20580 
   20581 
   20582           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   20583            <!-- end of entry -->
   20584         
   20585                 
   20586           <tr class="entry" id="dynamic_android.sensor.noiseProfile">
   20587             <td class="entry_name
   20588              " rowspan="5">
   20589               android.<wbr/>sensor.<wbr/>noise<wbr/>Profile
   20590             </td>
   20591             <td class="entry_type">
   20592                 <span class="entry_type_name">double</span>
   20593                 <span class="entry_type_container">x</span>
   20594 
   20595                 <span class="entry_type_array">
   20596                   2 x CFA Channels
   20597                 </span>
   20598               <span class="entry_type_visibility"> [public as pairDoubleDouble]</span>
   20599 
   20600 
   20601 
   20602 
   20603                 <div class="entry_type_notes">Pairs of noise model coefficients</div>
   20604 
   20605 
   20606             </td> <!-- entry_type -->
   20607 
   20608             <td class="entry_description">
   20609               <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p>
   20610             </td>
   20611 
   20612             <td class="entry_units">
   20613             </td>
   20614 
   20615             <td class="entry_range">
   20616             </td>
   20617 
   20618             <td class="entry_tags">
   20619               <ul class="entry_tags">
   20620                   <li><a href="#tag_RAW">RAW</a></li>
   20621               </ul>
   20622             </td>
   20623 
   20624           </tr>
   20625           <tr class="entries_header">
   20626             <th class="th_details" colspan="5">Details</th>
   20627           </tr>
   20628           <tr class="entry_cont">
   20629             <td class="entry_details" colspan="5">
   20630               <p>This key contains two noise model coefficients for each CFA channel
   20631 corresponding to the sensor amplification (S) and sensor readout
   20632 noise (O).<wbr/>  These are given as pairs of coefficients for each channel
   20633 in the same order as channels listed for the CFA layout key
   20634 (see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/>  This is
   20635 represented as an array of Pair&lt;Double,<wbr/> Double&gt;,<wbr/> where
   20636 the first member of the Pair at index n is the S coefficient and the
   20637 second member is the O coefficient for the nth color channel in the CFA.<wbr/></p>
   20638 <p>These coefficients are used in a two parameter noise model to describe
   20639 the amount of noise present in the image for each CFA channel.<wbr/>  The
   20640 noise model used here is:</p>
   20641 <p>N(x) = sqrt(Sx + O)</p>
   20642 <p>Where x represents the recorded signal of a CFA channel normalized to
   20643 the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for
   20644 that channel.<wbr/></p>
   20645 <p>A more detailed description of the noise model can be found in the
   20646 Adobe DNG specification for the NoiseProfile tag.<wbr/></p>
   20647             </td>
   20648           </tr>
   20649 
   20650           <tr class="entries_header">
   20651             <th class="th_details" colspan="5">HAL Implementation Details</th>
   20652           </tr>
   20653           <tr class="entry_cont">
   20654             <td class="entry_details" colspan="5">
   20655               <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as
   20656 an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients
   20657 for the red channel,<wbr/> S1 and O1 are the coefficients for the first green
   20658 channel,<wbr/> etc.<wbr/></p>
   20659             </td>
   20660           </tr>
   20661 
   20662           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   20663            <!-- end of entry -->
   20664         
   20665                 
   20666           <tr class="entry" id="dynamic_android.sensor.profileHueSatMap">
   20667             <td class="entry_name
   20668              " rowspan="3">
   20669               android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map
   20670             </td>
   20671             <td class="entry_type">
   20672                 <span class="entry_type_name">float</span>
   20673                 <span class="entry_type_container">x</span>
   20674 
   20675                 <span class="entry_type_array">
   20676                   hue_samples x saturation_samples x value_samples x 3
   20677                 </span>
   20678               <span class="entry_type_visibility"> [system]</span>
   20679 
   20680 
   20681 
   20682 
   20683                 <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div>
   20684 
   20685 
   20686             </td> <!-- entry_type -->
   20687 
   20688             <td class="entry_description">
   20689               <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale
   20690 for each pixel.<wbr/></p>
   20691             </td>
   20692 
   20693             <td class="entry_units">
   20694               
   20695           The hue shift is given in degrees; saturation and value scale factors are
   20696           unitless and are between 0 and 1 inclusive
   20697           
   20698             </td>
   20699 
   20700             <td class="entry_range">
   20701             </td>
   20702 
   20703             <td class="entry_tags">
   20704               <ul class="entry_tags">
   20705                   <li><a href="#tag_RAW">RAW</a></li>
   20706               </ul>
   20707             </td>
   20708 
   20709           </tr>
   20710           <tr class="entries_header">
   20711             <th class="th_details" colspan="5">Details</th>
   20712           </tr>
   20713           <tr class="entry_cont">
   20714             <td class="entry_details" colspan="5">
   20715               <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in
   20716 <a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p>
   20717 <p>Each entry of this map contains three floats corresponding to the
   20718 hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the
   20719 hue shift has the lowest index.<wbr/> The map entries are stored in the key
   20720 in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the
   20721 hue divisions in the middle loop,<wbr/> and the saturation divisions in the
   20722 inner loop.<wbr/> All zero input saturation entries are required to have a
   20723 value scale factor of 1.<wbr/>0.<wbr/></p>
   20724             </td>
   20725           </tr>
   20726 
   20727 
   20728           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   20729            <!-- end of entry -->
   20730         
   20731                 
   20732           <tr class="entry" id="dynamic_android.sensor.profileToneCurve">
   20733             <td class="entry_name
   20734              " rowspan="3">
   20735               android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve
   20736             </td>
   20737             <td class="entry_type">
   20738                 <span class="entry_type_name">float</span>
   20739                 <span class="entry_type_container">x</span>
   20740 
   20741                 <span class="entry_type_array">
   20742                   samples x 2
   20743                 </span>
   20744               <span class="entry_type_visibility"> [system]</span>
   20745 
   20746 
   20747 
   20748 
   20749                 <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div>
   20750 
   20751 
   20752             </td> <!-- entry_type -->
   20753 
   20754             <td class="entry_description">
   20755               <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p>
   20756             </td>
   20757 
   20758             <td class="entry_units">
   20759             </td>
   20760 
   20761             <td class="entry_range">
   20762               <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of
   20763 <code>[0,<wbr/> 1]</code>.<wbr/>  The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last
   20764 sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p>
   20765             </td>
   20766 
   20767             <td class="entry_tags">
   20768               <ul class="entry_tags">
   20769                   <li><a href="#tag_RAW">RAW</a></li>
   20770               </ul>
   20771             </td>
   20772 
   20773           </tr>
   20774           <tr class="entries_header">
   20775             <th class="th_details" colspan="5">Details</th>
   20776           </tr>
   20777           <tr class="entry_cont">
   20778             <td class="entry_details" colspan="5">
   20779               <p>This key contains a default tone curve that can be applied while
   20780 processing the image as a starting point for user adjustments.<wbr/>
   20781 The curve is specified as a list of value pairs in linear gamma.<wbr/>
   20782 The curve is interpolated using a cubic spline.<wbr/></p>
   20783             </td>
   20784           </tr>
   20785 
   20786 
   20787           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   20788            <!-- end of entry -->
   20789         
   20790                 
   20791           <tr class="entry" id="dynamic_android.sensor.greenSplit">
   20792             <td class="entry_name
   20793              " rowspan="5">
   20794               android.<wbr/>sensor.<wbr/>green<wbr/>Split
   20795             </td>
   20796             <td class="entry_type">
   20797                 <span class="entry_type_name">float</span>
   20798 
   20799               <span class="entry_type_visibility"> [public]</span>
   20800 
   20801 
   20802 
   20803 
   20804 
   20805 
   20806             </td> <!-- entry_type -->
   20807 
   20808             <td class="entry_description">
   20809               <p>The worst-case divergence between Bayer green channels.<wbr/></p>
   20810             </td>
   20811 
   20812             <td class="entry_units">
   20813             </td>
   20814 
   20815             <td class="entry_range">
   20816               <p>&gt;= 0</p>
   20817             </td>
   20818 
   20819             <td class="entry_tags">
   20820               <ul class="entry_tags">
   20821                   <li><a href="#tag_RAW">RAW</a></li>
   20822               </ul>
   20823             </td>
   20824 
   20825           </tr>
   20826           <tr class="entries_header">
   20827             <th class="th_details" colspan="5">Details</th>
   20828           </tr>
   20829           <tr class="entry_cont">
   20830             <td class="entry_details" colspan="5">
   20831               <p>This value is an estimate of the worst case split between the
   20832 Bayer green channels in the red and blue rows in the sensor color
   20833 filter array.<wbr/></p>
   20834 <p>The green split is calculated as follows:</p>
   20835 <ol>
   20836 <li>A 5x5 pixel (or larger) window W within the active sensor array is
   20837 chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer
   20838 mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/>  The location and size of the window
   20839 chosen is implementation defined,<wbr/> and should be chosen to provide a
   20840 green split estimate that is both representative of the entire image
   20841 for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li>
   20842 <li>The arithmetic mean of the green channels from the red
   20843 rows (mean_<wbr/>Gr) within W is computed.<wbr/></li>
   20844 <li>The arithmetic mean of the green channels from the blue
   20845 rows (mean_<wbr/>Gb) within W is computed.<wbr/></li>
   20846 <li>The maximum ratio R of the two means is computed as follows:
   20847 <code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li>
   20848 </ol>
   20849 <p>The ratio R is the green split divergence reported for this property,<wbr/>
   20850 which represents how much the green channels differ in the mosaic
   20851 pattern.<wbr/>  This value is typically used to determine the treatment of
   20852 the green mosaic channels when demosaicing.<wbr/></p>
   20853 <p>The green split value can be roughly interpreted as follows:</p>
   20854 <ul>
   20855 <li>R &lt; 1.<wbr/>03 is a negligible split (&lt;3% divergence).<wbr/></li>
   20856 <li>1.<wbr/>20 &lt;= R &gt;= 1.<wbr/>03 will require some software
   20857 correction to avoid demosaic errors (3-20% divergence).<wbr/></li>
   20858 <li>R &gt; 1.<wbr/>20 will require strong software correction to produce
   20859 a usuable image (&gt;20% divergence).<wbr/></li>
   20860 </ul>
   20861             </td>
   20862           </tr>
   20863 
   20864           <tr class="entries_header">
   20865             <th class="th_details" colspan="5">HAL Implementation Details</th>
   20866           </tr>
   20867           <tr class="entry_cont">
   20868             <td class="entry_details" colspan="5">
   20869               <p>The green split given may be a static value based on prior
   20870 characterization of the camera sensor using the green split
   20871 calculation method given here over a large,<wbr/> representative,<wbr/> sample
   20872 set of images.<wbr/>  Other methods of calculation that produce equivalent
   20873 results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p>
   20874             </td>
   20875           </tr>
   20876 
   20877           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   20878            <!-- end of entry -->
   20879         
   20880                 
   20881           <tr class="entry" id="dynamic_android.sensor.testPatternData">
   20882             <td class="entry_name
   20883              " rowspan="5">
   20884               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
   20885             </td>
   20886             <td class="entry_type">
   20887                 <span class="entry_type_name">int32</span>
   20888                 <span class="entry_type_container">x</span>
   20889 
   20890                 <span class="entry_type_array">
   20891                   4
   20892                 </span>
   20893               <span class="entry_type_visibility"> [public]</span>
   20894 
   20895 
   20896 
   20897 
   20898 
   20899 
   20900             </td> <!-- entry_type -->
   20901 
   20902             <td class="entry_description">
   20903               <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
   20904 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
   20905             </td>
   20906 
   20907             <td class="entry_units">
   20908             </td>
   20909 
   20910             <td class="entry_range">
   20911             </td>
   20912 
   20913             <td class="entry_tags">
   20914             </td>
   20915 
   20916           </tr>
   20917           <tr class="entries_header">
   20918             <th class="th_details" colspan="5">Details</th>
   20919           </tr>
   20920           <tr class="entry_cont">
   20921             <td class="entry_details" colspan="5">
   20922               <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
   20923 The camera device then uses the most significant X bits
   20924 that correspond to how many bits are in its Bayer raw sensor
   20925 output.<wbr/></p>
   20926 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
   20927 10 most significant bits from each color channel.<wbr/></p>
   20928             </td>
   20929           </tr>
   20930 
   20931           <tr class="entries_header">
   20932             <th class="th_details" colspan="5">HAL Implementation Details</th>
   20933           </tr>
   20934           <tr class="entry_cont">
   20935             <td class="entry_details" colspan="5">
   20936               
   20937             </td>
   20938           </tr>
   20939 
   20940           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   20941            <!-- end of entry -->
   20942         
   20943                 
   20944           <tr class="entry" id="dynamic_android.sensor.testPatternMode">
   20945             <td class="entry_name
   20946              " rowspan="5">
   20947               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
   20948             </td>
   20949             <td class="entry_type">
   20950                 <span class="entry_type_name entry_type_name_enum">int32</span>
   20951 
   20952               <span class="entry_type_visibility"> [public]</span>
   20953 
   20954 
   20955 
   20956 
   20957 
   20958                 <ul class="entry_type_enum">
   20959                   <li>
   20960                     <span class="entry_type_enum_name">OFF</span>
   20961                     <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
   20962 device returns captures from the image sensor.<wbr/></p>
   20963 <p>This is the default if the key is not set.<wbr/></p></span>
   20964                   </li>
   20965                   <li>
   20966                     <span class="entry_type_enum_name">SOLID_COLOR</span>
   20967                     <span class="entry_type_enum_notes"><p>Each pixel in <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> is replaced by its
   20968 respective color channel provided in
   20969 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
   20970 <p>For example:</p>
   20971 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
   20972 </code></pre>
   20973 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
   20974 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
   20975 </code></pre>
   20976 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
   20977 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
   20978                   </li>
   20979                   <li>
   20980                     <span class="entry_type_enum_name">COLOR_BARS</span>
   20981                     <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
   20982 <p>The vertical bars (left-to-right) are as follows:</p>
   20983 <ul>
   20984 <li>100% white</li>
   20985 <li>yellow</li>
   20986 <li>cyan</li>
   20987 <li>green</li>
   20988 <li>magenta</li>
   20989 <li>red</li>
   20990 <li>blue</li>
   20991 <li>black</li>
   20992 </ul>
   20993 <p>In general the image would look like the following:</p>
   20994 <pre><code>W Y C G M R B K
   20995 W Y C G M R B K
   20996 W Y C G M R B K
   20997 W Y C G M R B K
   20998 W Y C G M R B K
   20999 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
   21000 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
   21001 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
   21002 
   21003 (B = Blue,<wbr/> K = Black)
   21004 </code></pre>
   21005 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
   21006 When this is not possible,<wbr/> the bar size should be rounded
   21007 down to the nearest integer and the pattern can repeat
   21008 on the right side.<wbr/></p>
   21009 <p>Each bar's height must always take up the full sensor
   21010 pixel array height.<wbr/></p>
   21011 <p>Each pixel in this test pattern must be set to either
   21012 0% intensity or 100% intensity.<wbr/></p></span>
   21013                   </li>
   21014                   <li>
   21015                     <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span>
   21016                     <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
   21017 each bar should start at its specified color at the top,<wbr/>
   21018 and fade to gray at the bottom.<wbr/></p>
   21019 <p>Furthermore each bar is further subdivided into a left and
   21020 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
   21021 and the right half should have a quantized gradient.<wbr/></p>
   21022 <p>In particular,<wbr/> the right half's should consist of blocks of the
   21023 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
   21024 <p>The least significant bits in the quantized gradient should
   21025 be copied from the most significant bits of the smooth gradient.<wbr/></p>
   21026 <p>The height of each bar should always be a multiple of 128.<wbr/>
   21027 When this is not the case,<wbr/> the pattern should repeat at the bottom
   21028 of the image.<wbr/></p></span>
   21029                   </li>
   21030                   <li>
   21031                     <span class="entry_type_enum_name">PN9</span>
   21032                     <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
   21033 generated from a PN9 512-bit sequence (typically implemented
   21034 in hardware with a linear feedback shift register).<wbr/></p>
   21035 <p>The generator should be reset at the beginning of each frame,<wbr/>
   21036 and thus each subsequent raw frame with this test pattern should
   21037 be exactly the same as the last.<wbr/></p></span>
   21038                   </li>
   21039                   <li>
   21040                     <span class="entry_type_enum_name">CUSTOM1</span>
   21041                     <span class="entry_type_enum_value">256</span>
   21042                     <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
   21043 available only on this camera device are at least this numeric
   21044 value.<wbr/></p>
   21045 <p>All of the custom test patterns will be static
   21046 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
   21047                   </li>
   21048                 </ul>
   21049 
   21050             </td> <!-- entry_type -->
   21051 
   21052             <td class="entry_description">
   21053               <p>When enabled,<wbr/> the sensor sends a test pattern instead of
   21054 doing a real exposure from the camera.<wbr/></p>
   21055             </td>
   21056 
   21057             <td class="entry_units">
   21058             </td>
   21059 
   21060             <td class="entry_range">
   21061               <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
   21062             </td>
   21063 
   21064             <td class="entry_tags">
   21065             </td>
   21066 
   21067           </tr>
   21068           <tr class="entries_header">
   21069             <th class="th_details" colspan="5">Details</th>
   21070           </tr>
   21071           <tr class="entry_cont">
   21072             <td class="entry_details" colspan="5">
   21073               <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
   21074 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
   21075 work as normal.<wbr/></p>
   21076 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
   21077 occur (and that the test pattern remain unmodified,<wbr/> since the flash
   21078 would not actually affect it).<wbr/></p>
   21079 <p>Defaults to OFF.<wbr/></p>
   21080             </td>
   21081           </tr>
   21082 
   21083           <tr class="entries_header">
   21084             <th class="th_details" colspan="5">HAL Implementation Details</th>
   21085           </tr>
   21086           <tr class="entry_cont">
   21087             <td class="entry_details" colspan="5">
   21088               <p>All test patterns are specified in the Bayer domain.<wbr/></p>
   21089 <p>The HAL may choose to substitute test patterns from the sensor
   21090 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
   21091 indistinguishable to the ISP whether the data came from the
   21092 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
   21093             </td>
   21094           </tr>
   21095 
   21096           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   21097            <!-- end of entry -->
   21098         
   21099                 
   21100           <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew">
   21101             <td class="entry_name
   21102              " rowspan="5">
   21103               android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew
   21104             </td>
   21105             <td class="entry_type">
   21106                 <span class="entry_type_name">int64</span>
   21107 
   21108               <span class="entry_type_visibility"> [public]</span>
   21109 
   21110 
   21111               <span class="entry_type_hwlevel">[limited] </span>
   21112 
   21113 
   21114 
   21115 
   21116             </td> <!-- entry_type -->
   21117 
   21118             <td class="entry_description">
   21119               <p>Duration between the start of first row exposure
   21120 and the start of last row exposure.<wbr/></p>
   21121             </td>
   21122 
   21123             <td class="entry_units">
   21124               Nanoseconds
   21125             </td>
   21126 
   21127             <td class="entry_range">
   21128               <p>&gt;= 0 and &lt;
   21129 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p>
   21130             </td>
   21131 
   21132             <td class="entry_tags">
   21133               <ul class="entry_tags">
   21134                   <li><a href="#tag_V1">V1</a></li>
   21135               </ul>
   21136             </td>
   21137 
   21138           </tr>
   21139           <tr class="entries_header">
   21140             <th class="th_details" colspan="5">Details</th>
   21141           </tr>
   21142           <tr class="entry_cont">
   21143             <td class="entry_details" colspan="5">
   21144               <p>This is the exposure time skew between the first and last
   21145 row exposure start times.<wbr/> The first row and the last row are
   21146 the first and last rows inside of the
   21147 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
   21148 <p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent
   21149 to the frame readout time.<wbr/></p>
   21150             </td>
   21151           </tr>
   21152 
   21153           <tr class="entries_header">
   21154             <th class="th_details" colspan="5">HAL Implementation Details</th>
   21155           </tr>
   21156           <tr class="entry_cont">
   21157             <td class="entry_details" colspan="5">
   21158               <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin
   21159 exposure at the same time.<wbr/></p>
   21160             </td>
   21161           </tr>
   21162 
   21163           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   21164            <!-- end of entry -->
   21165         
   21166         
   21167 
   21168       <!-- end of kind -->
   21169       </tbody>
   21170 
   21171   <!-- end of section -->
   21172   <tr><td colspan="6" id="section_shading" class="section">shading</td></tr>
   21173 
   21174 
   21175       <tr><td colspan="6" class="kind">controls</td></tr>
   21176 
   21177       <thead class="entries_header">
   21178         <tr>
   21179           <th class="th_name">Property Name</th>
   21180           <th class="th_type">Type</th>
   21181           <th class="th_description">Description</th>
   21182           <th class="th_units">Units</th>
   21183           <th class="th_range">Range</th>
   21184           <th class="th_tags">Tags</th>
   21185         </tr>
   21186       </thead>
   21187 
   21188       <tbody>
   21189 
   21190         
   21191 
   21192         
   21193 
   21194         
   21195 
   21196         
   21197 
   21198                 
   21199           <tr class="entry" id="controls_android.shading.mode">
   21200             <td class="entry_name
   21201              " rowspan="3">
   21202               android.<wbr/>shading.<wbr/>mode
   21203             </td>
   21204             <td class="entry_type">
   21205                 <span class="entry_type_name entry_type_name_enum">byte</span>
   21206 
   21207               <span class="entry_type_visibility"> [public]</span>
   21208 
   21209 
   21210               <span class="entry_type_hwlevel">[full] </span>
   21211 
   21212 
   21213 
   21214                 <ul class="entry_type_enum">
   21215                   <li>
   21216                     <span class="entry_type_enum_name">OFF</span>
   21217                     <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
   21218                   </li>
   21219                   <li>
   21220                     <span class="entry_type_enum_name">FAST</span>
   21221                     <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
   21222 frame rate relative to sensor raw output</p></span>
   21223                   </li>
   21224                   <li>
   21225                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
   21226                     <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
   21227 cost of possibly reduced frame rate.<wbr/></p></span>
   21228                   </li>
   21229                 </ul>
   21230 
   21231             </td> <!-- entry_type -->
   21232 
   21233             <td class="entry_description">
   21234               <p>Quality of lens shading correction applied
   21235 to the image data.<wbr/></p>
   21236             </td>
   21237 
   21238             <td class="entry_units">
   21239             </td>
   21240 
   21241             <td class="entry_range">
   21242               <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
   21243             </td>
   21244 
   21245             <td class="entry_tags">
   21246             </td>
   21247 
   21248           </tr>
   21249           <tr class="entries_header">
   21250             <th class="th_details" colspan="5">Details</th>
   21251           </tr>
   21252           <tr class="entry_cont">
   21253             <td class="entry_details" colspan="5">
   21254               <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
   21255 camera device,<wbr/> and an identity lens shading map data will be provided
   21256 if <code><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a> == ON</code>.<wbr/> For example,<wbr/> for lens
   21257 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
   21258 the output <a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map</a> for this case will be an identity
   21259 map shown below:</p>
   21260 <pre><code>[ 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/>  1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/>
   21261  1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/>  1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/>
   21262  1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/>  1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/>
   21263  1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/>  1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/>
   21264  1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/>  1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/>
   21265  1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/>  1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0 ]
   21266 </code></pre>
   21267 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
   21268 device.<wbr/> Applications can request lens shading map data by setting
   21269 <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a> to ON,<wbr/> and then the camera device will provide lens
   21270 shading map data in <a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map</a>; the returned shading map
   21271 data will be the one applied by the camera device for this capture request.<wbr/></p>
   21272 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
   21273 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
   21274 AWB are in AUTO modes(<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF and <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> <code>!=</code>
   21275 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
   21276 to be converged before using the returned shading map data.<wbr/></p>
   21277             </td>
   21278           </tr>
   21279 
   21280 
   21281           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   21282            <!-- end of entry -->
   21283         
   21284                 
   21285           <tr class="entry" id="controls_android.shading.strength">
   21286             <td class="entry_name
   21287              " rowspan="1">
   21288               android.<wbr/>shading.<wbr/>strength
   21289             </td>
   21290             <td class="entry_type">
   21291                 <span class="entry_type_name">byte</span>
   21292 
   21293               <span class="entry_type_visibility"> [system]</span>
   21294 
   21295 
   21296 
   21297 
   21298 
   21299 
   21300             </td> <!-- entry_type -->
   21301 
   21302             <td class="entry_description">
   21303               <p>Control the amount of shading correction
   21304 applied to the images</p>
   21305             </td>
   21306 
   21307             <td class="entry_units">
   21308               unitless: 1-10; 10 is full shading
   21309           compensation
   21310             </td>
   21311 
   21312             <td class="entry_range">
   21313             </td>
   21314 
   21315             <td class="entry_tags">
   21316               <ul class="entry_tags">
   21317                   <li><a href="#tag_FUTURE">FUTURE</a></li>
   21318               </ul>
   21319             </td>
   21320 
   21321           </tr>
   21322 
   21323 
   21324           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   21325            <!-- end of entry -->
   21326         
   21327         
   21328 
   21329       <!-- end of kind -->
   21330       </tbody>
   21331       <tr><td colspan="6" class="kind">dynamic</td></tr>
   21332 
   21333       <thead class="entries_header">
   21334         <tr>
   21335           <th class="th_name">Property Name</th>
   21336           <th class="th_type">Type</th>
   21337           <th class="th_description">Description</th>
   21338           <th class="th_units">Units</th>
   21339           <th class="th_range">Range</th>
   21340           <th class="th_tags">Tags</th>
   21341         </tr>
   21342       </thead>
   21343 
   21344       <tbody>
   21345 
   21346         
   21347 
   21348         
   21349 
   21350         
   21351 
   21352         
   21353 
   21354                 
   21355           <tr class="entry" id="dynamic_android.shading.mode">
   21356             <td class="entry_name
   21357              " rowspan="3">
   21358               android.<wbr/>shading.<wbr/>mode
   21359             </td>
   21360             <td class="entry_type">
   21361                 <span class="entry_type_name entry_type_name_enum">byte</span>
   21362 
   21363               <span class="entry_type_visibility"> [public]</span>
   21364 
   21365 
   21366               <span class="entry_type_hwlevel">[full] </span>
   21367 
   21368 
   21369 
   21370                 <ul class="entry_type_enum">
   21371                   <li>
   21372                     <span class="entry_type_enum_name">OFF</span>
   21373                     <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
   21374                   </li>
   21375                   <li>
   21376                     <span class="entry_type_enum_name">FAST</span>
   21377                     <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
   21378 frame rate relative to sensor raw output</p></span>
   21379                   </li>
   21380                   <li>
   21381                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
   21382                     <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
   21383 cost of possibly reduced frame rate.<wbr/></p></span>
   21384                   </li>
   21385                 </ul>
   21386 
   21387             </td> <!-- entry_type -->
   21388 
   21389             <td class="entry_description">
   21390               <p>Quality of lens shading correction applied
   21391 to the image data.<wbr/></p>
   21392             </td>
   21393 
   21394             <td class="entry_units">
   21395             </td>
   21396 
   21397             <td class="entry_range">
   21398               <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
   21399             </td>
   21400 
   21401             <td class="entry_tags">
   21402             </td>
   21403 
   21404           </tr>
   21405           <tr class="entries_header">
   21406             <th class="th_details" colspan="5">Details</th>
   21407           </tr>
   21408           <tr class="entry_cont">
   21409             <td class="entry_details" colspan="5">
   21410               <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
   21411 camera device,<wbr/> and an identity lens shading map data will be provided
   21412 if <code><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a> == ON</code>.<wbr/> For example,<wbr/> for lens
   21413 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
   21414 the output <a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map</a> for this case will be an identity
   21415 map shown below:</p>
   21416 <pre><code>[ 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/>  1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/>
   21417  1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/>  1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/>
   21418  1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/>  1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/>
   21419  1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/>  1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/>
   21420  1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/>  1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/>
   21421  1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/>  1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0 ]
   21422 </code></pre>
   21423 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
   21424 device.<wbr/> Applications can request lens shading map data by setting
   21425 <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a> to ON,<wbr/> and then the camera device will provide lens
   21426 shading map data in <a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map</a>; the returned shading map
   21427 data will be the one applied by the camera device for this capture request.<wbr/></p>
   21428 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
   21429 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
   21430 AWB are in AUTO modes(<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF and <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> <code>!=</code>
   21431 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
   21432 to be converged before using the returned shading map data.<wbr/></p>
   21433             </td>
   21434           </tr>
   21435 
   21436 
   21437           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   21438            <!-- end of entry -->
   21439         
   21440         
   21441 
   21442       <!-- end of kind -->
   21443       </tbody>
   21444       <tr><td colspan="6" class="kind">static</td></tr>
   21445 
   21446       <thead class="entries_header">
   21447         <tr>
   21448           <th class="th_name">Property Name</th>
   21449           <th class="th_type">Type</th>
   21450           <th class="th_description">Description</th>
   21451           <th class="th_units">Units</th>
   21452           <th class="th_range">Range</th>
   21453           <th class="th_tags">Tags</th>
   21454         </tr>
   21455       </thead>
   21456 
   21457       <tbody>
   21458 
   21459         
   21460 
   21461         
   21462 
   21463         
   21464 
   21465         
   21466 
   21467                 
   21468           <tr class="entry" id="static_android.shading.availableModes">
   21469             <td class="entry_name
   21470              " rowspan="5">
   21471               android.<wbr/>shading.<wbr/>available<wbr/>Modes
   21472             </td>
   21473             <td class="entry_type">
   21474                 <span class="entry_type_name">byte</span>
   21475                 <span class="entry_type_container">x</span>
   21476 
   21477                 <span class="entry_type_array">
   21478                   n
   21479                 </span>
   21480               <span class="entry_type_visibility"> [public as enumList]</span>
   21481 
   21482 
   21483               <span class="entry_type_hwlevel">[legacy] </span>
   21484 
   21485 
   21486                 <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div>
   21487 
   21488 
   21489             </td> <!-- entry_type -->
   21490 
   21491             <td class="entry_description">
   21492               <p>List of lens shading modes for <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a> that are supported by this camera device.<wbr/></p>
   21493             </td>
   21494 
   21495             <td class="entry_units">
   21496             </td>
   21497 
   21498             <td class="entry_range">
   21499               <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p>
   21500             </td>
   21501 
   21502             <td class="entry_tags">
   21503             </td>
   21504 
   21505           </tr>
   21506           <tr class="entries_header">
   21507             <th class="th_details" colspan="5">Details</th>
   21508           </tr>
   21509           <tr class="entry_cont">
   21510             <td class="entry_details" colspan="5">
   21511               <p>This list contains lens shading modes that can be set for the camera device.<wbr/>
   21512 Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always
   21513 list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/>
   21514 LEGACY devices will always only support FAST mode.<wbr/></p>
   21515             </td>
   21516           </tr>
   21517 
   21518           <tr class="entries_header">
   21519             <th class="th_details" colspan="5">HAL Implementation Details</th>
   21520           </tr>
   21521           <tr class="entry_cont">
   21522             <td class="entry_details" colspan="5">
   21523               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is
   21524 available on the camera device,<wbr/> but the underlying implementation can be the same for
   21525 both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not
   21526 slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
   21527             </td>
   21528           </tr>
   21529 
   21530           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   21531            <!-- end of entry -->
   21532         
   21533         
   21534 
   21535       <!-- end of kind -->
   21536       </tbody>
   21537 
   21538   <!-- end of section -->
   21539   <tr><td colspan="6" id="section_statistics" class="section">statistics</td></tr>
   21540 
   21541 
   21542       <tr><td colspan="6" class="kind">controls</td></tr>
   21543 
   21544       <thead class="entries_header">
   21545         <tr>
   21546           <th class="th_name">Property Name</th>
   21547           <th class="th_type">Type</th>
   21548           <th class="th_description">Description</th>
   21549           <th class="th_units">Units</th>
   21550           <th class="th_range">Range</th>
   21551           <th class="th_tags">Tags</th>
   21552         </tr>
   21553       </thead>
   21554 
   21555       <tbody>
   21556 
   21557         
   21558 
   21559         
   21560 
   21561         
   21562 
   21563         
   21564 
   21565                 
   21566           <tr class="entry" id="controls_android.statistics.faceDetectMode">
   21567             <td class="entry_name
   21568              " rowspan="5">
   21569               android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
   21570             </td>
   21571             <td class="entry_type">
   21572                 <span class="entry_type_name entry_type_name_enum">byte</span>
   21573 
   21574               <span class="entry_type_visibility"> [public]</span>
   21575 
   21576 
   21577               <span class="entry_type_hwlevel">[legacy] </span>
   21578 
   21579 
   21580 
   21581                 <ul class="entry_type_enum">
   21582                   <li>
   21583                     <span class="entry_type_enum_name">OFF</span>
   21584                     <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
   21585 results.<wbr/></p></span>
   21586                   </li>
   21587                   <li>
   21588                     <span class="entry_type_enum_name">SIMPLE</span>
   21589                     <span class="entry_type_enum_optional">[optional]</span>
   21590                     <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
   21591                   </li>
   21592                   <li>
   21593                     <span class="entry_type_enum_name">FULL</span>
   21594                     <span class="entry_type_enum_optional">[optional]</span>
   21595                     <span class="entry_type_enum_notes"><p>Return all face
   21596 metadata.<wbr/></p>
   21597 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
   21598                   </li>
   21599                 </ul>
   21600 
   21601             </td> <!-- entry_type -->
   21602 
   21603             <td class="entry_description">
   21604               <p>Operating mode for the face detector
   21605 unit.<wbr/></p>
   21606             </td>
   21607 
   21608             <td class="entry_units">
   21609             </td>
   21610 
   21611             <td class="entry_range">
   21612               <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
   21613             </td>
   21614 
   21615             <td class="entry_tags">
   21616               <ul class="entry_tags">
   21617                   <li><a href="#tag_BC">BC</a></li>
   21618               </ul>
   21619             </td>
   21620 
   21621           </tr>
   21622           <tr class="entries_header">
   21623             <th class="th_details" colspan="5">Details</th>
   21624           </tr>
   21625           <tr class="entry_cont">
   21626             <td class="entry_details" colspan="5">
   21627               <p>Whether face detection is enabled,<wbr/> and whether it
   21628 should output just the basic fields or the full set of
   21629 fields.<wbr/></p>
   21630             </td>
   21631           </tr>
   21632 
   21633           <tr class="entries_header">
   21634             <th class="th_details" colspan="5">HAL Implementation Details</th>
   21635           </tr>
   21636           <tr class="entry_cont">
   21637             <td class="entry_details" colspan="5">
   21638               <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
   21639 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
   21640 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
   21641 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
   21642             </td>
   21643           </tr>
   21644 
   21645           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   21646            <!-- end of entry -->
   21647         
   21648                 
   21649           <tr class="entry" id="controls_android.statistics.histogramMode">
   21650             <td class="entry_name
   21651              " rowspan="1">
   21652               android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
   21653             </td>
   21654             <td class="entry_type">
   21655                 <span class="entry_type_name entry_type_name_enum">byte</span>
   21656 
   21657               <span class="entry_type_visibility"> [system as boolean]</span>
   21658 
   21659 
   21660 
   21661 
   21662 
   21663                 <ul class="entry_type_enum">
   21664                   <li>
   21665                     <span class="entry_type_enum_name">OFF</span>
   21666                   </li>
   21667                   <li>
   21668                     <span class="entry_type_enum_name">ON</span>
   21669                   </li>
   21670                 </ul>
   21671 
   21672             </td> <!-- entry_type -->
   21673 
   21674             <td class="entry_description">
   21675               <p>Operating mode for histogram
   21676 generation</p>
   21677             </td>
   21678 
   21679             <td class="entry_units">
   21680             </td>
   21681 
   21682             <td class="entry_range">
   21683             </td>
   21684 
   21685             <td class="entry_tags">
   21686               <ul class="entry_tags">
   21687                   <li><a href="#tag_FUTURE">FUTURE</a></li>
   21688               </ul>
   21689             </td>
   21690 
   21691           </tr>
   21692 
   21693 
   21694           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   21695            <!-- end of entry -->
   21696         
   21697                 
   21698           <tr class="entry" id="controls_android.statistics.sharpnessMapMode">
   21699             <td class="entry_name
   21700              " rowspan="1">
   21701               android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
   21702             </td>
   21703             <td class="entry_type">
   21704                 <span class="entry_type_name entry_type_name_enum">byte</span>
   21705 
   21706               <span class="entry_type_visibility"> [system as boolean]</span>
   21707 
   21708 
   21709 
   21710 
   21711 
   21712                 <ul class="entry_type_enum">
   21713                   <li>
   21714                     <span class="entry_type_enum_name">OFF</span>
   21715                   </li>
   21716                   <li>
   21717                     <span class="entry_type_enum_name">ON</span>
   21718                   </li>
   21719                 </ul>
   21720 
   21721             </td> <!-- entry_type -->
   21722 
   21723             <td class="entry_description">
   21724               <p>Operating mode for sharpness map
   21725 generation</p>
   21726             </td>
   21727 
   21728             <td class="entry_units">
   21729             </td>
   21730 
   21731             <td class="entry_range">
   21732             </td>
   21733 
   21734             <td class="entry_tags">
   21735               <ul class="entry_tags">
   21736                   <li><a href="#tag_FUTURE">FUTURE</a></li>
   21737               </ul>
   21738             </td>
   21739 
   21740           </tr>
   21741 
   21742 
   21743           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   21744            <!-- end of entry -->
   21745         
   21746                 
   21747           <tr class="entry" id="controls_android.statistics.hotPixelMapMode">
   21748             <td class="entry_name
   21749              " rowspan="3">
   21750               android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
   21751             </td>
   21752             <td class="entry_type">
   21753                 <span class="entry_type_name entry_type_name_enum">byte</span>
   21754 
   21755               <span class="entry_type_visibility"> [public as boolean]</span>
   21756 
   21757 
   21758 
   21759 
   21760 
   21761                 <ul class="entry_type_enum">
   21762                   <li>
   21763                     <span class="entry_type_enum_name">OFF</span>
   21764                     <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
   21765                   </li>
   21766                   <li>
   21767                     <span class="entry_type_enum_name">ON</span>
   21768                     <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
   21769                   </li>
   21770                 </ul>
   21771 
   21772             </td> <!-- entry_type -->
   21773 
   21774             <td class="entry_description">
   21775               <p>Operating mode for hot pixel map generation.<wbr/></p>
   21776             </td>
   21777 
   21778             <td class="entry_units">
   21779             </td>
   21780 
   21781             <td class="entry_range">
   21782               <p><a href="#static_android.statistics.info.availableHotPixelMapModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes</a></p>
   21783             </td>
   21784 
   21785             <td class="entry_tags">
   21786               <ul class="entry_tags">
   21787                   <li><a href="#tag_V1">V1</a></li>
   21788                   <li><a href="#tag_RAW">RAW</a></li>
   21789               </ul>
   21790             </td>
   21791 
   21792           </tr>
   21793           <tr class="entries_header">
   21794             <th class="th_details" colspan="5">Details</th>
   21795           </tr>
   21796           <tr class="entry_cont">
   21797             <td class="entry_details" colspan="5">
   21798               <p>If set to <code>true</code>,<wbr/> a hot pixel map is returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/>
   21799 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
   21800             </td>
   21801           </tr>
   21802 
   21803 
   21804           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   21805            <!-- end of entry -->
   21806         
   21807                 
   21808           <tr class="entry" id="controls_android.statistics.lensShadingMapMode">
   21809             <td class="entry_name
   21810              " rowspan="3">
   21811               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
   21812             </td>
   21813             <td class="entry_type">
   21814                 <span class="entry_type_name entry_type_name_enum">byte</span>
   21815 
   21816               <span class="entry_type_visibility"> [public]</span>
   21817 
   21818 
   21819               <span class="entry_type_hwlevel">[full] </span>
   21820 
   21821 
   21822 
   21823                 <ul class="entry_type_enum">
   21824                   <li>
   21825                     <span class="entry_type_enum_name">OFF</span>
   21826                     <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
   21827                   </li>
   21828                   <li>
   21829                     <span class="entry_type_enum_name">ON</span>
   21830                     <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
   21831                   </li>
   21832                 </ul>
   21833 
   21834             </td> <!-- entry_type -->
   21835 
   21836             <td class="entry_description">
   21837               <p>Whether the camera device will output the lens
   21838 shading map in output result metadata.<wbr/></p>
   21839             </td>
   21840 
   21841             <td class="entry_units">
   21842             </td>
   21843 
   21844             <td class="entry_range">
   21845               <p><a href="#static_android.statistics.info.availableLensShadingMapModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes</a></p>
   21846             </td>
   21847 
   21848             <td class="entry_tags">
   21849               <ul class="entry_tags">
   21850                   <li><a href="#tag_RAW">RAW</a></li>
   21851               </ul>
   21852             </td>
   21853 
   21854           </tr>
   21855           <tr class="entries_header">
   21856             <th class="th_details" colspan="5">Details</th>
   21857           </tr>
   21858           <tr class="entry_cont">
   21859             <td class="entry_details" colspan="5">
   21860               <p>When set to ON,<wbr/>
   21861 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
   21862 the output result metadata.<wbr/></p>
   21863 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
   21864             </td>
   21865           </tr>
   21866 
   21867 
   21868           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   21869            <!-- end of entry -->
   21870         
   21871         
   21872 
   21873       <!-- end of kind -->
   21874       </tbody>
   21875       <tr><td colspan="6" class="kind">static</td></tr>
   21876 
   21877       <thead class="entries_header">
   21878         <tr>
   21879           <th class="th_name">Property Name</th>
   21880           <th class="th_type">Type</th>
   21881           <th class="th_description">Description</th>
   21882           <th class="th_units">Units</th>
   21883           <th class="th_range">Range</th>
   21884           <th class="th_tags">Tags</th>
   21885         </tr>
   21886       </thead>
   21887 
   21888       <tbody>
   21889 
   21890         
   21891 
   21892         
   21893 
   21894         
   21895 
   21896         
   21897                 
   21898             
   21899 
   21900                 
   21901           <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes">
   21902             <td class="entry_name
   21903              " rowspan="3">
   21904               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes
   21905             </td>
   21906             <td class="entry_type">
   21907                 <span class="entry_type_name">byte</span>
   21908                 <span class="entry_type_container">x</span>
   21909 
   21910                 <span class="entry_type_array">
   21911                   n
   21912                 </span>
   21913               <span class="entry_type_visibility"> [public as enumList]</span>
   21914 
   21915 
   21916               <span class="entry_type_hwlevel">[legacy] </span>
   21917 
   21918 
   21919                 <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div>
   21920 
   21921 
   21922             </td> <!-- entry_type -->
   21923 
   21924             <td class="entry_description">
   21925               <p>List of face detection modes for <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> that are
   21926 supported by this camera device.<wbr/></p>
   21927             </td>
   21928 
   21929             <td class="entry_units">
   21930             </td>
   21931 
   21932             <td class="entry_range">
   21933               <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p>
   21934             </td>
   21935 
   21936             <td class="entry_tags">
   21937             </td>
   21938 
   21939           </tr>
   21940           <tr class="entries_header">
   21941             <th class="th_details" colspan="5">Details</th>
   21942           </tr>
   21943           <tr class="entry_cont">
   21944             <td class="entry_details" colspan="5">
   21945               <p>OFF is always supported.<wbr/></p>
   21946             </td>
   21947           </tr>
   21948 
   21949 
   21950           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   21951            <!-- end of entry -->
   21952         
   21953                 
   21954           <tr class="entry" id="static_android.statistics.info.histogramBucketCount">
   21955             <td class="entry_name
   21956              " rowspan="1">
   21957               android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count
   21958             </td>
   21959             <td class="entry_type">
   21960                 <span class="entry_type_name">int32</span>
   21961 
   21962               <span class="entry_type_visibility"> [system]</span>
   21963 
   21964 
   21965 
   21966 
   21967 
   21968 
   21969             </td> <!-- entry_type -->
   21970 
   21971             <td class="entry_description">
   21972               <p>Number of histogram buckets
   21973 supported</p>
   21974             </td>
   21975 
   21976             <td class="entry_units">
   21977             </td>
   21978 
   21979             <td class="entry_range">
   21980               <p>&gt;= 64</p>
   21981             </td>
   21982 
   21983             <td class="entry_tags">
   21984               <ul class="entry_tags">
   21985                   <li><a href="#tag_FUTURE">FUTURE</a></li>
   21986               </ul>
   21987             </td>
   21988 
   21989           </tr>
   21990 
   21991 
   21992           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   21993            <!-- end of entry -->
   21994         
   21995                 
   21996           <tr class="entry" id="static_android.statistics.info.maxFaceCount">
   21997             <td class="entry_name
   21998              " rowspan="1">
   21999               android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count
   22000             </td>
   22001             <td class="entry_type">
   22002                 <span class="entry_type_name">int32</span>
   22003 
   22004               <span class="entry_type_visibility"> [public]</span>
   22005 
   22006 
   22007               <span class="entry_type_hwlevel">[legacy] </span>
   22008 
   22009 
   22010 
   22011 
   22012             </td> <!-- entry_type -->
   22013 
   22014             <td class="entry_description">
   22015               <p>The maximum number of simultaneously detectable
   22016 faces.<wbr/></p>
   22017             </td>
   22018 
   22019             <td class="entry_units">
   22020             </td>
   22021 
   22022             <td class="entry_range">
   22023               <p>0 for cameras without available face detection; otherwise:
   22024 <code>&gt;=4</code> for LIMITED or FULL hwlevel devices or
   22025 <code>&gt;0</code> for LEGACY devices.<wbr/></p>
   22026             </td>
   22027 
   22028             <td class="entry_tags">
   22029               <ul class="entry_tags">
   22030                   <li><a href="#tag_BC">BC</a></li>
   22031               </ul>
   22032             </td>
   22033 
   22034           </tr>
   22035 
   22036 
   22037           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   22038            <!-- end of entry -->
   22039         
   22040                 
   22041           <tr class="entry" id="static_android.statistics.info.maxHistogramCount">
   22042             <td class="entry_name
   22043              " rowspan="1">
   22044               android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count
   22045             </td>
   22046             <td class="entry_type">
   22047                 <span class="entry_type_name">int32</span>
   22048 
   22049               <span class="entry_type_visibility"> [system]</span>
   22050 
   22051 
   22052 
   22053 
   22054 
   22055 
   22056             </td> <!-- entry_type -->
   22057 
   22058             <td class="entry_description">
   22059               <p>Maximum value possible for a histogram
   22060 bucket</p>
   22061             </td>
   22062 
   22063             <td class="entry_units">
   22064             </td>
   22065 
   22066             <td class="entry_range">
   22067             </td>
   22068 
   22069             <td class="entry_tags">
   22070               <ul class="entry_tags">
   22071                   <li><a href="#tag_FUTURE">FUTURE</a></li>
   22072               </ul>
   22073             </td>
   22074 
   22075           </tr>
   22076 
   22077 
   22078           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   22079            <!-- end of entry -->
   22080         
   22081                 
   22082           <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue">
   22083             <td class="entry_name
   22084              " rowspan="1">
   22085               android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value
   22086             </td>
   22087             <td class="entry_type">
   22088                 <span class="entry_type_name">int32</span>
   22089 
   22090               <span class="entry_type_visibility"> [system]</span>
   22091 
   22092 
   22093 
   22094 
   22095 
   22096 
   22097             </td> <!-- entry_type -->
   22098 
   22099             <td class="entry_description">
   22100               <p>Maximum value possible for a sharpness map
   22101 region.<wbr/></p>
   22102             </td>
   22103 
   22104             <td class="entry_units">
   22105             </td>
   22106 
   22107             <td class="entry_range">
   22108             </td>
   22109 
   22110             <td class="entry_tags">
   22111               <ul class="entry_tags">
   22112                   <li><a href="#tag_FUTURE">FUTURE</a></li>
   22113               </ul>
   22114             </td>
   22115 
   22116           </tr>
   22117 
   22118 
   22119           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   22120            <!-- end of entry -->
   22121         
   22122                 
   22123           <tr class="entry" id="static_android.statistics.info.sharpnessMapSize">
   22124             <td class="entry_name
   22125              " rowspan="1">
   22126               android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size
   22127             </td>
   22128             <td class="entry_type">
   22129                 <span class="entry_type_name">int32</span>
   22130                 <span class="entry_type_container">x</span>
   22131 
   22132                 <span class="entry_type_array">
   22133                   2
   22134                 </span>
   22135               <span class="entry_type_visibility"> [system as size]</span>
   22136 
   22137 
   22138 
   22139 
   22140                 <div class="entry_type_notes">width x height</div>
   22141 
   22142 
   22143             </td> <!-- entry_type -->
   22144 
   22145             <td class="entry_description">
   22146               <p>Dimensions of the sharpness
   22147 map</p>
   22148             </td>
   22149 
   22150             <td class="entry_units">
   22151             </td>
   22152 
   22153             <td class="entry_range">
   22154               <p>Must be at least 32 x 32</p>
   22155             </td>
   22156 
   22157             <td class="entry_tags">
   22158               <ul class="entry_tags">
   22159                   <li><a href="#tag_FUTURE">FUTURE</a></li>
   22160               </ul>
   22161             </td>
   22162 
   22163           </tr>
   22164 
   22165 
   22166           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   22167            <!-- end of entry -->
   22168         
   22169                 
   22170           <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes">
   22171             <td class="entry_name
   22172              " rowspan="3">
   22173               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes
   22174             </td>
   22175             <td class="entry_type">
   22176                 <span class="entry_type_name">byte</span>
   22177                 <span class="entry_type_container">x</span>
   22178 
   22179                 <span class="entry_type_array">
   22180                   n
   22181                 </span>
   22182               <span class="entry_type_visibility"> [public as boolean]</span>
   22183 
   22184 
   22185 
   22186 
   22187                 <div class="entry_type_notes">list of enums</div>
   22188 
   22189 
   22190             </td> <!-- entry_type -->
   22191 
   22192             <td class="entry_description">
   22193               <p>List of hot pixel map output modes for <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a> that are
   22194 supported by this camera device.<wbr/></p>
   22195             </td>
   22196 
   22197             <td class="entry_units">
   22198             </td>
   22199 
   22200             <td class="entry_range">
   22201               <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p>
   22202             </td>
   22203 
   22204             <td class="entry_tags">
   22205               <ul class="entry_tags">
   22206                   <li><a href="#tag_V1">V1</a></li>
   22207                   <li><a href="#tag_RAW">RAW</a></li>
   22208               </ul>
   22209             </td>
   22210 
   22211           </tr>
   22212           <tr class="entries_header">
   22213             <th class="th_details" colspan="5">Details</th>
   22214           </tr>
   22215           <tr class="entry_cont">
   22216             <td class="entry_details" colspan="5">
   22217               <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only
   22218 <code>false</code>.<wbr/></p>
   22219 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
   22220             </td>
   22221           </tr>
   22222 
   22223 
   22224           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   22225            <!-- end of entry -->
   22226         
   22227                 
   22228           <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes">
   22229             <td class="entry_name
   22230              " rowspan="3">
   22231               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes
   22232             </td>
   22233             <td class="entry_type">
   22234                 <span class="entry_type_name">byte</span>
   22235                 <span class="entry_type_container">x</span>
   22236 
   22237                 <span class="entry_type_array">
   22238                   n
   22239                 </span>
   22240               <span class="entry_type_visibility"> [public as enumList]</span>
   22241 
   22242 
   22243 
   22244 
   22245                 <div class="entry_type_notes">list of enums</div>
   22246 
   22247 
   22248             </td> <!-- entry_type -->
   22249 
   22250             <td class="entry_description">
   22251               <p>List of lens shading map output modes for <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a> that
   22252 are supported by this camera device.<wbr/></p>
   22253             </td>
   22254 
   22255             <td class="entry_units">
   22256             </td>
   22257 
   22258             <td class="entry_range">
   22259               <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p>
   22260             </td>
   22261 
   22262             <td class="entry_tags">
   22263             </td>
   22264 
   22265           </tr>
   22266           <tr class="entries_header">
   22267             <th class="th_details" colspan="5">Details</th>
   22268           </tr>
   22269           <tr class="entry_cont">
   22270             <td class="entry_details" colspan="5">
   22271               <p>If no lens shading map output is available for this camera device,<wbr/> this key will
   22272 contain only OFF.<wbr/></p>
   22273 <p>ON is always supported on devices with the RAW capability.<wbr/>
   22274 LEGACY mode devices will always only support OFF.<wbr/></p>
   22275             </td>
   22276           </tr>
   22277 
   22278 
   22279           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   22280            <!-- end of entry -->
   22281         
   22282         
   22283         
   22284 
   22285         
   22286 
   22287       <!-- end of kind -->
   22288       </tbody>
   22289       <tr><td colspan="6" class="kind">dynamic</td></tr>
   22290 
   22291       <thead class="entries_header">
   22292         <tr>
   22293           <th class="th_name">Property Name</th>
   22294           <th class="th_type">Type</th>
   22295           <th class="th_description">Description</th>
   22296           <th class="th_units">Units</th>
   22297           <th class="th_range">Range</th>
   22298           <th class="th_tags">Tags</th>
   22299         </tr>
   22300       </thead>
   22301 
   22302       <tbody>
   22303 
   22304         
   22305 
   22306         
   22307 
   22308         
   22309 
   22310         
   22311 
   22312                 
   22313           <tr class="entry" id="dynamic_android.statistics.faceDetectMode">
   22314             <td class="entry_name
   22315              " rowspan="5">
   22316               android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
   22317             </td>
   22318             <td class="entry_type">
   22319                 <span class="entry_type_name entry_type_name_enum">byte</span>
   22320 
   22321               <span class="entry_type_visibility"> [public]</span>
   22322 
   22323 
   22324               <span class="entry_type_hwlevel">[legacy] </span>
   22325 
   22326 
   22327 
   22328                 <ul class="entry_type_enum">
   22329                   <li>
   22330                     <span class="entry_type_enum_name">OFF</span>
   22331                     <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
   22332 results.<wbr/></p></span>
   22333                   </li>
   22334                   <li>
   22335                     <span class="entry_type_enum_name">SIMPLE</span>
   22336                     <span class="entry_type_enum_optional">[optional]</span>
   22337                     <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
   22338                   </li>
   22339                   <li>
   22340                     <span class="entry_type_enum_name">FULL</span>
   22341                     <span class="entry_type_enum_optional">[optional]</span>
   22342                     <span class="entry_type_enum_notes"><p>Return all face
   22343 metadata.<wbr/></p>
   22344 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
   22345                   </li>
   22346                 </ul>
   22347 
   22348             </td> <!-- entry_type -->
   22349 
   22350             <td class="entry_description">
   22351               <p>Operating mode for the face detector
   22352 unit.<wbr/></p>
   22353             </td>
   22354 
   22355             <td class="entry_units">
   22356             </td>
   22357 
   22358             <td class="entry_range">
   22359               <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
   22360             </td>
   22361 
   22362             <td class="entry_tags">
   22363               <ul class="entry_tags">
   22364                   <li><a href="#tag_BC">BC</a></li>
   22365               </ul>
   22366             </td>
   22367 
   22368           </tr>
   22369           <tr class="entries_header">
   22370             <th class="th_details" colspan="5">Details</th>
   22371           </tr>
   22372           <tr class="entry_cont">
   22373             <td class="entry_details" colspan="5">
   22374               <p>Whether face detection is enabled,<wbr/> and whether it
   22375 should output just the basic fields or the full set of
   22376 fields.<wbr/></p>
   22377             </td>
   22378           </tr>
   22379 
   22380           <tr class="entries_header">
   22381             <th class="th_details" colspan="5">HAL Implementation Details</th>
   22382           </tr>
   22383           <tr class="entry_cont">
   22384             <td class="entry_details" colspan="5">
   22385               <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
   22386 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
   22387 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
   22388 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
   22389             </td>
   22390           </tr>
   22391 
   22392           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   22393            <!-- end of entry -->
   22394         
   22395                 
   22396           <tr class="entry" id="dynamic_android.statistics.faceIds">
   22397             <td class="entry_name
   22398              " rowspan="3">
   22399               android.<wbr/>statistics.<wbr/>face<wbr/>Ids
   22400             </td>
   22401             <td class="entry_type">
   22402                 <span class="entry_type_name">int32</span>
   22403                 <span class="entry_type_container">x</span>
   22404 
   22405                 <span class="entry_type_array">
   22406                   n
   22407                 </span>
   22408               <span class="entry_type_visibility"> [hidden]</span>
   22409 
   22410 
   22411               <span class="entry_type_hwlevel">[legacy] </span>
   22412 
   22413 
   22414 
   22415 
   22416             </td> <!-- entry_type -->
   22417 
   22418             <td class="entry_description">
   22419               <p>List of unique IDs for detected faces.<wbr/></p>
   22420             </td>
   22421 
   22422             <td class="entry_units">
   22423             </td>
   22424 
   22425             <td class="entry_range">
   22426             </td>
   22427 
   22428             <td class="entry_tags">
   22429               <ul class="entry_tags">
   22430                   <li><a href="#tag_BC">BC</a></li>
   22431               </ul>
   22432             </td>
   22433 
   22434           </tr>
   22435           <tr class="entries_header">
   22436             <th class="th_details" colspan="5">Details</th>
   22437           </tr>
   22438           <tr class="entry_cont">
   22439             <td class="entry_details" colspan="5">
   22440               <p>Each detected face is given a unique ID that is valid for as long as the face is visible
   22441 to the camera device.<wbr/>  A face that leaves the field of view and later returns may be
   22442 assigned a new ID.<wbr/></p>
   22443 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
   22444             </td>
   22445           </tr>
   22446 
   22447 
   22448           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   22449            <!-- end of entry -->
   22450         
   22451                 
   22452           <tr class="entry" id="dynamic_android.statistics.faceLandmarks">
   22453             <td class="entry_name
   22454              " rowspan="3">
   22455               android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks
   22456             </td>
   22457             <td class="entry_type">
   22458                 <span class="entry_type_name">int32</span>
   22459                 <span class="entry_type_container">x</span>
   22460 
   22461                 <span class="entry_type_array">
   22462                   n x 6
   22463                 </span>
   22464               <span class="entry_type_visibility"> [hidden]</span>
   22465 
   22466 
   22467               <span class="entry_type_hwlevel">[legacy] </span>
   22468 
   22469 
   22470                 <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div>
   22471 
   22472 
   22473             </td> <!-- entry_type -->
   22474 
   22475             <td class="entry_description">
   22476               <p>List of landmarks for detected
   22477 faces.<wbr/></p>
   22478             </td>
   22479 
   22480             <td class="entry_units">
   22481             </td>
   22482 
   22483             <td class="entry_range">
   22484             </td>
   22485 
   22486             <td class="entry_tags">
   22487               <ul class="entry_tags">
   22488                   <li><a href="#tag_BC">BC</a></li>
   22489               </ul>
   22490             </td>
   22491 
   22492           </tr>
   22493           <tr class="entries_header">
   22494             <th class="th_details" colspan="5">Details</th>
   22495           </tr>
   22496           <tr class="entry_cont">
   22497             <td class="entry_details" colspan="5">
   22498               <p>The coordinate system is that of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
   22499 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
   22500 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
   22501             </td>
   22502           </tr>
   22503 
   22504 
   22505           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   22506            <!-- end of entry -->
   22507         
   22508                 
   22509           <tr class="entry" id="dynamic_android.statistics.faceRectangles">
   22510             <td class="entry_name
   22511              " rowspan="3">
   22512               android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles
   22513             </td>
   22514             <td class="entry_type">
   22515                 <span class="entry_type_name">int32</span>
   22516                 <span class="entry_type_container">x</span>
   22517 
   22518                 <span class="entry_type_array">
   22519                   n x 4
   22520                 </span>
   22521               <span class="entry_type_visibility"> [hidden as rectangle]</span>
   22522 
   22523 
   22524               <span class="entry_type_hwlevel">[legacy] </span>
   22525 
   22526 
   22527                 <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div>
   22528 
   22529 
   22530             </td> <!-- entry_type -->
   22531 
   22532             <td class="entry_description">
   22533               <p>List of the bounding rectangles for detected
   22534 faces.<wbr/></p>
   22535             </td>
   22536 
   22537             <td class="entry_units">
   22538             </td>
   22539 
   22540             <td class="entry_range">
   22541             </td>
   22542 
   22543             <td class="entry_tags">
   22544               <ul class="entry_tags">
   22545                   <li><a href="#tag_BC">BC</a></li>
   22546               </ul>
   22547             </td>
   22548 
   22549           </tr>
   22550           <tr class="entries_header">
   22551             <th class="th_details" colspan="5">Details</th>
   22552           </tr>
   22553           <tr class="entry_cont">
   22554             <td class="entry_details" colspan="5">
   22555               <p>The coordinate system is that of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
   22556 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
   22557 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p>
   22558             </td>
   22559           </tr>
   22560 
   22561 
   22562           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   22563            <!-- end of entry -->
   22564         
   22565                 
   22566           <tr class="entry" id="dynamic_android.statistics.faceScores">
   22567             <td class="entry_name
   22568              " rowspan="5">
   22569               android.<wbr/>statistics.<wbr/>face<wbr/>Scores
   22570             </td>
   22571             <td class="entry_type">
   22572                 <span class="entry_type_name">byte</span>
   22573                 <span class="entry_type_container">x</span>
   22574 
   22575                 <span class="entry_type_array">
   22576                   n
   22577                 </span>
   22578               <span class="entry_type_visibility"> [hidden]</span>
   22579 
   22580 
   22581               <span class="entry_type_hwlevel">[legacy] </span>
   22582 
   22583 
   22584 
   22585 
   22586             </td> <!-- entry_type -->
   22587 
   22588             <td class="entry_description">
   22589               <p>List of the face confidence scores for
   22590 detected faces</p>
   22591             </td>
   22592 
   22593             <td class="entry_units">
   22594             </td>
   22595 
   22596             <td class="entry_range">
   22597               <p>1-100</p>
   22598             </td>
   22599 
   22600             <td class="entry_tags">
   22601               <ul class="entry_tags">
   22602                   <li><a href="#tag_BC">BC</a></li>
   22603               </ul>
   22604             </td>
   22605 
   22606           </tr>
   22607           <tr class="entries_header">
   22608             <th class="th_details" colspan="5">Details</th>
   22609           </tr>
   22610           <tr class="entry_cont">
   22611             <td class="entry_details" colspan="5">
   22612               <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
   22613             </td>
   22614           </tr>
   22615 
   22616           <tr class="entries_header">
   22617             <th class="th_details" colspan="5">HAL Implementation Details</th>
   22618           </tr>
   22619           <tr class="entry_cont">
   22620             <td class="entry_details" colspan="5">
   22621               <p>The value should be meaningful (for example,<wbr/> setting 100 at
   22622 all times is illegal).<wbr/></p>
   22623             </td>
   22624           </tr>
   22625 
   22626           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   22627            <!-- end of entry -->
   22628         
   22629                 
   22630           <tr class="entry" id="dynamic_android.statistics.faces">
   22631             <td class="entry_name
   22632              " rowspan="3">
   22633               android.<wbr/>statistics.<wbr/>faces
   22634             </td>
   22635             <td class="entry_type">
   22636                 <span class="entry_type_name">int32</span>
   22637                 <span class="entry_type_container">x</span>
   22638 
   22639                 <span class="entry_type_array">
   22640                   n
   22641                 </span>
   22642               <span class="entry_type_visibility"> [public as face]</span>
   22643 
   22644               <span class="entry_type_synthetic">[synthetic] </span>
   22645 
   22646               <span class="entry_type_hwlevel">[legacy] </span>
   22647 
   22648 
   22649 
   22650 
   22651             </td> <!-- entry_type -->
   22652 
   22653             <td class="entry_description">
   22654               <p>List of the faces detected through camera face detection
   22655 in this capture.<wbr/></p>
   22656             </td>
   22657 
   22658             <td class="entry_units">
   22659             </td>
   22660 
   22661             <td class="entry_range">
   22662             </td>
   22663 
   22664             <td class="entry_tags">
   22665             </td>
   22666 
   22667           </tr>
   22668           <tr class="entries_header">
   22669             <th class="th_details" colspan="5">Details</th>
   22670           </tr>
   22671           <tr class="entry_cont">
   22672             <td class="entry_details" colspan="5">
   22673               <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> <code>!=</code> OFF.<wbr/></p>
   22674             </td>
   22675           </tr>
   22676 
   22677 
   22678           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   22679            <!-- end of entry -->
   22680         
   22681                 
   22682           <tr class="entry" id="dynamic_android.statistics.histogram">
   22683             <td class="entry_name
   22684              " rowspan="3">
   22685               android.<wbr/>statistics.<wbr/>histogram
   22686             </td>
   22687             <td class="entry_type">
   22688                 <span class="entry_type_name">int32</span>
   22689                 <span class="entry_type_container">x</span>
   22690 
   22691                 <span class="entry_type_array">
   22692                   n x 3
   22693                 </span>
   22694               <span class="entry_type_visibility"> [system]</span>
   22695 
   22696 
   22697 
   22698 
   22699                 <div class="entry_type_notes">count of pixels for each color channel that fall into each histogram bucket,<wbr/> scaled to be between 0 and maxHistogramCount</div>
   22700 
   22701 
   22702             </td> <!-- entry_type -->
   22703 
   22704             <td class="entry_description">
   22705               <p>A 3-channel histogram based on the raw
   22706 sensor data</p>
   22707             </td>
   22708 
   22709             <td class="entry_units">
   22710             </td>
   22711 
   22712             <td class="entry_range">
   22713             </td>
   22714 
   22715             <td class="entry_tags">
   22716               <ul class="entry_tags">
   22717                   <li><a href="#tag_FUTURE">FUTURE</a></li>
   22718               </ul>
   22719             </td>
   22720 
   22721           </tr>
   22722           <tr class="entries_header">
   22723             <th class="th_details" colspan="5">Details</th>
   22724           </tr>
   22725           <tr class="entry_cont">
   22726             <td class="entry_details" colspan="5">
   22727               <p>The k'th bucket (0-based) covers the input range
   22728 (with w = <a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>) of [ k * w/<wbr/>N,<wbr/>
   22729 (k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is
   22730 supported,<wbr/> all channels should have the same data</p>
   22731             </td>
   22732           </tr>
   22733 
   22734 
   22735           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   22736            <!-- end of entry -->
   22737         
   22738                 
   22739           <tr class="entry" id="dynamic_android.statistics.histogramMode">
   22740             <td class="entry_name
   22741              " rowspan="1">
   22742               android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
   22743             </td>
   22744             <td class="entry_type">
   22745                 <span class="entry_type_name entry_type_name_enum">byte</span>
   22746 
   22747               <span class="entry_type_visibility"> [system as boolean]</span>
   22748 
   22749 
   22750 
   22751 
   22752 
   22753                 <ul class="entry_type_enum">
   22754                   <li>
   22755                     <span class="entry_type_enum_name">OFF</span>
   22756                   </li>
   22757                   <li>
   22758                     <span class="entry_type_enum_name">ON</span>
   22759                   </li>
   22760                 </ul>
   22761 
   22762             </td> <!-- entry_type -->
   22763 
   22764             <td class="entry_description">
   22765               <p>Operating mode for histogram
   22766 generation</p>
   22767             </td>
   22768 
   22769             <td class="entry_units">
   22770             </td>
   22771 
   22772             <td class="entry_range">
   22773             </td>
   22774 
   22775             <td class="entry_tags">
   22776               <ul class="entry_tags">
   22777                   <li><a href="#tag_FUTURE">FUTURE</a></li>
   22778               </ul>
   22779             </td>
   22780 
   22781           </tr>
   22782 
   22783 
   22784           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   22785            <!-- end of entry -->
   22786         
   22787                 
   22788           <tr class="entry" id="dynamic_android.statistics.sharpnessMap">
   22789             <td class="entry_name
   22790              " rowspan="3">
   22791               android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map
   22792             </td>
   22793             <td class="entry_type">
   22794                 <span class="entry_type_name">int32</span>
   22795                 <span class="entry_type_container">x</span>
   22796 
   22797                 <span class="entry_type_array">
   22798                   n x m x 3
   22799                 </span>
   22800               <span class="entry_type_visibility"> [system]</span>
   22801 
   22802 
   22803 
   22804 
   22805                 <div class="entry_type_notes">estimated sharpness for each region of the input image.<wbr/> Normalized to be between 0 and maxSharpnessMapValue.<wbr/> Higher values mean sharper (better focused)</div>
   22806 
   22807 
   22808             </td> <!-- entry_type -->
   22809 
   22810             <td class="entry_description">
   22811               <p>A 3-channel sharpness map,<wbr/> based on the raw
   22812 sensor data</p>
   22813             </td>
   22814 
   22815             <td class="entry_units">
   22816             </td>
   22817 
   22818             <td class="entry_range">
   22819             </td>
   22820 
   22821             <td class="entry_tags">
   22822               <ul class="entry_tags">
   22823                   <li><a href="#tag_FUTURE">FUTURE</a></li>
   22824               </ul>
   22825             </td>
   22826 
   22827           </tr>
   22828           <tr class="entries_header">
   22829             <th class="th_details" colspan="5">Details</th>
   22830           </tr>
   22831           <tr class="entry_cont">
   22832             <td class="entry_details" colspan="5">
   22833               <p>If only a monochrome sharpness map is supported,<wbr/>
   22834 all channels should have the same data</p>
   22835             </td>
   22836           </tr>
   22837 
   22838 
   22839           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   22840            <!-- end of entry -->
   22841         
   22842                 
   22843           <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode">
   22844             <td class="entry_name
   22845              " rowspan="1">
   22846               android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
   22847             </td>
   22848             <td class="entry_type">
   22849                 <span class="entry_type_name entry_type_name_enum">byte</span>
   22850 
   22851               <span class="entry_type_visibility"> [system as boolean]</span>
   22852 
   22853 
   22854 
   22855 
   22856 
   22857                 <ul class="entry_type_enum">
   22858                   <li>
   22859                     <span class="entry_type_enum_name">OFF</span>
   22860                   </li>
   22861                   <li>
   22862                     <span class="entry_type_enum_name">ON</span>
   22863                   </li>
   22864                 </ul>
   22865 
   22866             </td> <!-- entry_type -->
   22867 
   22868             <td class="entry_description">
   22869               <p>Operating mode for sharpness map
   22870 generation</p>
   22871             </td>
   22872 
   22873             <td class="entry_units">
   22874             </td>
   22875 
   22876             <td class="entry_range">
   22877             </td>
   22878 
   22879             <td class="entry_tags">
   22880               <ul class="entry_tags">
   22881                   <li><a href="#tag_FUTURE">FUTURE</a></li>
   22882               </ul>
   22883             </td>
   22884 
   22885           </tr>
   22886 
   22887 
   22888           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   22889            <!-- end of entry -->
   22890         
   22891                 
   22892           <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap">
   22893             <td class="entry_name
   22894              " rowspan="3">
   22895               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map
   22896             </td>
   22897             <td class="entry_type">
   22898                 <span class="entry_type_name">byte</span>
   22899 
   22900               <span class="entry_type_visibility"> [public as lensShadingMap]</span>
   22901 
   22902 
   22903               <span class="entry_type_hwlevel">[full] </span>
   22904 
   22905 
   22906 
   22907 
   22908             </td> <!-- entry_type -->
   22909 
   22910             <td class="entry_description">
   22911               <p>The shading map is a low-resolution floating-point map
   22912 that lists the coefficients used to correct for vignetting,<wbr/> for each
   22913 Bayer color channel.<wbr/></p>
   22914             </td>
   22915 
   22916             <td class="entry_units">
   22917             </td>
   22918 
   22919             <td class="entry_range">
   22920               <p>Each gain factor is &gt;= 1</p>
   22921             </td>
   22922 
   22923             <td class="entry_tags">
   22924             </td>
   22925 
   22926           </tr>
   22927           <tr class="entries_header">
   22928             <th class="th_details" colspan="5">Details</th>
   22929           </tr>
   22930           <tr class="entry_cont">
   22931             <td class="entry_details" colspan="5">
   22932               <p>The least shaded section of the image should have a gain factor
   22933 of 1; all other sections should have gains above 1.<wbr/></p>
   22934 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
   22935 must take into account the colorCorrection settings.<wbr/></p>
   22936 <p>The shading map is for the entire active pixel array,<wbr/> and is not
   22937 affected by the crop region specified in the request.<wbr/> Each shading map
   22938 entry is the value of the shading compensation map over a specific
   22939 pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
   22940 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
   22941 (x,<wbr/>y)  (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
   22942 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
   22943 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
   22944 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
   22945 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
   22946 The shading map is stored in a fully interleaved format.<wbr/></p>
   22947 <p>The shading map should have on the order of 30-40 rows and columns,<wbr/>
   22948 and must be smaller than 64x64.<wbr/></p>
   22949 <p>As an example,<wbr/> given a very small map defined as:</p>
   22950 <pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ]
   22951 values =
   22952 [ 1.<wbr/>3,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>15,<wbr/> 1.<wbr/>2,<wbr/>  1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>15,<wbr/> 1.<wbr/>2,<wbr/>
   22953     1.<wbr/>1,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/>  1.<wbr/>3,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/>
   22954   1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>25,<wbr/> 1.<wbr/>1,<wbr/>  1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>0,<wbr/>
   22955     1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/>  1.<wbr/>2,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>25,<wbr/> 1.<wbr/>2,<wbr/>
   22956   1.<wbr/>3,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>3,<wbr/>   1.<wbr/>2,<wbr/> 1.<wbr/>15,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>2,<wbr/>
   22957     1.<wbr/>2,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>2,<wbr/>  1.<wbr/>3,<wbr/> 1.<wbr/>15,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>3 ]
   22958 </code></pre>
   22959 <p>The low-resolution scaling map images for each channel are
   22960 (displayed using nearest-neighbor interpolation):</p>
   22961 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
   22962 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
   22963 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
   22964 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
   22965 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
   22966 image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p>
   22967 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
   22968             </td>
   22969           </tr>
   22970 
   22971 
   22972           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   22973            <!-- end of entry -->
   22974         
   22975                 
   22976           <tr class="entry" id="dynamic_android.statistics.lensShadingMap">
   22977             <td class="entry_name
   22978              " rowspan="5">
   22979               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map
   22980             </td>
   22981             <td class="entry_type">
   22982                 <span class="entry_type_name">float</span>
   22983                 <span class="entry_type_container">x</span>
   22984 
   22985                 <span class="entry_type_array">
   22986                   4 x n x m
   22987                 </span>
   22988               <span class="entry_type_visibility"> [hidden]</span>
   22989 
   22990 
   22991               <span class="entry_type_hwlevel">[full] </span>
   22992 
   22993 
   22994                 <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div>
   22995 
   22996 
   22997             </td> <!-- entry_type -->
   22998 
   22999             <td class="entry_description">
   23000               <p>The shading map is a low-resolution floating-point map
   23001 that lists the coefficients used to correct for vignetting,<wbr/> for each
   23002 Bayer color channel of RAW image data.<wbr/></p>
   23003             </td>
   23004 
   23005             <td class="entry_units">
   23006             </td>
   23007 
   23008             <td class="entry_range">
   23009               <p>Each gain factor is &gt;= 1</p>
   23010             </td>
   23011 
   23012             <td class="entry_tags">
   23013             </td>
   23014 
   23015           </tr>
   23016           <tr class="entries_header">
   23017             <th class="th_details" colspan="5">Details</th>
   23018           </tr>
   23019           <tr class="entry_cont">
   23020             <td class="entry_details" colspan="5">
   23021               <p>The least shaded section of the image should have a gain factor
   23022 of 1; all other sections should have gains above 1.<wbr/></p>
   23023 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
   23024 must take into account the colorCorrection settings.<wbr/></p>
   23025 <p>The shading map is for the entire active pixel array,<wbr/> and is not
   23026 affected by the crop region specified in the request.<wbr/> Each shading map
   23027 entry is the value of the shading compensation map over a specific
   23028 pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
   23029 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
   23030 (x,<wbr/>y)  (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
   23031 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
   23032 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
   23033 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
   23034 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
   23035 The shading map is stored in a fully interleaved format,<wbr/> and its size
   23036 is provided in the camera static metadata by <a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a>.<wbr/></p>
   23037 <p>The shading map should have on the order of 30-40 rows and columns,<wbr/>
   23038 and must be smaller than 64x64.<wbr/></p>
   23039 <p>As an example,<wbr/> given a very small map defined as:</p>
   23040 <pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
   23041 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
   23042 [ 1.<wbr/>3,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>15,<wbr/> 1.<wbr/>2,<wbr/>  1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>15,<wbr/> 1.<wbr/>2,<wbr/>
   23043     1.<wbr/>1,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/>  1.<wbr/>3,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/>
   23044   1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>25,<wbr/> 1.<wbr/>1,<wbr/>  1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>0,<wbr/>
   23045     1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/>  1.<wbr/>2,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>25,<wbr/> 1.<wbr/>2,<wbr/>
   23046   1.<wbr/>3,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>3,<wbr/>   1.<wbr/>2,<wbr/> 1.<wbr/>15,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>2,<wbr/>
   23047     1.<wbr/>2,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>2,<wbr/>  1.<wbr/>3,<wbr/> 1.<wbr/>15,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>3 ]
   23048 </code></pre>
   23049 <p>The low-resolution scaling map images for each channel are
   23050 (displayed using nearest-neighbor interpolation):</p>
   23051 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
   23052 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
   23053 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
   23054 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
   23055 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
   23056 image of a gray wall (using bicubic interpolation for visual quality)
   23057 as captured by the sensor gives:</p>
   23058 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
   23059 <p>Note that the RAW image data might be subject to lens shading
   23060 correction not reported on this map.<wbr/> Query
   23061 <a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> to see if RAW image data has subject
   23062 to lens shading correction.<wbr/> If <a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a>
   23063 is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading
   23064 correction.<wbr/> In the case full lens shading correction is applied to RAW
   23065 images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/>
   23066 In other words,<wbr/> the map reported in this key is the remaining lens shading
   23067 that needs to be applied on the RAW image to get images without lens shading
   23068 artifacts.<wbr/> See <a href="#static_android.request.maxNumOutputRaw">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw</a> for a list of RAW image
   23069 formats.<wbr/></p>
   23070             </td>
   23071           </tr>
   23072 
   23073           <tr class="entries_header">
   23074             <th class="th_details" colspan="5">HAL Implementation Details</th>
   23075           </tr>
   23076           <tr class="entry_cont">
   23077             <td class="entry_details" colspan="5">
   23078               <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/>
   23079 When AE and AWB are in AUTO modes
   23080 (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF and <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> <code>!=</code> OFF),<wbr/> the HAL
   23081 may have all the information it need to generate most accurate lens shading map.<wbr/> When
   23082 AE or AWB are in manual mode
   23083 (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> OFF or <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> <code>==</code> OFF),<wbr/> the shading map
   23084 may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid
   23085 generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with
   23086 the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p>
   23087             </td>
   23088           </tr>
   23089 
   23090           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   23091            <!-- end of entry -->
   23092         
   23093                 
   23094           <tr class="entry" id="dynamic_android.statistics.predictedColorGains">
   23095             <td class="entry_name
   23096                 entry_name_deprecated
   23097              " rowspan="3">
   23098               android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains
   23099             </td>
   23100             <td class="entry_type">
   23101                 <span class="entry_type_name">float</span>
   23102                 <span class="entry_type_container">x</span>
   23103 
   23104                 <span class="entry_type_array">
   23105                   4
   23106                 </span>
   23107               <span class="entry_type_visibility"> [hidden]</span>
   23108 
   23109 
   23110 
   23111               <span class="entry_type_deprecated">[deprecated] </span>
   23112 
   23113                 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
   23114 
   23115 
   23116             </td> <!-- entry_type -->
   23117 
   23118             <td class="entry_description">
   23119               <p>The best-fit color channel gains calculated
   23120 by the camera device's statistics units for the current output frame.<wbr/></p>
   23121             </td>
   23122 
   23123             <td class="entry_units">
   23124             </td>
   23125 
   23126             <td class="entry_range">
   23127               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
   23128             </td>
   23129 
   23130             <td class="entry_tags">
   23131             </td>
   23132 
   23133           </tr>
   23134           <tr class="entries_header">
   23135             <th class="th_details" colspan="5">Details</th>
   23136           </tr>
   23137           <tr class="entry_cont">
   23138             <td class="entry_details" colspan="5">
   23139               <p>This may be different than the gains used for this frame,<wbr/>
   23140 since statistics processing on data from a new frame
   23141 typically completes after the transform has already been
   23142 applied to that frame.<wbr/></p>
   23143 <p>The 4 channel gains are defined in Bayer domain,<wbr/>
   23144 see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p>
   23145 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
   23146 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
   23147             </td>
   23148           </tr>
   23149 
   23150 
   23151           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   23152            <!-- end of entry -->
   23153         
   23154                 
   23155           <tr class="entry" id="dynamic_android.statistics.predictedColorTransform">
   23156             <td class="entry_name
   23157                 entry_name_deprecated
   23158              " rowspan="3">
   23159               android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform
   23160             </td>
   23161             <td class="entry_type">
   23162                 <span class="entry_type_name">rational</span>
   23163                 <span class="entry_type_container">x</span>
   23164 
   23165                 <span class="entry_type_array">
   23166                   3 x 3
   23167                 </span>
   23168               <span class="entry_type_visibility"> [hidden]</span>
   23169 
   23170 
   23171 
   23172               <span class="entry_type_deprecated">[deprecated] </span>
   23173 
   23174                 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
   23175 
   23176 
   23177             </td> <!-- entry_type -->
   23178 
   23179             <td class="entry_description">
   23180               <p>The best-fit color transform matrix estimate
   23181 calculated by the camera device's statistics units for the current
   23182 output frame.<wbr/></p>
   23183             </td>
   23184 
   23185             <td class="entry_units">
   23186             </td>
   23187 
   23188             <td class="entry_range">
   23189               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
   23190             </td>
   23191 
   23192             <td class="entry_tags">
   23193             </td>
   23194 
   23195           </tr>
   23196           <tr class="entries_header">
   23197             <th class="th_details" colspan="5">Details</th>
   23198           </tr>
   23199           <tr class="entry_cont">
   23200             <td class="entry_details" colspan="5">
   23201               <p>The camera device will provide the estimate from its
   23202 statistics unit on the white balance transforms to use
   23203 for the next frame.<wbr/> These are the values the camera device believes
   23204 are the best fit for the current output frame.<wbr/> This may
   23205 be different than the transform used for this frame,<wbr/> since
   23206 statistics processing on data from a new frame typically
   23207 completes after the transform has already been applied to
   23208 that frame.<wbr/></p>
   23209 <p>These estimates must be provided for all frames,<wbr/> even if
   23210 capture settings and color transforms are set by the application.<wbr/></p>
   23211 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
   23212 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
   23213             </td>
   23214           </tr>
   23215 
   23216 
   23217           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   23218            <!-- end of entry -->
   23219         
   23220                 
   23221           <tr class="entry" id="dynamic_android.statistics.sceneFlicker">
   23222             <td class="entry_name
   23223              " rowspan="3">
   23224               android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker
   23225             </td>
   23226             <td class="entry_type">
   23227                 <span class="entry_type_name entry_type_name_enum">byte</span>
   23228 
   23229               <span class="entry_type_visibility"> [public]</span>
   23230 
   23231 
   23232               <span class="entry_type_hwlevel">[full] </span>
   23233 
   23234 
   23235 
   23236                 <ul class="entry_type_enum">
   23237                   <li>
   23238                     <span class="entry_type_enum_name">NONE</span>
   23239                     <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination
   23240 in the current scene.<wbr/></p></span>
   23241                   </li>
   23242                   <li>
   23243                     <span class="entry_type_enum_name">50HZ</span>
   23244                     <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz
   23245 in the current scene.<wbr/></p></span>
   23246                   </li>
   23247                   <li>
   23248                     <span class="entry_type_enum_name">60HZ</span>
   23249                     <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz
   23250 in the current scene.<wbr/></p></span>
   23251                   </li>
   23252                 </ul>
   23253 
   23254             </td> <!-- entry_type -->
   23255 
   23256             <td class="entry_description">
   23257               <p>The camera device estimated scene illumination lighting
   23258 frequency.<wbr/></p>
   23259             </td>
   23260 
   23261             <td class="entry_units">
   23262             </td>
   23263 
   23264             <td class="entry_range">
   23265             </td>
   23266 
   23267             <td class="entry_tags">
   23268             </td>
   23269 
   23270           </tr>
   23271           <tr class="entries_header">
   23272             <th class="th_details" colspan="5">Details</th>
   23273           </tr>
   23274           <tr class="entry_cont">
   23275             <td class="entry_details" colspan="5">
   23276               <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate
   23277 that depends on the local utility power standards.<wbr/> This flicker must be
   23278 accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/>
   23279 The camera device uses this entry to tell the application what the scene
   23280 illuminant frequency is.<wbr/></p>
   23281 <p>When manual exposure control is enabled
   23282 (<code><a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> == OFF</code> or <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> ==
   23283 OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform
   23284 antibanding,<wbr/> and the application can ensure it selects
   23285 exposure times that do not cause banding issues by looking
   23286 into this metadata field.<wbr/> See
   23287 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p>
   23288 <p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p>
   23289             </td>
   23290           </tr>
   23291 
   23292 
   23293           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   23294            <!-- end of entry -->
   23295         
   23296                 
   23297           <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode">
   23298             <td class="entry_name
   23299              " rowspan="3">
   23300               android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
   23301             </td>
   23302             <td class="entry_type">
   23303                 <span class="entry_type_name entry_type_name_enum">byte</span>
   23304 
   23305               <span class="entry_type_visibility"> [public as boolean]</span>
   23306 
   23307 
   23308 
   23309 
   23310 
   23311                 <ul class="entry_type_enum">
   23312                   <li>
   23313                     <span class="entry_type_enum_name">OFF</span>
   23314                     <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
   23315                   </li>
   23316                   <li>
   23317                     <span class="entry_type_enum_name">ON</span>
   23318                     <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
   23319                   </li>
   23320                 </ul>
   23321 
   23322             </td> <!-- entry_type -->
   23323 
   23324             <td class="entry_description">
   23325               <p>Operating mode for hot pixel map generation.<wbr/></p>
   23326             </td>
   23327 
   23328             <td class="entry_units">
   23329             </td>
   23330 
   23331             <td class="entry_range">
   23332               <p><a href="#static_android.statistics.info.availableHotPixelMapModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes</a></p>
   23333             </td>
   23334 
   23335             <td class="entry_tags">
   23336               <ul class="entry_tags">
   23337                   <li><a href="#tag_V1">V1</a></li>
   23338                   <li><a href="#tag_RAW">RAW</a></li>
   23339               </ul>
   23340             </td>
   23341 
   23342           </tr>
   23343           <tr class="entries_header">
   23344             <th class="th_details" colspan="5">Details</th>
   23345           </tr>
   23346           <tr class="entry_cont">
   23347             <td class="entry_details" colspan="5">
   23348               <p>If set to <code>true</code>,<wbr/> a hot pixel map is returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/>
   23349 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
   23350             </td>
   23351           </tr>
   23352 
   23353 
   23354           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   23355            <!-- end of entry -->
   23356         
   23357                 
   23358           <tr class="entry" id="dynamic_android.statistics.hotPixelMap">
   23359             <td class="entry_name
   23360              " rowspan="5">
   23361               android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map
   23362             </td>
   23363             <td class="entry_type">
   23364                 <span class="entry_type_name">int32</span>
   23365                 <span class="entry_type_container">x</span>
   23366 
   23367                 <span class="entry_type_array">
   23368                   2 x n
   23369                 </span>
   23370               <span class="entry_type_visibility"> [public as point]</span>
   23371 
   23372 
   23373 
   23374 
   23375                 <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div>
   23376 
   23377 
   23378             </td> <!-- entry_type -->
   23379 
   23380             <td class="entry_description">
   23381               <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p>
   23382             </td>
   23383 
   23384             <td class="entry_units">
   23385             </td>
   23386 
   23387             <td class="entry_range">
   23388               <p>n &lt;= number of pixels on the sensor.<wbr/>
   23389 The <code>(x,<wbr/> y)</code> coordinates must be bounded by
   23390 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
   23391             </td>
   23392 
   23393             <td class="entry_tags">
   23394               <ul class="entry_tags">
   23395                   <li><a href="#tag_V1">V1</a></li>
   23396                   <li><a href="#tag_RAW">RAW</a></li>
   23397               </ul>
   23398             </td>
   23399 
   23400           </tr>
   23401           <tr class="entries_header">
   23402             <th class="th_details" colspan="5">Details</th>
   23403           </tr>
   23404           <tr class="entry_cont">
   23405             <td class="entry_details" colspan="5">
   23406               <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and
   23407 <code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and
   23408 bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and
   23409 height dimensions are given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/>
   23410 This may include hot pixels that lie outside of the active array
   23411 bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
   23412             </td>
   23413           </tr>
   23414 
   23415           <tr class="entries_header">
   23416             <th class="th_details" colspan="5">HAL Implementation Details</th>
   23417           </tr>
   23418           <tr class="entry_cont">
   23419             <td class="entry_details" colspan="5">
   23420               <p>A hotpixel map contains the coordinates of pixels on the camera
   23421 sensor that do report valid values (usually due to defects in
   23422 the camera sensor).<wbr/> This includes pixels that are stuck at certain
   23423 values,<wbr/> or have a response that does not accuractly encode the
   23424 incoming light from the scene.<wbr/></p>
   23425 <p>To avoid performance issues,<wbr/> there should be significantly fewer hot
   23426 pixels than actual pixels on the camera sensor.<wbr/></p>
   23427             </td>
   23428           </tr>
   23429 
   23430           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   23431            <!-- end of entry -->
   23432         
   23433                 
   23434           <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode">
   23435             <td class="entry_name
   23436              " rowspan="3">
   23437               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
   23438             </td>
   23439             <td class="entry_type">
   23440                 <span class="entry_type_name entry_type_name_enum">byte</span>
   23441 
   23442               <span class="entry_type_visibility"> [public]</span>
   23443 
   23444 
   23445               <span class="entry_type_hwlevel">[full] </span>
   23446 
   23447 
   23448 
   23449                 <ul class="entry_type_enum">
   23450                   <li>
   23451                     <span class="entry_type_enum_name">OFF</span>
   23452                     <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
   23453                   </li>
   23454                   <li>
   23455                     <span class="entry_type_enum_name">ON</span>
   23456                     <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
   23457                   </li>
   23458                 </ul>
   23459 
   23460             </td> <!-- entry_type -->
   23461 
   23462             <td class="entry_description">
   23463               <p>Whether the camera device will output the lens
   23464 shading map in output result metadata.<wbr/></p>
   23465             </td>
   23466 
   23467             <td class="entry_units">
   23468             </td>
   23469 
   23470             <td class="entry_range">
   23471               <p><a href="#static_android.statistics.info.availableLensShadingMapModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes</a></p>
   23472             </td>
   23473 
   23474             <td class="entry_tags">
   23475               <ul class="entry_tags">
   23476                   <li><a href="#tag_RAW">RAW</a></li>
   23477               </ul>
   23478             </td>
   23479 
   23480           </tr>
   23481           <tr class="entries_header">
   23482             <th class="th_details" colspan="5">Details</th>
   23483           </tr>
   23484           <tr class="entry_cont">
   23485             <td class="entry_details" colspan="5">
   23486               <p>When set to ON,<wbr/>
   23487 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
   23488 the output result metadata.<wbr/></p>
   23489 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
   23490             </td>
   23491           </tr>
   23492 
   23493 
   23494           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   23495            <!-- end of entry -->
   23496         
   23497         
   23498 
   23499       <!-- end of kind -->
   23500       </tbody>
   23501 
   23502   <!-- end of section -->
   23503   <tr><td colspan="6" id="section_tonemap" class="section">tonemap</td></tr>
   23504 
   23505 
   23506       <tr><td colspan="6" class="kind">controls</td></tr>
   23507 
   23508       <thead class="entries_header">
   23509         <tr>
   23510           <th class="th_name">Property Name</th>
   23511           <th class="th_type">Type</th>
   23512           <th class="th_description">Description</th>
   23513           <th class="th_units">Units</th>
   23514           <th class="th_range">Range</th>
   23515           <th class="th_tags">Tags</th>
   23516         </tr>
   23517       </thead>
   23518 
   23519       <tbody>
   23520 
   23521         
   23522 
   23523         
   23524 
   23525         
   23526 
   23527         
   23528 
   23529                 
   23530           <tr class="entry" id="controls_android.tonemap.curveBlue">
   23531             <td class="entry_name
   23532              " rowspan="3">
   23533               android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
   23534             </td>
   23535             <td class="entry_type">
   23536                 <span class="entry_type_name">float</span>
   23537                 <span class="entry_type_container">x</span>
   23538 
   23539                 <span class="entry_type_array">
   23540                   n x 2
   23541                 </span>
   23542               <span class="entry_type_visibility"> [hidden]</span>
   23543 
   23544 
   23545               <span class="entry_type_hwlevel">[full] </span>
   23546 
   23547 
   23548                 <div class="entry_type_notes">1D array of float pairs (P_<wbr/>IN,<wbr/> P_<wbr/>OUT).<wbr/> The maximum number of pairs is specified by android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points.<wbr/></div>
   23549 
   23550 
   23551             </td> <!-- entry_type -->
   23552 
   23553             <td class="entry_description">
   23554               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
   23555 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
   23556 CONTRAST_<wbr/>CURVE.<wbr/></p>
   23557             </td>
   23558 
   23559             <td class="entry_units">
   23560             </td>
   23561 
   23562             <td class="entry_range">
   23563             </td>
   23564 
   23565             <td class="entry_tags">
   23566             </td>
   23567 
   23568           </tr>
   23569           <tr class="entries_header">
   23570             <th class="th_details" colspan="5">Details</th>
   23571           </tr>
   23572           <tr class="entry_cont">
   23573             <td class="entry_details" colspan="5">
   23574               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
   23575             </td>
   23576           </tr>
   23577 
   23578 
   23579           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   23580            <!-- end of entry -->
   23581         
   23582                 
   23583           <tr class="entry" id="controls_android.tonemap.curveGreen">
   23584             <td class="entry_name
   23585              " rowspan="3">
   23586               android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
   23587             </td>
   23588             <td class="entry_type">
   23589                 <span class="entry_type_name">float</span>
   23590                 <span class="entry_type_container">x</span>
   23591 
   23592                 <span class="entry_type_array">
   23593                   n x 2
   23594                 </span>
   23595               <span class="entry_type_visibility"> [hidden]</span>
   23596 
   23597 
   23598               <span class="entry_type_hwlevel">[full] </span>
   23599 
   23600 
   23601                 <div class="entry_type_notes">1D array of float pairs (P_<wbr/>IN,<wbr/> P_<wbr/>OUT).<wbr/> The maximum number of pairs is specified by android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points.<wbr/></div>
   23602 
   23603 
   23604             </td> <!-- entry_type -->
   23605 
   23606             <td class="entry_description">
   23607               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
   23608 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
   23609 CONTRAST_<wbr/>CURVE.<wbr/></p>
   23610             </td>
   23611 
   23612             <td class="entry_units">
   23613             </td>
   23614 
   23615             <td class="entry_range">
   23616             </td>
   23617 
   23618             <td class="entry_tags">
   23619             </td>
   23620 
   23621           </tr>
   23622           <tr class="entries_header">
   23623             <th class="th_details" colspan="5">Details</th>
   23624           </tr>
   23625           <tr class="entry_cont">
   23626             <td class="entry_details" colspan="5">
   23627               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
   23628             </td>
   23629           </tr>
   23630 
   23631 
   23632           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   23633            <!-- end of entry -->
   23634         
   23635                 
   23636           <tr class="entry" id="controls_android.tonemap.curveRed">
   23637             <td class="entry_name
   23638              " rowspan="5">
   23639               android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
   23640             </td>
   23641             <td class="entry_type">
   23642                 <span class="entry_type_name">float</span>
   23643                 <span class="entry_type_container">x</span>
   23644 
   23645                 <span class="entry_type_array">
   23646                   n x 2
   23647                 </span>
   23648               <span class="entry_type_visibility"> [hidden]</span>
   23649 
   23650 
   23651               <span class="entry_type_hwlevel">[full] </span>
   23652 
   23653 
   23654                 <div class="entry_type_notes">1D array of float pairs (P_<wbr/>IN,<wbr/> P_<wbr/>OUT).<wbr/> The maximum number of pairs is specified by android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points.<wbr/></div>
   23655 
   23656 
   23657             </td> <!-- entry_type -->
   23658 
   23659             <td class="entry_description">
   23660               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
   23661 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
   23662 CONTRAST_<wbr/>CURVE.<wbr/></p>
   23663             </td>
   23664 
   23665             <td class="entry_units">
   23666             </td>
   23667 
   23668             <td class="entry_range">
   23669               <p>0-1 on both input and output coordinates,<wbr/> normalized
   23670 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
   23671             </td>
   23672 
   23673             <td class="entry_tags">
   23674             </td>
   23675 
   23676           </tr>
   23677           <tr class="entries_header">
   23678             <th class="th_details" colspan="5">Details</th>
   23679           </tr>
   23680           <tr class="entry_cont">
   23681             <td class="entry_details" colspan="5">
   23682               <p>Each channel's curve is defined by an array of control points:</p>
   23683 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
   23684   [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
   23685 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
   23686 <p>These are sorted in order of increasing <code>Pin</code>; it is
   23687 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
   23688 define a complete mapping.<wbr/> For input values between control points,<wbr/>
   23689 the camera device must linearly interpolate between the control
   23690 points.<wbr/></p>
   23691 <p>Each curve can have an independent number of points,<wbr/> and the number
   23692 of points can be less than max (that is,<wbr/> the request doesn't have to
   23693 always provide a curve with number of points equivalent to
   23694 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
   23695 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
   23696 only specify the red channel and the precision is limited to 4
   23697 digits,<wbr/> for conciseness.<wbr/></p>
   23698 <p>Linear mapping:</p>
   23699 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 0,<wbr/> 0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0 ]
   23700 </code></pre>
   23701 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
   23702 <p>Invert mapping:</p>
   23703 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 0 ]
   23704 </code></pre>
   23705 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
   23706 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
   23707 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
   23708   0.<wbr/>0000,<wbr/> 0.<wbr/>0000,<wbr/> 0.<wbr/>0667,<wbr/> 0.<wbr/>2920,<wbr/> 0.<wbr/>1333,<wbr/> 0.<wbr/>4002,<wbr/> 0.<wbr/>2000,<wbr/> 0.<wbr/>4812,<wbr/>
   23709   0.<wbr/>2667,<wbr/> 0.<wbr/>5484,<wbr/> 0.<wbr/>3333,<wbr/> 0.<wbr/>6069,<wbr/> 0.<wbr/>4000,<wbr/> 0.<wbr/>6594,<wbr/> 0.<wbr/>4667,<wbr/> 0.<wbr/>7072,<wbr/>
   23710   0.<wbr/>5333,<wbr/> 0.<wbr/>7515,<wbr/> 0.<wbr/>6000,<wbr/> 0.<wbr/>7928,<wbr/> 0.<wbr/>6667,<wbr/> 0.<wbr/>8317,<wbr/> 0.<wbr/>7333,<wbr/> 0.<wbr/>8685,<wbr/>
   23711   0.<wbr/>8000,<wbr/> 0.<wbr/>9035,<wbr/> 0.<wbr/>8667,<wbr/> 0.<wbr/>9370,<wbr/> 0.<wbr/>9333,<wbr/> 0.<wbr/>9691,<wbr/> 1.<wbr/>0000,<wbr/> 1.<wbr/>0000 ]
   23712 </code></pre>
   23713 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
   23714 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
   23715 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
   23716   0.<wbr/>0000,<wbr/> 0.<wbr/>0000,<wbr/> 0.<wbr/>0667,<wbr/> 0.<wbr/>2864,<wbr/> 0.<wbr/>1333,<wbr/> 0.<wbr/>4007,<wbr/> 0.<wbr/>2000,<wbr/> 0.<wbr/>4845,<wbr/>
   23717   0.<wbr/>2667,<wbr/> 0.<wbr/>5532,<wbr/> 0.<wbr/>3333,<wbr/> 0.<wbr/>6125,<wbr/> 0.<wbr/>4000,<wbr/> 0.<wbr/>6652,<wbr/> 0.<wbr/>4667,<wbr/> 0.<wbr/>7130,<wbr/>
   23718   0.<wbr/>5333,<wbr/> 0.<wbr/>7569,<wbr/> 0.<wbr/>6000,<wbr/> 0.<wbr/>7977,<wbr/> 0.<wbr/>6667,<wbr/> 0.<wbr/>8360,<wbr/> 0.<wbr/>7333,<wbr/> 0.<wbr/>8721,<wbr/>
   23719   0.<wbr/>8000,<wbr/> 0.<wbr/>9063,<wbr/> 0.<wbr/>8667,<wbr/> 0.<wbr/>9389,<wbr/> 0.<wbr/>9333,<wbr/> 0.<wbr/>9701,<wbr/> 1.<wbr/>0000,<wbr/> 1.<wbr/>0000 ]
   23720 </code></pre>
   23721 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
   23722             </td>
   23723           </tr>
   23724 
   23725           <tr class="entries_header">
   23726             <th class="th_details" colspan="5">HAL Implementation Details</th>
   23727           </tr>
   23728           <tr class="entry_cont">
   23729             <td class="entry_details" colspan="5">
   23730               <p>For good quality of mapping,<wbr/> at least 128 control points are
   23731 preferred.<wbr/></p>
   23732 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
   23733 control points used as are available.<wbr/></p>
   23734             </td>
   23735           </tr>
   23736 
   23737           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   23738            <!-- end of entry -->
   23739         
   23740                 
   23741           <tr class="entry" id="controls_android.tonemap.curve">
   23742             <td class="entry_name
   23743              " rowspan="5">
   23744               android.<wbr/>tonemap.<wbr/>curve
   23745             </td>
   23746             <td class="entry_type">
   23747                 <span class="entry_type_name">float</span>
   23748 
   23749               <span class="entry_type_visibility"> [public as tonemapCurve]</span>
   23750 
   23751               <span class="entry_type_synthetic">[synthetic] </span>
   23752 
   23753               <span class="entry_type_hwlevel">[full] </span>
   23754 
   23755 
   23756 
   23757 
   23758             </td> <!-- entry_type -->
   23759 
   23760             <td class="entry_description">
   23761               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
   23762 is CONTRAST_<wbr/>CURVE.<wbr/></p>
   23763             </td>
   23764 
   23765             <td class="entry_units">
   23766             </td>
   23767 
   23768             <td class="entry_range">
   23769             </td>
   23770 
   23771             <td class="entry_tags">
   23772             </td>
   23773 
   23774           </tr>
   23775           <tr class="entries_header">
   23776             <th class="th_details" colspan="5">Details</th>
   23777           </tr>
   23778           <tr class="entry_cont">
   23779             <td class="entry_details" colspan="5">
   23780               <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
   23781 channels respectively.<wbr/> The following example uses the red channel as an
   23782 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
   23783 Each channel's curve is defined by an array of control points:</p>
   23784 <pre><code>curveRed =
   23785   [ P0(in,<wbr/> out),<wbr/> P1(in,<wbr/> out),<wbr/> P2(in,<wbr/> out),<wbr/> P3(in,<wbr/> out),<wbr/> ...,<wbr/> PN(in,<wbr/> out) ]
   23786 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
   23787 <p>These are sorted in order of increasing <code>Pin</code>; it is always
   23788 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
   23789 define a complete mapping.<wbr/> For input values between control points,<wbr/>
   23790 the camera device must linearly interpolate between the control
   23791 points.<wbr/></p>
   23792 <p>Each curve can have an independent number of points,<wbr/> and the number
   23793 of points can be less than max (that is,<wbr/> the request doesn't have to
   23794 always provide a curve with number of points equivalent to
   23795 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
   23796 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
   23797 only specify the red channel and the precision is limited to 4
   23798 digits,<wbr/> for conciseness.<wbr/></p>
   23799 <p>Linear mapping:</p>
   23800 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
   23801 </code></pre>
   23802 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
   23803 <p>Invert mapping:</p>
   23804 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
   23805 </code></pre>
   23806 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
   23807 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
   23808 <pre><code>curveRed = [
   23809   (0.<wbr/>0000,<wbr/> 0.<wbr/>0000),<wbr/> (0.<wbr/>0667,<wbr/> 0.<wbr/>2920),<wbr/> (0.<wbr/>1333,<wbr/> 0.<wbr/>4002),<wbr/> (0.<wbr/>2000,<wbr/> 0.<wbr/>4812),<wbr/>
   23810   (0.<wbr/>2667,<wbr/> 0.<wbr/>5484),<wbr/> (0.<wbr/>3333,<wbr/> 0.<wbr/>6069),<wbr/> (0.<wbr/>4000,<wbr/> 0.<wbr/>6594),<wbr/> (0.<wbr/>4667,<wbr/> 0.<wbr/>7072),<wbr/>
   23811   (0.<wbr/>5333,<wbr/> 0.<wbr/>7515),<wbr/> (0.<wbr/>6000,<wbr/> 0.<wbr/>7928),<wbr/> (0.<wbr/>6667,<wbr/> 0.<wbr/>8317),<wbr/> (0.<wbr/>7333,<wbr/> 0.<wbr/>8685),<wbr/>
   23812   (0.<wbr/>8000,<wbr/> 0.<wbr/>9035),<wbr/> (0.<wbr/>8667,<wbr/> 0.<wbr/>9370),<wbr/> (0.<wbr/>9333,<wbr/> 0.<wbr/>9691),<wbr/> (1.<wbr/>0000,<wbr/> 1.<wbr/>0000) ]
   23813 </code></pre>
   23814 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
   23815 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
   23816 <pre><code>curveRed = [
   23817   (0.<wbr/>0000,<wbr/> 0.<wbr/>0000),<wbr/> (0.<wbr/>0667,<wbr/> 0.<wbr/>2864),<wbr/> (0.<wbr/>1333,<wbr/> 0.<wbr/>4007),<wbr/> (0.<wbr/>2000,<wbr/> 0.<wbr/>4845),<wbr/>
   23818   (0.<wbr/>2667,<wbr/> 0.<wbr/>5532),<wbr/> (0.<wbr/>3333,<wbr/> 0.<wbr/>6125),<wbr/> (0.<wbr/>4000,<wbr/> 0.<wbr/>6652),<wbr/> (0.<wbr/>4667,<wbr/> 0.<wbr/>7130),<wbr/>
   23819   (0.<wbr/>5333,<wbr/> 0.<wbr/>7569),<wbr/> (0.<wbr/>6000,<wbr/> 0.<wbr/>7977),<wbr/> (0.<wbr/>6667,<wbr/> 0.<wbr/>8360),<wbr/> (0.<wbr/>7333,<wbr/> 0.<wbr/>8721),<wbr/>
   23820   (0.<wbr/>8000,<wbr/> 0.<wbr/>9063),<wbr/> (0.<wbr/>8667,<wbr/> 0.<wbr/>9389),<wbr/> (0.<wbr/>9333,<wbr/> 0.<wbr/>9701),<wbr/> (1.<wbr/>0000,<wbr/> 1.<wbr/>0000) ]
   23821 </code></pre>
   23822 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
   23823             </td>
   23824           </tr>
   23825 
   23826           <tr class="entries_header">
   23827             <th class="th_details" colspan="5">HAL Implementation Details</th>
   23828           </tr>
   23829           <tr class="entry_cont">
   23830             <td class="entry_details" colspan="5">
   23831               <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
   23832 curveBlue entries.<wbr/></p>
   23833             </td>
   23834           </tr>
   23835 
   23836           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   23837            <!-- end of entry -->
   23838         
   23839                 
   23840           <tr class="entry" id="controls_android.tonemap.mode">
   23841             <td class="entry_name
   23842              " rowspan="3">
   23843               android.<wbr/>tonemap.<wbr/>mode
   23844             </td>
   23845             <td class="entry_type">
   23846                 <span class="entry_type_name entry_type_name_enum">byte</span>
   23847 
   23848               <span class="entry_type_visibility"> [public]</span>
   23849 
   23850 
   23851               <span class="entry_type_hwlevel">[full] </span>
   23852 
   23853 
   23854 
   23855                 <ul class="entry_type_enum">
   23856                   <li>
   23857                     <span class="entry_type_enum_name">CONTRAST_CURVE</span>
   23858                     <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
   23859 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
   23860 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
   23861 for applying the tonemapping curve specified by
   23862 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
   23863 <p>Must not slow down frame rate relative to raw
   23864 sensor output.<wbr/></p></span>
   23865                   </li>
   23866                   <li>
   23867                     <span class="entry_type_enum_name">FAST</span>
   23868                     <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
   23869 reducing frame rate compared to raw sensor output.<wbr/></p></span>
   23870                   </li>
   23871                   <li>
   23872                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
   23873                     <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
   23874 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
   23875                   </li>
   23876                   <li>
   23877                     <span class="entry_type_enum_name">GAMMA_VALUE</span>
   23878                     <span class="entry_type_enum_notes"><p>Use the gamma value specified in <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a> to peform
   23879 tonemapping.<wbr/></p>
   23880 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
   23881 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
   23882 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
   23883                   </li>
   23884                   <li>
   23885                     <span class="entry_type_enum_name">PRESET_CURVE</span>
   23886                     <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
   23887 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
   23888 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
   23889 for applying the tonemapping curve specified by
   23890 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
   23891 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
   23892                   </li>
   23893                 </ul>
   23894 
   23895             </td> <!-- entry_type -->
   23896 
   23897             <td class="entry_description">
   23898               <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
   23899             </td>
   23900 
   23901             <td class="entry_units">
   23902             </td>
   23903 
   23904             <td class="entry_range">
   23905               <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
   23906             </td>
   23907 
   23908             <td class="entry_tags">
   23909             </td>
   23910 
   23911           </tr>
   23912           <tr class="entries_header">
   23913             <th class="th_details" colspan="5">Details</th>
   23914           </tr>
   23915           <tr class="entry_cont">
   23916             <td class="entry_details" colspan="5">
   23917               <p>When switching to an application-defined contrast curve by setting
   23918 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
   23919 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
   23920 mapping from input high-bit-depth pixel value to the output
   23921 low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
   23922 and output may change depending on the camera pipeline,<wbr/> the values
   23923 are specified by normalized floating-point numbers.<wbr/></p>
   23924 <p>More-complex color mapping operations such as 3D color look-up
   23925 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
   23926 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
   23927 CONTRAST_<wbr/>CURVE.<wbr/></p>
   23928 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
   23929 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
   23930 These values are always available,<wbr/> and as close as possible to the
   23931 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
   23932 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
   23933 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
   23934 roughly the same.<wbr/></p>
   23935             </td>
   23936           </tr>
   23937 
   23938 
   23939           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   23940            <!-- end of entry -->
   23941         
   23942                 
   23943           <tr class="entry" id="controls_android.tonemap.gamma">
   23944             <td class="entry_name
   23945              " rowspan="3">
   23946               android.<wbr/>tonemap.<wbr/>gamma
   23947             </td>
   23948             <td class="entry_type">
   23949                 <span class="entry_type_name">float</span>
   23950 
   23951               <span class="entry_type_visibility"> [public]</span>
   23952 
   23953 
   23954 
   23955 
   23956 
   23957 
   23958             </td> <!-- entry_type -->
   23959 
   23960             <td class="entry_description">
   23961               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
   23962 GAMMA_<wbr/>VALUE</p>
   23963             </td>
   23964 
   23965             <td class="entry_units">
   23966             </td>
   23967 
   23968             <td class="entry_range">
   23969             </td>
   23970 
   23971             <td class="entry_tags">
   23972             </td>
   23973 
   23974           </tr>
   23975           <tr class="entries_header">
   23976             <th class="th_details" colspan="5">Details</th>
   23977           </tr>
   23978           <tr class="entry_cont">
   23979             <td class="entry_details" colspan="5">
   23980               <p>The tonemap curve will be defined the following formula:
   23981 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
   23982 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
   23983 pow is the power function and gamma is the gamma value specified by this
   23984 key.<wbr/></p>
   23985 <p>The same curve will be applied to all color channels.<wbr/> The camera device
   23986 may clip the input gamma value to its supported range.<wbr/> The actual applied
   23987 value will be returned in capture result.<wbr/></p>
   23988 <p>The valid range of gamma value varies on different devices,<wbr/> but values
   23989 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
   23990             </td>
   23991           </tr>
   23992 
   23993 
   23994           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   23995            <!-- end of entry -->
   23996         
   23997                 
   23998           <tr class="entry" id="controls_android.tonemap.presetCurve">
   23999             <td class="entry_name
   24000              " rowspan="3">
   24001               android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
   24002             </td>
   24003             <td class="entry_type">
   24004                 <span class="entry_type_name entry_type_name_enum">byte</span>
   24005 
   24006               <span class="entry_type_visibility"> [public]</span>
   24007 
   24008 
   24009 
   24010 
   24011 
   24012                 <ul class="entry_type_enum">
   24013                   <li>
   24014                     <span class="entry_type_enum_name">SRGB</span>
   24015                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
   24016                   </li>
   24017                   <li>
   24018                     <span class="entry_type_enum_name">REC709</span>
   24019                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
   24020                   </li>
   24021                 </ul>
   24022 
   24023             </td> <!-- entry_type -->
   24024 
   24025             <td class="entry_description">
   24026               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
   24027 PRESET_<wbr/>CURVE</p>
   24028             </td>
   24029 
   24030             <td class="entry_units">
   24031             </td>
   24032 
   24033             <td class="entry_range">
   24034             </td>
   24035 
   24036             <td class="entry_tags">
   24037             </td>
   24038 
   24039           </tr>
   24040           <tr class="entries_header">
   24041             <th class="th_details" colspan="5">Details</th>
   24042           </tr>
   24043           <tr class="entry_cont">
   24044             <td class="entry_details" colspan="5">
   24045               <p>The tonemap curve will be defined by specified standard.<wbr/></p>
   24046 <p>sRGB (approximated by 16 control points):</p>
   24047 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
   24048 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
   24049 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
   24050 <p>Note that above figures show a 16 control points approximation of preset
   24051 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
   24052             </td>
   24053           </tr>
   24054 
   24055 
   24056           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   24057            <!-- end of entry -->
   24058         
   24059         
   24060 
   24061       <!-- end of kind -->
   24062       </tbody>
   24063       <tr><td colspan="6" class="kind">static</td></tr>
   24064 
   24065       <thead class="entries_header">
   24066         <tr>
   24067           <th class="th_name">Property Name</th>
   24068           <th class="th_type">Type</th>
   24069           <th class="th_description">Description</th>
   24070           <th class="th_units">Units</th>
   24071           <th class="th_range">Range</th>
   24072           <th class="th_tags">Tags</th>
   24073         </tr>
   24074       </thead>
   24075 
   24076       <tbody>
   24077 
   24078         
   24079 
   24080         
   24081 
   24082         
   24083 
   24084         
   24085 
   24086                 
   24087           <tr class="entry" id="static_android.tonemap.maxCurvePoints">
   24088             <td class="entry_name
   24089              " rowspan="5">
   24090               android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points
   24091             </td>
   24092             <td class="entry_type">
   24093                 <span class="entry_type_name">int32</span>
   24094 
   24095               <span class="entry_type_visibility"> [public]</span>
   24096 
   24097 
   24098               <span class="entry_type_hwlevel">[full] </span>
   24099 
   24100 
   24101 
   24102 
   24103             </td> <!-- entry_type -->
   24104 
   24105             <td class="entry_description">
   24106               <p>Maximum number of supported points in the
   24107 tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
   24108             </td>
   24109 
   24110             <td class="entry_units">
   24111             </td>
   24112 
   24113             <td class="entry_range">
   24114             </td>
   24115 
   24116             <td class="entry_tags">
   24117             </td>
   24118 
   24119           </tr>
   24120           <tr class="entries_header">
   24121             <th class="th_details" colspan="5">Details</th>
   24122           </tr>
   24123           <tr class="entry_cont">
   24124             <td class="entry_details" colspan="5">
   24125               <p>If the actual number of points provided by the application (in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>*) is
   24126 less than this maximum,<wbr/> the camera device will resample the curve to its internal
   24127 representation,<wbr/> using linear interpolation.<wbr/></p>
   24128 <p>The output curves in the result metadata may have a different number
   24129 of points than the input curves,<wbr/> and will represent the actual
   24130 hardware curves used as closely as possible when linearly interpolated.<wbr/></p>
   24131             </td>
   24132           </tr>
   24133 
   24134           <tr class="entries_header">
   24135             <th class="th_details" colspan="5">HAL Implementation Details</th>
   24136           </tr>
   24137           <tr class="entry_cont">
   24138             <td class="entry_details" colspan="5">
   24139               <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p>
   24140             </td>
   24141           </tr>
   24142 
   24143           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   24144            <!-- end of entry -->
   24145         
   24146                 
   24147           <tr class="entry" id="static_android.tonemap.availableToneMapModes">
   24148             <td class="entry_name
   24149              " rowspan="5">
   24150               android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes
   24151             </td>
   24152             <td class="entry_type">
   24153                 <span class="entry_type_name">byte</span>
   24154                 <span class="entry_type_container">x</span>
   24155 
   24156                 <span class="entry_type_array">
   24157                   n
   24158                 </span>
   24159               <span class="entry_type_visibility"> [public as enumList]</span>
   24160 
   24161 
   24162               <span class="entry_type_hwlevel">[full] </span>
   24163 
   24164 
   24165                 <div class="entry_type_notes">list of enums</div>
   24166 
   24167 
   24168             </td> <!-- entry_type -->
   24169 
   24170             <td class="entry_description">
   24171               <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera
   24172 device.<wbr/></p>
   24173             </td>
   24174 
   24175             <td class="entry_units">
   24176             </td>
   24177 
   24178             <td class="entry_range">
   24179               <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p>
   24180             </td>
   24181 
   24182             <td class="entry_tags">
   24183             </td>
   24184 
   24185           </tr>
   24186           <tr class="entries_header">
   24187             <th class="th_details" colspan="5">Details</th>
   24188           </tr>
   24189           <tr class="entry_cont">
   24190             <td class="entry_details" colspan="5">
   24191               <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain
   24192 at least one of below mode combinations:</p>
   24193 <ul>
   24194 <li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
   24195 <li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
   24196 </ul>
   24197 <p>This includes all FULL level devices.<wbr/></p>
   24198             </td>
   24199           </tr>
   24200 
   24201           <tr class="entries_header">
   24202             <th class="th_details" colspan="5">HAL Implementation Details</th>
   24203           </tr>
   24204           <tr class="entry_cont">
   24205             <td class="entry_details" colspan="5">
   24206               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available
   24207 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
   24208 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
   24209 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
   24210             </td>
   24211           </tr>
   24212 
   24213           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   24214            <!-- end of entry -->
   24215         
   24216         
   24217 
   24218       <!-- end of kind -->
   24219       </tbody>
   24220       <tr><td colspan="6" class="kind">dynamic</td></tr>
   24221 
   24222       <thead class="entries_header">
   24223         <tr>
   24224           <th class="th_name">Property Name</th>
   24225           <th class="th_type">Type</th>
   24226           <th class="th_description">Description</th>
   24227           <th class="th_units">Units</th>
   24228           <th class="th_range">Range</th>
   24229           <th class="th_tags">Tags</th>
   24230         </tr>
   24231       </thead>
   24232 
   24233       <tbody>
   24234 
   24235         
   24236 
   24237         
   24238 
   24239         
   24240 
   24241         
   24242 
   24243                 
   24244           <tr class="entry" id="dynamic_android.tonemap.curveBlue">
   24245             <td class="entry_name
   24246              " rowspan="3">
   24247               android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
   24248             </td>
   24249             <td class="entry_type">
   24250                 <span class="entry_type_name">float</span>
   24251                 <span class="entry_type_container">x</span>
   24252 
   24253                 <span class="entry_type_array">
   24254                   n x 2
   24255                 </span>
   24256               <span class="entry_type_visibility"> [hidden]</span>
   24257 
   24258 
   24259               <span class="entry_type_hwlevel">[full] </span>
   24260 
   24261 
   24262                 <div class="entry_type_notes">1D array of float pairs (P_<wbr/>IN,<wbr/> P_<wbr/>OUT).<wbr/> The maximum number of pairs is specified by android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points.<wbr/></div>
   24263 
   24264 
   24265             </td> <!-- entry_type -->
   24266 
   24267             <td class="entry_description">
   24268               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
   24269 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
   24270 CONTRAST_<wbr/>CURVE.<wbr/></p>
   24271             </td>
   24272 
   24273             <td class="entry_units">
   24274             </td>
   24275 
   24276             <td class="entry_range">
   24277             </td>
   24278 
   24279             <td class="entry_tags">
   24280             </td>
   24281 
   24282           </tr>
   24283           <tr class="entries_header">
   24284             <th class="th_details" colspan="5">Details</th>
   24285           </tr>
   24286           <tr class="entry_cont">
   24287             <td class="entry_details" colspan="5">
   24288               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
   24289             </td>
   24290           </tr>
   24291 
   24292 
   24293           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   24294            <!-- end of entry -->
   24295         
   24296                 
   24297           <tr class="entry" id="dynamic_android.tonemap.curveGreen">
   24298             <td class="entry_name
   24299              " rowspan="3">
   24300               android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
   24301             </td>
   24302             <td class="entry_type">
   24303                 <span class="entry_type_name">float</span>
   24304                 <span class="entry_type_container">x</span>
   24305 
   24306                 <span class="entry_type_array">
   24307                   n x 2
   24308                 </span>
   24309               <span class="entry_type_visibility"> [hidden]</span>
   24310 
   24311 
   24312               <span class="entry_type_hwlevel">[full] </span>
   24313 
   24314 
   24315                 <div class="entry_type_notes">1D array of float pairs (P_<wbr/>IN,<wbr/> P_<wbr/>OUT).<wbr/> The maximum number of pairs is specified by android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points.<wbr/></div>
   24316 
   24317 
   24318             </td> <!-- entry_type -->
   24319 
   24320             <td class="entry_description">
   24321               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
   24322 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
   24323 CONTRAST_<wbr/>CURVE.<wbr/></p>
   24324             </td>
   24325 
   24326             <td class="entry_units">
   24327             </td>
   24328 
   24329             <td class="entry_range">
   24330             </td>
   24331 
   24332             <td class="entry_tags">
   24333             </td>
   24334 
   24335           </tr>
   24336           <tr class="entries_header">
   24337             <th class="th_details" colspan="5">Details</th>
   24338           </tr>
   24339           <tr class="entry_cont">
   24340             <td class="entry_details" colspan="5">
   24341               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
   24342             </td>
   24343           </tr>
   24344 
   24345 
   24346           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   24347            <!-- end of entry -->
   24348         
   24349                 
   24350           <tr class="entry" id="dynamic_android.tonemap.curveRed">
   24351             <td class="entry_name
   24352              " rowspan="5">
   24353               android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
   24354             </td>
   24355             <td class="entry_type">
   24356                 <span class="entry_type_name">float</span>
   24357                 <span class="entry_type_container">x</span>
   24358 
   24359                 <span class="entry_type_array">
   24360                   n x 2
   24361                 </span>
   24362               <span class="entry_type_visibility"> [hidden]</span>
   24363 
   24364 
   24365               <span class="entry_type_hwlevel">[full] </span>
   24366 
   24367 
   24368                 <div class="entry_type_notes">1D array of float pairs (P_<wbr/>IN,<wbr/> P_<wbr/>OUT).<wbr/> The maximum number of pairs is specified by android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points.<wbr/></div>
   24369 
   24370 
   24371             </td> <!-- entry_type -->
   24372 
   24373             <td class="entry_description">
   24374               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
   24375 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
   24376 CONTRAST_<wbr/>CURVE.<wbr/></p>
   24377             </td>
   24378 
   24379             <td class="entry_units">
   24380             </td>
   24381 
   24382             <td class="entry_range">
   24383               <p>0-1 on both input and output coordinates,<wbr/> normalized
   24384 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
   24385             </td>
   24386 
   24387             <td class="entry_tags">
   24388             </td>
   24389 
   24390           </tr>
   24391           <tr class="entries_header">
   24392             <th class="th_details" colspan="5">Details</th>
   24393           </tr>
   24394           <tr class="entry_cont">
   24395             <td class="entry_details" colspan="5">
   24396               <p>Each channel's curve is defined by an array of control points:</p>
   24397 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
   24398   [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
   24399 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
   24400 <p>These are sorted in order of increasing <code>Pin</code>; it is
   24401 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
   24402 define a complete mapping.<wbr/> For input values between control points,<wbr/>
   24403 the camera device must linearly interpolate between the control
   24404 points.<wbr/></p>
   24405 <p>Each curve can have an independent number of points,<wbr/> and the number
   24406 of points can be less than max (that is,<wbr/> the request doesn't have to
   24407 always provide a curve with number of points equivalent to
   24408 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
   24409 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
   24410 only specify the red channel and the precision is limited to 4
   24411 digits,<wbr/> for conciseness.<wbr/></p>
   24412 <p>Linear mapping:</p>
   24413 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 0,<wbr/> 0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0 ]
   24414 </code></pre>
   24415 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
   24416 <p>Invert mapping:</p>
   24417 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 0 ]
   24418 </code></pre>
   24419 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
   24420 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
   24421 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
   24422   0.<wbr/>0000,<wbr/> 0.<wbr/>0000,<wbr/> 0.<wbr/>0667,<wbr/> 0.<wbr/>2920,<wbr/> 0.<wbr/>1333,<wbr/> 0.<wbr/>4002,<wbr/> 0.<wbr/>2000,<wbr/> 0.<wbr/>4812,<wbr/>
   24423   0.<wbr/>2667,<wbr/> 0.<wbr/>5484,<wbr/> 0.<wbr/>3333,<wbr/> 0.<wbr/>6069,<wbr/> 0.<wbr/>4000,<wbr/> 0.<wbr/>6594,<wbr/> 0.<wbr/>4667,<wbr/> 0.<wbr/>7072,<wbr/>
   24424   0.<wbr/>5333,<wbr/> 0.<wbr/>7515,<wbr/> 0.<wbr/>6000,<wbr/> 0.<wbr/>7928,<wbr/> 0.<wbr/>6667,<wbr/> 0.<wbr/>8317,<wbr/> 0.<wbr/>7333,<wbr/> 0.<wbr/>8685,<wbr/>
   24425   0.<wbr/>8000,<wbr/> 0.<wbr/>9035,<wbr/> 0.<wbr/>8667,<wbr/> 0.<wbr/>9370,<wbr/> 0.<wbr/>9333,<wbr/> 0.<wbr/>9691,<wbr/> 1.<wbr/>0000,<wbr/> 1.<wbr/>0000 ]
   24426 </code></pre>
   24427 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
   24428 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
   24429 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
   24430   0.<wbr/>0000,<wbr/> 0.<wbr/>0000,<wbr/> 0.<wbr/>0667,<wbr/> 0.<wbr/>2864,<wbr/> 0.<wbr/>1333,<wbr/> 0.<wbr/>4007,<wbr/> 0.<wbr/>2000,<wbr/> 0.<wbr/>4845,<wbr/>
   24431   0.<wbr/>2667,<wbr/> 0.<wbr/>5532,<wbr/> 0.<wbr/>3333,<wbr/> 0.<wbr/>6125,<wbr/> 0.<wbr/>4000,<wbr/> 0.<wbr/>6652,<wbr/> 0.<wbr/>4667,<wbr/> 0.<wbr/>7130,<wbr/>
   24432   0.<wbr/>5333,<wbr/> 0.<wbr/>7569,<wbr/> 0.<wbr/>6000,<wbr/> 0.<wbr/>7977,<wbr/> 0.<wbr/>6667,<wbr/> 0.<wbr/>8360,<wbr/> 0.<wbr/>7333,<wbr/> 0.<wbr/>8721,<wbr/>
   24433   0.<wbr/>8000,<wbr/> 0.<wbr/>9063,<wbr/> 0.<wbr/>8667,<wbr/> 0.<wbr/>9389,<wbr/> 0.<wbr/>9333,<wbr/> 0.<wbr/>9701,<wbr/> 1.<wbr/>0000,<wbr/> 1.<wbr/>0000 ]
   24434 </code></pre>
   24435 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
   24436             </td>
   24437           </tr>
   24438 
   24439           <tr class="entries_header">
   24440             <th class="th_details" colspan="5">HAL Implementation Details</th>
   24441           </tr>
   24442           <tr class="entry_cont">
   24443             <td class="entry_details" colspan="5">
   24444               <p>For good quality of mapping,<wbr/> at least 128 control points are
   24445 preferred.<wbr/></p>
   24446 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
   24447 control points used as are available.<wbr/></p>
   24448             </td>
   24449           </tr>
   24450 
   24451           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   24452            <!-- end of entry -->
   24453         
   24454                 
   24455           <tr class="entry" id="dynamic_android.tonemap.curve">
   24456             <td class="entry_name
   24457              " rowspan="5">
   24458               android.<wbr/>tonemap.<wbr/>curve
   24459             </td>
   24460             <td class="entry_type">
   24461                 <span class="entry_type_name">float</span>
   24462 
   24463               <span class="entry_type_visibility"> [public as tonemapCurve]</span>
   24464 
   24465               <span class="entry_type_synthetic">[synthetic] </span>
   24466 
   24467               <span class="entry_type_hwlevel">[full] </span>
   24468 
   24469 
   24470 
   24471 
   24472             </td> <!-- entry_type -->
   24473 
   24474             <td class="entry_description">
   24475               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
   24476 is CONTRAST_<wbr/>CURVE.<wbr/></p>
   24477             </td>
   24478 
   24479             <td class="entry_units">
   24480             </td>
   24481 
   24482             <td class="entry_range">
   24483             </td>
   24484 
   24485             <td class="entry_tags">
   24486             </td>
   24487 
   24488           </tr>
   24489           <tr class="entries_header">
   24490             <th class="th_details" colspan="5">Details</th>
   24491           </tr>
   24492           <tr class="entry_cont">
   24493             <td class="entry_details" colspan="5">
   24494               <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
   24495 channels respectively.<wbr/> The following example uses the red channel as an
   24496 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
   24497 Each channel's curve is defined by an array of control points:</p>
   24498 <pre><code>curveRed =
   24499   [ P0(in,<wbr/> out),<wbr/> P1(in,<wbr/> out),<wbr/> P2(in,<wbr/> out),<wbr/> P3(in,<wbr/> out),<wbr/> ...,<wbr/> PN(in,<wbr/> out) ]
   24500 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
   24501 <p>These are sorted in order of increasing <code>Pin</code>; it is always
   24502 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
   24503 define a complete mapping.<wbr/> For input values between control points,<wbr/>
   24504 the camera device must linearly interpolate between the control
   24505 points.<wbr/></p>
   24506 <p>Each curve can have an independent number of points,<wbr/> and the number
   24507 of points can be less than max (that is,<wbr/> the request doesn't have to
   24508 always provide a curve with number of points equivalent to
   24509 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
   24510 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
   24511 only specify the red channel and the precision is limited to 4
   24512 digits,<wbr/> for conciseness.<wbr/></p>
   24513 <p>Linear mapping:</p>
   24514 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
   24515 </code></pre>
   24516 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
   24517 <p>Invert mapping:</p>
   24518 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
   24519 </code></pre>
   24520 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
   24521 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
   24522 <pre><code>curveRed = [
   24523   (0.<wbr/>0000,<wbr/> 0.<wbr/>0000),<wbr/> (0.<wbr/>0667,<wbr/> 0.<wbr/>2920),<wbr/> (0.<wbr/>1333,<wbr/> 0.<wbr/>4002),<wbr/> (0.<wbr/>2000,<wbr/> 0.<wbr/>4812),<wbr/>
   24524   (0.<wbr/>2667,<wbr/> 0.<wbr/>5484),<wbr/> (0.<wbr/>3333,<wbr/> 0.<wbr/>6069),<wbr/> (0.<wbr/>4000,<wbr/> 0.<wbr/>6594),<wbr/> (0.<wbr/>4667,<wbr/> 0.<wbr/>7072),<wbr/>
   24525   (0.<wbr/>5333,<wbr/> 0.<wbr/>7515),<wbr/> (0.<wbr/>6000,<wbr/> 0.<wbr/>7928),<wbr/> (0.<wbr/>6667,<wbr/> 0.<wbr/>8317),<wbr/> (0.<wbr/>7333,<wbr/> 0.<wbr/>8685),<wbr/>
   24526   (0.<wbr/>8000,<wbr/> 0.<wbr/>9035),<wbr/> (0.<wbr/>8667,<wbr/> 0.<wbr/>9370),<wbr/> (0.<wbr/>9333,<wbr/> 0.<wbr/>9691),<wbr/> (1.<wbr/>0000,<wbr/> 1.<wbr/>0000) ]
   24527 </code></pre>
   24528 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
   24529 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
   24530 <pre><code>curveRed = [
   24531   (0.<wbr/>0000,<wbr/> 0.<wbr/>0000),<wbr/> (0.<wbr/>0667,<wbr/> 0.<wbr/>2864),<wbr/> (0.<wbr/>1333,<wbr/> 0.<wbr/>4007),<wbr/> (0.<wbr/>2000,<wbr/> 0.<wbr/>4845),<wbr/>
   24532   (0.<wbr/>2667,<wbr/> 0.<wbr/>5532),<wbr/> (0.<wbr/>3333,<wbr/> 0.<wbr/>6125),<wbr/> (0.<wbr/>4000,<wbr/> 0.<wbr/>6652),<wbr/> (0.<wbr/>4667,<wbr/> 0.<wbr/>7130),<wbr/>
   24533   (0.<wbr/>5333,<wbr/> 0.<wbr/>7569),<wbr/> (0.<wbr/>6000,<wbr/> 0.<wbr/>7977),<wbr/> (0.<wbr/>6667,<wbr/> 0.<wbr/>8360),<wbr/> (0.<wbr/>7333,<wbr/> 0.<wbr/>8721),<wbr/>
   24534   (0.<wbr/>8000,<wbr/> 0.<wbr/>9063),<wbr/> (0.<wbr/>8667,<wbr/> 0.<wbr/>9389),<wbr/> (0.<wbr/>9333,<wbr/> 0.<wbr/>9701),<wbr/> (1.<wbr/>0000,<wbr/> 1.<wbr/>0000) ]
   24535 </code></pre>
   24536 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
   24537             </td>
   24538           </tr>
   24539 
   24540           <tr class="entries_header">
   24541             <th class="th_details" colspan="5">HAL Implementation Details</th>
   24542           </tr>
   24543           <tr class="entry_cont">
   24544             <td class="entry_details" colspan="5">
   24545               <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
   24546 curveBlue entries.<wbr/></p>
   24547             </td>
   24548           </tr>
   24549 
   24550           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   24551            <!-- end of entry -->
   24552         
   24553                 
   24554           <tr class="entry" id="dynamic_android.tonemap.mode">
   24555             <td class="entry_name
   24556              " rowspan="3">
   24557               android.<wbr/>tonemap.<wbr/>mode
   24558             </td>
   24559             <td class="entry_type">
   24560                 <span class="entry_type_name entry_type_name_enum">byte</span>
   24561 
   24562               <span class="entry_type_visibility"> [public]</span>
   24563 
   24564 
   24565               <span class="entry_type_hwlevel">[full] </span>
   24566 
   24567 
   24568 
   24569                 <ul class="entry_type_enum">
   24570                   <li>
   24571                     <span class="entry_type_enum_name">CONTRAST_CURVE</span>
   24572                     <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
   24573 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
   24574 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
   24575 for applying the tonemapping curve specified by
   24576 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
   24577 <p>Must not slow down frame rate relative to raw
   24578 sensor output.<wbr/></p></span>
   24579                   </li>
   24580                   <li>
   24581                     <span class="entry_type_enum_name">FAST</span>
   24582                     <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
   24583 reducing frame rate compared to raw sensor output.<wbr/></p></span>
   24584                   </li>
   24585                   <li>
   24586                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
   24587                     <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
   24588 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
   24589                   </li>
   24590                   <li>
   24591                     <span class="entry_type_enum_name">GAMMA_VALUE</span>
   24592                     <span class="entry_type_enum_notes"><p>Use the gamma value specified in <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a> to peform
   24593 tonemapping.<wbr/></p>
   24594 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
   24595 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
   24596 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
   24597                   </li>
   24598                   <li>
   24599                     <span class="entry_type_enum_name">PRESET_CURVE</span>
   24600                     <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
   24601 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
   24602 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
   24603 for applying the tonemapping curve specified by
   24604 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
   24605 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
   24606                   </li>
   24607                 </ul>
   24608 
   24609             </td> <!-- entry_type -->
   24610 
   24611             <td class="entry_description">
   24612               <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
   24613             </td>
   24614 
   24615             <td class="entry_units">
   24616             </td>
   24617 
   24618             <td class="entry_range">
   24619               <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
   24620             </td>
   24621 
   24622             <td class="entry_tags">
   24623             </td>
   24624 
   24625           </tr>
   24626           <tr class="entries_header">
   24627             <th class="th_details" colspan="5">Details</th>
   24628           </tr>
   24629           <tr class="entry_cont">
   24630             <td class="entry_details" colspan="5">
   24631               <p>When switching to an application-defined contrast curve by setting
   24632 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
   24633 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
   24634 mapping from input high-bit-depth pixel value to the output
   24635 low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
   24636 and output may change depending on the camera pipeline,<wbr/> the values
   24637 are specified by normalized floating-point numbers.<wbr/></p>
   24638 <p>More-complex color mapping operations such as 3D color look-up
   24639 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
   24640 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
   24641 CONTRAST_<wbr/>CURVE.<wbr/></p>
   24642 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
   24643 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
   24644 These values are always available,<wbr/> and as close as possible to the
   24645 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
   24646 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
   24647 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
   24648 roughly the same.<wbr/></p>
   24649             </td>
   24650           </tr>
   24651 
   24652 
   24653           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   24654            <!-- end of entry -->
   24655         
   24656                 
   24657           <tr class="entry" id="dynamic_android.tonemap.gamma">
   24658             <td class="entry_name
   24659              " rowspan="3">
   24660               android.<wbr/>tonemap.<wbr/>gamma
   24661             </td>
   24662             <td class="entry_type">
   24663                 <span class="entry_type_name">float</span>
   24664 
   24665               <span class="entry_type_visibility"> [public]</span>
   24666 
   24667 
   24668 
   24669 
   24670 
   24671 
   24672             </td> <!-- entry_type -->
   24673 
   24674             <td class="entry_description">
   24675               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
   24676 GAMMA_<wbr/>VALUE</p>
   24677             </td>
   24678 
   24679             <td class="entry_units">
   24680             </td>
   24681 
   24682             <td class="entry_range">
   24683             </td>
   24684 
   24685             <td class="entry_tags">
   24686             </td>
   24687 
   24688           </tr>
   24689           <tr class="entries_header">
   24690             <th class="th_details" colspan="5">Details</th>
   24691           </tr>
   24692           <tr class="entry_cont">
   24693             <td class="entry_details" colspan="5">
   24694               <p>The tonemap curve will be defined the following formula:
   24695 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
   24696 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
   24697 pow is the power function and gamma is the gamma value specified by this
   24698 key.<wbr/></p>
   24699 <p>The same curve will be applied to all color channels.<wbr/> The camera device
   24700 may clip the input gamma value to its supported range.<wbr/> The actual applied
   24701 value will be returned in capture result.<wbr/></p>
   24702 <p>The valid range of gamma value varies on different devices,<wbr/> but values
   24703 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
   24704             </td>
   24705           </tr>
   24706 
   24707 
   24708           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   24709            <!-- end of entry -->
   24710         
   24711                 
   24712           <tr class="entry" id="dynamic_android.tonemap.presetCurve">
   24713             <td class="entry_name
   24714              " rowspan="3">
   24715               android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
   24716             </td>
   24717             <td class="entry_type">
   24718                 <span class="entry_type_name entry_type_name_enum">byte</span>
   24719 
   24720               <span class="entry_type_visibility"> [public]</span>
   24721 
   24722 
   24723 
   24724 
   24725 
   24726                 <ul class="entry_type_enum">
   24727                   <li>
   24728                     <span class="entry_type_enum_name">SRGB</span>
   24729                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
   24730                   </li>
   24731                   <li>
   24732                     <span class="entry_type_enum_name">REC709</span>
   24733                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
   24734                   </li>
   24735                 </ul>
   24736 
   24737             </td> <!-- entry_type -->
   24738 
   24739             <td class="entry_description">
   24740               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
   24741 PRESET_<wbr/>CURVE</p>
   24742             </td>
   24743 
   24744             <td class="entry_units">
   24745             </td>
   24746 
   24747             <td class="entry_range">
   24748             </td>
   24749 
   24750             <td class="entry_tags">
   24751             </td>
   24752 
   24753           </tr>
   24754           <tr class="entries_header">
   24755             <th class="th_details" colspan="5">Details</th>
   24756           </tr>
   24757           <tr class="entry_cont">
   24758             <td class="entry_details" colspan="5">
   24759               <p>The tonemap curve will be defined by specified standard.<wbr/></p>
   24760 <p>sRGB (approximated by 16 control points):</p>
   24761 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
   24762 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
   24763 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
   24764 <p>Note that above figures show a 16 control points approximation of preset
   24765 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
   24766             </td>
   24767           </tr>
   24768 
   24769 
   24770           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   24771            <!-- end of entry -->
   24772         
   24773         
   24774 
   24775       <!-- end of kind -->
   24776       </tbody>
   24777 
   24778   <!-- end of section -->
   24779   <tr><td colspan="6" id="section_led" class="section">led</td></tr>
   24780 
   24781 
   24782       <tr><td colspan="6" class="kind">controls</td></tr>
   24783 
   24784       <thead class="entries_header">
   24785         <tr>
   24786           <th class="th_name">Property Name</th>
   24787           <th class="th_type">Type</th>
   24788           <th class="th_description">Description</th>
   24789           <th class="th_units">Units</th>
   24790           <th class="th_range">Range</th>
   24791           <th class="th_tags">Tags</th>
   24792         </tr>
   24793       </thead>
   24794 
   24795       <tbody>
   24796 
   24797         
   24798 
   24799         
   24800 
   24801         
   24802 
   24803         
   24804 
   24805                 
   24806           <tr class="entry" id="controls_android.led.transmit">
   24807             <td class="entry_name
   24808              " rowspan="1">
   24809               android.<wbr/>led.<wbr/>transmit
   24810             </td>
   24811             <td class="entry_type">
   24812                 <span class="entry_type_name entry_type_name_enum">byte</span>
   24813 
   24814               <span class="entry_type_visibility"> [hidden as boolean]</span>
   24815 
   24816 
   24817 
   24818 
   24819 
   24820                 <ul class="entry_type_enum">
   24821                   <li>
   24822                     <span class="entry_type_enum_name">OFF</span>
   24823                   </li>
   24824                   <li>
   24825                     <span class="entry_type_enum_name">ON</span>
   24826                   </li>
   24827                 </ul>
   24828 
   24829             </td> <!-- entry_type -->
   24830 
   24831             <td class="entry_description">
   24832               <p>This LED is nominally used to indicate to the user
   24833 that the camera is powered on and may be streaming images back to the
   24834 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
   24835 disable this when video is processed locally and not transmitted to
   24836 any untrusted applications.<wbr/></p>
   24837 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
   24838 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
   24839 data is stored locally on the device.<wbr/></p>
   24840 <p>The LED <em>may</em> be off if a trusted application is using the data that
   24841 doesn't violate the above rules.<wbr/></p>
   24842             </td>
   24843 
   24844             <td class="entry_units">
   24845             </td>
   24846 
   24847             <td class="entry_range">
   24848             </td>
   24849 
   24850             <td class="entry_tags">
   24851             </td>
   24852 
   24853           </tr>
   24854 
   24855 
   24856           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   24857            <!-- end of entry -->
   24858         
   24859         
   24860 
   24861       <!-- end of kind -->
   24862       </tbody>
   24863       <tr><td colspan="6" class="kind">dynamic</td></tr>
   24864 
   24865       <thead class="entries_header">
   24866         <tr>
   24867           <th class="th_name">Property Name</th>
   24868           <th class="th_type">Type</th>
   24869           <th class="th_description">Description</th>
   24870           <th class="th_units">Units</th>
   24871           <th class="th_range">Range</th>
   24872           <th class="th_tags">Tags</th>
   24873         </tr>
   24874       </thead>
   24875 
   24876       <tbody>
   24877 
   24878         
   24879 
   24880         
   24881 
   24882         
   24883 
   24884         
   24885 
   24886                 
   24887           <tr class="entry" id="dynamic_android.led.transmit">
   24888             <td class="entry_name
   24889              " rowspan="1">
   24890               android.<wbr/>led.<wbr/>transmit
   24891             </td>
   24892             <td class="entry_type">
   24893                 <span class="entry_type_name entry_type_name_enum">byte</span>
   24894 
   24895               <span class="entry_type_visibility"> [hidden as boolean]</span>
   24896 
   24897 
   24898 
   24899 
   24900 
   24901                 <ul class="entry_type_enum">
   24902                   <li>
   24903                     <span class="entry_type_enum_name">OFF</span>
   24904                   </li>
   24905                   <li>
   24906                     <span class="entry_type_enum_name">ON</span>
   24907                   </li>
   24908                 </ul>
   24909 
   24910             </td> <!-- entry_type -->
   24911 
   24912             <td class="entry_description">
   24913               <p>This LED is nominally used to indicate to the user
   24914 that the camera is powered on and may be streaming images back to the
   24915 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
   24916 disable this when video is processed locally and not transmitted to
   24917 any untrusted applications.<wbr/></p>
   24918 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
   24919 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
   24920 data is stored locally on the device.<wbr/></p>
   24921 <p>The LED <em>may</em> be off if a trusted application is using the data that
   24922 doesn't violate the above rules.<wbr/></p>
   24923             </td>
   24924 
   24925             <td class="entry_units">
   24926             </td>
   24927 
   24928             <td class="entry_range">
   24929             </td>
   24930 
   24931             <td class="entry_tags">
   24932             </td>
   24933 
   24934           </tr>
   24935 
   24936 
   24937           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   24938            <!-- end of entry -->
   24939         
   24940         
   24941 
   24942       <!-- end of kind -->
   24943       </tbody>
   24944       <tr><td colspan="6" class="kind">static</td></tr>
   24945 
   24946       <thead class="entries_header">
   24947         <tr>
   24948           <th class="th_name">Property Name</th>
   24949           <th class="th_type">Type</th>
   24950           <th class="th_description">Description</th>
   24951           <th class="th_units">Units</th>
   24952           <th class="th_range">Range</th>
   24953           <th class="th_tags">Tags</th>
   24954         </tr>
   24955       </thead>
   24956 
   24957       <tbody>
   24958 
   24959         
   24960 
   24961         
   24962 
   24963         
   24964 
   24965         
   24966 
   24967                 
   24968           <tr class="entry" id="static_android.led.availableLeds">
   24969             <td class="entry_name
   24970              " rowspan="1">
   24971               android.<wbr/>led.<wbr/>available<wbr/>Leds
   24972             </td>
   24973             <td class="entry_type">
   24974                 <span class="entry_type_name entry_type_name_enum">byte</span>
   24975                 <span class="entry_type_container">x</span>
   24976 
   24977                 <span class="entry_type_array">
   24978                   n
   24979                 </span>
   24980               <span class="entry_type_visibility"> [hidden]</span>
   24981 
   24982 
   24983 
   24984 
   24985 
   24986                 <ul class="entry_type_enum">
   24987                   <li>
   24988                     <span class="entry_type_enum_name">TRANSMIT</span>
   24989                     <span class="entry_type_enum_notes"><p><a href="#controls_android.led.transmit">android.<wbr/>led.<wbr/>transmit</a> control is used.<wbr/></p></span>
   24990                   </li>
   24991                 </ul>
   24992 
   24993             </td> <!-- entry_type -->
   24994 
   24995             <td class="entry_description">
   24996               <p>A list of camera LEDs that are available on this system.<wbr/></p>
   24997             </td>
   24998 
   24999             <td class="entry_units">
   25000             </td>
   25001 
   25002             <td class="entry_range">
   25003             </td>
   25004 
   25005             <td class="entry_tags">
   25006             </td>
   25007 
   25008           </tr>
   25009 
   25010 
   25011           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   25012            <!-- end of entry -->
   25013         
   25014         
   25015 
   25016       <!-- end of kind -->
   25017       </tbody>
   25018 
   25019   <!-- end of section -->
   25020   <tr><td colspan="6" id="section_info" class="section">info</td></tr>
   25021 
   25022 
   25023       <tr><td colspan="6" class="kind">static</td></tr>
   25024 
   25025       <thead class="entries_header">
   25026         <tr>
   25027           <th class="th_name">Property Name</th>
   25028           <th class="th_type">Type</th>
   25029           <th class="th_description">Description</th>
   25030           <th class="th_units">Units</th>
   25031           <th class="th_range">Range</th>
   25032           <th class="th_tags">Tags</th>
   25033         </tr>
   25034       </thead>
   25035 
   25036       <tbody>
   25037 
   25038         
   25039 
   25040         
   25041 
   25042         
   25043 
   25044         
   25045 
   25046                 
   25047           <tr class="entry" id="static_android.info.supportedHardwareLevel">
   25048             <td class="entry_name
   25049              " rowspan="5">
   25050               android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level
   25051             </td>
   25052             <td class="entry_type">
   25053                 <span class="entry_type_name entry_type_name_enum">byte</span>
   25054 
   25055               <span class="entry_type_visibility"> [public]</span>
   25056 
   25057 
   25058               <span class="entry_type_hwlevel">[legacy] </span>
   25059 
   25060 
   25061 
   25062                 <ul class="entry_type_enum">
   25063                   <li>
   25064                     <span class="entry_type_enum_name">LIMITED</span>
   25065                     <span class="entry_type_enum_notes"><p>This camera device has only limited capabilities.<wbr/></p></span>
   25066                   </li>
   25067                   <li>
   25068                     <span class="entry_type_enum_name">FULL</span>
   25069                     <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p></span>
   25070                   </li>
   25071                   <li>
   25072                     <span class="entry_type_enum_name">LEGACY</span>
   25073                     <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p></span>
   25074                   </li>
   25075                 </ul>
   25076 
   25077             </td> <!-- entry_type -->
   25078 
   25079             <td class="entry_description">
   25080               <p>Generally classifies the overall set of the camera device functionality.<wbr/></p>
   25081             </td>
   25082 
   25083             <td class="entry_units">
   25084             </td>
   25085 
   25086             <td class="entry_range">
   25087             </td>
   25088 
   25089             <td class="entry_tags">
   25090             </td>
   25091 
   25092           </tr>
   25093           <tr class="entries_header">
   25094             <th class="th_details" colspan="5">Details</th>
   25095           </tr>
   25096           <tr class="entry_cont">
   25097             <td class="entry_details" colspan="5">
   25098               <p>Camera devices will come in three flavors: LEGACY,<wbr/> LIMITED and FULL.<wbr/></p>
   25099 <p>A FULL device will support below capabilities:</p>
   25100 <ul>
   25101 <li>BURST_<wbr/>CAPTURE capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains BURST_<wbr/>CAPTURE)</li>
   25102 <li>Per frame control (<a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> <code>==</code> PER_<wbr/>FRAME_<wbr/>CONTROL)</li>
   25103 <li>Manual sensor control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR)</li>
   25104 <li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
   25105   MANUAL_<wbr/>POST_<wbr/>PROCESSING)</li>
   25106 <li>At least 3 processed (but not stalling) format output streams
   25107   (<a href="#static_android.request.maxNumOutputProc">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc</a> <code>&gt;=</code> 3)</li>
   25108 <li>The required stream configurations defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a></li>
   25109 <li>The required exposure time range defined in <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
   25110 <li>The required maxFrameDuration defined in <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
   25111 </ul>
   25112 <p>A LIMITED device may have some or none of the above characteristics.<wbr/>
   25113 To find out more refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
   25114 <p>Some features are not part of any particular hardware level or capability and must be
   25115 queried separately.<wbr/> These include:</p>
   25116 <ul>
   25117 <li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li>
   25118 <li>Precision lens control (<a href="#static_android.lens.info.focusDistanceCalibration">android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration</a> <code>==</code> CALIBRATED)</li>
   25119 <li>Face detection (<a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a>)</li>
   25120 <li>Optical or electrical image stabilization
   25121   (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/>
   25122    <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li>
   25123 </ul>
   25124 <p>A LEGACY device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual
   25125 post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/></p>
   25126 <p>Each higher level supports everything the lower level supports
   25127 in this order: FULL <code>&gt;</code> LIMITED <code>&gt;</code> LEGACY.<wbr/></p>
   25128 <p>Note:
   25129 Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region
   25130 (<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>==</code> FREEFORM); this requirement was relaxed in API level 23,<wbr/>
   25131 and FULL devices may only support CENTERED cropping.<wbr/></p>
   25132             </td>
   25133           </tr>
   25134 
   25135           <tr class="entries_header">
   25136             <th class="th_details" colspan="5">HAL Implementation Details</th>
   25137           </tr>
   25138           <tr class="entry_cont">
   25139             <td class="entry_details" colspan="5">
   25140               <p>The camera 3 HAL device can implement one of two possible
   25141 operational modes; limited and full.<wbr/> Full support is
   25142 expected from new higher-end devices.<wbr/> Limited mode has
   25143 hardware requirements roughly in line with those for a
   25144 camera HAL device v1 implementation,<wbr/> and is expected from
   25145 older or inexpensive devices.<wbr/> Full is a strict superset of
   25146 limited,<wbr/> and they share the same essential operational flow.<wbr/></p>
   25147 <p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p>
   25148 <p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there
   25149 for backwards compatibility in the <code>android.<wbr/>hardware.<wbr/>camera2</code>
   25150 user-facing API only.<wbr/></p>
   25151             </td>
   25152           </tr>
   25153 
   25154           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   25155            <!-- end of entry -->
   25156         
   25157         
   25158 
   25159       <!-- end of kind -->
   25160       </tbody>
   25161 
   25162   <!-- end of section -->
   25163   <tr><td colspan="6" id="section_blackLevel" class="section">blackLevel</td></tr>
   25164 
   25165 
   25166       <tr><td colspan="6" class="kind">controls</td></tr>
   25167 
   25168       <thead class="entries_header">
   25169         <tr>
   25170           <th class="th_name">Property Name</th>
   25171           <th class="th_type">Type</th>
   25172           <th class="th_description">Description</th>
   25173           <th class="th_units">Units</th>
   25174           <th class="th_range">Range</th>
   25175           <th class="th_tags">Tags</th>
   25176         </tr>
   25177       </thead>
   25178 
   25179       <tbody>
   25180 
   25181         
   25182 
   25183         
   25184 
   25185         
   25186 
   25187         
   25188 
   25189                 
   25190           <tr class="entry" id="controls_android.blackLevel.lock">
   25191             <td class="entry_name
   25192              " rowspan="5">
   25193               android.<wbr/>black<wbr/>Level.<wbr/>lock
   25194             </td>
   25195             <td class="entry_type">
   25196                 <span class="entry_type_name entry_type_name_enum">byte</span>
   25197 
   25198               <span class="entry_type_visibility"> [public as boolean]</span>
   25199 
   25200 
   25201               <span class="entry_type_hwlevel">[full] </span>
   25202 
   25203 
   25204 
   25205                 <ul class="entry_type_enum">
   25206                   <li>
   25207                     <span class="entry_type_enum_name">OFF</span>
   25208                   </li>
   25209                   <li>
   25210                     <span class="entry_type_enum_name">ON</span>
   25211                   </li>
   25212                 </ul>
   25213 
   25214             </td> <!-- entry_type -->
   25215 
   25216             <td class="entry_description">
   25217               <p>Whether black-level compensation is locked
   25218 to its current values,<wbr/> or is free to vary.<wbr/></p>
   25219             </td>
   25220 
   25221             <td class="entry_units">
   25222             </td>
   25223 
   25224             <td class="entry_range">
   25225             </td>
   25226 
   25227             <td class="entry_tags">
   25228               <ul class="entry_tags">
   25229                   <li><a href="#tag_HAL2">HAL2</a></li>
   25230               </ul>
   25231             </td>
   25232 
   25233           </tr>
   25234           <tr class="entries_header">
   25235             <th class="th_details" colspan="5">Details</th>
   25236           </tr>
   25237           <tr class="entry_cont">
   25238             <td class="entry_details" colspan="5">
   25239               <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level
   25240 compensation will not change until the lock is set to
   25241 <code>false</code> (OFF).<wbr/></p>
   25242 <p>Since changes to certain capture parameters (such as
   25243 exposure time) may require resetting of black level
   25244 compensation,<wbr/> the camera device must report whether setting
   25245 the black level lock was successful in the output result
   25246 metadata.<wbr/></p>
   25247 <p>For example,<wbr/> if a sequence of requests is as follows:</p>
   25248 <ul>
   25249 <li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
   25250 <li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
   25251 <li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
   25252 <li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li>
   25253 <li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
   25254 <li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
   25255 </ul>
   25256 <p>And the exposure change in Request 4 requires the camera
   25257 device to reset the black level offsets,<wbr/> then the output
   25258 result metadata is expected to be:</p>
   25259 <ul>
   25260 <li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
   25261 <li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
   25262 <li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
   25263 <li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li>
   25264 <li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
   25265 <li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
   25266 </ul>
   25267 <p>This indicates to the application that on frame 4,<wbr/> black
   25268 levels were reset due to exposure value changes,<wbr/> and pixel
   25269 values may not be consistent across captures.<wbr/></p>
   25270 <p>The camera device will maintain the lock to the extent
   25271 possible,<wbr/> only overriding the lock to OFF when changes to
   25272 other request parameters require a black level recalculation
   25273 or reset.<wbr/></p>
   25274             </td>
   25275           </tr>
   25276 
   25277           <tr class="entries_header">
   25278             <th class="th_details" colspan="5">HAL Implementation Details</th>
   25279           </tr>
   25280           <tr class="entry_cont">
   25281             <td class="entry_details" colspan="5">
   25282               <p>If for some reason black level locking is no longer possible
   25283 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
   25284 black level offsets to be recalculated),<wbr/> then the HAL must
   25285 override this request (and it must report 'OFF' when this
   25286 does happen) until the next capture for which locking is
   25287 possible again.<wbr/></p>
   25288             </td>
   25289           </tr>
   25290 
   25291           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   25292            <!-- end of entry -->
   25293         
   25294         
   25295 
   25296       <!-- end of kind -->
   25297       </tbody>
   25298       <tr><td colspan="6" class="kind">dynamic</td></tr>
   25299 
   25300       <thead class="entries_header">
   25301         <tr>
   25302           <th class="th_name">Property Name</th>
   25303           <th class="th_type">Type</th>
   25304           <th class="th_description">Description</th>
   25305           <th class="th_units">Units</th>
   25306           <th class="th_range">Range</th>
   25307           <th class="th_tags">Tags</th>
   25308         </tr>
   25309       </thead>
   25310 
   25311       <tbody>
   25312 
   25313         
   25314 
   25315         
   25316 
   25317         
   25318 
   25319         
   25320 
   25321                 
   25322           <tr class="entry" id="dynamic_android.blackLevel.lock">
   25323             <td class="entry_name
   25324              " rowspan="5">
   25325               android.<wbr/>black<wbr/>Level.<wbr/>lock
   25326             </td>
   25327             <td class="entry_type">
   25328                 <span class="entry_type_name entry_type_name_enum">byte</span>
   25329 
   25330               <span class="entry_type_visibility"> [public as boolean]</span>
   25331 
   25332 
   25333               <span class="entry_type_hwlevel">[full] </span>
   25334 
   25335 
   25336 
   25337                 <ul class="entry_type_enum">
   25338                   <li>
   25339                     <span class="entry_type_enum_name">OFF</span>
   25340                   </li>
   25341                   <li>
   25342                     <span class="entry_type_enum_name">ON</span>
   25343                   </li>
   25344                 </ul>
   25345 
   25346             </td> <!-- entry_type -->
   25347 
   25348             <td class="entry_description">
   25349               <p>Whether black-level compensation is locked
   25350 to its current values,<wbr/> or is free to vary.<wbr/></p>
   25351             </td>
   25352 
   25353             <td class="entry_units">
   25354             </td>
   25355 
   25356             <td class="entry_range">
   25357             </td>
   25358 
   25359             <td class="entry_tags">
   25360               <ul class="entry_tags">
   25361                   <li><a href="#tag_HAL2">HAL2</a></li>
   25362               </ul>
   25363             </td>
   25364 
   25365           </tr>
   25366           <tr class="entries_header">
   25367             <th class="th_details" colspan="5">Details</th>
   25368           </tr>
   25369           <tr class="entry_cont">
   25370             <td class="entry_details" colspan="5">
   25371               <p>Whether the black level offset was locked for this frame.<wbr/>  Should be
   25372 ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless
   25373 a change in other capture settings forced the camera device to
   25374 perform a black level reset.<wbr/></p>
   25375             </td>
   25376           </tr>
   25377 
   25378           <tr class="entries_header">
   25379             <th class="th_details" colspan="5">HAL Implementation Details</th>
   25380           </tr>
   25381           <tr class="entry_cont">
   25382             <td class="entry_details" colspan="5">
   25383               <p>If for some reason black level locking is no longer possible
   25384 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
   25385 black level offsets to be recalculated),<wbr/> then the HAL must
   25386 override this request (and it must report 'OFF' when this
   25387 does happen) until the next capture for which locking is
   25388 possible again.<wbr/></p>
   25389             </td>
   25390           </tr>
   25391 
   25392           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   25393            <!-- end of entry -->
   25394         
   25395         
   25396 
   25397       <!-- end of kind -->
   25398       </tbody>
   25399 
   25400   <!-- end of section -->
   25401   <tr><td colspan="6" id="section_sync" class="section">sync</td></tr>
   25402 
   25403 
   25404       <tr><td colspan="6" class="kind">dynamic</td></tr>
   25405 
   25406       <thead class="entries_header">
   25407         <tr>
   25408           <th class="th_name">Property Name</th>
   25409           <th class="th_type">Type</th>
   25410           <th class="th_description">Description</th>
   25411           <th class="th_units">Units</th>
   25412           <th class="th_range">Range</th>
   25413           <th class="th_tags">Tags</th>
   25414         </tr>
   25415       </thead>
   25416 
   25417       <tbody>
   25418 
   25419         
   25420 
   25421         
   25422 
   25423         
   25424 
   25425         
   25426 
   25427                 
   25428           <tr class="entry" id="dynamic_android.sync.frameNumber">
   25429             <td class="entry_name
   25430              " rowspan="5">
   25431               android.<wbr/>sync.<wbr/>frame<wbr/>Number
   25432             </td>
   25433             <td class="entry_type">
   25434                 <span class="entry_type_name entry_type_name_enum">int64</span>
   25435 
   25436               <span class="entry_type_visibility"> [hidden]</span>
   25437 
   25438 
   25439               <span class="entry_type_hwlevel">[legacy] </span>
   25440 
   25441 
   25442 
   25443                 <ul class="entry_type_enum">
   25444                   <li>
   25445                     <span class="entry_type_enum_name">CONVERGING</span>
   25446                     <span class="entry_type_enum_value">-1</span>
   25447                     <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p>
   25448 <p>Synchronization is in progress,<wbr/> and reading metadata from this
   25449 result may include a mix of data that have taken effect since the
   25450 last synchronization time.<wbr/></p>
   25451 <p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/>
   25452 this value will update to the actual frame number frame number
   25453 the result is guaranteed to be synchronized to (as long as the
   25454 request settings remain constant).<wbr/></p></span>
   25455                   </li>
   25456                   <li>
   25457                     <span class="entry_type_enum_name">UNKNOWN</span>
   25458                     <span class="entry_type_enum_value">-2</span>
   25459                     <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p>
   25460 <p>The result may have already converged,<wbr/> or it may be in
   25461 progress.<wbr/>  Reading from this result may include some mix
   25462 of settings from past requests.<wbr/></p>
   25463 <p>After a settings change,<wbr/> the new settings will eventually all
   25464 take effect for the output buffers and results.<wbr/> However,<wbr/> this
   25465 value will not change when that happens.<wbr/> Altering settings
   25466 rapidly may provide outcomes using mixes of settings from recent
   25467 requests.<wbr/></p>
   25468 <p>This value is intended primarily for backwards compatibility with
   25469 the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span>
   25470                   </li>
   25471                 </ul>
   25472 
   25473             </td> <!-- entry_type -->
   25474 
   25475             <td class="entry_description">
   25476               <p>The frame number corresponding to the last request
   25477 with which the output result (metadata + buffers) has been fully
   25478 synchronized.<wbr/></p>
   25479             </td>
   25480 
   25481             <td class="entry_units">
   25482             </td>
   25483 
   25484             <td class="entry_range">
   25485               <p>Either a non-negative value corresponding to a
   25486 <code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p>
   25487             </td>
   25488 
   25489             <td class="entry_tags">
   25490               <ul class="entry_tags">
   25491                   <li><a href="#tag_V1">V1</a></li>
   25492               </ul>
   25493             </td>
   25494 
   25495           </tr>
   25496           <tr class="entries_header">
   25497             <th class="th_details" colspan="5">Details</th>
   25498           </tr>
   25499           <tr class="entry_cont">
   25500             <td class="entry_details" colspan="5">
   25501               <p>When a request is submitted to the camera device,<wbr/> there is usually a
   25502 delay of several frames before the controls get applied.<wbr/> A camera
   25503 device may either choose to account for this delay by implementing a
   25504 pipeline and carefully submit well-timed atomic control updates,<wbr/> or
   25505 it may start streaming control changes that span over several frame
   25506 boundaries.<wbr/></p>
   25507 <p>In the latter case,<wbr/> whenever a request's settings change relative to
   25508 the previous submitted request,<wbr/> the full set of changes may take
   25509 multiple frame durations to fully take effect.<wbr/> Some settings may
   25510 take effect sooner (in less frame durations) than others.<wbr/></p>
   25511 <p>While a set of control changes are being propagated,<wbr/> this value
   25512 will be CONVERGING.<wbr/></p>
   25513 <p>Once it is fully known that a set of control changes have been
   25514 finished propagating,<wbr/> and the resulting updated control settings
   25515 have been read back by the camera device,<wbr/> this value will be set
   25516 to a non-negative frame number (corresponding to the request to
   25517 which the results have synchronized to).<wbr/></p>
   25518 <p>Older camera device implementations may not have a way to detect
   25519 when all camera controls have been applied,<wbr/> and will always set this
   25520 value to UNKNOWN.<wbr/></p>
   25521 <p>FULL capability devices will always have this value set to the
   25522 frame number of the request corresponding to this result.<wbr/></p>
   25523 <p><em>Further details</em>:</p>
   25524 <ul>
   25525 <li>Whenever a request differs from the last request,<wbr/> any future
   25526 results not yet returned may have this value set to CONVERGING (this
   25527 could include any in-progress captures not yet returned by the camera
   25528 device,<wbr/> for more details see pipeline considerations below).<wbr/></li>
   25529 <li>Submitting a series of multiple requests that differ from the
   25530 previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3)
   25531 moves the new synchronization frame to the last non-repeating
   25532 request (using the smallest frame number from the contiguous list of
   25533 repeating requests).<wbr/></li>
   25534 <li>Submitting the same request repeatedly will not change this value
   25535 to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li>
   25536 <li>When this value changes to non-negative,<wbr/> that means that all of the
   25537 metadata controls from the request have been applied,<wbr/> all of the
   25538 metadata controls from the camera device have been read to the
   25539 updated values (into the result),<wbr/> and all of the graphics buffers
   25540 corresponding to this result are also synchronized to the request.<wbr/></li>
   25541 </ul>
   25542 <p><em>Pipeline considerations</em>:</p>
   25543 <p>Submitting a request with updated controls relative to the previously
   25544 submitted requests may also invalidate the synchronization state
   25545 of all the results corresponding to currently in-flight requests.<wbr/></p>
   25546 <p>In other words,<wbr/> results for this current request and up to
   25547 <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their
   25548 <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p>
   25549             </td>
   25550           </tr>
   25551 
   25552           <tr class="entries_header">
   25553             <th class="th_details" colspan="5">HAL Implementation Details</th>
   25554           </tr>
   25555           <tr class="entry_cont">
   25556             <td class="entry_details" colspan="5">
   25557               <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a>
   25558 is also UNKNOWN.<wbr/></p>
   25559 <p>FULL capability devices should simply set this value to the
   25560 <code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p>
   25561             </td>
   25562           </tr>
   25563 
   25564           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   25565            <!-- end of entry -->
   25566         
   25567         
   25568 
   25569       <!-- end of kind -->
   25570       </tbody>
   25571       <tr><td colspan="6" class="kind">static</td></tr>
   25572 
   25573       <thead class="entries_header">
   25574         <tr>
   25575           <th class="th_name">Property Name</th>
   25576           <th class="th_type">Type</th>
   25577           <th class="th_description">Description</th>
   25578           <th class="th_units">Units</th>
   25579           <th class="th_range">Range</th>
   25580           <th class="th_tags">Tags</th>
   25581         </tr>
   25582       </thead>
   25583 
   25584       <tbody>
   25585 
   25586         
   25587 
   25588         
   25589 
   25590         
   25591 
   25592         
   25593 
   25594                 
   25595           <tr class="entry" id="static_android.sync.maxLatency">
   25596             <td class="entry_name
   25597              " rowspan="5">
   25598               android.<wbr/>sync.<wbr/>max<wbr/>Latency
   25599             </td>
   25600             <td class="entry_type">
   25601                 <span class="entry_type_name entry_type_name_enum">int32</span>
   25602 
   25603               <span class="entry_type_visibility"> [public]</span>
   25604 
   25605 
   25606               <span class="entry_type_hwlevel">[legacy] </span>
   25607 
   25608 
   25609 
   25610                 <ul class="entry_type_enum">
   25611                   <li>
   25612                     <span class="entry_type_enum_name">PER_FRAME_CONTROL</span>
   25613                     <span class="entry_type_enum_value">0</span>
   25614                     <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p>
   25615 <p>Changing controls over multiple requests one after another will
   25616 produce results that have those controls applied atomically
   25617 each frame.<wbr/></p>
   25618 <p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span>
   25619                   </li>
   25620                   <li>
   25621                     <span class="entry_type_enum_name">UNKNOWN</span>
   25622                     <span class="entry_type_enum_value">-1</span>
   25623                     <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set)
   25624 of the past requests applied to the camera settings.<wbr/></p>
   25625 <p>By submitting a series of identical requests,<wbr/> the camera device
   25626 will eventually have the camera settings applied,<wbr/> but it is
   25627 unknown when that exact point will be.<wbr/></p>
   25628 <p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span>
   25629                   </li>
   25630                 </ul>
   25631 
   25632             </td> <!-- entry_type -->
   25633 
   25634             <td class="entry_description">
   25635               <p>The maximum number of frames that can occur after a request
   25636 (different than the previous) has been submitted,<wbr/> and before the
   25637 result's state becomes synchronized.<wbr/></p>
   25638             </td>
   25639 
   25640             <td class="entry_units">
   25641               Frame counts
   25642             </td>
   25643 
   25644             <td class="entry_range">
   25645               <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p>
   25646             </td>
   25647 
   25648             <td class="entry_tags">
   25649               <ul class="entry_tags">
   25650                   <li><a href="#tag_V1">V1</a></li>
   25651               </ul>
   25652             </td>
   25653 
   25654           </tr>
   25655           <tr class="entries_header">
   25656             <th class="th_details" colspan="5">Details</th>
   25657           </tr>
   25658           <tr class="entry_cont">
   25659             <td class="entry_details" colspan="5">
   25660               <p>This defines the maximum distance (in number of metadata results),<wbr/>
   25661 between the frame number of the request that has new controls to apply
   25662 and the frame number of the result that has all the controls applied.<wbr/></p>
   25663 <p>In other words this acts as an upper boundary for how many frames
   25664 must occur before the camera device knows for a fact that the new
   25665 submitted camera settings have been applied in outgoing frames.<wbr/></p>
   25666             </td>
   25667           </tr>
   25668 
   25669           <tr class="entries_header">
   25670             <th class="th_details" colspan="5">HAL Implementation Details</th>
   25671           </tr>
   25672           <tr class="entry_cont">
   25673             <td class="entry_details" colspan="5">
   25674               <p>For example if maxLatency was 2,<wbr/></p>
   25675 <pre><code>initial request = X (repeating)
   25676 request1 = X
   25677 request2 = Y
   25678 request3 = Y
   25679 request4 = Y
   25680 
   25681 where requestN has frameNumber N,<wbr/> and the first of the repeating
   25682 initial request's has frameNumber F (and F &lt; 1).<wbr/>
   25683 
   25684 initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
   25685 result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
   25686 result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
   25687 result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
   25688 result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 }
   25689 
   25690 where resultN has frameNumber N.<wbr/>
   25691 </code></pre>
   25692 <p>Since <code>result4</code> has a <code>frameNumber == 4</code> and
   25693 <code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly
   25694 <code>4 - 2 = 2</code>.<wbr/></p>
   25695 <p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of
   25696 <a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or
   25697 <code>@link{android.<wbr/>hardware.<wbr/>camera2.<wbr/>Capture<wbr/>Result#get<wbr/>Frame<wbr/>Number}</code>.<wbr/></p>
   25698 <p>LIMITED devices are strongly encouraged to use a non-negative
   25699 value.<wbr/> If UNKNOWN is used here then app developers do not have a way
   25700 to know when sensor settings have been applied.<wbr/></p>
   25701             </td>
   25702           </tr>
   25703 
   25704           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   25705            <!-- end of entry -->
   25706         
   25707         
   25708 
   25709       <!-- end of kind -->
   25710       </tbody>
   25711 
   25712   <!-- end of section -->
   25713   <tr><td colspan="6" id="section_reprocess" class="section">reprocess</td></tr>
   25714 
   25715 
   25716       <tr><td colspan="6" class="kind">controls</td></tr>
   25717 
   25718       <thead class="entries_header">
   25719         <tr>
   25720           <th class="th_name">Property Name</th>
   25721           <th class="th_type">Type</th>
   25722           <th class="th_description">Description</th>
   25723           <th class="th_units">Units</th>
   25724           <th class="th_range">Range</th>
   25725           <th class="th_tags">Tags</th>
   25726         </tr>
   25727       </thead>
   25728 
   25729       <tbody>
   25730 
   25731         
   25732 
   25733         
   25734 
   25735         
   25736 
   25737         
   25738 
   25739                 
   25740           <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor">
   25741             <td class="entry_name
   25742              " rowspan="3">
   25743               android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
   25744             </td>
   25745             <td class="entry_type">
   25746                 <span class="entry_type_name">float</span>
   25747 
   25748               <span class="entry_type_visibility"> [public]</span>
   25749 
   25750 
   25751               <span class="entry_type_hwlevel">[limited] </span>
   25752 
   25753 
   25754 
   25755 
   25756             </td> <!-- entry_type -->
   25757 
   25758             <td class="entry_description">
   25759               <p>The amount of exposure time increase factor applied to the original output
   25760 frame by the application processing before sending for reprocessing.<wbr/></p>
   25761             </td>
   25762 
   25763             <td class="entry_units">
   25764               Relative exposure time increase factor.<wbr/>
   25765             </td>
   25766 
   25767             <td class="entry_range">
   25768               <p>&gt;= 1.<wbr/>0</p>
   25769             </td>
   25770 
   25771             <td class="entry_tags">
   25772               <ul class="entry_tags">
   25773                   <li><a href="#tag_REPROC">REPROC</a></li>
   25774               </ul>
   25775             </td>
   25776 
   25777           </tr>
   25778           <tr class="entries_header">
   25779             <th class="th_details" colspan="5">Details</th>
   25780           </tr>
   25781           <tr class="entry_cont">
   25782             <td class="entry_details" colspan="5">
   25783               <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
   25784 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
   25785 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
   25786 output frames to effectively reduce the noise to the same level as a frame that was
   25787 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
   25788 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
   25789 the camera device is that the amount of noise in the image would be approximately what
   25790 would be expected if the original capture parameters had been a sensitivity of
   25791 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
   25792 than S and T respectively.<wbr/> If the captured images were processed by the application
   25793 before being sent for reprocessing,<wbr/> then the application may have used image processing
   25794 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
   25795 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
   25796 control,<wbr/> the application can communicate to the camera device the actual noise level
   25797 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
   25798 device can select appropriate noise reduction and edge enhancement parameters to avoid
   25799 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
   25800 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
   25801 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
   25802 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
   25803 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
   25804 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
   25805 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
   25806 produce the best quality images.<wbr/></p>
   25807 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
   25808 buffer in a way that affects its effective exposure time.<wbr/></p>
   25809 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
   25810 reduction reprocessing,<wbr/> it is only effective when <code><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> != OFF</code>.<wbr/>
   25811 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
   25812 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
   25813             </td>
   25814           </tr>
   25815 
   25816 
   25817           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   25818            <!-- end of entry -->
   25819         
   25820         
   25821 
   25822       <!-- end of kind -->
   25823       </tbody>
   25824       <tr><td colspan="6" class="kind">dynamic</td></tr>
   25825 
   25826       <thead class="entries_header">
   25827         <tr>
   25828           <th class="th_name">Property Name</th>
   25829           <th class="th_type">Type</th>
   25830           <th class="th_description">Description</th>
   25831           <th class="th_units">Units</th>
   25832           <th class="th_range">Range</th>
   25833           <th class="th_tags">Tags</th>
   25834         </tr>
   25835       </thead>
   25836 
   25837       <tbody>
   25838 
   25839         
   25840 
   25841         
   25842 
   25843         
   25844 
   25845         
   25846 
   25847                 
   25848           <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor">
   25849             <td class="entry_name
   25850              " rowspan="3">
   25851               android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
   25852             </td>
   25853             <td class="entry_type">
   25854                 <span class="entry_type_name">float</span>
   25855 
   25856               <span class="entry_type_visibility"> [public]</span>
   25857 
   25858 
   25859               <span class="entry_type_hwlevel">[limited] </span>
   25860 
   25861 
   25862 
   25863 
   25864             </td> <!-- entry_type -->
   25865 
   25866             <td class="entry_description">
   25867               <p>The amount of exposure time increase factor applied to the original output
   25868 frame by the application processing before sending for reprocessing.<wbr/></p>
   25869             </td>
   25870 
   25871             <td class="entry_units">
   25872               Relative exposure time increase factor.<wbr/>
   25873             </td>
   25874 
   25875             <td class="entry_range">
   25876               <p>&gt;= 1.<wbr/>0</p>
   25877             </td>
   25878 
   25879             <td class="entry_tags">
   25880               <ul class="entry_tags">
   25881                   <li><a href="#tag_REPROC">REPROC</a></li>
   25882               </ul>
   25883             </td>
   25884 
   25885           </tr>
   25886           <tr class="entries_header">
   25887             <th class="th_details" colspan="5">Details</th>
   25888           </tr>
   25889           <tr class="entry_cont">
   25890             <td class="entry_details" colspan="5">
   25891               <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
   25892 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
   25893 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
   25894 output frames to effectively reduce the noise to the same level as a frame that was
   25895 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
   25896 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
   25897 the camera device is that the amount of noise in the image would be approximately what
   25898 would be expected if the original capture parameters had been a sensitivity of
   25899 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
   25900 than S and T respectively.<wbr/> If the captured images were processed by the application
   25901 before being sent for reprocessing,<wbr/> then the application may have used image processing
   25902 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
   25903 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
   25904 control,<wbr/> the application can communicate to the camera device the actual noise level
   25905 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
   25906 device can select appropriate noise reduction and edge enhancement parameters to avoid
   25907 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
   25908 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
   25909 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
   25910 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
   25911 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
   25912 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
   25913 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
   25914 produce the best quality images.<wbr/></p>
   25915 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
   25916 buffer in a way that affects its effective exposure time.<wbr/></p>
   25917 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
   25918 reduction reprocessing,<wbr/> it is only effective when <code><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> != OFF</code>.<wbr/>
   25919 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
   25920 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
   25921             </td>
   25922           </tr>
   25923 
   25924 
   25925           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   25926            <!-- end of entry -->
   25927         
   25928         
   25929 
   25930       <!-- end of kind -->
   25931       </tbody>
   25932       <tr><td colspan="6" class="kind">static</td></tr>
   25933 
   25934       <thead class="entries_header">
   25935         <tr>
   25936           <th class="th_name">Property Name</th>
   25937           <th class="th_type">Type</th>
   25938           <th class="th_description">Description</th>
   25939           <th class="th_units">Units</th>
   25940           <th class="th_range">Range</th>
   25941           <th class="th_tags">Tags</th>
   25942         </tr>
   25943       </thead>
   25944 
   25945       <tbody>
   25946 
   25947         
   25948 
   25949         
   25950 
   25951         
   25952 
   25953         
   25954 
   25955                 
   25956           <tr class="entry" id="static_android.reprocess.maxCaptureStall">
   25957             <td class="entry_name
   25958              " rowspan="3">
   25959               android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall
   25960             </td>
   25961             <td class="entry_type">
   25962                 <span class="entry_type_name">int32</span>
   25963 
   25964               <span class="entry_type_visibility"> [public]</span>
   25965 
   25966 
   25967               <span class="entry_type_hwlevel">[limited] </span>
   25968 
   25969 
   25970 
   25971 
   25972             </td> <!-- entry_type -->
   25973 
   25974             <td class="entry_description">
   25975               <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a
   25976 reprocess capture request.<wbr/></p>
   25977             </td>
   25978 
   25979             <td class="entry_units">
   25980               Number of frames.<wbr/>
   25981             </td>
   25982 
   25983             <td class="entry_range">
   25984               <p>&lt;= 4</p>
   25985             </td>
   25986 
   25987             <td class="entry_tags">
   25988               <ul class="entry_tags">
   25989                   <li><a href="#tag_REPROC">REPROC</a></li>
   25990               </ul>
   25991             </td>
   25992 
   25993           </tr>
   25994           <tr class="entries_header">
   25995             <th class="th_details" colspan="5">Details</th>
   25996           </tr>
   25997           <tr class="entry_cont">
   25998             <td class="entry_details" colspan="5">
   25999               <p>The key describes the maximal interference that one reprocess (input) request
   26000 can introduce to the camera simultaneous streaming of regular (output) capture
   26001 requests,<wbr/> including repeating requests.<wbr/></p>
   26002 <p>When a reprocessing capture request is submitted while a camera output repeating request
   26003 (e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture
   26004 pipeline for at least one frame duration so that the camera device is unable to process
   26005 the following capture request in time for the next sensor start of exposure boundary.<wbr/>
   26006 When this happens,<wbr/> the application may observe a capture time gap (longer than one frame
   26007 duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview
   26008 glitch if the repeating request output targets include a preview surface.<wbr/> This key gives
   26009 the worst-case number of frame stall introduced by one reprocess request with any kind of
   26010 formats/<wbr/>sizes combination.<wbr/></p>
   26011 <p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the
   26012 ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p>
   26013 <p>This key is supported if the camera device supports PRIVATE or YUV reprocessing (
   26014 i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or
   26015 YUV_<wbr/>REPROCESSING).<wbr/></p>
   26016             </td>
   26017           </tr>
   26018 
   26019 
   26020           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   26021            <!-- end of entry -->
   26022         
   26023         
   26024 
   26025       <!-- end of kind -->
   26026       </tbody>
   26027 
   26028   <!-- end of section -->
   26029   <tr><td colspan="6" id="section_depth" class="section">depth</td></tr>
   26030 
   26031 
   26032       <tr><td colspan="6" class="kind">static</td></tr>
   26033 
   26034       <thead class="entries_header">
   26035         <tr>
   26036           <th class="th_name">Property Name</th>
   26037           <th class="th_type">Type</th>
   26038           <th class="th_description">Description</th>
   26039           <th class="th_units">Units</th>
   26040           <th class="th_range">Range</th>
   26041           <th class="th_tags">Tags</th>
   26042         </tr>
   26043       </thead>
   26044 
   26045       <tbody>
   26046 
   26047         
   26048 
   26049         
   26050 
   26051         
   26052 
   26053         
   26054 
   26055                 
   26056           <tr class="entry" id="static_android.depth.maxDepthSamples">
   26057             <td class="entry_name
   26058              " rowspan="3">
   26059               android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples
   26060             </td>
   26061             <td class="entry_type">
   26062                 <span class="entry_type_name">int32</span>
   26063 
   26064               <span class="entry_type_visibility"> [system]</span>
   26065 
   26066 
   26067               <span class="entry_type_hwlevel">[limited] </span>
   26068 
   26069 
   26070 
   26071 
   26072             </td> <!-- entry_type -->
   26073 
   26074             <td class="entry_description">
   26075               <p>Maximum number of points that a depth point cloud may contain.<wbr/></p>
   26076             </td>
   26077 
   26078             <td class="entry_units">
   26079             </td>
   26080 
   26081             <td class="entry_range">
   26082             </td>
   26083 
   26084             <td class="entry_tags">
   26085               <ul class="entry_tags">
   26086                   <li><a href="#tag_DEPTH">DEPTH</a></li>
   26087               </ul>
   26088             </td>
   26089 
   26090           </tr>
   26091           <tr class="entries_header">
   26092             <th class="th_details" colspan="5">Details</th>
   26093           </tr>
   26094           <tr class="entry_cont">
   26095             <td class="entry_details" colspan="5">
   26096               <p>If a camera device supports outputting depth range data in the form of a depth point
   26097 cloud (<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH_POINT_CLOUD">Image<wbr/>Format#DEPTH_<wbr/>POINT_<wbr/>CLOUD</a>),<wbr/> this is the maximum
   26098 number of points an output buffer may contain.<wbr/></p>
   26099 <p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/>
   26100 If output in the depth point cloud format is not supported,<wbr/> this entry will
   26101 not be defined.<wbr/></p>
   26102             </td>
   26103           </tr>
   26104 
   26105 
   26106           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   26107            <!-- end of entry -->
   26108         
   26109                 
   26110           <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations">
   26111             <td class="entry_name
   26112              " rowspan="3">
   26113               android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations
   26114             </td>
   26115             <td class="entry_type">
   26116                 <span class="entry_type_name entry_type_name_enum">int32</span>
   26117                 <span class="entry_type_container">x</span>
   26118 
   26119                 <span class="entry_type_array">
   26120                   n x 4
   26121                 </span>
   26122               <span class="entry_type_visibility"> [hidden as streamConfiguration]</span>
   26123 
   26124 
   26125               <span class="entry_type_hwlevel">[limited] </span>
   26126 
   26127 
   26128 
   26129                 <ul class="entry_type_enum">
   26130                   <li>
   26131                     <span class="entry_type_enum_name">OUTPUT</span>
   26132                   </li>
   26133                   <li>
   26134                     <span class="entry_type_enum_name">INPUT</span>
   26135                   </li>
   26136                 </ul>
   26137 
   26138             </td> <!-- entry_type -->
   26139 
   26140             <td class="entry_description">
   26141               <p>The available depth dataspace stream
   26142 configurations that this camera device supports
   26143 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
   26144             </td>
   26145 
   26146             <td class="entry_units">
   26147             </td>
   26148 
   26149             <td class="entry_range">
   26150             </td>
   26151 
   26152             <td class="entry_tags">
   26153               <ul class="entry_tags">
   26154                   <li><a href="#tag_DEPTH">DEPTH</a></li>
   26155               </ul>
   26156             </td>
   26157 
   26158           </tr>
   26159           <tr class="entries_header">
   26160             <th class="th_details" colspan="5">Details</th>
   26161           </tr>
   26162           <tr class="entry_cont">
   26163             <td class="entry_details" colspan="5">
   26164               <p>These are output stream configurations for use with
   26165 dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are
   26166 listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
   26167 <p>Only devices that support depth output for at least
   26168 the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include
   26169 this entry.<wbr/></p>
   26170 <p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB
   26171 sparse depth point cloud must report a single entry for
   26172 the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/>
   26173 <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to
   26174 the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p>
   26175             </td>
   26176           </tr>
   26177 
   26178 
   26179           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   26180            <!-- end of entry -->
   26181         
   26182                 
   26183           <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations">
   26184             <td class="entry_name
   26185              " rowspan="3">
   26186               android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations
   26187             </td>
   26188             <td class="entry_type">
   26189                 <span class="entry_type_name">int64</span>
   26190                 <span class="entry_type_container">x</span>
   26191 
   26192                 <span class="entry_type_array">
   26193                   4 x n
   26194                 </span>
   26195               <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
   26196 
   26197 
   26198               <span class="entry_type_hwlevel">[limited] </span>
   26199 
   26200 
   26201 
   26202 
   26203             </td> <!-- entry_type -->
   26204 
   26205             <td class="entry_description">
   26206               <p>This lists the minimum frame duration for each
   26207 format/<wbr/>size combination for depth output formats.<wbr/></p>
   26208             </td>
   26209 
   26210             <td class="entry_units">
   26211               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
   26212             </td>
   26213 
   26214             <td class="entry_range">
   26215             </td>
   26216 
   26217             <td class="entry_tags">
   26218               <ul class="entry_tags">
   26219                   <li><a href="#tag_DEPTH">DEPTH</a></li>
   26220               </ul>
   26221             </td>
   26222 
   26223           </tr>
   26224           <tr class="entries_header">
   26225             <th class="th_details" colspan="5">Details</th>
   26226           </tr>
   26227           <tr class="entry_cont">
   26228             <td class="entry_details" colspan="5">
   26229               <p>This should correspond to the frame duration when only that
   26230 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
   26231 set to either OFF or FAST.<wbr/></p>
   26232 <p>When multiple streams are used in a request,<wbr/> the minimum frame
   26233 duration will be max(individual stream min durations).<wbr/></p>
   26234 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
   26235 is the same regardless of whether the stream is input or output.<wbr/></p>
   26236 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
   26237 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
   26238 calculating the max frame rate.<wbr/></p>
   26239 <p>(Keep in sync with <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>)</p>
   26240             </td>
   26241           </tr>
   26242 
   26243 
   26244           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   26245            <!-- end of entry -->
   26246         
   26247                 
   26248           <tr class="entry" id="static_android.depth.availableDepthStallDurations">
   26249             <td class="entry_name
   26250              " rowspan="3">
   26251               android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations
   26252             </td>
   26253             <td class="entry_type">
   26254                 <span class="entry_type_name">int64</span>
   26255                 <span class="entry_type_container">x</span>
   26256 
   26257                 <span class="entry_type_array">
   26258                   4 x n
   26259                 </span>
   26260               <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
   26261 
   26262 
   26263               <span class="entry_type_hwlevel">[limited] </span>
   26264 
   26265 
   26266 
   26267 
   26268             </td> <!-- entry_type -->
   26269 
   26270             <td class="entry_description">
   26271               <p>This lists the maximum stall duration for each
   26272 output format/<wbr/>size combination for depth streams.<wbr/></p>
   26273             </td>
   26274 
   26275             <td class="entry_units">
   26276               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
   26277             </td>
   26278 
   26279             <td class="entry_range">
   26280             </td>
   26281 
   26282             <td class="entry_tags">
   26283               <ul class="entry_tags">
   26284                   <li><a href="#tag_DEPTH">DEPTH</a></li>
   26285               </ul>
   26286             </td>
   26287 
   26288           </tr>
   26289           <tr class="entries_header">
   26290             <th class="th_details" colspan="5">Details</th>
   26291           </tr>
   26292           <tr class="entry_cont">
   26293             <td class="entry_details" colspan="5">
   26294               <p>A stall duration is how much extra time would get added
   26295 to the normal minimum frame duration for a repeating request
   26296 that has streams with non-zero stall.<wbr/></p>
   26297 <p>This functions similarly to
   26298 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth
   26299 streams.<wbr/></p>
   26300 <p>All depth output stream formats may have a nonzero stall
   26301 duration.<wbr/></p>
   26302             </td>
   26303           </tr>
   26304 
   26305 
   26306           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   26307            <!-- end of entry -->
   26308         
   26309                 
   26310           <tr class="entry" id="static_android.depth.depthIsExclusive">
   26311             <td class="entry_name
   26312              " rowspan="3">
   26313               android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive
   26314             </td>
   26315             <td class="entry_type">
   26316                 <span class="entry_type_name entry_type_name_enum">byte</span>
   26317 
   26318               <span class="entry_type_visibility"> [public as boolean]</span>
   26319 
   26320 
   26321               <span class="entry_type_hwlevel">[limited] </span>
   26322 
   26323 
   26324 
   26325                 <ul class="entry_type_enum">
   26326                   <li>
   26327                     <span class="entry_type_enum_name">FALSE</span>
   26328                   </li>
   26329                   <li>
   26330                     <span class="entry_type_enum_name">TRUE</span>
   26331                   </li>
   26332                 </ul>
   26333 
   26334             </td> <!-- entry_type -->
   26335 
   26336             <td class="entry_description">
   26337               <p>Indicates whether a capture request may target both a
   26338 DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as
   26339 YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p>
   26340             </td>
   26341 
   26342             <td class="entry_units">
   26343             </td>
   26344 
   26345             <td class="entry_range">
   26346             </td>
   26347 
   26348             <td class="entry_tags">
   26349             </td>
   26350 
   26351           </tr>
   26352           <tr class="entries_header">
   26353             <th class="th_details" colspan="5">Details</th>
   26354           </tr>
   26355           <tr class="entry_cont">
   26356             <td class="entry_details" colspan="5">
   26357               <p>If TRUE,<wbr/> including both depth and color outputs in a single
   26358 capture request is not supported.<wbr/> An application must interleave color
   26359 and depth requests.<wbr/>  If FALSE,<wbr/> a single request can target both types
   26360 of output.<wbr/></p>
   26361 <p>Typically,<wbr/> this restriction exists on camera devices that
   26362 need to emit a specific pattern or wavelength of light to
   26363 measure depth values,<wbr/> which causes the color image to be
   26364 corrupted during depth measurement.<wbr/></p>
   26365             </td>
   26366           </tr>
   26367 
   26368 
   26369           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
   26370            <!-- end of entry -->
   26371         
   26372         
   26373 
   26374       <!-- end of kind -->
   26375       </tbody>
   26376 
   26377   <!-- end of section -->
   26378 <!-- </namespace> -->
   26379   </table>
   26380 
   26381   <div class="tags" id="tag_index">
   26382     <h2>Tags</h2>
   26383     <ul>
   26384       <li id="tag_BC">BC - 
   26385         Needed for backwards compatibility with old Java API
   26386     
   26387         <ul class="tags_entries">
   26388           <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li>
   26389           <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li>
   26390           <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li>
   26391           <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li>
   26392           <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li>
   26393           <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li>
   26394           <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li>
   26395           <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li>
   26396           <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li>
   26397           <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li>
   26398           <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li>
   26399           <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
   26400           <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li>
   26401           <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li>
   26402           <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li>
   26403           <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li>
   26404           <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li>
   26405           <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li>
   26406           <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li>
   26407           <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li>
   26408           <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li>
   26409           <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li>
   26410           <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li>
   26411           <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li>
   26412           <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li>
   26413           <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li>
   26414           <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li>
   26415           <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li>
   26416           <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li>
   26417           <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li>
   26418           <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li>
   26419           <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li>
   26420           <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li>
   26421           <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li>
   26422           <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li>
   26423           <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li>
   26424           <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li>
   26425           <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li>
   26426           <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li>
   26427           <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li>
   26428           <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li>
   26429           <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li>
   26430           <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
   26431           <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
   26432           <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li>
   26433           <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li>
   26434           <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li>
   26435           <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li>
   26436           <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li>
   26437           <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li>
   26438           <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li>
   26439           <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li>
   26440           <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
   26441           <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
   26442           <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
   26443           <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
   26444           <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
   26445           <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li>
   26446           <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li>
   26447           <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li>
   26448           <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li>
   26449           <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li>
   26450           <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li>
   26451           <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li>
   26452           <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li>
   26453           <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li>
   26454           <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li>
   26455         </ul>
   26456       </li> <!-- tag_BC -->
   26457       <li id="tag_V1">V1 - 
   26458         New features for first camera 2 release (API1)
   26459     
   26460         <ul class="tags_entries">
   26461           <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li>
   26462           <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li>
   26463           <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
   26464           <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
   26465           <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
   26466           <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
   26467           <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li>
   26468           <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li>
   26469           <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li>
   26470           <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
   26471           <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li>
   26472           <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li>
   26473           <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li>
   26474           <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
   26475           <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li>
   26476           <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li>
   26477           <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li>
   26478           <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li>
   26479           <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li>
   26480           <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
   26481           <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
   26482           <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li>
   26483           <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li>
   26484           <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li>
   26485           <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
   26486           <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
   26487           <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
   26488           <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
   26489           <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
   26490           <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
   26491           <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
   26492           <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li>
   26493           <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
   26494           <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li>
   26495           <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
   26496           <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
   26497           <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
   26498           <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li>
   26499           <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li>
   26500           <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
   26501           <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
   26502           <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
   26503           <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li>
   26504           <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li>
   26505           <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
   26506         </ul>
   26507       </li> <!-- tag_V1 -->
   26508       <li id="tag_RAW">RAW - 
   26509         Needed for useful RAW image processing and DNG file support
   26510     
   26511         <ul class="tags_entries">
   26512           <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
   26513           <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
   26514           <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
   26515           <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
   26516           <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
   26517           <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li>
   26518           <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li>
   26519           <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
   26520           <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li>
   26521           <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li>
   26522           <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li>
   26523           <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li>
   26524           <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li>
   26525           <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li>
   26526           <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li>
   26527           <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li>
   26528           <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li>
   26529           <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li>
   26530           <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li>
   26531           <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li>
   26532           <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li>
   26533           <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li>
   26534           <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
   26535           <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
   26536           <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
   26537           <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li>
   26538           <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
   26539         </ul>
   26540       </li> <!-- tag_RAW -->
   26541       <li id="tag_HAL2">HAL2 - 
   26542         Entry is only used by camera device HAL 2.x
   26543     
   26544         <ul class="tags_entries">
   26545           <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
   26546           <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li>
   26547           <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li>
   26548           <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li>
   26549           <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li>
   26550         </ul>
   26551       </li> <!-- tag_HAL2 -->
   26552       <li id="tag_FULL">FULL - 
   26553         Entry is required for full hardware level devices, and optional for other hardware levels
   26554     
   26555         <ul class="tags_entries">
   26556           <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
   26557         </ul>
   26558       </li> <!-- tag_FULL -->
   26559       <li id="tag_DEPTH">DEPTH - 
   26560         Entry is required for the depth capability.
   26561     
   26562         <ul class="tags_entries">
   26563           <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li>
   26564           <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li>
   26565           <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li>
   26566           <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li>
   26567           <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li>
   26568           <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li>
   26569           <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li>
   26570           <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li>
   26571         </ul>
   26572       </li> <!-- tag_DEPTH -->
   26573       <li id="tag_REPROC">REPROC - 
   26574         Entry is required for the YUV or PRIVATE reprocessing capability.
   26575     
   26576         <ul class="tags_entries">
   26577           <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
   26578           <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
   26579           <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
   26580           <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
   26581           <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li>
   26582           <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li>
   26583           <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li>
   26584           <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li>
   26585           <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
   26586           <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
   26587         </ul>
   26588       </li> <!-- tag_REPROC -->
   26589       <li id="tag_FUTURE">FUTURE - 
   26590         Entry is  under-specified and is not required for now. This is for book-keeping purpose,
   26591         do not implement or use it, it may be revised for future.
   26592     
   26593         <ul class="tags_entries">
   26594           <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li>
   26595           <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li>
   26596           <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li>
   26597           <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li>
   26598           <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li>
   26599           <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li>
   26600           <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li>
   26601           <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li>
   26602           <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li>
   26603           <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li>
   26604           <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li>
   26605           <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li>
   26606           <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li>
   26607           <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li>
   26608           <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li>
   26609           <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li>
   26610           <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li>
   26611           <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li>
   26612           <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li>
   26613           <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li>
   26614           <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li>
   26615         </ul>
   26616       </li> <!-- tag_FUTURE -->
   26617     </ul>
   26618   </div>
   26619 
   26620   [ <a href="#">top</a> ]
   26621 
   26622 </body>
   26623 </html>
   26624