Zhijun He | 8486e41 | 2016-09-12 15:30:51 -0700 | [diff] [blame] | 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.4 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 | <li |
| 192 | ><a href="#controls_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li> |
| 193 | </ul> |
| 194 | </li> |
| 195 | <li> |
| 196 | <span class="toc_kind_header">static</span> |
| 197 | <ul class="toc_section"> |
| 198 | <li |
| 199 | ><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a></li> |
| 200 | <li |
| 201 | ><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a></li> |
| 202 | <li |
| 203 | ><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a></li> |
| 204 | <li |
| 205 | ><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a></li> |
| 206 | <li |
| 207 | ><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a></li> |
| 208 | <li |
| 209 | ><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a></li> |
| 210 | <li |
| 211 | ><a href="#static_android.control.availableEffects">android.control.availableEffects</a></li> |
| 212 | <li |
| 213 | ><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a></li> |
| 214 | <li |
| 215 | ><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a></li> |
| 216 | <li |
| 217 | ><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a></li> |
| 218 | <li |
| 219 | ><a href="#static_android.control.maxRegions">android.control.maxRegions</a></li> |
| 220 | <li |
| 221 | ><a href="#static_android.control.maxRegionsAe">android.control.maxRegionsAe</a></li> |
| 222 | <li |
| 223 | ><a href="#static_android.control.maxRegionsAwb">android.control.maxRegionsAwb</a></li> |
| 224 | <li |
| 225 | ><a href="#static_android.control.maxRegionsAf">android.control.maxRegionsAf</a></li> |
| 226 | <li |
| 227 | ><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a></li> |
| 228 | <li |
| 229 | ><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a></li> |
| 230 | <li |
| 231 | ><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a></li> |
| 232 | <li |
| 233 | ><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a></li> |
| 234 | <li |
| 235 | ><a href="#static_android.control.availableModes">android.control.availableModes</a></li> |
| 236 | <li |
| 237 | ><a href="#static_android.control.postRawSensitivityBoostRange">android.control.postRawSensitivityBoostRange</a></li> |
| 238 | </ul> |
| 239 | </li> |
| 240 | <li> |
| 241 | <span class="toc_kind_header">dynamic</span> |
| 242 | <ul class="toc_section"> |
| 243 | <li |
| 244 | class="toc_deprecated" |
| 245 | ><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a></li> |
| 246 | <li |
| 247 | ><a href="#dynamic_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li> |
| 248 | <li |
| 249 | ><a href="#dynamic_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li> |
| 250 | <li |
| 251 | ><a href="#dynamic_android.control.aeLock">android.control.aeLock</a></li> |
| 252 | <li |
| 253 | ><a href="#dynamic_android.control.aeMode">android.control.aeMode</a></li> |
| 254 | <li |
| 255 | ><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a></li> |
| 256 | <li |
| 257 | ><a href="#dynamic_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li> |
| 258 | <li |
| 259 | ><a href="#dynamic_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li> |
| 260 | <li |
| 261 | ><a href="#dynamic_android.control.aeState">android.control.aeState</a></li> |
| 262 | <li |
| 263 | ><a href="#dynamic_android.control.afMode">android.control.afMode</a></li> |
| 264 | <li |
| 265 | ><a href="#dynamic_android.control.afRegions">android.control.afRegions</a></li> |
| 266 | <li |
| 267 | ><a href="#dynamic_android.control.afTrigger">android.control.afTrigger</a></li> |
| 268 | <li |
| 269 | ><a href="#dynamic_android.control.afState">android.control.afState</a></li> |
| 270 | <li |
| 271 | class="toc_deprecated" |
| 272 | ><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a></li> |
| 273 | <li |
| 274 | ><a href="#dynamic_android.control.awbLock">android.control.awbLock</a></li> |
| 275 | <li |
| 276 | ><a href="#dynamic_android.control.awbMode">android.control.awbMode</a></li> |
| 277 | <li |
| 278 | ><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a></li> |
| 279 | <li |
| 280 | ><a href="#dynamic_android.control.captureIntent">android.control.captureIntent</a></li> |
| 281 | <li |
| 282 | ><a href="#dynamic_android.control.awbState">android.control.awbState</a></li> |
| 283 | <li |
| 284 | ><a href="#dynamic_android.control.effectMode">android.control.effectMode</a></li> |
| 285 | <li |
| 286 | ><a href="#dynamic_android.control.mode">android.control.mode</a></li> |
| 287 | <li |
| 288 | ><a href="#dynamic_android.control.sceneMode">android.control.sceneMode</a></li> |
| 289 | <li |
| 290 | ><a href="#dynamic_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li> |
| 291 | <li |
| 292 | ><a href="#dynamic_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li> |
| 293 | </ul> |
| 294 | </li> |
| 295 | </ul> <!-- toc_section --> |
| 296 | </li> |
| 297 | <li> |
| 298 | <span class="toc_section_header"><a href="#section_demosaic">demosaic</a></span> |
| 299 | <ul class="toc_section"> |
| 300 | <li> |
| 301 | <span class="toc_kind_header">controls</span> |
| 302 | <ul class="toc_section"> |
| 303 | <li |
| 304 | ><a href="#controls_android.demosaic.mode">android.demosaic.mode</a></li> |
| 305 | </ul> |
| 306 | </li> |
| 307 | </ul> <!-- toc_section --> |
| 308 | </li> |
| 309 | <li> |
| 310 | <span class="toc_section_header"><a href="#section_edge">edge</a></span> |
| 311 | <ul class="toc_section"> |
| 312 | <li> |
| 313 | <span class="toc_kind_header">controls</span> |
| 314 | <ul class="toc_section"> |
| 315 | <li |
| 316 | ><a href="#controls_android.edge.mode">android.edge.mode</a></li> |
| 317 | <li |
| 318 | ><a href="#controls_android.edge.strength">android.edge.strength</a></li> |
| 319 | </ul> |
| 320 | </li> |
| 321 | <li> |
| 322 | <span class="toc_kind_header">static</span> |
| 323 | <ul class="toc_section"> |
| 324 | <li |
| 325 | ><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a></li> |
| 326 | </ul> |
| 327 | </li> |
| 328 | <li> |
| 329 | <span class="toc_kind_header">dynamic</span> |
| 330 | <ul class="toc_section"> |
| 331 | <li |
| 332 | ><a href="#dynamic_android.edge.mode">android.edge.mode</a></li> |
| 333 | </ul> |
| 334 | </li> |
| 335 | </ul> <!-- toc_section --> |
| 336 | </li> |
| 337 | <li> |
| 338 | <span class="toc_section_header"><a href="#section_flash">flash</a></span> |
| 339 | <ul class="toc_section"> |
| 340 | <li> |
| 341 | <span class="toc_kind_header">controls</span> |
| 342 | <ul class="toc_section"> |
| 343 | <li |
| 344 | ><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li> |
| 345 | <li |
| 346 | ><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li> |
| 347 | <li |
| 348 | ><a href="#controls_android.flash.mode">android.flash.mode</a></li> |
| 349 | </ul> |
| 350 | </li> |
| 351 | <li> |
| 352 | <span class="toc_kind_header">static</span> |
| 353 | <ul class="toc_section"> |
| 354 | |
| 355 | <li |
| 356 | ><a href="#static_android.flash.info.available">android.flash.info.available</a></li> |
| 357 | <li |
| 358 | ><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li> |
| 359 | |
| 360 | <li |
| 361 | ><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li> |
| 362 | <li |
| 363 | ><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li> |
| 364 | </ul> |
| 365 | </li> |
| 366 | <li> |
| 367 | <span class="toc_kind_header">dynamic</span> |
| 368 | <ul class="toc_section"> |
| 369 | <li |
| 370 | ><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li> |
| 371 | <li |
| 372 | ><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li> |
| 373 | <li |
| 374 | ><a href="#dynamic_android.flash.mode">android.flash.mode</a></li> |
| 375 | <li |
| 376 | ><a href="#dynamic_android.flash.state">android.flash.state</a></li> |
| 377 | </ul> |
| 378 | </li> |
| 379 | </ul> <!-- toc_section --> |
| 380 | </li> |
| 381 | <li> |
| 382 | <span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span> |
| 383 | <ul class="toc_section"> |
| 384 | <li> |
| 385 | <span class="toc_kind_header">controls</span> |
| 386 | <ul class="toc_section"> |
| 387 | <li |
| 388 | ><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li> |
| 389 | </ul> |
| 390 | </li> |
| 391 | <li> |
| 392 | <span class="toc_kind_header">static</span> |
| 393 | <ul class="toc_section"> |
| 394 | <li |
| 395 | ><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a></li> |
| 396 | </ul> |
| 397 | </li> |
| 398 | <li> |
| 399 | <span class="toc_kind_header">dynamic</span> |
| 400 | <ul class="toc_section"> |
| 401 | <li |
| 402 | ><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li> |
| 403 | </ul> |
| 404 | </li> |
| 405 | </ul> <!-- toc_section --> |
| 406 | </li> |
| 407 | <li> |
| 408 | <span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span> |
| 409 | <ul class="toc_section"> |
| 410 | <li> |
| 411 | <span class="toc_kind_header">controls</span> |
| 412 | <ul class="toc_section"> |
| 413 | <li |
| 414 | ><a href="#controls_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li> |
| 415 | <li |
| 416 | ><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li> |
| 417 | <li |
| 418 | ><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li> |
| 419 | <li |
| 420 | ><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li> |
| 421 | <li |
| 422 | ><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li> |
| 423 | <li |
| 424 | ><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li> |
| 425 | <li |
| 426 | ><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li> |
| 427 | <li |
| 428 | ><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li> |
| 429 | </ul> |
| 430 | </li> |
| 431 | <li> |
| 432 | <span class="toc_kind_header">static</span> |
| 433 | <ul class="toc_section"> |
| 434 | <li |
| 435 | ><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li> |
| 436 | <li |
| 437 | ><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li> |
| 438 | </ul> |
| 439 | </li> |
| 440 | <li> |
| 441 | <span class="toc_kind_header">dynamic</span> |
| 442 | <ul class="toc_section"> |
| 443 | <li |
| 444 | ><a href="#dynamic_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li> |
| 445 | <li |
| 446 | ><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li> |
| 447 | <li |
| 448 | ><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li> |
| 449 | <li |
| 450 | ><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li> |
| 451 | <li |
| 452 | ><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li> |
| 453 | <li |
| 454 | ><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li> |
| 455 | <li |
| 456 | ><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li> |
| 457 | <li |
| 458 | ><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li> |
| 459 | <li |
| 460 | ><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li> |
| 461 | </ul> |
| 462 | </li> |
| 463 | </ul> <!-- toc_section --> |
| 464 | </li> |
| 465 | <li> |
| 466 | <span class="toc_section_header"><a href="#section_lens">lens</a></span> |
| 467 | <ul class="toc_section"> |
| 468 | <li> |
| 469 | <span class="toc_kind_header">controls</span> |
| 470 | <ul class="toc_section"> |
| 471 | <li |
| 472 | ><a href="#controls_android.lens.aperture">android.lens.aperture</a></li> |
| 473 | <li |
| 474 | ><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li> |
| 475 | <li |
| 476 | ><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li> |
| 477 | <li |
| 478 | ><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li> |
| 479 | <li |
| 480 | ><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li> |
| 481 | </ul> |
| 482 | </li> |
| 483 | <li> |
| 484 | <span class="toc_kind_header">static</span> |
| 485 | <ul class="toc_section"> |
| 486 | |
| 487 | <li |
| 488 | ><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li> |
| 489 | <li |
| 490 | ><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li> |
| 491 | <li |
| 492 | ><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li> |
| 493 | <li |
| 494 | ><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li> |
| 495 | <li |
| 496 | ><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li> |
| 497 | <li |
| 498 | ><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li> |
| 499 | <li |
| 500 | ><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li> |
| 501 | <li |
| 502 | ><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li> |
| 503 | |
| 504 | <li |
| 505 | ><a href="#static_android.lens.facing">android.lens.facing</a></li> |
| 506 | <li |
| 507 | ><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a></li> |
| 508 | <li |
| 509 | ><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a></li> |
| 510 | <li |
| 511 | ><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li> |
| 512 | <li |
| 513 | ><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a></li> |
| 514 | </ul> |
| 515 | </li> |
| 516 | <li> |
| 517 | <span class="toc_kind_header">dynamic</span> |
| 518 | <ul class="toc_section"> |
| 519 | <li |
| 520 | ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li> |
| 521 | <li |
| 522 | ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li> |
| 523 | <li |
| 524 | ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li> |
| 525 | <li |
| 526 | ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li> |
| 527 | <li |
| 528 | ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li> |
| 529 | <li |
| 530 | ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li> |
| 531 | <li |
| 532 | ><a href="#dynamic_android.lens.state">android.lens.state</a></li> |
| 533 | <li |
| 534 | ><a href="#dynamic_android.lens.poseRotation">android.lens.poseRotation</a></li> |
| 535 | <li |
| 536 | ><a href="#dynamic_android.lens.poseTranslation">android.lens.poseTranslation</a></li> |
| 537 | <li |
| 538 | ><a href="#dynamic_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li> |
| 539 | <li |
| 540 | ><a href="#dynamic_android.lens.radialDistortion">android.lens.radialDistortion</a></li> |
| 541 | </ul> |
| 542 | </li> |
| 543 | </ul> <!-- toc_section --> |
| 544 | </li> |
| 545 | <li> |
| 546 | <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span> |
| 547 | <ul class="toc_section"> |
| 548 | <li> |
| 549 | <span class="toc_kind_header">controls</span> |
| 550 | <ul class="toc_section"> |
| 551 | <li |
| 552 | ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li> |
| 553 | <li |
| 554 | ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li> |
| 555 | </ul> |
| 556 | </li> |
| 557 | <li> |
| 558 | <span class="toc_kind_header">static</span> |
| 559 | <ul class="toc_section"> |
| 560 | <li |
| 561 | ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li> |
| 562 | </ul> |
| 563 | </li> |
| 564 | <li> |
| 565 | <span class="toc_kind_header">dynamic</span> |
| 566 | <ul class="toc_section"> |
| 567 | <li |
| 568 | ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li> |
| 569 | </ul> |
| 570 | </li> |
| 571 | </ul> <!-- toc_section --> |
| 572 | </li> |
| 573 | <li> |
| 574 | <span class="toc_section_header"><a href="#section_quirks">quirks</a></span> |
| 575 | <ul class="toc_section"> |
| 576 | <li> |
| 577 | <span class="toc_kind_header">static</span> |
| 578 | <ul class="toc_section"> |
| 579 | <li |
| 580 | class="toc_deprecated" |
| 581 | ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li> |
| 582 | <li |
| 583 | class="toc_deprecated" |
| 584 | ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li> |
| 585 | <li |
| 586 | class="toc_deprecated" |
| 587 | ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li> |
| 588 | <li |
| 589 | class="toc_deprecated" |
| 590 | ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li> |
| 591 | </ul> |
| 592 | </li> |
| 593 | <li> |
| 594 | <span class="toc_kind_header">dynamic</span> |
| 595 | <ul class="toc_section"> |
| 596 | <li |
| 597 | class="toc_deprecated" |
| 598 | ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li> |
| 599 | </ul> |
| 600 | </li> |
| 601 | </ul> <!-- toc_section --> |
| 602 | </li> |
| 603 | <li> |
| 604 | <span class="toc_section_header"><a href="#section_request">request</a></span> |
| 605 | <ul class="toc_section"> |
| 606 | <li> |
| 607 | <span class="toc_kind_header">controls</span> |
| 608 | <ul class="toc_section"> |
| 609 | <li |
| 610 | class="toc_deprecated" |
| 611 | ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li> |
| 612 | <li |
| 613 | ><a href="#controls_android.request.id">android.request.id</a></li> |
| 614 | <li |
| 615 | class="toc_deprecated" |
| 616 | ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li> |
| 617 | <li |
| 618 | ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li> |
| 619 | <li |
| 620 | class="toc_deprecated" |
| 621 | ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li> |
| 622 | <li |
| 623 | class="toc_deprecated" |
| 624 | ><a href="#controls_android.request.type">android.request.type</a></li> |
| 625 | </ul> |
| 626 | </li> |
| 627 | <li> |
| 628 | <span class="toc_kind_header">static</span> |
| 629 | <ul class="toc_section"> |
| 630 | <li |
| 631 | ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li> |
| 632 | <li |
| 633 | ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li> |
| 634 | <li |
| 635 | ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li> |
| 636 | <li |
| 637 | ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li> |
| 638 | <li |
| 639 | class="toc_deprecated" |
| 640 | ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li> |
| 641 | <li |
| 642 | ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li> |
| 643 | <li |
| 644 | ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li> |
| 645 | <li |
| 646 | ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li> |
| 647 | <li |
| 648 | ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li> |
| 649 | <li |
| 650 | ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li> |
| 651 | <li |
| 652 | ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li> |
| 653 | <li |
| 654 | ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li> |
| 655 | </ul> |
| 656 | </li> |
| 657 | <li> |
| 658 | <span class="toc_kind_header">dynamic</span> |
| 659 | <ul class="toc_section"> |
| 660 | <li |
| 661 | class="toc_deprecated" |
| 662 | ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li> |
| 663 | <li |
| 664 | ><a href="#dynamic_android.request.id">android.request.id</a></li> |
| 665 | <li |
| 666 | ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li> |
| 667 | <li |
| 668 | class="toc_deprecated" |
| 669 | ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li> |
| 670 | <li |
| 671 | ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li> |
| 672 | </ul> |
| 673 | </li> |
| 674 | </ul> <!-- toc_section --> |
| 675 | </li> |
| 676 | <li> |
| 677 | <span class="toc_section_header"><a href="#section_scaler">scaler</a></span> |
| 678 | <ul class="toc_section"> |
| 679 | <li> |
| 680 | <span class="toc_kind_header">controls</span> |
| 681 | <ul class="toc_section"> |
| 682 | <li |
| 683 | ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li> |
| 684 | </ul> |
| 685 | </li> |
| 686 | <li> |
| 687 | <span class="toc_kind_header">static</span> |
| 688 | <ul class="toc_section"> |
| 689 | <li |
| 690 | class="toc_deprecated" |
| 691 | ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li> |
| 692 | <li |
| 693 | class="toc_deprecated" |
| 694 | ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li> |
| 695 | <li |
| 696 | class="toc_deprecated" |
| 697 | ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li> |
| 698 | <li |
| 699 | ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li> |
| 700 | <li |
| 701 | class="toc_deprecated" |
| 702 | ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li> |
| 703 | <li |
| 704 | class="toc_deprecated" |
| 705 | ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li> |
| 706 | <li |
| 707 | class="toc_deprecated" |
| 708 | ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li> |
| 709 | <li |
| 710 | class="toc_deprecated" |
| 711 | ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li> |
| 712 | <li |
| 713 | ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li> |
| 714 | <li |
| 715 | ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li> |
| 716 | <li |
| 717 | ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li> |
| 718 | <li |
| 719 | ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li> |
| 720 | <li |
| 721 | ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li> |
| 722 | <li |
| 723 | ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li> |
| 724 | </ul> |
| 725 | </li> |
| 726 | <li> |
| 727 | <span class="toc_kind_header">dynamic</span> |
| 728 | <ul class="toc_section"> |
| 729 | <li |
| 730 | ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li> |
| 731 | </ul> |
| 732 | </li> |
| 733 | </ul> <!-- toc_section --> |
| 734 | </li> |
| 735 | <li> |
| 736 | <span class="toc_section_header"><a href="#section_sensor">sensor</a></span> |
| 737 | <ul class="toc_section"> |
| 738 | <li> |
| 739 | <span class="toc_kind_header">controls</span> |
| 740 | <ul class="toc_section"> |
| 741 | <li |
| 742 | ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li> |
| 743 | <li |
| 744 | ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li> |
| 745 | <li |
| 746 | ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li> |
| 747 | <li |
| 748 | ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li> |
| 749 | <li |
| 750 | ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li> |
| 751 | </ul> |
| 752 | </li> |
| 753 | <li> |
| 754 | <span class="toc_kind_header">static</span> |
| 755 | <ul class="toc_section"> |
| 756 | |
| 757 | <li |
| 758 | ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li> |
| 759 | <li |
| 760 | ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li> |
| 761 | <li |
| 762 | ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li> |
| 763 | <li |
| 764 | ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li> |
| 765 | <li |
| 766 | ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li> |
| 767 | <li |
| 768 | ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li> |
| 769 | <li |
| 770 | ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li> |
| 771 | <li |
| 772 | ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li> |
| 773 | <li |
| 774 | ><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li> |
| 775 | <li |
| 776 | ><a href="#static_android.sensor.info.lensShadingApplied">android.sensor.info.lensShadingApplied</a></li> |
| 777 | <li |
| 778 | ><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a></li> |
| 779 | |
| 780 | <li |
| 781 | ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li> |
| 782 | <li |
| 783 | ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li> |
| 784 | <li |
| 785 | ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li> |
| 786 | <li |
| 787 | ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li> |
| 788 | <li |
| 789 | ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li> |
| 790 | <li |
| 791 | ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li> |
| 792 | <li |
| 793 | ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li> |
| 794 | <li |
| 795 | ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li> |
| 796 | <li |
| 797 | ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li> |
| 798 | <li |
| 799 | ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li> |
| 800 | <li |
| 801 | ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li> |
| 802 | <li |
| 803 | ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li> |
| 804 | <li |
| 805 | ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li> |
| 806 | <li |
| 807 | ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li> |
| 808 | <li |
| 809 | ><a href="#static_android.sensor.opticalBlackRegions">android.sensor.opticalBlackRegions</a></li> |
| 810 | <li |
| 811 | ><a href="#static_android.sensor.opaqueRawSize">android.sensor.opaqueRawSize</a></li> |
| 812 | </ul> |
| 813 | </li> |
| 814 | <li> |
| 815 | <span class="toc_kind_header">dynamic</span> |
| 816 | <ul class="toc_section"> |
| 817 | <li |
| 818 | ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li> |
| 819 | <li |
| 820 | ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li> |
| 821 | <li |
| 822 | ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li> |
| 823 | <li |
| 824 | ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li> |
| 825 | <li |
| 826 | ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li> |
| 827 | <li |
| 828 | ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li> |
| 829 | <li |
| 830 | ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li> |
| 831 | <li |
| 832 | ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li> |
| 833 | <li |
| 834 | ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li> |
| 835 | <li |
| 836 | ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li> |
| 837 | <li |
| 838 | ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li> |
| 839 | <li |
| 840 | ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li> |
| 841 | <li |
| 842 | ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li> |
| 843 | <li |
| 844 | ><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a></li> |
| 845 | <li |
| 846 | ><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a></li> |
| 847 | </ul> |
| 848 | </li> |
| 849 | </ul> <!-- toc_section --> |
| 850 | </li> |
| 851 | <li> |
| 852 | <span class="toc_section_header"><a href="#section_shading">shading</a></span> |
| 853 | <ul class="toc_section"> |
| 854 | <li> |
| 855 | <span class="toc_kind_header">controls</span> |
| 856 | <ul class="toc_section"> |
| 857 | <li |
| 858 | ><a href="#controls_android.shading.mode">android.shading.mode</a></li> |
| 859 | <li |
| 860 | ><a href="#controls_android.shading.strength">android.shading.strength</a></li> |
| 861 | </ul> |
| 862 | </li> |
| 863 | <li> |
| 864 | <span class="toc_kind_header">dynamic</span> |
| 865 | <ul class="toc_section"> |
| 866 | <li |
| 867 | ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li> |
| 868 | </ul> |
| 869 | </li> |
| 870 | <li> |
| 871 | <span class="toc_kind_header">static</span> |
| 872 | <ul class="toc_section"> |
| 873 | <li |
| 874 | ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li> |
| 875 | </ul> |
| 876 | </li> |
| 877 | </ul> <!-- toc_section --> |
| 878 | </li> |
| 879 | <li> |
| 880 | <span class="toc_section_header"><a href="#section_statistics">statistics</a></span> |
| 881 | <ul class="toc_section"> |
| 882 | <li> |
| 883 | <span class="toc_kind_header">controls</span> |
| 884 | <ul class="toc_section"> |
| 885 | <li |
| 886 | ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li> |
| 887 | <li |
| 888 | ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li> |
| 889 | <li |
| 890 | ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li> |
| 891 | <li |
| 892 | ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li> |
| 893 | <li |
| 894 | ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li> |
| 895 | </ul> |
| 896 | </li> |
| 897 | <li> |
| 898 | <span class="toc_kind_header">static</span> |
| 899 | <ul class="toc_section"> |
| 900 | |
| 901 | <li |
| 902 | ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li> |
| 903 | <li |
| 904 | ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li> |
| 905 | <li |
| 906 | ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li> |
| 907 | <li |
| 908 | ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li> |
| 909 | <li |
| 910 | ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li> |
| 911 | <li |
| 912 | ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li> |
| 913 | <li |
| 914 | ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li> |
| 915 | <li |
| 916 | ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li> |
| 917 | |
| 918 | </ul> |
| 919 | </li> |
| 920 | <li> |
| 921 | <span class="toc_kind_header">dynamic</span> |
| 922 | <ul class="toc_section"> |
| 923 | <li |
| 924 | ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li> |
| 925 | <li |
| 926 | ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li> |
| 927 | <li |
| 928 | ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li> |
| 929 | <li |
| 930 | ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li> |
| 931 | <li |
| 932 | ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li> |
| 933 | <li |
| 934 | ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li> |
| 935 | <li |
| 936 | ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li> |
| 937 | <li |
| 938 | ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li> |
| 939 | <li |
| 940 | ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li> |
| 941 | <li |
| 942 | ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li> |
| 943 | <li |
| 944 | ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li> |
| 945 | <li |
| 946 | ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li> |
| 947 | <li |
| 948 | class="toc_deprecated" |
| 949 | ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li> |
| 950 | <li |
| 951 | class="toc_deprecated" |
| 952 | ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li> |
| 953 | <li |
| 954 | ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li> |
| 955 | <li |
| 956 | ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li> |
| 957 | <li |
| 958 | ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li> |
| 959 | <li |
| 960 | ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li> |
| 961 | </ul> |
| 962 | </li> |
| 963 | </ul> <!-- toc_section --> |
| 964 | </li> |
| 965 | <li> |
| 966 | <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span> |
| 967 | <ul class="toc_section"> |
| 968 | <li> |
| 969 | <span class="toc_kind_header">controls</span> |
| 970 | <ul class="toc_section"> |
| 971 | <li |
| 972 | ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li> |
| 973 | <li |
| 974 | ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li> |
| 975 | <li |
| 976 | ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li> |
| 977 | <li |
| 978 | ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li> |
| 979 | <li |
| 980 | ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li> |
| 981 | <li |
| 982 | ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li> |
| 983 | <li |
| 984 | ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li> |
| 985 | </ul> |
| 986 | </li> |
| 987 | <li> |
| 988 | <span class="toc_kind_header">static</span> |
| 989 | <ul class="toc_section"> |
| 990 | <li |
| 991 | ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li> |
| 992 | <li |
| 993 | ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li> |
| 994 | </ul> |
| 995 | </li> |
| 996 | <li> |
| 997 | <span class="toc_kind_header">dynamic</span> |
| 998 | <ul class="toc_section"> |
| 999 | <li |
| 1000 | ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li> |
| 1001 | <li |
| 1002 | ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li> |
| 1003 | <li |
| 1004 | ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li> |
| 1005 | <li |
| 1006 | ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li> |
| 1007 | <li |
| 1008 | ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li> |
| 1009 | <li |
| 1010 | ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li> |
| 1011 | <li |
| 1012 | ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li> |
| 1013 | </ul> |
| 1014 | </li> |
| 1015 | </ul> <!-- toc_section --> |
| 1016 | </li> |
| 1017 | <li> |
| 1018 | <span class="toc_section_header"><a href="#section_led">led</a></span> |
| 1019 | <ul class="toc_section"> |
| 1020 | <li> |
| 1021 | <span class="toc_kind_header">controls</span> |
| 1022 | <ul class="toc_section"> |
| 1023 | <li |
| 1024 | ><a href="#controls_android.led.transmit">android.led.transmit</a></li> |
| 1025 | </ul> |
| 1026 | </li> |
| 1027 | <li> |
| 1028 | <span class="toc_kind_header">dynamic</span> |
| 1029 | <ul class="toc_section"> |
| 1030 | <li |
| 1031 | ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li> |
| 1032 | </ul> |
| 1033 | </li> |
| 1034 | <li> |
| 1035 | <span class="toc_kind_header">static</span> |
| 1036 | <ul class="toc_section"> |
| 1037 | <li |
| 1038 | ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li> |
| 1039 | </ul> |
| 1040 | </li> |
| 1041 | </ul> <!-- toc_section --> |
| 1042 | </li> |
| 1043 | <li> |
| 1044 | <span class="toc_section_header"><a href="#section_info">info</a></span> |
| 1045 | <ul class="toc_section"> |
| 1046 | <li> |
| 1047 | <span class="toc_kind_header">static</span> |
| 1048 | <ul class="toc_section"> |
| 1049 | <li |
| 1050 | ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li> |
| 1051 | </ul> |
| 1052 | </li> |
| 1053 | </ul> <!-- toc_section --> |
| 1054 | </li> |
| 1055 | <li> |
| 1056 | <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span> |
| 1057 | <ul class="toc_section"> |
| 1058 | <li> |
| 1059 | <span class="toc_kind_header">controls</span> |
| 1060 | <ul class="toc_section"> |
| 1061 | <li |
| 1062 | ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li> |
| 1063 | </ul> |
| 1064 | </li> |
| 1065 | <li> |
| 1066 | <span class="toc_kind_header">dynamic</span> |
| 1067 | <ul class="toc_section"> |
| 1068 | <li |
| 1069 | ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li> |
| 1070 | </ul> |
| 1071 | </li> |
| 1072 | </ul> <!-- toc_section --> |
| 1073 | </li> |
| 1074 | <li> |
| 1075 | <span class="toc_section_header"><a href="#section_sync">sync</a></span> |
| 1076 | <ul class="toc_section"> |
| 1077 | <li> |
| 1078 | <span class="toc_kind_header">dynamic</span> |
| 1079 | <ul class="toc_section"> |
| 1080 | <li |
| 1081 | ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li> |
| 1082 | </ul> |
| 1083 | </li> |
| 1084 | <li> |
| 1085 | <span class="toc_kind_header">static</span> |
| 1086 | <ul class="toc_section"> |
| 1087 | <li |
| 1088 | ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li> |
| 1089 | </ul> |
| 1090 | </li> |
| 1091 | </ul> <!-- toc_section --> |
| 1092 | </li> |
| 1093 | <li> |
| 1094 | <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span> |
| 1095 | <ul class="toc_section"> |
| 1096 | <li> |
| 1097 | <span class="toc_kind_header">controls</span> |
| 1098 | <ul class="toc_section"> |
| 1099 | <li |
| 1100 | ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li> |
| 1101 | </ul> |
| 1102 | </li> |
| 1103 | <li> |
| 1104 | <span class="toc_kind_header">dynamic</span> |
| 1105 | <ul class="toc_section"> |
| 1106 | <li |
| 1107 | ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li> |
| 1108 | </ul> |
| 1109 | </li> |
| 1110 | <li> |
| 1111 | <span class="toc_kind_header">static</span> |
| 1112 | <ul class="toc_section"> |
| 1113 | <li |
| 1114 | ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li> |
| 1115 | </ul> |
| 1116 | </li> |
| 1117 | </ul> <!-- toc_section --> |
| 1118 | </li> |
| 1119 | <li> |
| 1120 | <span class="toc_section_header"><a href="#section_depth">depth</a></span> |
| 1121 | <ul class="toc_section"> |
| 1122 | <li> |
| 1123 | <span class="toc_kind_header">static</span> |
| 1124 | <ul class="toc_section"> |
| 1125 | <li |
| 1126 | ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li> |
| 1127 | <li |
| 1128 | ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li> |
| 1129 | <li |
| 1130 | ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li> |
| 1131 | <li |
| 1132 | ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li> |
| 1133 | <li |
| 1134 | ><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li> |
| 1135 | </ul> |
| 1136 | </li> |
| 1137 | </ul> <!-- toc_section --> |
| 1138 | </li> |
| 1139 | </ul> |
| 1140 | |
| 1141 | |
| 1142 | <h1>Properties</h1> |
| 1143 | <table class="properties"> |
| 1144 | |
| 1145 | <thead class="thead_dummy"> |
| 1146 | <tr> |
| 1147 | <th class="th_name">Property Name</th> |
| 1148 | <th class="th_type">Type</th> |
| 1149 | <th class="th_description">Description</th> |
| 1150 | <th class="th_units">Units</th> |
| 1151 | <th class="th_range">Range</th> |
| 1152 | <th class="th_tags">Tags</th> |
| 1153 | </tr> |
| 1154 | </thead> <!-- so that the first occurrence of thead is not |
| 1155 | above the first occurrence of tr --> |
| 1156 | <!-- <namespace name="android"> --> |
| 1157 | <tr><td colspan="6" id="section_colorCorrection" class="section">colorCorrection</td></tr> |
| 1158 | |
| 1159 | |
| 1160 | <tr><td colspan="6" class="kind">controls</td></tr> |
| 1161 | |
| 1162 | <thead class="entries_header"> |
| 1163 | <tr> |
| 1164 | <th class="th_name">Property Name</th> |
| 1165 | <th class="th_type">Type</th> |
| 1166 | <th class="th_description">Description</th> |
| 1167 | <th class="th_units">Units</th> |
| 1168 | <th class="th_range">Range</th> |
| 1169 | <th class="th_tags">Tags</th> |
| 1170 | </tr> |
| 1171 | </thead> |
| 1172 | |
| 1173 | <tbody> |
| 1174 | |
| 1175 | |
| 1176 | |
| 1177 | |
| 1178 | |
| 1179 | |
| 1180 | |
| 1181 | |
| 1182 | |
| 1183 | |
| 1184 | <tr class="entry" id="controls_android.colorCorrection.mode"> |
| 1185 | <td class="entry_name |
| 1186 | " rowspan="5"> |
| 1187 | android.<wbr/>color<wbr/>Correction.<wbr/>mode |
| 1188 | </td> |
| 1189 | <td class="entry_type"> |
| 1190 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 1191 | |
| 1192 | <span class="entry_type_visibility"> [public]</span> |
| 1193 | |
| 1194 | |
| 1195 | <span class="entry_type_hwlevel">[full] </span> |
| 1196 | |
| 1197 | |
| 1198 | |
| 1199 | <ul class="entry_type_enum"> |
| 1200 | <li> |
| 1201 | <span class="entry_type_enum_name">TRANSFORM_MATRIX</span> |
| 1202 | <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix |
| 1203 | and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p> |
| 1204 | <p>All advanced white balance adjustments (not specified |
| 1205 | by our white balance pipeline) must be disabled.<wbr/></p> |
| 1206 | <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 |
| 1207 | TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override |
| 1208 | this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span> |
| 1209 | </li> |
| 1210 | <li> |
| 1211 | <span class="entry_type_enum_name">FAST</span> |
| 1212 | <span class="entry_type_enum_notes"><p>Color correction processing must not slow down |
| 1213 | capture rate relative to sensor raw output.<wbr/></p> |
| 1214 | <p>Advanced white balance adjustments above and beyond |
| 1215 | the specified white balance pipeline may be applied.<wbr/></p> |
| 1216 | <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 |
| 1217 | the camera device uses the last frame's AWB values |
| 1218 | (or defaults if AWB has never been run).<wbr/></p></span> |
| 1219 | </li> |
| 1220 | <li> |
| 1221 | <span class="entry_type_enum_name">HIGH_QUALITY</span> |
| 1222 | <span class="entry_type_enum_notes"><p>Color correction processing operates at improved |
| 1223 | quality but the capture rate might be reduced (relative to sensor |
| 1224 | raw output rate)</p> |
| 1225 | <p>Advanced white balance adjustments above and beyond |
| 1226 | the specified white balance pipeline may be applied.<wbr/></p> |
| 1227 | <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 |
| 1228 | the camera device uses the last frame's AWB values |
| 1229 | (or defaults if AWB has never been run).<wbr/></p></span> |
| 1230 | </li> |
| 1231 | </ul> |
| 1232 | |
| 1233 | </td> <!-- entry_type --> |
| 1234 | |
| 1235 | <td class="entry_description"> |
| 1236 | <p>The mode control selects how the image data is converted from the |
| 1237 | sensor's native color into linear sRGB color.<wbr/></p> |
| 1238 | </td> |
| 1239 | |
| 1240 | <td class="entry_units"> |
| 1241 | </td> |
| 1242 | |
| 1243 | <td class="entry_range"> |
| 1244 | </td> |
| 1245 | |
| 1246 | <td class="entry_tags"> |
| 1247 | </td> |
| 1248 | |
| 1249 | </tr> |
| 1250 | <tr class="entries_header"> |
| 1251 | <th class="th_details" colspan="5">Details</th> |
| 1252 | </tr> |
| 1253 | <tr class="entry_cont"> |
| 1254 | <td class="entry_details" colspan="5"> |
| 1255 | <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 |
| 1256 | control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the |
| 1257 | application controls how the color mapping is performed.<wbr/></p> |
| 1258 | <p>We define the expected processing pipeline below.<wbr/> For consistency |
| 1259 | across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p> |
| 1260 | <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may |
| 1261 | do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and |
| 1262 | <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the |
| 1263 | camera device (in the results) and be roughly correct.<wbr/></p> |
| 1264 | <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from |
| 1265 | FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point |
| 1266 | as what was produced by the camera device in the earlier frame.<wbr/></p> |
| 1267 | <p>The expected processing pipeline is as follows:</p> |
| 1268 | <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p> |
| 1269 | <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance |
| 1270 | gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform |
| 1271 | matrix (applied after demosaic).<wbr/></p> |
| 1272 | <p>The 4-channel white-balance gains are defined as:</p> |
| 1273 | <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ] |
| 1274 | </code></pre> |
| 1275 | <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the |
| 1276 | output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/> |
| 1277 | These may be identical for a given camera device implementation; if |
| 1278 | the camera device does not support a separate gain for even/<wbr/>odd green |
| 1279 | channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to |
| 1280 | <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> |
| 1281 | <p>The matrices for color transforms are defined as a 9-entry vector:</p> |
| 1282 | <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 ] |
| 1283 | </code></pre> |
| 1284 | <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/> |
| 1285 | to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p> |
| 1286 | <p>with colors as follows:</p> |
| 1287 | <pre><code>r' = I0r + I1g + I2b |
| 1288 | g' = I3r + I4g + I5b |
| 1289 | b' = I6r + I7g + I8b |
| 1290 | </code></pre> |
| 1291 | <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow |
| 1292 | values are clipped to fit within the range.<wbr/></p> |
| 1293 | </td> |
| 1294 | </tr> |
| 1295 | |
| 1296 | <tr class="entries_header"> |
| 1297 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 1298 | </tr> |
| 1299 | <tr class="entry_cont"> |
| 1300 | <td class="entry_details" colspan="5"> |
| 1301 | <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available |
| 1302 | on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> |
| 1303 | That is,<wbr/> if the highest quality implementation on the camera device does not slow down |
| 1304 | capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p> |
| 1305 | </td> |
| 1306 | </tr> |
| 1307 | |
| 1308 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 1309 | <!-- end of entry --> |
| 1310 | |
| 1311 | |
| 1312 | <tr class="entry" id="controls_android.colorCorrection.transform"> |
| 1313 | <td class="entry_name |
| 1314 | " rowspan="3"> |
| 1315 | android.<wbr/>color<wbr/>Correction.<wbr/>transform |
| 1316 | </td> |
| 1317 | <td class="entry_type"> |
| 1318 | <span class="entry_type_name">rational</span> |
| 1319 | <span class="entry_type_container">x</span> |
| 1320 | |
| 1321 | <span class="entry_type_array"> |
| 1322 | 3 x 3 |
| 1323 | </span> |
| 1324 | <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> |
| 1325 | |
| 1326 | |
| 1327 | <span class="entry_type_hwlevel">[full] </span> |
| 1328 | |
| 1329 | |
| 1330 | <div class="entry_type_notes">3x3 rational matrix in row-major order</div> |
| 1331 | |
| 1332 | |
| 1333 | </td> <!-- entry_type --> |
| 1334 | |
| 1335 | <td class="entry_description"> |
| 1336 | <p>A color transform matrix to use to transform |
| 1337 | from sensor RGB color space to output linear sRGB color space.<wbr/></p> |
| 1338 | </td> |
| 1339 | |
| 1340 | <td class="entry_units"> |
| 1341 | Unitless scale factors |
| 1342 | </td> |
| 1343 | |
| 1344 | <td class="entry_range"> |
| 1345 | </td> |
| 1346 | |
| 1347 | <td class="entry_tags"> |
| 1348 | </td> |
| 1349 | |
| 1350 | </tr> |
| 1351 | <tr class="entries_header"> |
| 1352 | <th class="th_details" colspan="5">Details</th> |
| 1353 | </tr> |
| 1354 | <tr class="entry_cont"> |
| 1355 | <td class="entry_details" colspan="5"> |
| 1356 | <p>This matrix is either set by the camera device when the request |
| 1357 | <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or |
| 1358 | directly by the application in the request when the |
| 1359 | <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p> |
| 1360 | <p>In the latter case,<wbr/> the camera device may round the matrix to account |
| 1361 | for precision issues; the final rounded matrix should be reported back |
| 1362 | in this matrix result metadata.<wbr/> The transform should keep the magnitude |
| 1363 | of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color |
| 1364 | values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p> |
| 1365 | <p>The valid range of each matrix element varies on different devices,<wbr/> but |
| 1366 | values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> |
| 1367 | </td> |
| 1368 | </tr> |
| 1369 | |
| 1370 | |
| 1371 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 1372 | <!-- end of entry --> |
| 1373 | |
| 1374 | |
| 1375 | <tr class="entry" id="controls_android.colorCorrection.gains"> |
| 1376 | <td class="entry_name |
| 1377 | " rowspan="5"> |
| 1378 | android.<wbr/>color<wbr/>Correction.<wbr/>gains |
| 1379 | </td> |
| 1380 | <td class="entry_type"> |
| 1381 | <span class="entry_type_name">float</span> |
| 1382 | <span class="entry_type_container">x</span> |
| 1383 | |
| 1384 | <span class="entry_type_array"> |
| 1385 | 4 |
| 1386 | </span> |
| 1387 | <span class="entry_type_visibility"> [public as rggbChannelVector]</span> |
| 1388 | |
| 1389 | |
| 1390 | <span class="entry_type_hwlevel">[full] </span> |
| 1391 | |
| 1392 | |
| 1393 | <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> |
| 1394 | |
| 1395 | |
| 1396 | </td> <!-- entry_type --> |
| 1397 | |
| 1398 | <td class="entry_description"> |
| 1399 | <p>Gains applying to Bayer raw color channels for |
| 1400 | white-balance.<wbr/></p> |
| 1401 | </td> |
| 1402 | |
| 1403 | <td class="entry_units"> |
| 1404 | Unitless gain factors |
| 1405 | </td> |
| 1406 | |
| 1407 | <td class="entry_range"> |
| 1408 | </td> |
| 1409 | |
| 1410 | <td class="entry_tags"> |
| 1411 | </td> |
| 1412 | |
| 1413 | </tr> |
| 1414 | <tr class="entries_header"> |
| 1415 | <th class="th_details" colspan="5">Details</th> |
| 1416 | </tr> |
| 1417 | <tr class="entry_cont"> |
| 1418 | <td class="entry_details" colspan="5"> |
| 1419 | <p>These per-channel gains are either set by the camera device |
| 1420 | when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not |
| 1421 | TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the |
| 1422 | request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is |
| 1423 | TRANSFORM_<wbr/>MATRIX.<wbr/></p> |
| 1424 | <p>The gains in the result metadata are the gains actually |
| 1425 | applied by the camera device to the current frame.<wbr/></p> |
| 1426 | <p>The valid range of gains varies on different devices,<wbr/> but gains |
| 1427 | between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given |
| 1428 | device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because |
| 1429 | this can create color artifacts.<wbr/></p> |
| 1430 | </td> |
| 1431 | </tr> |
| 1432 | |
| 1433 | <tr class="entries_header"> |
| 1434 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 1435 | </tr> |
| 1436 | <tr class="entry_cont"> |
| 1437 | <td class="entry_details" colspan="5"> |
| 1438 | <p>The 4-channel white-balance gains are defined in |
| 1439 | the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain |
| 1440 | for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code> |
| 1441 | is the gain for green pixels on the odd rows.<wbr/></p> |
| 1442 | <p>If a HAL does not support a separate gain for even/<wbr/>odd green |
| 1443 | channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write |
| 1444 | <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> |
| 1445 | </td> |
| 1446 | </tr> |
| 1447 | |
| 1448 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 1449 | <!-- end of entry --> |
| 1450 | |
| 1451 | |
| 1452 | <tr class="entry" id="controls_android.colorCorrection.aberrationMode"> |
| 1453 | <td class="entry_name |
| 1454 | " rowspan="3"> |
| 1455 | android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode |
| 1456 | </td> |
| 1457 | <td class="entry_type"> |
| 1458 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 1459 | |
| 1460 | <span class="entry_type_visibility"> [public]</span> |
| 1461 | |
| 1462 | |
| 1463 | <span class="entry_type_hwlevel">[legacy] </span> |
| 1464 | |
| 1465 | |
| 1466 | |
| 1467 | <ul class="entry_type_enum"> |
| 1468 | <li> |
| 1469 | <span class="entry_type_enum_name">OFF</span> |
| 1470 | <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span> |
| 1471 | </li> |
| 1472 | <li> |
| 1473 | <span class="entry_type_enum_name">FAST</span> |
| 1474 | <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate |
| 1475 | relative to sensor raw output.<wbr/></p></span> |
| 1476 | </li> |
| 1477 | <li> |
| 1478 | <span class="entry_type_enum_name">HIGH_QUALITY</span> |
| 1479 | <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be |
| 1480 | reduced (relative to sensor raw output rate)</p></span> |
| 1481 | </li> |
| 1482 | </ul> |
| 1483 | |
| 1484 | </td> <!-- entry_type --> |
| 1485 | |
| 1486 | <td class="entry_description"> |
| 1487 | <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p> |
| 1488 | </td> |
| 1489 | |
| 1490 | <td class="entry_units"> |
| 1491 | </td> |
| 1492 | |
| 1493 | <td class="entry_range"> |
| 1494 | <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p> |
| 1495 | </td> |
| 1496 | |
| 1497 | <td class="entry_tags"> |
| 1498 | </td> |
| 1499 | |
| 1500 | </tr> |
| 1501 | <tr class="entries_header"> |
| 1502 | <th class="th_details" colspan="5">Details</th> |
| 1503 | </tr> |
| 1504 | <tr class="entry_cont"> |
| 1505 | <td class="entry_details" colspan="5"> |
| 1506 | <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light |
| 1507 | can not focus on the same point after exiting from the lens.<wbr/> This metadata defines |
| 1508 | the high level control of chromatic aberration correction algorithm,<wbr/> which aims to |
| 1509 | minimize the chromatic artifacts that may occur along the object boundaries in an |
| 1510 | image.<wbr/></p> |
| 1511 | <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration |
| 1512 | correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will |
| 1513 | use the highest-quality aberration correction algorithms,<wbr/> even if it slows down |
| 1514 | capture rate.<wbr/> FAST means the camera device will not slow down capture rate when |
| 1515 | applying aberration correction.<wbr/></p> |
| 1516 | <p>LEGACY devices will always be in FAST mode.<wbr/></p> |
| 1517 | </td> |
| 1518 | </tr> |
| 1519 | |
| 1520 | |
| 1521 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 1522 | <!-- end of entry --> |
| 1523 | |
| 1524 | |
| 1525 | |
| 1526 | <!-- end of kind --> |
| 1527 | </tbody> |
| 1528 | <tr><td colspan="6" class="kind">dynamic</td></tr> |
| 1529 | |
| 1530 | <thead class="entries_header"> |
| 1531 | <tr> |
| 1532 | <th class="th_name">Property Name</th> |
| 1533 | <th class="th_type">Type</th> |
| 1534 | <th class="th_description">Description</th> |
| 1535 | <th class="th_units">Units</th> |
| 1536 | <th class="th_range">Range</th> |
| 1537 | <th class="th_tags">Tags</th> |
| 1538 | </tr> |
| 1539 | </thead> |
| 1540 | |
| 1541 | <tbody> |
| 1542 | |
| 1543 | |
| 1544 | |
| 1545 | |
| 1546 | |
| 1547 | |
| 1548 | |
| 1549 | |
| 1550 | |
| 1551 | |
| 1552 | <tr class="entry" id="dynamic_android.colorCorrection.mode"> |
| 1553 | <td class="entry_name |
| 1554 | " rowspan="5"> |
| 1555 | android.<wbr/>color<wbr/>Correction.<wbr/>mode |
| 1556 | </td> |
| 1557 | <td class="entry_type"> |
| 1558 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 1559 | |
| 1560 | <span class="entry_type_visibility"> [public]</span> |
| 1561 | |
| 1562 | |
| 1563 | <span class="entry_type_hwlevel">[full] </span> |
| 1564 | |
| 1565 | |
| 1566 | |
| 1567 | <ul class="entry_type_enum"> |
| 1568 | <li> |
| 1569 | <span class="entry_type_enum_name">TRANSFORM_MATRIX</span> |
| 1570 | <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix |
| 1571 | and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p> |
| 1572 | <p>All advanced white balance adjustments (not specified |
| 1573 | by our white balance pipeline) must be disabled.<wbr/></p> |
| 1574 | <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 |
| 1575 | TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override |
| 1576 | this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span> |
| 1577 | </li> |
| 1578 | <li> |
| 1579 | <span class="entry_type_enum_name">FAST</span> |
| 1580 | <span class="entry_type_enum_notes"><p>Color correction processing must not slow down |
| 1581 | capture rate relative to sensor raw output.<wbr/></p> |
| 1582 | <p>Advanced white balance adjustments above and beyond |
| 1583 | the specified white balance pipeline may be applied.<wbr/></p> |
| 1584 | <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 |
| 1585 | the camera device uses the last frame's AWB values |
| 1586 | (or defaults if AWB has never been run).<wbr/></p></span> |
| 1587 | </li> |
| 1588 | <li> |
| 1589 | <span class="entry_type_enum_name">HIGH_QUALITY</span> |
| 1590 | <span class="entry_type_enum_notes"><p>Color correction processing operates at improved |
| 1591 | quality but the capture rate might be reduced (relative to sensor |
| 1592 | raw output rate)</p> |
| 1593 | <p>Advanced white balance adjustments above and beyond |
| 1594 | the specified white balance pipeline may be applied.<wbr/></p> |
| 1595 | <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 |
| 1596 | the camera device uses the last frame's AWB values |
| 1597 | (or defaults if AWB has never been run).<wbr/></p></span> |
| 1598 | </li> |
| 1599 | </ul> |
| 1600 | |
| 1601 | </td> <!-- entry_type --> |
| 1602 | |
| 1603 | <td class="entry_description"> |
| 1604 | <p>The mode control selects how the image data is converted from the |
| 1605 | sensor's native color into linear sRGB color.<wbr/></p> |
| 1606 | </td> |
| 1607 | |
| 1608 | <td class="entry_units"> |
| 1609 | </td> |
| 1610 | |
| 1611 | <td class="entry_range"> |
| 1612 | </td> |
| 1613 | |
| 1614 | <td class="entry_tags"> |
| 1615 | </td> |
| 1616 | |
| 1617 | </tr> |
| 1618 | <tr class="entries_header"> |
| 1619 | <th class="th_details" colspan="5">Details</th> |
| 1620 | </tr> |
| 1621 | <tr class="entry_cont"> |
| 1622 | <td class="entry_details" colspan="5"> |
| 1623 | <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 |
| 1624 | control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the |
| 1625 | application controls how the color mapping is performed.<wbr/></p> |
| 1626 | <p>We define the expected processing pipeline below.<wbr/> For consistency |
| 1627 | across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p> |
| 1628 | <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may |
| 1629 | do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and |
| 1630 | <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the |
| 1631 | camera device (in the results) and be roughly correct.<wbr/></p> |
| 1632 | <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from |
| 1633 | FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point |
| 1634 | as what was produced by the camera device in the earlier frame.<wbr/></p> |
| 1635 | <p>The expected processing pipeline is as follows:</p> |
| 1636 | <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p> |
| 1637 | <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance |
| 1638 | gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform |
| 1639 | matrix (applied after demosaic).<wbr/></p> |
| 1640 | <p>The 4-channel white-balance gains are defined as:</p> |
| 1641 | <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ] |
| 1642 | </code></pre> |
| 1643 | <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the |
| 1644 | output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/> |
| 1645 | These may be identical for a given camera device implementation; if |
| 1646 | the camera device does not support a separate gain for even/<wbr/>odd green |
| 1647 | channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to |
| 1648 | <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> |
| 1649 | <p>The matrices for color transforms are defined as a 9-entry vector:</p> |
| 1650 | <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 ] |
| 1651 | </code></pre> |
| 1652 | <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/> |
| 1653 | to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p> |
| 1654 | <p>with colors as follows:</p> |
| 1655 | <pre><code>r' = I0r + I1g + I2b |
| 1656 | g' = I3r + I4g + I5b |
| 1657 | b' = I6r + I7g + I8b |
| 1658 | </code></pre> |
| 1659 | <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow |
| 1660 | values are clipped to fit within the range.<wbr/></p> |
| 1661 | </td> |
| 1662 | </tr> |
| 1663 | |
| 1664 | <tr class="entries_header"> |
| 1665 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 1666 | </tr> |
| 1667 | <tr class="entry_cont"> |
| 1668 | <td class="entry_details" colspan="5"> |
| 1669 | <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available |
| 1670 | on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> |
| 1671 | That is,<wbr/> if the highest quality implementation on the camera device does not slow down |
| 1672 | capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p> |
| 1673 | </td> |
| 1674 | </tr> |
| 1675 | |
| 1676 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 1677 | <!-- end of entry --> |
| 1678 | |
| 1679 | |
| 1680 | <tr class="entry" id="dynamic_android.colorCorrection.transform"> |
| 1681 | <td class="entry_name |
| 1682 | " rowspan="3"> |
| 1683 | android.<wbr/>color<wbr/>Correction.<wbr/>transform |
| 1684 | </td> |
| 1685 | <td class="entry_type"> |
| 1686 | <span class="entry_type_name">rational</span> |
| 1687 | <span class="entry_type_container">x</span> |
| 1688 | |
| 1689 | <span class="entry_type_array"> |
| 1690 | 3 x 3 |
| 1691 | </span> |
| 1692 | <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> |
| 1693 | |
| 1694 | |
| 1695 | <span class="entry_type_hwlevel">[full] </span> |
| 1696 | |
| 1697 | |
| 1698 | <div class="entry_type_notes">3x3 rational matrix in row-major order</div> |
| 1699 | |
| 1700 | |
| 1701 | </td> <!-- entry_type --> |
| 1702 | |
| 1703 | <td class="entry_description"> |
| 1704 | <p>A color transform matrix to use to transform |
| 1705 | from sensor RGB color space to output linear sRGB color space.<wbr/></p> |
| 1706 | </td> |
| 1707 | |
| 1708 | <td class="entry_units"> |
| 1709 | Unitless scale factors |
| 1710 | </td> |
| 1711 | |
| 1712 | <td class="entry_range"> |
| 1713 | </td> |
| 1714 | |
| 1715 | <td class="entry_tags"> |
| 1716 | </td> |
| 1717 | |
| 1718 | </tr> |
| 1719 | <tr class="entries_header"> |
| 1720 | <th class="th_details" colspan="5">Details</th> |
| 1721 | </tr> |
| 1722 | <tr class="entry_cont"> |
| 1723 | <td class="entry_details" colspan="5"> |
| 1724 | <p>This matrix is either set by the camera device when the request |
| 1725 | <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or |
| 1726 | directly by the application in the request when the |
| 1727 | <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p> |
| 1728 | <p>In the latter case,<wbr/> the camera device may round the matrix to account |
| 1729 | for precision issues; the final rounded matrix should be reported back |
| 1730 | in this matrix result metadata.<wbr/> The transform should keep the magnitude |
| 1731 | of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color |
| 1732 | values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p> |
| 1733 | <p>The valid range of each matrix element varies on different devices,<wbr/> but |
| 1734 | values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> |
| 1735 | </td> |
| 1736 | </tr> |
| 1737 | |
| 1738 | |
| 1739 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 1740 | <!-- end of entry --> |
| 1741 | |
| 1742 | |
| 1743 | <tr class="entry" id="dynamic_android.colorCorrection.gains"> |
| 1744 | <td class="entry_name |
| 1745 | " rowspan="5"> |
| 1746 | android.<wbr/>color<wbr/>Correction.<wbr/>gains |
| 1747 | </td> |
| 1748 | <td class="entry_type"> |
| 1749 | <span class="entry_type_name">float</span> |
| 1750 | <span class="entry_type_container">x</span> |
| 1751 | |
| 1752 | <span class="entry_type_array"> |
| 1753 | 4 |
| 1754 | </span> |
| 1755 | <span class="entry_type_visibility"> [public as rggbChannelVector]</span> |
| 1756 | |
| 1757 | |
| 1758 | <span class="entry_type_hwlevel">[full] </span> |
| 1759 | |
| 1760 | |
| 1761 | <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> |
| 1762 | |
| 1763 | |
| 1764 | </td> <!-- entry_type --> |
| 1765 | |
| 1766 | <td class="entry_description"> |
| 1767 | <p>Gains applying to Bayer raw color channels for |
| 1768 | white-balance.<wbr/></p> |
| 1769 | </td> |
| 1770 | |
| 1771 | <td class="entry_units"> |
| 1772 | Unitless gain factors |
| 1773 | </td> |
| 1774 | |
| 1775 | <td class="entry_range"> |
| 1776 | </td> |
| 1777 | |
| 1778 | <td class="entry_tags"> |
| 1779 | </td> |
| 1780 | |
| 1781 | </tr> |
| 1782 | <tr class="entries_header"> |
| 1783 | <th class="th_details" colspan="5">Details</th> |
| 1784 | </tr> |
| 1785 | <tr class="entry_cont"> |
| 1786 | <td class="entry_details" colspan="5"> |
| 1787 | <p>These per-channel gains are either set by the camera device |
| 1788 | when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not |
| 1789 | TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the |
| 1790 | request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is |
| 1791 | TRANSFORM_<wbr/>MATRIX.<wbr/></p> |
| 1792 | <p>The gains in the result metadata are the gains actually |
| 1793 | applied by the camera device to the current frame.<wbr/></p> |
| 1794 | <p>The valid range of gains varies on different devices,<wbr/> but gains |
| 1795 | between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given |
| 1796 | device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because |
| 1797 | this can create color artifacts.<wbr/></p> |
| 1798 | </td> |
| 1799 | </tr> |
| 1800 | |
| 1801 | <tr class="entries_header"> |
| 1802 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 1803 | </tr> |
| 1804 | <tr class="entry_cont"> |
| 1805 | <td class="entry_details" colspan="5"> |
| 1806 | <p>The 4-channel white-balance gains are defined in |
| 1807 | the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain |
| 1808 | for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code> |
| 1809 | is the gain for green pixels on the odd rows.<wbr/></p> |
| 1810 | <p>If a HAL does not support a separate gain for even/<wbr/>odd green |
| 1811 | channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write |
| 1812 | <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> |
| 1813 | </td> |
| 1814 | </tr> |
| 1815 | |
| 1816 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 1817 | <!-- end of entry --> |
| 1818 | |
| 1819 | |
| 1820 | <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode"> |
| 1821 | <td class="entry_name |
| 1822 | " rowspan="3"> |
| 1823 | android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode |
| 1824 | </td> |
| 1825 | <td class="entry_type"> |
| 1826 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 1827 | |
| 1828 | <span class="entry_type_visibility"> [public]</span> |
| 1829 | |
| 1830 | |
| 1831 | <span class="entry_type_hwlevel">[legacy] </span> |
| 1832 | |
| 1833 | |
| 1834 | |
| 1835 | <ul class="entry_type_enum"> |
| 1836 | <li> |
| 1837 | <span class="entry_type_enum_name">OFF</span> |
| 1838 | <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span> |
| 1839 | </li> |
| 1840 | <li> |
| 1841 | <span class="entry_type_enum_name">FAST</span> |
| 1842 | <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate |
| 1843 | relative to sensor raw output.<wbr/></p></span> |
| 1844 | </li> |
| 1845 | <li> |
| 1846 | <span class="entry_type_enum_name">HIGH_QUALITY</span> |
| 1847 | <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be |
| 1848 | reduced (relative to sensor raw output rate)</p></span> |
| 1849 | </li> |
| 1850 | </ul> |
| 1851 | |
| 1852 | </td> <!-- entry_type --> |
| 1853 | |
| 1854 | <td class="entry_description"> |
| 1855 | <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p> |
| 1856 | </td> |
| 1857 | |
| 1858 | <td class="entry_units"> |
| 1859 | </td> |
| 1860 | |
| 1861 | <td class="entry_range"> |
| 1862 | <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p> |
| 1863 | </td> |
| 1864 | |
| 1865 | <td class="entry_tags"> |
| 1866 | </td> |
| 1867 | |
| 1868 | </tr> |
| 1869 | <tr class="entries_header"> |
| 1870 | <th class="th_details" colspan="5">Details</th> |
| 1871 | </tr> |
| 1872 | <tr class="entry_cont"> |
| 1873 | <td class="entry_details" colspan="5"> |
| 1874 | <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light |
| 1875 | can not focus on the same point after exiting from the lens.<wbr/> This metadata defines |
| 1876 | the high level control of chromatic aberration correction algorithm,<wbr/> which aims to |
| 1877 | minimize the chromatic artifacts that may occur along the object boundaries in an |
| 1878 | image.<wbr/></p> |
| 1879 | <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration |
| 1880 | correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will |
| 1881 | use the highest-quality aberration correction algorithms,<wbr/> even if it slows down |
| 1882 | capture rate.<wbr/> FAST means the camera device will not slow down capture rate when |
| 1883 | applying aberration correction.<wbr/></p> |
| 1884 | <p>LEGACY devices will always be in FAST mode.<wbr/></p> |
| 1885 | </td> |
| 1886 | </tr> |
| 1887 | |
| 1888 | |
| 1889 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 1890 | <!-- end of entry --> |
| 1891 | |
| 1892 | |
| 1893 | |
| 1894 | <!-- end of kind --> |
| 1895 | </tbody> |
| 1896 | <tr><td colspan="6" class="kind">static</td></tr> |
| 1897 | |
| 1898 | <thead class="entries_header"> |
| 1899 | <tr> |
| 1900 | <th class="th_name">Property Name</th> |
| 1901 | <th class="th_type">Type</th> |
| 1902 | <th class="th_description">Description</th> |
| 1903 | <th class="th_units">Units</th> |
| 1904 | <th class="th_range">Range</th> |
| 1905 | <th class="th_tags">Tags</th> |
| 1906 | </tr> |
| 1907 | </thead> |
| 1908 | |
| 1909 | <tbody> |
| 1910 | |
| 1911 | |
| 1912 | |
| 1913 | |
| 1914 | |
| 1915 | |
| 1916 | |
| 1917 | |
| 1918 | |
| 1919 | |
| 1920 | <tr class="entry" id="static_android.colorCorrection.availableAberrationModes"> |
| 1921 | <td class="entry_name |
| 1922 | " rowspan="5"> |
| 1923 | android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes |
| 1924 | </td> |
| 1925 | <td class="entry_type"> |
| 1926 | <span class="entry_type_name">byte</span> |
| 1927 | <span class="entry_type_container">x</span> |
| 1928 | |
| 1929 | <span class="entry_type_array"> |
| 1930 | n |
| 1931 | </span> |
| 1932 | <span class="entry_type_visibility"> [public as enumList]</span> |
| 1933 | |
| 1934 | |
| 1935 | <span class="entry_type_hwlevel">[legacy] </span> |
| 1936 | |
| 1937 | |
| 1938 | <div class="entry_type_notes">list of enums</div> |
| 1939 | |
| 1940 | |
| 1941 | </td> <!-- entry_type --> |
| 1942 | |
| 1943 | <td class="entry_description"> |
| 1944 | <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 |
| 1945 | supported by this camera device.<wbr/></p> |
| 1946 | </td> |
| 1947 | |
| 1948 | <td class="entry_units"> |
| 1949 | </td> |
| 1950 | |
| 1951 | <td class="entry_range"> |
| 1952 | <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p> |
| 1953 | </td> |
| 1954 | |
| 1955 | <td class="entry_tags"> |
| 1956 | <ul class="entry_tags"> |
| 1957 | <li><a href="#tag_V1">V1</a></li> |
| 1958 | </ul> |
| 1959 | </td> |
| 1960 | |
| 1961 | </tr> |
| 1962 | <tr class="entries_header"> |
| 1963 | <th class="th_details" colspan="5">Details</th> |
| 1964 | </tr> |
| 1965 | <tr class="entry_cont"> |
| 1966 | <td class="entry_details" colspan="5"> |
| 1967 | <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 |
| 1968 | aberration correction modes are available for a device,<wbr/> this list will solely include |
| 1969 | OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p> |
| 1970 | <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list |
| 1971 | OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p> |
| 1972 | <p>LEGACY devices will always only support FAST mode.<wbr/></p> |
| 1973 | </td> |
| 1974 | </tr> |
| 1975 | |
| 1976 | <tr class="entries_header"> |
| 1977 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 1978 | </tr> |
| 1979 | <tr class="entry_cont"> |
| 1980 | <td class="entry_details" colspan="5"> |
| 1981 | <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available |
| 1982 | on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> |
| 1983 | That is,<wbr/> if the highest quality implementation on the camera device does not slow down |
| 1984 | capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> |
| 1985 | </td> |
| 1986 | </tr> |
| 1987 | |
| 1988 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 1989 | <!-- end of entry --> |
| 1990 | |
| 1991 | |
| 1992 | |
| 1993 | <!-- end of kind --> |
| 1994 | </tbody> |
| 1995 | |
| 1996 | <!-- end of section --> |
| 1997 | <tr><td colspan="6" id="section_control" class="section">control</td></tr> |
| 1998 | |
| 1999 | |
| 2000 | <tr><td colspan="6" class="kind">controls</td></tr> |
| 2001 | |
| 2002 | <thead class="entries_header"> |
| 2003 | <tr> |
| 2004 | <th class="th_name">Property Name</th> |
| 2005 | <th class="th_type">Type</th> |
| 2006 | <th class="th_description">Description</th> |
| 2007 | <th class="th_units">Units</th> |
| 2008 | <th class="th_range">Range</th> |
| 2009 | <th class="th_tags">Tags</th> |
| 2010 | </tr> |
| 2011 | </thead> |
| 2012 | |
| 2013 | <tbody> |
| 2014 | |
| 2015 | |
| 2016 | |
| 2017 | |
| 2018 | |
| 2019 | |
| 2020 | |
| 2021 | |
| 2022 | |
| 2023 | |
| 2024 | <tr class="entry" id="controls_android.control.aeAntibandingMode"> |
| 2025 | <td class="entry_name |
| 2026 | " rowspan="5"> |
| 2027 | android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode |
| 2028 | </td> |
| 2029 | <td class="entry_type"> |
| 2030 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 2031 | |
| 2032 | <span class="entry_type_visibility"> [public]</span> |
| 2033 | |
| 2034 | |
| 2035 | <span class="entry_type_hwlevel">[legacy] </span> |
| 2036 | |
| 2037 | |
| 2038 | |
| 2039 | <ul class="entry_type_enum"> |
| 2040 | <li> |
| 2041 | <span class="entry_type_enum_name">OFF</span> |
| 2042 | <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to |
| 2043 | avoid banding problems.<wbr/></p></span> |
| 2044 | </li> |
| 2045 | <li> |
| 2046 | <span class="entry_type_enum_name">50HZ</span> |
| 2047 | <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to |
| 2048 | avoid banding problems with 50Hz illumination sources.<wbr/></p></span> |
| 2049 | </li> |
| 2050 | <li> |
| 2051 | <span class="entry_type_enum_name">60HZ</span> |
| 2052 | <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to |
| 2053 | avoid banding problems with 60Hz illumination |
| 2054 | sources.<wbr/></p></span> |
| 2055 | </li> |
| 2056 | <li> |
| 2057 | <span class="entry_type_enum_name">AUTO</span> |
| 2058 | <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its |
| 2059 | antibanding routine to the current illumination |
| 2060 | condition.<wbr/> This is the default mode if AUTO is |
| 2061 | available on given camera device.<wbr/></p></span> |
| 2062 | </li> |
| 2063 | </ul> |
| 2064 | |
| 2065 | </td> <!-- entry_type --> |
| 2066 | |
| 2067 | <td class="entry_description"> |
| 2068 | <p>The desired setting for the camera device's auto-exposure |
| 2069 | algorithm's antibanding compensation.<wbr/></p> |
| 2070 | </td> |
| 2071 | |
| 2072 | <td class="entry_units"> |
| 2073 | </td> |
| 2074 | |
| 2075 | <td class="entry_range"> |
| 2076 | <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p> |
| 2077 | </td> |
| 2078 | |
| 2079 | <td class="entry_tags"> |
| 2080 | <ul class="entry_tags"> |
| 2081 | <li><a href="#tag_BC">BC</a></li> |
| 2082 | </ul> |
| 2083 | </td> |
| 2084 | |
| 2085 | </tr> |
| 2086 | <tr class="entries_header"> |
| 2087 | <th class="th_details" colspan="5">Details</th> |
| 2088 | </tr> |
| 2089 | <tr class="entry_cont"> |
| 2090 | <td class="entry_details" colspan="5"> |
| 2091 | <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent |
| 2092 | lights,<wbr/> flicker at the rate of the power supply frequency |
| 2093 | (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is |
| 2094 | typically not noticeable to a person,<wbr/> it can be visible to |
| 2095 | a camera device.<wbr/> If a camera sets its exposure time to the |
| 2096 | wrong value,<wbr/> the flicker may become visible in the |
| 2097 | viewfinder as flicker or in a final captured image,<wbr/> as a |
| 2098 | set of variable-brightness bands across the image.<wbr/></p> |
| 2099 | <p>Therefore,<wbr/> the auto-exposure routines of camera devices |
| 2100 | include antibanding routines that ensure that the chosen |
| 2101 | exposure value will not cause such banding.<wbr/> The choice of |
| 2102 | exposure time depends on the rate of flicker,<wbr/> which the |
| 2103 | camera device can detect automatically,<wbr/> or the expected |
| 2104 | rate can be selected by the application using this |
| 2105 | control.<wbr/></p> |
| 2106 | <p>A given camera device may not support all of the possible |
| 2107 | options for the antibanding mode.<wbr/> The |
| 2108 | <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains |
| 2109 | the available modes for a given camera device.<wbr/></p> |
| 2110 | <p>AUTO mode is the default if it is available on given |
| 2111 | camera device.<wbr/> When AUTO mode is not available,<wbr/> the |
| 2112 | default will be either 50HZ or 60HZ,<wbr/> and both 50HZ |
| 2113 | and 60HZ will be available.<wbr/></p> |
| 2114 | <p>If manual exposure control is enabled (by setting |
| 2115 | <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/> |
| 2116 | then this setting has no effect,<wbr/> and the application must |
| 2117 | ensure it selects exposure times that do not cause banding |
| 2118 | issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist |
| 2119 | the application in this.<wbr/></p> |
| 2120 | </td> |
| 2121 | </tr> |
| 2122 | |
| 2123 | <tr class="entries_header"> |
| 2124 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 2125 | </tr> |
| 2126 | <tr class="entry_cont"> |
| 2127 | <td class="entry_details" colspan="5"> |
| 2128 | <p>For all capture request templates,<wbr/> this field must be set |
| 2129 | to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/> |
| 2130 | the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and |
| 2131 | 60HZ must be available.<wbr/></p> |
| 2132 | <p>If manual exposure control is enabled (by setting |
| 2133 | <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/> |
| 2134 | then the exposure values provided by the application must not be |
| 2135 | adjusted for antibanding.<wbr/></p> |
| 2136 | </td> |
| 2137 | </tr> |
| 2138 | |
| 2139 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 2140 | <!-- end of entry --> |
| 2141 | |
| 2142 | |
| 2143 | <tr class="entry" id="controls_android.control.aeExposureCompensation"> |
| 2144 | <td class="entry_name |
| 2145 | " rowspan="3"> |
| 2146 | android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation |
| 2147 | </td> |
| 2148 | <td class="entry_type"> |
| 2149 | <span class="entry_type_name">int32</span> |
| 2150 | |
| 2151 | <span class="entry_type_visibility"> [public]</span> |
| 2152 | |
| 2153 | |
| 2154 | <span class="entry_type_hwlevel">[legacy] </span> |
| 2155 | |
| 2156 | |
| 2157 | |
| 2158 | |
| 2159 | </td> <!-- entry_type --> |
| 2160 | |
| 2161 | <td class="entry_description"> |
| 2162 | <p>Adjustment to auto-exposure (AE) target image |
| 2163 | brightness.<wbr/></p> |
| 2164 | </td> |
| 2165 | |
| 2166 | <td class="entry_units"> |
| 2167 | Compensation steps |
| 2168 | </td> |
| 2169 | |
| 2170 | <td class="entry_range"> |
| 2171 | <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p> |
| 2172 | </td> |
| 2173 | |
| 2174 | <td class="entry_tags"> |
| 2175 | <ul class="entry_tags"> |
| 2176 | <li><a href="#tag_BC">BC</a></li> |
| 2177 | </ul> |
| 2178 | </td> |
| 2179 | |
| 2180 | </tr> |
| 2181 | <tr class="entries_header"> |
| 2182 | <th class="th_details" colspan="5">Details</th> |
| 2183 | </tr> |
| 2184 | <tr class="entry_cont"> |
| 2185 | <td class="entry_details" colspan="5"> |
| 2186 | <p>The adjustment is measured as a count of steps,<wbr/> with the |
| 2187 | step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the |
| 2188 | allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p> |
| 2189 | <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6' |
| 2190 | will mean an exposure compensation of +2 EV; -3 will mean an |
| 2191 | exposure compensation of -1 EV.<wbr/> One EV represents a doubling |
| 2192 | of image brightness.<wbr/> Note that this control will only be |
| 2193 | effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control |
| 2194 | will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p> |
| 2195 | <p>In the event of exposure compensation value being changed,<wbr/> camera device |
| 2196 | may take several frames to reach the newly requested exposure target.<wbr/> |
| 2197 | During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING |
| 2198 | 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 |
| 2199 | change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or |
| 2200 | FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p> |
| 2201 | </td> |
| 2202 | </tr> |
| 2203 | |
| 2204 | |
| 2205 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 2206 | <!-- end of entry --> |
| 2207 | |
| 2208 | |
| 2209 | <tr class="entry" id="controls_android.control.aeLock"> |
| 2210 | <td class="entry_name |
| 2211 | " rowspan="3"> |
| 2212 | android.<wbr/>control.<wbr/>ae<wbr/>Lock |
| 2213 | </td> |
| 2214 | <td class="entry_type"> |
| 2215 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 2216 | |
| 2217 | <span class="entry_type_visibility"> [public as boolean]</span> |
| 2218 | |
| 2219 | |
| 2220 | <span class="entry_type_hwlevel">[legacy] </span> |
| 2221 | |
| 2222 | |
| 2223 | |
| 2224 | <ul class="entry_type_enum"> |
| 2225 | <li> |
| 2226 | <span class="entry_type_enum_name">OFF</span> |
| 2227 | <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm |
| 2228 | is free to update its parameters.<wbr/></p></span> |
| 2229 | </li> |
| 2230 | <li> |
| 2231 | <span class="entry_type_enum_name">ON</span> |
| 2232 | <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm |
| 2233 | must not update the exposure and sensitivity parameters |
| 2234 | while the lock is active.<wbr/></p> |
| 2235 | <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes |
| 2236 | will still take effect while auto-exposure is locked.<wbr/></p> |
| 2237 | <p>Some rare LEGACY devices may not support |
| 2238 | this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span> |
| 2239 | </li> |
| 2240 | </ul> |
| 2241 | |
| 2242 | </td> <!-- entry_type --> |
| 2243 | |
| 2244 | <td class="entry_description"> |
| 2245 | <p>Whether auto-exposure (AE) is currently locked to its latest |
| 2246 | calculated values.<wbr/></p> |
| 2247 | </td> |
| 2248 | |
| 2249 | <td class="entry_units"> |
| 2250 | </td> |
| 2251 | |
| 2252 | <td class="entry_range"> |
| 2253 | </td> |
| 2254 | |
| 2255 | <td class="entry_tags"> |
| 2256 | <ul class="entry_tags"> |
| 2257 | <li><a href="#tag_BC">BC</a></li> |
| 2258 | </ul> |
| 2259 | </td> |
| 2260 | |
| 2261 | </tr> |
| 2262 | <tr class="entries_header"> |
| 2263 | <th class="th_details" colspan="5">Details</th> |
| 2264 | </tr> |
| 2265 | <tr class="entry_cont"> |
| 2266 | <td class="entry_details" colspan="5"> |
| 2267 | <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/> |
| 2268 | and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p> |
| 2269 | <p>Note that even when AE is locked,<wbr/> the flash may be fired if |
| 2270 | the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/> |
| 2271 | ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p> |
| 2272 | <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 |
| 2273 | is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p> |
| 2274 | <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) |
| 2275 | when AE is already locked,<wbr/> the camera device will not change the exposure time |
| 2276 | (<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>) |
| 2277 | parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> |
| 2278 | is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the |
| 2279 | <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/> |
| 2280 | Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p> |
| 2281 | <p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock |
| 2282 | the AE if AE is locked by the camera device internally during precapture metering |
| 2283 | sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an |
| 2284 | ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence |
| 2285 | will never succeed in a sequence of preview requests where AE lock is always set |
| 2286 | to <code>false</code>.<wbr/></p> |
| 2287 | <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that |
| 2288 | get locked do not necessarily correspond to the settings that were present in the |
| 2289 | latest capture result received from the camera device,<wbr/> since additional captures |
| 2290 | and AE updates may have occurred even before the result was sent out.<wbr/> If an |
| 2291 | application is switching between automatic and manual control and wishes to eliminate |
| 2292 | any flicker during the switch,<wbr/> the following procedure is recommended:</p> |
| 2293 | <ol> |
| 2294 | <li>Starting in auto-AE mode:</li> |
| 2295 | <li>Lock AE</li> |
| 2296 | <li>Wait for the first result to be output that has the AE locked</li> |
| 2297 | <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li> |
| 2298 | <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li> |
| 2299 | </ol> |
| 2300 | <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> |
| 2301 | </td> |
| 2302 | </tr> |
| 2303 | |
| 2304 | |
| 2305 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 2306 | <!-- end of entry --> |
| 2307 | |
| 2308 | |
| 2309 | <tr class="entry" id="controls_android.control.aeMode"> |
| 2310 | <td class="entry_name |
| 2311 | " rowspan="3"> |
| 2312 | android.<wbr/>control.<wbr/>ae<wbr/>Mode |
| 2313 | </td> |
| 2314 | <td class="entry_type"> |
| 2315 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 2316 | |
| 2317 | <span class="entry_type_visibility"> [public]</span> |
| 2318 | |
| 2319 | |
| 2320 | <span class="entry_type_hwlevel">[legacy] </span> |
| 2321 | |
| 2322 | |
| 2323 | |
| 2324 | <ul class="entry_type_enum"> |
| 2325 | <li> |
| 2326 | <span class="entry_type_enum_name">OFF</span> |
| 2327 | <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p> |
| 2328 | <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> |
| 2329 | <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and |
| 2330 | <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera |
| 2331 | device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's |
| 2332 | a flash unit for this camera device.<wbr/></p> |
| 2333 | <p>Note that auto-white balance (AWB) and auto-focus (AF) |
| 2334 | behavior is device dependent when AE is in OFF mode.<wbr/> |
| 2335 | To have consistent behavior across different devices,<wbr/> |
| 2336 | it is recommended to either set AWB and AF to OFF mode |
| 2337 | or lock AWB and AF before setting AE to OFF.<wbr/> |
| 2338 | 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/> |
| 2339 | <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> |
| 2340 | for more details.<wbr/></p> |
| 2341 | <p>LEGACY devices do not support the OFF mode and will |
| 2342 | override attempts to use this value to ON.<wbr/></p></span> |
| 2343 | </li> |
| 2344 | <li> |
| 2345 | <span class="entry_type_enum_name">ON</span> |
| 2346 | <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/> |
| 2347 | with no flash control.<wbr/></p> |
| 2348 | <p>The application's values for |
| 2349 | <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> |
| 2350 | <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and |
| 2351 | <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The |
| 2352 | application has control over the various |
| 2353 | android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span> |
| 2354 | </li> |
| 2355 | <li> |
| 2356 | <span class="entry_type_enum_name">ON_AUTO_FLASH</span> |
| 2357 | <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls |
| 2358 | the camera's flash unit,<wbr/> firing it in low-light |
| 2359 | conditions.<wbr/></p> |
| 2360 | <p>The flash may be fired during a precapture sequence |
| 2361 | (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and |
| 2362 | may be fired for captures for which the |
| 2363 | <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to |
| 2364 | STILL_<wbr/>CAPTURE</p></span> |
| 2365 | </li> |
| 2366 | <li> |
| 2367 | <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span> |
| 2368 | <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls |
| 2369 | the camera's flash unit,<wbr/> always firing it for still |
| 2370 | captures.<wbr/></p> |
| 2371 | <p>The flash may be fired during a precapture sequence |
| 2372 | (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and |
| 2373 | will always be fired for captures for which the |
| 2374 | <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to |
| 2375 | STILL_<wbr/>CAPTURE</p></span> |
| 2376 | </li> |
| 2377 | <li> |
| 2378 | <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span> |
| 2379 | <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye |
| 2380 | reduction.<wbr/></p> |
| 2381 | <p>If deemed necessary by the camera device,<wbr/> a red eye |
| 2382 | reduction flash will fire during the precapture |
| 2383 | sequence.<wbr/></p></span> |
| 2384 | </li> |
| 2385 | </ul> |
| 2386 | |
| 2387 | </td> <!-- entry_type --> |
| 2388 | |
| 2389 | <td class="entry_description"> |
| 2390 | <p>The desired mode for the camera device's |
| 2391 | auto-exposure routine.<wbr/></p> |
| 2392 | </td> |
| 2393 | |
| 2394 | <td class="entry_units"> |
| 2395 | </td> |
| 2396 | |
| 2397 | <td class="entry_range"> |
| 2398 | <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p> |
| 2399 | </td> |
| 2400 | |
| 2401 | <td class="entry_tags"> |
| 2402 | <ul class="entry_tags"> |
| 2403 | <li><a href="#tag_BC">BC</a></li> |
| 2404 | </ul> |
| 2405 | </td> |
| 2406 | |
| 2407 | </tr> |
| 2408 | <tr class="entries_header"> |
| 2409 | <th class="th_details" colspan="5">Details</th> |
| 2410 | </tr> |
| 2411 | <tr class="entry_cont"> |
| 2412 | <td class="entry_details" colspan="5"> |
| 2413 | <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is |
| 2414 | AUTO.<wbr/></p> |
| 2415 | <p>When set to any of the ON modes,<wbr/> the camera device's |
| 2416 | auto-exposure routine is enabled,<wbr/> overriding the |
| 2417 | application's selected exposure time,<wbr/> sensor sensitivity,<wbr/> |
| 2418 | and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> |
| 2419 | <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and |
| 2420 | <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes |
| 2421 | is selected,<wbr/> the camera device's flash unit controls are |
| 2422 | also overridden.<wbr/></p> |
| 2423 | <p>The FLASH modes are only available if the camera device |
| 2424 | 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> |
| 2425 | <p>If flash TORCH mode is desired,<wbr/> this field must be set to |
| 2426 | ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p> |
| 2427 | <p>When set to any of the ON modes,<wbr/> the values chosen by the |
| 2428 | camera device auto-exposure routine for the overridden |
| 2429 | fields for a given capture will be available in its |
| 2430 | CaptureResult.<wbr/></p> |
| 2431 | </td> |
| 2432 | </tr> |
| 2433 | |
| 2434 | |
| 2435 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 2436 | <!-- end of entry --> |
| 2437 | |
| 2438 | |
| 2439 | <tr class="entry" id="controls_android.control.aeRegions"> |
| 2440 | <td class="entry_name |
| 2441 | " rowspan="5"> |
| 2442 | android.<wbr/>control.<wbr/>ae<wbr/>Regions |
| 2443 | </td> |
| 2444 | <td class="entry_type"> |
| 2445 | <span class="entry_type_name">int32</span> |
| 2446 | <span class="entry_type_container">x</span> |
| 2447 | |
| 2448 | <span class="entry_type_array"> |
| 2449 | 5 x area_count |
| 2450 | </span> |
| 2451 | <span class="entry_type_visibility"> [public as meteringRectangle]</span> |
| 2452 | |
| 2453 | |
| 2454 | |
| 2455 | |
| 2456 | |
| 2457 | |
| 2458 | </td> <!-- entry_type --> |
| 2459 | |
| 2460 | <td class="entry_description"> |
| 2461 | <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p> |
| 2462 | </td> |
| 2463 | |
| 2464 | <td class="entry_units"> |
| 2465 | Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size |
| 2466 | </td> |
| 2467 | |
| 2468 | <td class="entry_range"> |
| 2469 | <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of |
| 2470 | <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> |
| 2471 | </td> |
| 2472 | |
| 2473 | <td class="entry_tags"> |
| 2474 | <ul class="entry_tags"> |
| 2475 | <li><a href="#tag_BC">BC</a></li> |
| 2476 | </ul> |
| 2477 | </td> |
| 2478 | |
| 2479 | </tr> |
| 2480 | <tr class="entries_header"> |
| 2481 | <th class="th_details" colspan="5">Details</th> |
| 2482 | </tr> |
| 2483 | <tr class="entry_cont"> |
| 2484 | <td class="entry_details" colspan="5"> |
| 2485 | <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/> |
| 2486 | Otherwise will always be present.<wbr/></p> |
| 2487 | <p>The maximum number of regions supported by the device is determined by the value |
| 2488 | of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p> |
| 2489 | <p>The coordinate system is based on the active pixel array,<wbr/> |
| 2490 | with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and |
| 2491 | (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> |
| 2492 | <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the |
| 2493 | bottom-right pixel in the active pixel array.<wbr/></p> |
| 2494 | <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight |
| 2495 | for every pixel in the area.<wbr/> This means that a large metering area |
| 2496 | with the same weight as a smaller area will have more effect in |
| 2497 | the metering result.<wbr/> Metering areas can partially overlap and the |
| 2498 | camera device will add the weights in the overlap region.<wbr/></p> |
| 2499 | <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one |
| 2500 | region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 |
| 2501 | weight is ignored.<wbr/></p> |
| 2502 | <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the |
| 2503 | camera device.<wbr/></p> |
| 2504 | <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 |
| 2505 | capture result metadata,<wbr/> the camera device will ignore the sections outside the crop |
| 2506 | region and output only the intersection rectangle as the metering region in the result |
| 2507 | metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and |
| 2508 | not reported in the result metadata.<wbr/></p> |
| 2509 | </td> |
| 2510 | </tr> |
| 2511 | |
| 2512 | <tr class="entries_header"> |
| 2513 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 2514 | </tr> |
| 2515 | <tr class="entry_cont"> |
| 2516 | <td class="entry_details" colspan="5"> |
| 2517 | <p>The HAL level representation of MeteringRectangle[] is a |
| 2518 | int[5 * area_<wbr/>count].<wbr/> |
| 2519 | Every five elements represent a metering region of |
| 2520 | (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> |
| 2521 | The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but |
| 2522 | exclusive on xmax and ymax.<wbr/></p> |
| 2523 | </td> |
| 2524 | </tr> |
| 2525 | |
| 2526 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 2527 | <!-- end of entry --> |
| 2528 | |
| 2529 | |
| 2530 | <tr class="entry" id="controls_android.control.aeTargetFpsRange"> |
| 2531 | <td class="entry_name |
| 2532 | " rowspan="3"> |
| 2533 | android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range |
| 2534 | </td> |
| 2535 | <td class="entry_type"> |
| 2536 | <span class="entry_type_name">int32</span> |
| 2537 | <span class="entry_type_container">x</span> |
| 2538 | |
| 2539 | <span class="entry_type_array"> |
| 2540 | 2 |
| 2541 | </span> |
| 2542 | <span class="entry_type_visibility"> [public as rangeInt]</span> |
| 2543 | |
| 2544 | |
| 2545 | <span class="entry_type_hwlevel">[legacy] </span> |
| 2546 | |
| 2547 | |
| 2548 | |
| 2549 | |
| 2550 | </td> <!-- entry_type --> |
| 2551 | |
| 2552 | <td class="entry_description"> |
| 2553 | <p>Range over which the auto-exposure routine can |
| 2554 | adjust the capture frame rate to maintain good |
| 2555 | exposure.<wbr/></p> |
| 2556 | </td> |
| 2557 | |
| 2558 | <td class="entry_units"> |
| 2559 | Frames per second (FPS) |
| 2560 | </td> |
| 2561 | |
| 2562 | <td class="entry_range"> |
| 2563 | <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> |
| 2564 | </td> |
| 2565 | |
| 2566 | <td class="entry_tags"> |
| 2567 | <ul class="entry_tags"> |
| 2568 | <li><a href="#tag_BC">BC</a></li> |
| 2569 | </ul> |
| 2570 | </td> |
| 2571 | |
| 2572 | </tr> |
| 2573 | <tr class="entries_header"> |
| 2574 | <th class="th_details" colspan="5">Details</th> |
| 2575 | </tr> |
| 2576 | <tr class="entry_cont"> |
| 2577 | <td class="entry_details" colspan="5"> |
| 2578 | <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not |
| 2579 | manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and |
| 2580 | <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p> |
| 2581 | </td> |
| 2582 | </tr> |
| 2583 | |
| 2584 | |
| 2585 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 2586 | <!-- end of entry --> |
| 2587 | |
| 2588 | |
| 2589 | <tr class="entry" id="controls_android.control.aePrecaptureTrigger"> |
| 2590 | <td class="entry_name |
| 2591 | " rowspan="5"> |
| 2592 | android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger |
| 2593 | </td> |
| 2594 | <td class="entry_type"> |
| 2595 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 2596 | |
| 2597 | <span class="entry_type_visibility"> [public]</span> |
| 2598 | |
| 2599 | |
| 2600 | <span class="entry_type_hwlevel">[limited] </span> |
| 2601 | |
| 2602 | |
| 2603 | |
| 2604 | <ul class="entry_type_enum"> |
| 2605 | <li> |
| 2606 | <span class="entry_type_enum_name">IDLE</span> |
| 2607 | <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> |
| 2608 | </li> |
| 2609 | <li> |
| 2610 | <span class="entry_type_enum_name">START</span> |
| 2611 | <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started |
| 2612 | by the camera device.<wbr/></p> |
| 2613 | <p>The exact effect of the precapture trigger depends on |
| 2614 | the current AE mode and state.<wbr/></p></span> |
| 2615 | </li> |
| 2616 | <li> |
| 2617 | <span class="entry_type_enum_name">CANCEL</span> |
| 2618 | <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed |
| 2619 | precapture metering sequence,<wbr/> the auto-exposure routine will return to its |
| 2620 | initial state.<wbr/></p></span> |
| 2621 | </li> |
| 2622 | </ul> |
| 2623 | |
| 2624 | </td> <!-- entry_type --> |
| 2625 | |
| 2626 | <td class="entry_description"> |
| 2627 | <p>Whether the camera device will trigger a precapture |
| 2628 | metering sequence when it processes this request.<wbr/></p> |
| 2629 | </td> |
| 2630 | |
| 2631 | <td class="entry_units"> |
| 2632 | </td> |
| 2633 | |
| 2634 | <td class="entry_range"> |
| 2635 | </td> |
| 2636 | |
| 2637 | <td class="entry_tags"> |
| 2638 | <ul class="entry_tags"> |
| 2639 | <li><a href="#tag_BC">BC</a></li> |
| 2640 | </ul> |
| 2641 | </td> |
| 2642 | |
| 2643 | </tr> |
| 2644 | <tr class="entries_header"> |
| 2645 | <th class="th_details" colspan="5">Details</th> |
| 2646 | </tr> |
| 2647 | <tr class="entry_cont"> |
| 2648 | <td class="entry_details" colspan="5"> |
| 2649 | <p>This entry is normally set to IDLE,<wbr/> or is not |
| 2650 | included at all in the request settings.<wbr/> When included and |
| 2651 | set to START,<wbr/> the camera device will trigger the auto-exposure (AE) |
| 2652 | precapture metering sequence.<wbr/></p> |
| 2653 | <p>When set to CANCEL,<wbr/> the camera device will cancel any active |
| 2654 | precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/> |
| 2655 | If a precapture metering sequence is already completed,<wbr/> and the camera |
| 2656 | device has implicitly locked the AE for subsequent still capture,<wbr/> the |
| 2657 | CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p> |
| 2658 | <p>The precapture sequence should be triggered before starting a |
| 2659 | high-quality still capture for final metering decisions to |
| 2660 | be made,<wbr/> and for firing pre-capture flash pulses to estimate |
| 2661 | scene brightness and required final capture flash power,<wbr/> when |
| 2662 | the flash is enabled.<wbr/></p> |
| 2663 | <p>Normally,<wbr/> this entry should be set to START for only a |
| 2664 | single request,<wbr/> and the application should wait until the |
| 2665 | sequence completes before starting a new one.<wbr/></p> |
| 2666 | <p>When a precapture metering sequence is finished,<wbr/> the camera device |
| 2667 | may lock the auto-exposure routine internally to be able to accurately expose the |
| 2668 | subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/> |
| 2669 | For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is |
| 2670 | submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should |
| 2671 | 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 |
| 2672 | 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 |
| 2673 | still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for |
| 2674 | API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device |
| 2675 | internally locked AE if the application doesn't submit a still capture request after |
| 2676 | the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not |
| 2677 | be used in devices that have earlier API levels.<wbr/></p> |
| 2678 | <p>The exact effect of auto-exposure (AE) precapture trigger |
| 2679 | depends on the current AE mode and state; see |
| 2680 | <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition |
| 2681 | details.<wbr/></p> |
| 2682 | <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported; |
| 2683 | capturing a high-resolution JPEG image will automatically trigger a |
| 2684 | precapture sequence before the high-resolution capture,<wbr/> including |
| 2685 | potentially firing a pre-capture flash.<wbr/></p> |
| 2686 | <p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> |
| 2687 | simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between |
| 2688 | the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a |
| 2689 | focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous |
| 2690 | trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and |
| 2691 | 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 |
| 2692 | example.<wbr/></p> |
| 2693 | <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then |
| 2694 | the camera device will complete them in the optimal order for that device.<wbr/></p> |
| 2695 | </td> |
| 2696 | </tr> |
| 2697 | |
| 2698 | <tr class="entries_header"> |
| 2699 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 2700 | </tr> |
| 2701 | <tr class="entry_cont"> |
| 2702 | <td class="entry_details" colspan="5"> |
| 2703 | <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active |
| 2704 | (and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to |
| 2705 | treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the |
| 2706 | AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> |
| 2707 | to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> |
| 2708 | </td> |
| 2709 | </tr> |
| 2710 | |
| 2711 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 2712 | <!-- end of entry --> |
| 2713 | |
| 2714 | |
| 2715 | <tr class="entry" id="controls_android.control.afMode"> |
| 2716 | <td class="entry_name |
| 2717 | " rowspan="5"> |
| 2718 | android.<wbr/>control.<wbr/>af<wbr/>Mode |
| 2719 | </td> |
| 2720 | <td class="entry_type"> |
| 2721 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 2722 | |
| 2723 | <span class="entry_type_visibility"> [public]</span> |
| 2724 | |
| 2725 | |
| 2726 | <span class="entry_type_hwlevel">[legacy] </span> |
| 2727 | |
| 2728 | |
| 2729 | |
| 2730 | <ul class="entry_type_enum"> |
| 2731 | <li> |
| 2732 | <span class="entry_type_enum_name">OFF</span> |
| 2733 | <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens; |
| 2734 | <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the |
| 2735 | application.<wbr/></p></span> |
| 2736 | </li> |
| 2737 | <li> |
| 2738 | <span class="entry_type_enum_name">AUTO</span> |
| 2739 | <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p> |
| 2740 | <p>In this mode,<wbr/> the lens does not move unless |
| 2741 | the autofocus trigger action is called.<wbr/> When that trigger |
| 2742 | is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to |
| 2743 | the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p> |
| 2744 | <p>Always supported if lens is not fixed focus.<wbr/></p> |
| 2745 | <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 |
| 2746 | is fixed-focus.<wbr/></p> |
| 2747 | <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/> |
| 2748 | and sets the AF state to INACTIVE.<wbr/></p></span> |
| 2749 | </li> |
| 2750 | <li> |
| 2751 | <span class="entry_type_enum_name">MACRO</span> |
| 2752 | <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p> |
| 2753 | <p>In this mode,<wbr/> the lens does not move unless the |
| 2754 | autofocus trigger action is called.<wbr/> When that trigger is |
| 2755 | activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to |
| 2756 | the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This |
| 2757 | mode is optimized for focusing on objects very close to |
| 2758 | the camera.<wbr/></p> |
| 2759 | <p>When that trigger is activated,<wbr/> AF will transition to |
| 2760 | ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or |
| 2761 | NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens |
| 2762 | position to default,<wbr/> and sets the AF state to |
| 2763 | INACTIVE.<wbr/></p></span> |
| 2764 | </li> |
| 2765 | <li> |
| 2766 | <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span> |
| 2767 | <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens |
| 2768 | position continually to attempt to provide a |
| 2769 | constantly-in-focus image stream.<wbr/></p> |
| 2770 | <p>The focusing behavior should be suitable for good quality |
| 2771 | video recording; typically this means slower focus |
| 2772 | movement and no overshoots.<wbr/> When the AF trigger is not |
| 2773 | involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/> |
| 2774 | and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED |
| 2775 | states as appropriate.<wbr/> When the AF trigger is activated,<wbr/> |
| 2776 | the algorithm should immediately transition into |
| 2777 | AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the |
| 2778 | lens position until a cancel AF trigger is received.<wbr/></p> |
| 2779 | <p>Once cancel is received,<wbr/> the algorithm should transition |
| 2780 | back to INACTIVE and resume passive scan.<wbr/> Note that this |
| 2781 | behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an |
| 2782 | ongoing PASSIVE_<wbr/>SCAN must immediately be |
| 2783 | canceled.<wbr/></p></span> |
| 2784 | </li> |
| 2785 | <li> |
| 2786 | <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span> |
| 2787 | <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens |
| 2788 | position continually to attempt to provide a |
| 2789 | constantly-in-focus image stream.<wbr/></p> |
| 2790 | <p>The focusing behavior should be suitable for still image |
| 2791 | capture; typically this means focusing as fast as |
| 2792 | possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF |
| 2793 | algorithm should start in INACTIVE state,<wbr/> and then |
| 2794 | transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as |
| 2795 | appropriate as it attempts to maintain focus.<wbr/> When the AF |
| 2796 | trigger is activated,<wbr/> the algorithm should finish its |
| 2797 | PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into |
| 2798 | AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the |
| 2799 | lens position until a cancel AF trigger is received.<wbr/></p> |
| 2800 | <p>When the AF cancel trigger is activated,<wbr/> the algorithm |
| 2801 | should transition back to INACTIVE and then act as if it |
| 2802 | has just been started.<wbr/></p></span> |
| 2803 | </li> |
| 2804 | <li> |
| 2805 | <span class="entry_type_enum_name">EDOF</span> |
| 2806 | <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p> |
| 2807 | <p>The camera device will produce images with an extended |
| 2808 | depth of field automatically; no special focusing |
| 2809 | operations need to be done before taking a picture.<wbr/></p> |
| 2810 | <p>AF triggers are ignored,<wbr/> and the AF state will always be |
| 2811 | INACTIVE.<wbr/></p></span> |
| 2812 | </li> |
| 2813 | </ul> |
| 2814 | |
| 2815 | </td> <!-- entry_type --> |
| 2816 | |
| 2817 | <td class="entry_description"> |
| 2818 | <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what |
| 2819 | mode it is set to.<wbr/></p> |
| 2820 | </td> |
| 2821 | |
| 2822 | <td class="entry_units"> |
| 2823 | </td> |
| 2824 | |
| 2825 | <td class="entry_range"> |
| 2826 | <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p> |
| 2827 | </td> |
| 2828 | |
| 2829 | <td class="entry_tags"> |
| 2830 | <ul class="entry_tags"> |
| 2831 | <li><a href="#tag_BC">BC</a></li> |
| 2832 | </ul> |
| 2833 | </td> |
| 2834 | |
| 2835 | </tr> |
| 2836 | <tr class="entries_header"> |
| 2837 | <th class="th_details" colspan="5">Details</th> |
| 2838 | </tr> |
| 2839 | <tr class="entry_cont"> |
| 2840 | <td class="entry_details" colspan="5"> |
| 2841 | <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus |
| 2842 | (i.<wbr/>e.<wbr/> <code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> > 0</code>).<wbr/> Also note that |
| 2843 | when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device |
| 2844 | 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 |
| 2845 | 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> |
| 2846 | <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/> |
| 2847 | the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> |
| 2848 | in result metadata.<wbr/></p> |
| 2849 | </td> |
| 2850 | </tr> |
| 2851 | |
| 2852 | <tr class="entries_header"> |
| 2853 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 2854 | </tr> |
| 2855 | <tr class="entry_cont"> |
| 2856 | <td class="entry_details" colspan="5"> |
| 2857 | <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a |
| 2858 | 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 |
| 2859 | up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see |
| 2860 | <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 |
| 2861 | locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move |
| 2862 | after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that |
| 2863 | the same focal plane remains in focus.<wbr/></p> |
| 2864 | <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF |
| 2865 | scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger |
| 2866 | (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 |
| 2867 | same lock behavior as above.<wbr/></p> |
| 2868 | <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the |
| 2869 | 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/> |
| 2870 | However,<wbr/> the lens must not move regardless of the camera movement for any focus distance |
| 2871 | manual control.<wbr/></p> |
| 2872 | <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on |
| 2873 | camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to |
| 2874 | remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/> |
| 2875 | by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue |
| 2876 | that will arise on camera modules with open-loop VCMs.<wbr/></p> |
| 2877 | </td> |
| 2878 | </tr> |
| 2879 | |
| 2880 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 2881 | <!-- end of entry --> |
| 2882 | |
| 2883 | |
| 2884 | <tr class="entry" id="controls_android.control.afRegions"> |
| 2885 | <td class="entry_name |
| 2886 | " rowspan="5"> |
| 2887 | android.<wbr/>control.<wbr/>af<wbr/>Regions |
| 2888 | </td> |
| 2889 | <td class="entry_type"> |
| 2890 | <span class="entry_type_name">int32</span> |
| 2891 | <span class="entry_type_container">x</span> |
| 2892 | |
| 2893 | <span class="entry_type_array"> |
| 2894 | 5 x area_count |
| 2895 | </span> |
| 2896 | <span class="entry_type_visibility"> [public as meteringRectangle]</span> |
| 2897 | |
| 2898 | |
| 2899 | |
| 2900 | |
| 2901 | |
| 2902 | |
| 2903 | </td> <!-- entry_type --> |
| 2904 | |
| 2905 | <td class="entry_description"> |
| 2906 | <p>List of metering areas to use for auto-focus.<wbr/></p> |
| 2907 | </td> |
| 2908 | |
| 2909 | <td class="entry_units"> |
| 2910 | Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size |
| 2911 | </td> |
| 2912 | |
| 2913 | <td class="entry_range"> |
| 2914 | <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of |
| 2915 | <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> |
| 2916 | </td> |
| 2917 | |
| 2918 | <td class="entry_tags"> |
| 2919 | <ul class="entry_tags"> |
| 2920 | <li><a href="#tag_BC">BC</a></li> |
| 2921 | </ul> |
| 2922 | </td> |
| 2923 | |
| 2924 | </tr> |
| 2925 | <tr class="entries_header"> |
| 2926 | <th class="th_details" colspan="5">Details</th> |
| 2927 | </tr> |
| 2928 | <tr class="entry_cont"> |
| 2929 | <td class="entry_details" colspan="5"> |
| 2930 | <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/> |
| 2931 | Otherwise will always be present.<wbr/></p> |
| 2932 | <p>The maximum number of focus areas supported by the device is determined by the value |
| 2933 | of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p> |
| 2934 | <p>The coordinate system is based on the active pixel array,<wbr/> |
| 2935 | with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and |
| 2936 | (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> |
| 2937 | <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the |
| 2938 | bottom-right pixel in the active pixel array.<wbr/></p> |
| 2939 | <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight |
| 2940 | for every pixel in the area.<wbr/> This means that a large metering area |
| 2941 | with the same weight as a smaller area will have more effect in |
| 2942 | the metering result.<wbr/> Metering areas can partially overlap and the |
| 2943 | camera device will add the weights in the overlap region.<wbr/></p> |
| 2944 | <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region |
| 2945 | is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is |
| 2946 | ignored.<wbr/></p> |
| 2947 | <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the |
| 2948 | camera device.<wbr/></p> |
| 2949 | <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 |
| 2950 | capture result metadata,<wbr/> the camera device will ignore the sections outside the crop |
| 2951 | region and output only the intersection rectangle as the metering region in the result |
| 2952 | metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and |
| 2953 | not reported in the result metadata.<wbr/></p> |
| 2954 | </td> |
| 2955 | </tr> |
| 2956 | |
| 2957 | <tr class="entries_header"> |
| 2958 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 2959 | </tr> |
| 2960 | <tr class="entry_cont"> |
| 2961 | <td class="entry_details" colspan="5"> |
| 2962 | <p>The HAL level representation of MeteringRectangle[] is a |
| 2963 | int[5 * area_<wbr/>count].<wbr/> |
| 2964 | Every five elements represent a metering region of |
| 2965 | (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> |
| 2966 | The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but |
| 2967 | exclusive on xmax and ymax.<wbr/></p> |
| 2968 | </td> |
| 2969 | </tr> |
| 2970 | |
| 2971 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 2972 | <!-- end of entry --> |
| 2973 | |
| 2974 | |
| 2975 | <tr class="entry" id="controls_android.control.afTrigger"> |
| 2976 | <td class="entry_name |
| 2977 | " rowspan="5"> |
| 2978 | android.<wbr/>control.<wbr/>af<wbr/>Trigger |
| 2979 | </td> |
| 2980 | <td class="entry_type"> |
| 2981 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 2982 | |
| 2983 | <span class="entry_type_visibility"> [public]</span> |
| 2984 | |
| 2985 | |
| 2986 | <span class="entry_type_hwlevel">[legacy] </span> |
| 2987 | |
| 2988 | |
| 2989 | |
| 2990 | <ul class="entry_type_enum"> |
| 2991 | <li> |
| 2992 | <span class="entry_type_enum_name">IDLE</span> |
| 2993 | <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> |
| 2994 | </li> |
| 2995 | <li> |
| 2996 | <span class="entry_type_enum_name">START</span> |
| 2997 | <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span> |
| 2998 | </li> |
| 2999 | <li> |
| 3000 | <span class="entry_type_enum_name">CANCEL</span> |
| 3001 | <span class="entry_type_enum_notes"><p>Autofocus will return to its initial |
| 3002 | state,<wbr/> and cancel any currently active trigger.<wbr/></p></span> |
| 3003 | </li> |
| 3004 | </ul> |
| 3005 | |
| 3006 | </td> <!-- entry_type --> |
| 3007 | |
| 3008 | <td class="entry_description"> |
| 3009 | <p>Whether the camera device will trigger autofocus for this request.<wbr/></p> |
| 3010 | </td> |
| 3011 | |
| 3012 | <td class="entry_units"> |
| 3013 | </td> |
| 3014 | |
| 3015 | <td class="entry_range"> |
| 3016 | </td> |
| 3017 | |
| 3018 | <td class="entry_tags"> |
| 3019 | <ul class="entry_tags"> |
| 3020 | <li><a href="#tag_BC">BC</a></li> |
| 3021 | </ul> |
| 3022 | </td> |
| 3023 | |
| 3024 | </tr> |
| 3025 | <tr class="entries_header"> |
| 3026 | <th class="th_details" colspan="5">Details</th> |
| 3027 | </tr> |
| 3028 | <tr class="entry_cont"> |
| 3029 | <td class="entry_details" colspan="5"> |
| 3030 | <p>This entry is normally set to IDLE,<wbr/> or is not |
| 3031 | included at all in the request settings.<wbr/></p> |
| 3032 | <p>When included and set to START,<wbr/> the camera device will trigger the |
| 3033 | autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p> |
| 3034 | <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/> |
| 3035 | and return to its initial AF state.<wbr/></p> |
| 3036 | <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a |
| 3037 | single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying |
| 3038 | START for multiple captures in a row means restarting the AF operation over |
| 3039 | and over again.<wbr/></p> |
| 3040 | <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> |
| 3041 | <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> |
| 3042 | simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between |
| 3043 | the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a |
| 3044 | focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous |
| 3045 | trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and |
| 3046 | changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p> |
| 3047 | </td> |
| 3048 | </tr> |
| 3049 | |
| 3050 | <tr class="entries_header"> |
| 3051 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 3052 | </tr> |
| 3053 | <tr class="entry_cont"> |
| 3054 | <td class="entry_details" colspan="5"> |
| 3055 | <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active |
| 3056 | (and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to |
| 3057 | treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the |
| 3058 | AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> |
| 3059 | to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> |
| 3060 | </td> |
| 3061 | </tr> |
| 3062 | |
| 3063 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 3064 | <!-- end of entry --> |
| 3065 | |
| 3066 | |
| 3067 | <tr class="entry" id="controls_android.control.awbLock"> |
| 3068 | <td class="entry_name |
| 3069 | " rowspan="3"> |
| 3070 | android.<wbr/>control.<wbr/>awb<wbr/>Lock |
| 3071 | </td> |
| 3072 | <td class="entry_type"> |
| 3073 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 3074 | |
| 3075 | <span class="entry_type_visibility"> [public as boolean]</span> |
| 3076 | |
| 3077 | |
| 3078 | <span class="entry_type_hwlevel">[legacy] </span> |
| 3079 | |
| 3080 | |
| 3081 | |
| 3082 | <ul class="entry_type_enum"> |
| 3083 | <li> |
| 3084 | <span class="entry_type_enum_name">OFF</span> |
| 3085 | <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB |
| 3086 | algorithm is free to update its parameters if in AUTO |
| 3087 | mode.<wbr/></p></span> |
| 3088 | </li> |
| 3089 | <li> |
| 3090 | <span class="entry_type_enum_name">ON</span> |
| 3091 | <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB |
| 3092 | algorithm will not update its parameters while the lock |
| 3093 | is active.<wbr/></p></span> |
| 3094 | </li> |
| 3095 | </ul> |
| 3096 | |
| 3097 | </td> <!-- entry_type --> |
| 3098 | |
| 3099 | <td class="entry_description"> |
| 3100 | <p>Whether auto-white balance (AWB) is currently locked to its |
| 3101 | latest calculated values.<wbr/></p> |
| 3102 | </td> |
| 3103 | |
| 3104 | <td class="entry_units"> |
| 3105 | </td> |
| 3106 | |
| 3107 | <td class="entry_range"> |
| 3108 | </td> |
| 3109 | |
| 3110 | <td class="entry_tags"> |
| 3111 | <ul class="entry_tags"> |
| 3112 | <li><a href="#tag_BC">BC</a></li> |
| 3113 | </ul> |
| 3114 | </td> |
| 3115 | |
| 3116 | </tr> |
| 3117 | <tr class="entries_header"> |
| 3118 | <th class="th_details" colspan="5">Details</th> |
| 3119 | </tr> |
| 3120 | <tr class="entry_cont"> |
| 3121 | <td class="entry_details" colspan="5"> |
| 3122 | <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/> |
| 3123 | and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p> |
| 3124 | <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that |
| 3125 | get locked do not necessarily correspond to the settings that were present in the |
| 3126 | latest capture result received from the camera device,<wbr/> since additional captures |
| 3127 | and AWB updates may have occurred even before the result was sent out.<wbr/> If an |
| 3128 | application is switching between automatic and manual control and wishes to eliminate |
| 3129 | any flicker during the switch,<wbr/> the following procedure is recommended:</p> |
| 3130 | <ol> |
| 3131 | <li>Starting in auto-AWB mode:</li> |
| 3132 | <li>Lock AWB</li> |
| 3133 | <li>Wait for the first result to be output that has the AWB locked</li> |
| 3134 | <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li> |
| 3135 | <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li> |
| 3136 | </ol> |
| 3137 | <p>Note that AWB lock is only meaningful when |
| 3138 | <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/> |
| 3139 | AWB is already fixed to a specific setting.<wbr/></p> |
| 3140 | <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p> |
| 3141 | </td> |
| 3142 | </tr> |
| 3143 | |
| 3144 | |
| 3145 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 3146 | <!-- end of entry --> |
| 3147 | |
| 3148 | |
| 3149 | <tr class="entry" id="controls_android.control.awbMode"> |
| 3150 | <td class="entry_name |
| 3151 | " rowspan="3"> |
| 3152 | android.<wbr/>control.<wbr/>awb<wbr/>Mode |
| 3153 | </td> |
| 3154 | <td class="entry_type"> |
| 3155 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 3156 | |
| 3157 | <span class="entry_type_visibility"> [public]</span> |
| 3158 | |
| 3159 | |
| 3160 | <span class="entry_type_hwlevel">[legacy] </span> |
| 3161 | |
| 3162 | |
| 3163 | |
| 3164 | <ul class="entry_type_enum"> |
| 3165 | <li> |
| 3166 | <span class="entry_type_enum_name">OFF</span> |
| 3167 | <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p> |
| 3168 | <p>The application-selected color transform matrix |
| 3169 | (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains |
| 3170 | (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera |
| 3171 | device for manual white balance control.<wbr/></p></span> |
| 3172 | </li> |
| 3173 | <li> |
| 3174 | <span class="entry_type_enum_name">AUTO</span> |
| 3175 | <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<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">INCANDESCENT</span> |
| 3184 | <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; |
| 3185 | the camera device uses incandescent 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 A.<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">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 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 F2.<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">WARM_FLUORESCENT</span> |
| 3212 | <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; |
| 3213 | the camera device uses warm fluorescent 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 F4.<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">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 daylight light as the assumed scene |
| 3228 | illumination for white balance.<wbr/></p> |
| 3229 | <p>While the exact white balance transforms are up to the |
| 3230 | camera device,<wbr/> they will approximately match the CIE |
| 3231 | standard illuminant D65.<wbr/></p> |
| 3232 | <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> |
| 3233 | and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> |
| 3234 | For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the |
| 3235 | values used by the camera device for the transform and gains |
| 3236 | will be available in the capture result for this request.<wbr/></p></span> |
| 3237 | </li> |
| 3238 | <li> |
| 3239 | <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span> |
| 3240 | <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; |
| 3241 | the camera device uses cloudy daylight light as the assumed scene |
| 3242 | illumination for white balance.<wbr/></p> |
| 3243 | <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> |
| 3244 | and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> |
| 3245 | For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the |
| 3246 | values used by the camera device for the transform and gains |
| 3247 | will be available in the capture result for this request.<wbr/></p></span> |
| 3248 | </li> |
| 3249 | <li> |
| 3250 | <span class="entry_type_enum_name">TWILIGHT</span> |
| 3251 | <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; |
| 3252 | the camera device uses twilight light as the assumed scene |
| 3253 | illumination for white balance.<wbr/></p> |
| 3254 | <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> |
| 3255 | and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> |
| 3256 | For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the |
| 3257 | values used by the camera device for the transform and gains |
| 3258 | will be available in the capture result for this request.<wbr/></p></span> |
| 3259 | </li> |
| 3260 | <li> |
| 3261 | <span class="entry_type_enum_name">SHADE</span> |
| 3262 | <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; |
| 3263 | the camera device uses shade light as the assumed scene |
| 3264 | illumination for white balance.<wbr/></p> |
| 3265 | <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> |
| 3266 | and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> |
| 3267 | For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the |
| 3268 | values used by the camera device for the transform and gains |
| 3269 | will be available in the capture result for this request.<wbr/></p></span> |
| 3270 | </li> |
| 3271 | </ul> |
| 3272 | |
| 3273 | </td> <!-- entry_type --> |
| 3274 | |
| 3275 | <td class="entry_description"> |
| 3276 | <p>Whether auto-white balance (AWB) is currently setting the color |
| 3277 | transform fields,<wbr/> and what its illumination target |
| 3278 | is.<wbr/></p> |
| 3279 | </td> |
| 3280 | |
| 3281 | <td class="entry_units"> |
| 3282 | </td> |
| 3283 | |
| 3284 | <td class="entry_range"> |
| 3285 | <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p> |
| 3286 | </td> |
| 3287 | |
| 3288 | <td class="entry_tags"> |
| 3289 | <ul class="entry_tags"> |
| 3290 | <li><a href="#tag_BC">BC</a></li> |
| 3291 | </ul> |
| 3292 | </td> |
| 3293 | |
| 3294 | </tr> |
| 3295 | <tr class="entries_header"> |
| 3296 | <th class="th_details" colspan="5">Details</th> |
| 3297 | </tr> |
| 3298 | <tr class="entry_cont"> |
| 3299 | <td class="entry_details" colspan="5"> |
| 3300 | <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p> |
| 3301 | <p>When set to the ON mode,<wbr/> the camera device's auto-white balance |
| 3302 | routine is enabled,<wbr/> overriding the application's selected |
| 3303 | <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 |
| 3304 | <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> |
| 3305 | is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to |
| 3306 | 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 |
| 3307 | setting AE mode to OFF.<wbr/></p> |
| 3308 | <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance |
| 3309 | routine is disabled.<wbr/> The application manually controls the white |
| 3310 | 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> |
| 3311 | and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> |
| 3312 | <p>When set to any other modes,<wbr/> the camera device's auto-white |
| 3313 | balance routine is disabled.<wbr/> The camera device uses each |
| 3314 | particular illumination target for white balance |
| 3315 | adjustment.<wbr/> The application's values for |
| 3316 | <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> |
| 3317 | <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and |
| 3318 | <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p> |
| 3319 | </td> |
| 3320 | </tr> |
| 3321 | |
| 3322 | |
| 3323 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 3324 | <!-- end of entry --> |
| 3325 | |
| 3326 | |
| 3327 | <tr class="entry" id="controls_android.control.awbRegions"> |
| 3328 | <td class="entry_name |
| 3329 | " rowspan="5"> |
| 3330 | android.<wbr/>control.<wbr/>awb<wbr/>Regions |
| 3331 | </td> |
| 3332 | <td class="entry_type"> |
| 3333 | <span class="entry_type_name">int32</span> |
| 3334 | <span class="entry_type_container">x</span> |
| 3335 | |
| 3336 | <span class="entry_type_array"> |
| 3337 | 5 x area_count |
| 3338 | </span> |
| 3339 | <span class="entry_type_visibility"> [public as meteringRectangle]</span> |
| 3340 | |
| 3341 | |
| 3342 | |
| 3343 | |
| 3344 | |
| 3345 | |
| 3346 | </td> <!-- entry_type --> |
| 3347 | |
| 3348 | <td class="entry_description"> |
| 3349 | <p>List of metering areas to use for auto-white-balance illuminant |
| 3350 | estimation.<wbr/></p> |
| 3351 | </td> |
| 3352 | |
| 3353 | <td class="entry_units"> |
| 3354 | Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size |
| 3355 | </td> |
| 3356 | |
| 3357 | <td class="entry_range"> |
| 3358 | <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of |
| 3359 | <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> |
| 3360 | </td> |
| 3361 | |
| 3362 | <td class="entry_tags"> |
| 3363 | <ul class="entry_tags"> |
| 3364 | <li><a href="#tag_BC">BC</a></li> |
| 3365 | </ul> |
| 3366 | </td> |
| 3367 | |
| 3368 | </tr> |
| 3369 | <tr class="entries_header"> |
| 3370 | <th class="th_details" colspan="5">Details</th> |
| 3371 | </tr> |
| 3372 | <tr class="entry_cont"> |
| 3373 | <td class="entry_details" colspan="5"> |
| 3374 | <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/> |
| 3375 | Otherwise will always be present.<wbr/></p> |
| 3376 | <p>The maximum number of regions supported by the device is determined by the value |
| 3377 | of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p> |
| 3378 | <p>The coordinate system is based on the active pixel array,<wbr/> |
| 3379 | with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and |
| 3380 | (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> |
| 3381 | <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the |
| 3382 | bottom-right pixel in the active pixel array.<wbr/></p> |
| 3383 | <p>The weight must range from 0 to 1000,<wbr/> and represents a weight |
| 3384 | for every pixel in the area.<wbr/> This means that a large metering area |
| 3385 | with the same weight as a smaller area will have more effect in |
| 3386 | the metering result.<wbr/> Metering areas can partially overlap and the |
| 3387 | camera device will add the weights in the overlap region.<wbr/></p> |
| 3388 | <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if |
| 3389 | only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with |
| 3390 | 0 weight is ignored.<wbr/></p> |
| 3391 | <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the |
| 3392 | camera device.<wbr/></p> |
| 3393 | <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 |
| 3394 | capture result metadata,<wbr/> the camera device will ignore the sections outside the crop |
| 3395 | region and output only the intersection rectangle as the metering region in the result |
| 3396 | metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and |
| 3397 | not reported in the result metadata.<wbr/></p> |
| 3398 | </td> |
| 3399 | </tr> |
| 3400 | |
| 3401 | <tr class="entries_header"> |
| 3402 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 3403 | </tr> |
| 3404 | <tr class="entry_cont"> |
| 3405 | <td class="entry_details" colspan="5"> |
| 3406 | <p>The HAL level representation of MeteringRectangle[] is a |
| 3407 | int[5 * area_<wbr/>count].<wbr/> |
| 3408 | Every five elements represent a metering region of |
| 3409 | (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> |
| 3410 | The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but |
| 3411 | exclusive on xmax and ymax.<wbr/></p> |
| 3412 | </td> |
| 3413 | </tr> |
| 3414 | |
| 3415 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 3416 | <!-- end of entry --> |
| 3417 | |
| 3418 | |
| 3419 | <tr class="entry" id="controls_android.control.captureIntent"> |
| 3420 | <td class="entry_name |
| 3421 | " rowspan="3"> |
| 3422 | android.<wbr/>control.<wbr/>capture<wbr/>Intent |
| 3423 | </td> |
| 3424 | <td class="entry_type"> |
| 3425 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 3426 | |
| 3427 | <span class="entry_type_visibility"> [public]</span> |
| 3428 | |
| 3429 | |
| 3430 | <span class="entry_type_hwlevel">[legacy] </span> |
| 3431 | |
| 3432 | |
| 3433 | |
| 3434 | <ul class="entry_type_enum"> |
| 3435 | <li> |
| 3436 | <span class="entry_type_enum_name">CUSTOM</span> |
| 3437 | <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other |
| 3438 | categories.<wbr/> The camera device will default to preview-like |
| 3439 | behavior.<wbr/></p></span> |
| 3440 | </li> |
| 3441 | <li> |
| 3442 | <span class="entry_type_enum_name">PREVIEW</span> |
| 3443 | <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p> |
| 3444 | <p>The precapture trigger may be used to start off a metering |
| 3445 | w/<wbr/>flash sequence.<wbr/></p></span> |
| 3446 | </li> |
| 3447 | <li> |
| 3448 | <span class="entry_type_enum_name">STILL_CAPTURE</span> |
| 3449 | <span class="entry_type_enum_notes"><p>This request is for a still capture-type |
| 3450 | use case.<wbr/></p> |
| 3451 | <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span> |
| 3452 | </li> |
| 3453 | <li> |
| 3454 | <span class="entry_type_enum_name">VIDEO_RECORD</span> |
| 3455 | <span class="entry_type_enum_notes"><p>This request is for a video recording |
| 3456 | use case.<wbr/></p></span> |
| 3457 | </li> |
| 3458 | <li> |
| 3459 | <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span> |
| 3460 | <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still |
| 3461 | image while recording video) use case.<wbr/></p> |
| 3462 | <p>The camera device should take the highest-quality image |
| 3463 | possible (given the other settings) without disrupting the |
| 3464 | frame rate of video recording.<wbr/> </p></span> |
| 3465 | </li> |
| 3466 | <li> |
| 3467 | <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> |
| 3468 | <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the |
| 3469 | application will stream full-resolution images and |
| 3470 | reprocess one or several later for a final |
| 3471 | capture.<wbr/></p></span> |
| 3472 | </li> |
| 3473 | <li> |
| 3474 | <span class="entry_type_enum_name">MANUAL</span> |
| 3475 | <span class="entry_type_enum_notes"><p>This request is for manual capture use case where |
| 3476 | the applications want to directly control the capture parameters.<wbr/></p> |
| 3477 | <p>For example,<wbr/> the application may wish to manually control |
| 3478 | <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> |
| 3479 | </li> |
| 3480 | </ul> |
| 3481 | |
| 3482 | </td> <!-- entry_type --> |
| 3483 | |
| 3484 | <td class="entry_description"> |
| 3485 | <p>Information to the camera device 3A (auto-exposure,<wbr/> |
| 3486 | auto-focus,<wbr/> auto-white balance) routines about the purpose |
| 3487 | of this capture,<wbr/> to help the camera device to decide optimal 3A |
| 3488 | strategy.<wbr/></p> |
| 3489 | </td> |
| 3490 | |
| 3491 | <td class="entry_units"> |
| 3492 | </td> |
| 3493 | |
| 3494 | <td class="entry_range"> |
| 3495 | </td> |
| 3496 | |
| 3497 | <td class="entry_tags"> |
| 3498 | <ul class="entry_tags"> |
| 3499 | <li><a href="#tag_BC">BC</a></li> |
| 3500 | </ul> |
| 3501 | </td> |
| 3502 | |
| 3503 | </tr> |
| 3504 | <tr class="entries_header"> |
| 3505 | <th class="th_details" colspan="5">Details</th> |
| 3506 | </tr> |
| 3507 | <tr class="entry_cont"> |
| 3508 | <td class="entry_details" colspan="5"> |
| 3509 | <p>This control (except for MANUAL) is only effective if |
| 3510 | <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p> |
| 3511 | <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> |
| 3512 | contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if |
| 3513 | <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are |
| 3514 | always supported.<wbr/></p> |
| 3515 | </td> |
| 3516 | </tr> |
| 3517 | |
| 3518 | |
| 3519 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 3520 | <!-- end of entry --> |
| 3521 | |
| 3522 | |
| 3523 | <tr class="entry" id="controls_android.control.effectMode"> |
| 3524 | <td class="entry_name |
| 3525 | " rowspan="3"> |
| 3526 | android.<wbr/>control.<wbr/>effect<wbr/>Mode |
| 3527 | </td> |
| 3528 | <td class="entry_type"> |
| 3529 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 3530 | |
| 3531 | <span class="entry_type_visibility"> [public]</span> |
| 3532 | |
| 3533 | |
| 3534 | <span class="entry_type_hwlevel">[legacy] </span> |
| 3535 | |
| 3536 | |
| 3537 | |
| 3538 | <ul class="entry_type_enum"> |
| 3539 | <li> |
| 3540 | <span class="entry_type_enum_name">OFF</span> |
| 3541 | <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span> |
| 3542 | </li> |
| 3543 | <li> |
| 3544 | <span class="entry_type_enum_name">MONO</span> |
| 3545 | <span class="entry_type_enum_optional">[optional]</span> |
| 3546 | <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into |
| 3547 | a single color.<wbr/></p> |
| 3548 | <p>This will typically be grayscale.<wbr/></p></span> |
| 3549 | </li> |
| 3550 | <li> |
| 3551 | <span class="entry_type_enum_name">NEGATIVE</span> |
| 3552 | <span class="entry_type_enum_optional">[optional]</span> |
| 3553 | <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors |
| 3554 | are inverted.<wbr/></p></span> |
| 3555 | </li> |
| 3556 | <li> |
| 3557 | <span class="entry_type_enum_name">SOLARIZE</span> |
| 3558 | <span class="entry_type_enum_optional">[optional]</span> |
| 3559 | <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the |
| 3560 | image is wholly or partially reversed in |
| 3561 | tone.<wbr/></p></span> |
| 3562 | </li> |
| 3563 | <li> |
| 3564 | <span class="entry_type_enum_name">SEPIA</span> |
| 3565 | <span class="entry_type_enum_optional">[optional]</span> |
| 3566 | <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm |
| 3567 | gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span> |
| 3568 | </li> |
| 3569 | <li> |
| 3570 | <span class="entry_type_enum_name">POSTERIZE</span> |
| 3571 | <span class="entry_type_enum_optional">[optional]</span> |
| 3572 | <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses |
| 3573 | discrete regions of tone rather than a continuous |
| 3574 | gradient of tones.<wbr/></p></span> |
| 3575 | </li> |
| 3576 | <li> |
| 3577 | <span class="entry_type_enum_name">WHITEBOARD</span> |
| 3578 | <span class="entry_type_enum_optional">[optional]</span> |
| 3579 | <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed |
| 3580 | as regions of white,<wbr/> with black or grey details.<wbr/></p></span> |
| 3581 | </li> |
| 3582 | <li> |
| 3583 | <span class="entry_type_enum_name">BLACKBOARD</span> |
| 3584 | <span class="entry_type_enum_optional">[optional]</span> |
| 3585 | <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed |
| 3586 | as regions of black,<wbr/> with white or grey details.<wbr/></p></span> |
| 3587 | </li> |
| 3588 | <li> |
| 3589 | <span class="entry_type_enum_name">AQUA</span> |
| 3590 | <span class="entry_type_enum_optional">[optional]</span> |
| 3591 | <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span> |
| 3592 | </li> |
| 3593 | </ul> |
| 3594 | |
| 3595 | </td> <!-- entry_type --> |
| 3596 | |
| 3597 | <td class="entry_description"> |
| 3598 | <p>A special color effect to apply.<wbr/></p> |
| 3599 | </td> |
| 3600 | |
| 3601 | <td class="entry_units"> |
| 3602 | </td> |
| 3603 | |
| 3604 | <td class="entry_range"> |
| 3605 | <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p> |
| 3606 | </td> |
| 3607 | |
| 3608 | <td class="entry_tags"> |
| 3609 | <ul class="entry_tags"> |
| 3610 | <li><a href="#tag_BC">BC</a></li> |
| 3611 | </ul> |
| 3612 | </td> |
| 3613 | |
| 3614 | </tr> |
| 3615 | <tr class="entries_header"> |
| 3616 | <th class="th_details" colspan="5">Details</th> |
| 3617 | </tr> |
| 3618 | <tr class="entry_cont"> |
| 3619 | <td class="entry_details" colspan="5"> |
| 3620 | <p>When this mode is set,<wbr/> a color effect will be applied |
| 3621 | to images produced by the camera device.<wbr/> The interpretation |
| 3622 | and implementation of these color effects is left to the |
| 3623 | implementor of the camera device,<wbr/> and should not be |
| 3624 | depended on to be consistent (or present) across all |
| 3625 | devices.<wbr/></p> |
| 3626 | </td> |
| 3627 | </tr> |
| 3628 | |
| 3629 | |
| 3630 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 3631 | <!-- end of entry --> |
| 3632 | |
| 3633 | |
| 3634 | <tr class="entry" id="controls_android.control.mode"> |
| 3635 | <td class="entry_name |
| 3636 | " rowspan="3"> |
| 3637 | android.<wbr/>control.<wbr/>mode |
| 3638 | </td> |
| 3639 | <td class="entry_type"> |
| 3640 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 3641 | |
| 3642 | <span class="entry_type_visibility"> [public]</span> |
| 3643 | |
| 3644 | |
| 3645 | <span class="entry_type_hwlevel">[legacy] </span> |
| 3646 | |
| 3647 | |
| 3648 | |
| 3649 | <ul class="entry_type_enum"> |
| 3650 | <li> |
| 3651 | <span class="entry_type_enum_name">OFF</span> |
| 3652 | <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p> |
| 3653 | <p>All control by the device's metering and focusing (3A) |
| 3654 | routines is disabled,<wbr/> and no other settings in |
| 3655 | android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that |
| 3656 | <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera |
| 3657 | device to select post-processing values for processing |
| 3658 | blocks that do not allow for manual control,<wbr/> or are not |
| 3659 | exposed by the camera API.<wbr/></p> |
| 3660 | <p>However,<wbr/> the camera device's 3A routines may continue to |
| 3661 | collect statistics and update their internal state so that |
| 3662 | when control is switched to AUTO mode,<wbr/> good control values |
| 3663 | can be immediately applied.<wbr/></p></span> |
| 3664 | </li> |
| 3665 | <li> |
| 3666 | <span class="entry_type_enum_name">AUTO</span> |
| 3667 | <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p> |
| 3668 | <p>Manual control of capture parameters is disabled.<wbr/> All |
| 3669 | controls in android.<wbr/>control.<wbr/>* besides sceneMode take |
| 3670 | effect.<wbr/></p></span> |
| 3671 | </li> |
| 3672 | <li> |
| 3673 | <span class="entry_type_enum_name">USE_SCENE_MODE</span> |
| 3674 | <span class="entry_type_enum_optional">[optional]</span> |
| 3675 | <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p> |
| 3676 | <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and |
| 3677 | control.<wbr/>afMode controls; the camera device will ignore |
| 3678 | those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for |
| 3679 | FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/> |
| 3680 | This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/> |
| 3681 | <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a> |
| 3682 | contain some modes other than DISABLED).<wbr/></p></span> |
| 3683 | </li> |
| 3684 | <li> |
| 3685 | <span class="entry_type_enum_name">OFF_KEEP_STATE</span> |
| 3686 | <span class="entry_type_enum_optional">[optional]</span> |
| 3687 | <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be |
| 3688 | used by camera device background auto-exposure,<wbr/> auto-white balance and |
| 3689 | auto-focus algorithms (3A) to update their statistics.<wbr/></p> |
| 3690 | <p>Specifically,<wbr/> the 3A routines are locked to the last |
| 3691 | values set from a request with AUTO,<wbr/> OFF,<wbr/> or |
| 3692 | USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates |
| 3693 | collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be |
| 3694 | discarded by the camera device.<wbr/></p></span> |
| 3695 | </li> |
| 3696 | </ul> |
| 3697 | |
| 3698 | </td> <!-- entry_type --> |
| 3699 | |
| 3700 | <td class="entry_description"> |
| 3701 | <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control |
| 3702 | routines.<wbr/></p> |
| 3703 | </td> |
| 3704 | |
| 3705 | <td class="entry_units"> |
| 3706 | </td> |
| 3707 | |
| 3708 | <td class="entry_range"> |
| 3709 | <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p> |
| 3710 | </td> |
| 3711 | |
| 3712 | <td class="entry_tags"> |
| 3713 | <ul class="entry_tags"> |
| 3714 | <li><a href="#tag_BC">BC</a></li> |
| 3715 | </ul> |
| 3716 | </td> |
| 3717 | |
| 3718 | </tr> |
| 3719 | <tr class="entries_header"> |
| 3720 | <th class="th_details" colspan="5">Details</th> |
| 3721 | </tr> |
| 3722 | <tr class="entry_cont"> |
| 3723 | <td class="entry_details" colspan="5"> |
| 3724 | <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control |
| 3725 | by the camera device is disabled.<wbr/> The application must set the fields for |
| 3726 | capture parameters itself.<wbr/></p> |
| 3727 | <p>When set to AUTO,<wbr/> the individual algorithm controls in |
| 3728 | 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> |
| 3729 | <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in |
| 3730 | android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements |
| 3731 | one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY) |
| 3732 | as it wishes.<wbr/> The camera device scene mode 3A settings are provided by |
| 3733 | <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p> |
| 3734 | <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference |
| 3735 | is that this frame will not be used by camera device background 3A statistics |
| 3736 | update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario |
| 3737 | where the application doesn't want a 3A manual control capture to affect |
| 3738 | the subsequent auto 3A capture results.<wbr/></p> |
| 3739 | </td> |
| 3740 | </tr> |
| 3741 | |
| 3742 | |
| 3743 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 3744 | <!-- end of entry --> |
| 3745 | |
| 3746 | |
| 3747 | <tr class="entry" id="controls_android.control.sceneMode"> |
| 3748 | <td class="entry_name |
| 3749 | " rowspan="5"> |
| 3750 | android.<wbr/>control.<wbr/>scene<wbr/>Mode |
| 3751 | </td> |
| 3752 | <td class="entry_type"> |
| 3753 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 3754 | |
| 3755 | <span class="entry_type_visibility"> [public]</span> |
| 3756 | |
| 3757 | |
| 3758 | <span class="entry_type_hwlevel">[legacy] </span> |
| 3759 | |
| 3760 | |
| 3761 | |
| 3762 | <ul class="entry_type_enum"> |
| 3763 | <li> |
| 3764 | <span class="entry_type_enum_name">DISABLED</span> |
| 3765 | <span class="entry_type_enum_value">0</span> |
| 3766 | <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span> |
| 3767 | </li> |
| 3768 | <li> |
| 3769 | <span class="entry_type_enum_name">FACE_PRIORITY</span> |
| 3770 | <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face |
| 3771 | detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and |
| 3772 | auto-exposure routines.<wbr/></p> |
| 3773 | <p>If face detection statistics are disabled |
| 3774 | (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/> |
| 3775 | this should still operate correctly (but will not return |
| 3776 | face detection statistics to the framework).<wbr/></p> |
| 3777 | <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> |
| 3778 | <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> |
| 3779 | remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span> |
| 3780 | </li> |
| 3781 | <li> |
| 3782 | <span class="entry_type_enum_name">ACTION</span> |
| 3783 | <span class="entry_type_enum_optional">[optional]</span> |
| 3784 | <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p> |
| 3785 | <p>Similar to SPORTS.<wbr/></p></span> |
| 3786 | </li> |
| 3787 | <li> |
| 3788 | <span class="entry_type_enum_name">PORTRAIT</span> |
| 3789 | <span class="entry_type_enum_optional">[optional]</span> |
| 3790 | <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span> |
| 3791 | </li> |
| 3792 | <li> |
| 3793 | <span class="entry_type_enum_name">LANDSCAPE</span> |
| 3794 | <span class="entry_type_enum_optional">[optional]</span> |
| 3795 | <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span> |
| 3796 | </li> |
| 3797 | <li> |
| 3798 | <span class="entry_type_enum_name">NIGHT</span> |
| 3799 | <span class="entry_type_enum_optional">[optional]</span> |
| 3800 | <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span> |
| 3801 | </li> |
| 3802 | <li> |
| 3803 | <span class="entry_type_enum_name">NIGHT_PORTRAIT</span> |
| 3804 | <span class="entry_type_enum_optional">[optional]</span> |
| 3805 | <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light |
| 3806 | settings.<wbr/></p></span> |
| 3807 | </li> |
| 3808 | <li> |
| 3809 | <span class="entry_type_enum_name">THEATRE</span> |
| 3810 | <span class="entry_type_enum_optional">[optional]</span> |
| 3811 | <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must |
| 3812 | remain off.<wbr/></p></span> |
| 3813 | </li> |
| 3814 | <li> |
| 3815 | <span class="entry_type_enum_name">BEACH</span> |
| 3816 | <span class="entry_type_enum_optional">[optional]</span> |
| 3817 | <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span> |
| 3818 | </li> |
| 3819 | <li> |
| 3820 | <span class="entry_type_enum_name">SNOW</span> |
| 3821 | <span class="entry_type_enum_optional">[optional]</span> |
| 3822 | <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span> |
| 3823 | </li> |
| 3824 | <li> |
| 3825 | <span class="entry_type_enum_name">SUNSET</span> |
| 3826 | <span class="entry_type_enum_optional">[optional]</span> |
| 3827 | <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span> |
| 3828 | </li> |
| 3829 | <li> |
| 3830 | <span class="entry_type_enum_name">STEADYPHOTO</span> |
| 3831 | <span class="entry_type_enum_optional">[optional]</span> |
| 3832 | <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of |
| 3833 | device motion (for example: due to hand shake).<wbr/></p></span> |
| 3834 | </li> |
| 3835 | <li> |
| 3836 | <span class="entry_type_enum_name">FIREWORKS</span> |
| 3837 | <span class="entry_type_enum_optional">[optional]</span> |
| 3838 | <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span> |
| 3839 | </li> |
| 3840 | <li> |
| 3841 | <span class="entry_type_enum_name">SPORTS</span> |
| 3842 | <span class="entry_type_enum_optional">[optional]</span> |
| 3843 | <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p> |
| 3844 | <p>Similar to ACTION.<wbr/></p></span> |
| 3845 | </li> |
| 3846 | <li> |
| 3847 | <span class="entry_type_enum_name">PARTY</span> |
| 3848 | <span class="entry_type_enum_optional">[optional]</span> |
| 3849 | <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving |
| 3850 | people.<wbr/></p></span> |
| 3851 | </li> |
| 3852 | <li> |
| 3853 | <span class="entry_type_enum_name">CANDLELIGHT</span> |
| 3854 | <span class="entry_type_enum_optional">[optional]</span> |
| 3855 | <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source |
| 3856 | is a flame.<wbr/></p></span> |
| 3857 | </li> |
| 3858 | <li> |
| 3859 | <span class="entry_type_enum_name">BARCODE</span> |
| 3860 | <span class="entry_type_enum_optional">[optional]</span> |
| 3861 | <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode |
| 3862 | for use by camera applications that wish to read the |
| 3863 | barcode value.<wbr/></p></span> |
| 3864 | </li> |
| 3865 | <li> |
| 3866 | <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span> |
| 3867 | <span class="entry_type_enum_deprecated">[deprecated]</span> |
| 3868 | <span class="entry_type_enum_optional">[optional]</span> |
| 3869 | <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> |
| 3870 | and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a> |
| 3871 | for high speed video recording.<wbr/></p> |
| 3872 | <p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p> |
| 3873 | <p>The supported high speed video sizes and fps ranges are specified in |
| 3874 | <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired |
| 3875 | output frame rates,<wbr/> the application is only allowed to select video size |
| 3876 | and fps range combinations listed in this static metadata.<wbr/> The fps range |
| 3877 | can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p> |
| 3878 | <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to |
| 3879 | ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode |
| 3880 | controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture |
| 3881 | and post-processing parameters is possible.<wbr/> All other controls operate the |
| 3882 | same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other |
| 3883 | android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> |
| 3884 | <ul> |
| 3885 | <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> |
| 3886 | <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> |
| 3887 | <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> |
| 3888 | <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> |
| 3889 | <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> |
| 3890 | <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> |
| 3891 | <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> |
| 3892 | <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> |
| 3893 | <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> |
| 3894 | <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> |
| 3895 | </ul> |
| 3896 | <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> |
| 3897 | <ul> |
| 3898 | <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> |
| 3899 | <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> |
| 3900 | <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> |
| 3901 | <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li> |
| 3902 | </ul> |
| 3903 | <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may |
| 3904 | be lower than what camera can output,<wbr/> depending on the destination Surfaces for |
| 3905 | the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> |
| 3906 | the application need check if the video encoder is capable of supporting the |
| 3907 | high frame rate for a given video size,<wbr/> or it will end up with lower recording |
| 3908 | frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame |
| 3909 | rate will be bounded by the screen refresh rate.<wbr/></p> |
| 3910 | <p>The camera device will only support up to 2 output high speed streams |
| 3911 | (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>) |
| 3912 | in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p> |
| 3913 | <ul> |
| 3914 | <li>The application created no more than maxNumHighSpeedStreams processed non-stalling |
| 3915 | format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as |
| 3916 | 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> |
| 3917 | <li>The stream sizes are selected from the sizes reported by |
| 3918 | <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li> |
| 3919 | <li>No processed non-stalling or raw streams are configured.<wbr/></li> |
| 3920 | </ul> |
| 3921 | <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and |
| 3922 | <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/> |
| 3923 | the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/> |
| 3924 | and the returned capture result metadata will give the fps range choosen |
| 3925 | by the camera device.<wbr/></p> |
| 3926 | <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor |
| 3927 | reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that |
| 3928 | the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span> |
| 3929 | </li> |
| 3930 | <li> |
| 3931 | <span class="entry_type_enum_name">HDR</span> |
| 3932 | <span class="entry_type_enum_optional">[optional]</span> |
| 3933 | <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p> |
| 3934 | <p>In this scene mode,<wbr/> the camera device captures images |
| 3935 | that keep a larger range of scene illumination levels |
| 3936 | visible in the final image.<wbr/> For example,<wbr/> when taking a |
| 3937 | picture of a object in front of a bright window,<wbr/> both |
| 3938 | the object and the scene through the window may be |
| 3939 | visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/> |
| 3940 | one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/> |
| 3941 | HDR mode generally takes much longer to capture a single |
| 3942 | image,<wbr/> has no user control,<wbr/> and may have other artifacts |
| 3943 | depending on the HDR method used.<wbr/></p> |
| 3944 | <p>Therefore,<wbr/> HDR captures operate at a much slower rate |
| 3945 | than regular captures.<wbr/></p> |
| 3946 | <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request |
| 3947 | is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of |
| 3948 | STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image |
| 3949 | using a high dynamic range capture technique.<wbr/> On LEGACY |
| 3950 | devices,<wbr/> captures that target a JPEG-format output will |
| 3951 | be captured with HDR,<wbr/> and the capture intent is not |
| 3952 | relevant.<wbr/></p> |
| 3953 | <p>The HDR capture may involve the device capturing a burst |
| 3954 | of images internally and combining them into one,<wbr/> or it |
| 3955 | may involve the device using specialized high dynamic |
| 3956 | range capture hardware.<wbr/> In all cases,<wbr/> a single image is |
| 3957 | produced in response to a capture request submitted |
| 3958 | while in HDR mode.<wbr/></p> |
| 3959 | <p>Since substantial post-processing is generally needed to |
| 3960 | produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG |
| 3961 | outputs are supported for LIMITED/<wbr/>FULL device HDR |
| 3962 | captures,<wbr/> and only JPEG outputs are supported for LEGACY |
| 3963 | HDR captures.<wbr/> Using a RAW output for HDR capture is not |
| 3964 | supported.<wbr/></p> |
| 3965 | <p>Some devices may also support always-on HDR,<wbr/> which |
| 3966 | applies HDR processing at full frame rate.<wbr/> For these |
| 3967 | devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also |
| 3968 | produce an HDR output with no frame rate impact compared |
| 3969 | to normal operation,<wbr/> though the quality may be lower |
| 3970 | than for STILL_<wbr/>CAPTURE intents.<wbr/></p> |
| 3971 | <p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types |
| 3972 | or capture intents,<wbr/> the images captured will be as if |
| 3973 | the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span> |
| 3974 | </li> |
| 3975 | <li> |
| 3976 | <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span> |
| 3977 | <span class="entry_type_enum_optional">[optional]</span> |
| 3978 | <span class="entry_type_enum_hidden">[hidden]</span> |
| 3979 | <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera |
| 3980 | device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>) |
| 3981 | under low light conditions.<wbr/></p> |
| 3982 | <p>The camera device may be tuned to expose the images in a reduced |
| 3983 | sensitivity range to produce the best quality images.<wbr/> For example,<wbr/> |
| 3984 | 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/> |
| 3985 | the camera device auto-exposure routine tuning process may limit the actual |
| 3986 | exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't |
| 3987 | exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under |
| 3988 | low light may be under-exposed when the sensor max exposure time (bounded by the |
| 3989 | <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 |
| 3990 | ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the |
| 3991 | camera device auto-exposure routine to increase the sensitivity up to the max |
| 3992 | 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 |
| 3993 | dark and the max exposure time is reached.<wbr/> The captured images may be noisier |
| 3994 | compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is |
| 3995 | recommended that the application only use this scene mode when it is capable of |
| 3996 | reducing the noise level of the captured images.<wbr/></p> |
| 3997 | <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> |
| 3998 | <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> |
| 3999 | remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span> |
| 4000 | </li> |
| 4001 | <li> |
| 4002 | <span class="entry_type_enum_name">DEVICE_CUSTOM_START</span> |
| 4003 | <span class="entry_type_enum_optional">[optional]</span> |
| 4004 | <span class="entry_type_enum_hidden">[hidden]</span> |
| 4005 | <span class="entry_type_enum_value">100</span> |
| 4006 | <span class="entry_type_enum_notes"><p>Scene mode values within the range of |
| 4007 | <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific |
| 4008 | customized scene modes.<wbr/></p></span> |
| 4009 | </li> |
| 4010 | <li> |
| 4011 | <span class="entry_type_enum_name">DEVICE_CUSTOM_END</span> |
| 4012 | <span class="entry_type_enum_optional">[optional]</span> |
| 4013 | <span class="entry_type_enum_hidden">[hidden]</span> |
| 4014 | <span class="entry_type_enum_value">127</span> |
| 4015 | <span class="entry_type_enum_notes"><p>Scene mode values within the range of |
| 4016 | <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific |
| 4017 | customized scene modes.<wbr/></p></span> |
| 4018 | </li> |
| 4019 | </ul> |
| 4020 | |
| 4021 | </td> <!-- entry_type --> |
| 4022 | |
| 4023 | <td class="entry_description"> |
| 4024 | <p>Control for which scene mode is currently active.<wbr/></p> |
| 4025 | </td> |
| 4026 | |
| 4027 | <td class="entry_units"> |
| 4028 | </td> |
| 4029 | |
| 4030 | <td class="entry_range"> |
| 4031 | <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p> |
| 4032 | </td> |
| 4033 | |
| 4034 | <td class="entry_tags"> |
| 4035 | <ul class="entry_tags"> |
| 4036 | <li><a href="#tag_BC">BC</a></li> |
| 4037 | </ul> |
| 4038 | </td> |
| 4039 | |
| 4040 | </tr> |
| 4041 | <tr class="entries_header"> |
| 4042 | <th class="th_details" colspan="5">Details</th> |
| 4043 | </tr> |
| 4044 | <tr class="entry_cont"> |
| 4045 | <td class="entry_details" colspan="5"> |
| 4046 | <p>Scene modes are custom camera modes optimized for a certain set of conditions and |
| 4047 | capture settings.<wbr/></p> |
| 4048 | <p>This is the mode that that is active when |
| 4049 | <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 |
| 4050 | 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> |
| 4051 | while in use.<wbr/></p> |
| 4052 | <p>The interpretation and implementation of these scene modes is left |
| 4053 | to the implementor of the camera device.<wbr/> Their behavior will not be |
| 4054 | consistent across all devices,<wbr/> and any given device may only implement |
| 4055 | a subset of these modes.<wbr/></p> |
| 4056 | </td> |
| 4057 | </tr> |
| 4058 | |
| 4059 | <tr class="entries_header"> |
| 4060 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 4061 | </tr> |
| 4062 | <tr class="entry_cont"> |
| 4063 | <td class="entry_details" colspan="5"> |
| 4064 | <p>HAL implementations that include scene modes are expected to provide |
| 4065 | the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> |
| 4066 | <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 |
| 4067 | <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> |
| 4068 | <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/> |
| 4069 | the HAL must list supported video size and fps range in |
| 4070 | <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/> |
| 4071 | 1280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming |
| 4072 | mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture |
| 4073 | requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/> |
| 4074 | This mode is deprecated in HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement |
| 4075 | <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 |
| 4076 | capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> |
| 4077 | </td> |
| 4078 | </tr> |
| 4079 | |
| 4080 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 4081 | <!-- end of entry --> |
| 4082 | |
| 4083 | |
| 4084 | <tr class="entry" id="controls_android.control.videoStabilizationMode"> |
| 4085 | <td class="entry_name |
| 4086 | " rowspan="3"> |
| 4087 | android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode |
| 4088 | </td> |
| 4089 | <td class="entry_type"> |
| 4090 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 4091 | |
| 4092 | <span class="entry_type_visibility"> [public]</span> |
| 4093 | |
| 4094 | |
| 4095 | <span class="entry_type_hwlevel">[legacy] </span> |
| 4096 | |
| 4097 | |
| 4098 | |
| 4099 | <ul class="entry_type_enum"> |
| 4100 | <li> |
| 4101 | <span class="entry_type_enum_name">OFF</span> |
| 4102 | <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span> |
| 4103 | </li> |
| 4104 | <li> |
| 4105 | <span class="entry_type_enum_name">ON</span> |
| 4106 | <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span> |
| 4107 | </li> |
| 4108 | </ul> |
| 4109 | |
| 4110 | </td> <!-- entry_type --> |
| 4111 | |
| 4112 | <td class="entry_description"> |
| 4113 | <p>Whether video stabilization is |
| 4114 | active.<wbr/></p> |
| 4115 | </td> |
| 4116 | |
| 4117 | <td class="entry_units"> |
| 4118 | </td> |
| 4119 | |
| 4120 | <td class="entry_range"> |
| 4121 | </td> |
| 4122 | |
| 4123 | <td class="entry_tags"> |
| 4124 | <ul class="entry_tags"> |
| 4125 | <li><a href="#tag_BC">BC</a></li> |
| 4126 | </ul> |
| 4127 | </td> |
| 4128 | |
| 4129 | </tr> |
| 4130 | <tr class="entries_header"> |
| 4131 | <th class="th_details" colspan="5">Details</th> |
| 4132 | </tr> |
| 4133 | <tr class="entry_cont"> |
| 4134 | <td class="entry_details" colspan="5"> |
| 4135 | <p>Video stabilization automatically warps images from |
| 4136 | the camera in order to stabilize motion between consecutive frames.<wbr/></p> |
| 4137 | <p>If enabled,<wbr/> video stabilization can modify the |
| 4138 | <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p> |
| 4139 | <p>Switching between different video stabilization modes may take several |
| 4140 | frames to initialize,<wbr/> the camera device will report the current mode |
| 4141 | in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> |
| 4142 | the video stabilization modes in the first several capture results may |
| 4143 | still be "OFF",<wbr/> and it will become "ON" when the initialization is |
| 4144 | done.<wbr/></p> |
| 4145 | <p>In addition,<wbr/> not all recording sizes or frame rates may be supported for |
| 4146 | stabilization by a device that reports stabilization support.<wbr/> It is guaranteed |
| 4147 | that an output targeting a MediaRecorder or MediaCodec will be stabilized if |
| 4148 | the recording resolution is less than or equal to 1920 x 1080 (width less than |
| 4149 | or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording |
| 4150 | frame rate is less than or equal to 30fps.<wbr/> At other sizes,<wbr/> the CaptureResult |
| 4151 | <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return |
| 4152 | OFF if the recording output is not stabilized,<wbr/> or if there are no output |
| 4153 | Surface types that can be stabilized.<wbr/></p> |
| 4154 | <p>If a camera device supports both this mode and OIS |
| 4155 | (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may |
| 4156 | produce undesirable interaction,<wbr/> so it is recommended not to enable |
| 4157 | both at the same time.<wbr/></p> |
| 4158 | </td> |
| 4159 | </tr> |
| 4160 | |
| 4161 | |
| 4162 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 4163 | <!-- end of entry --> |
| 4164 | |
| 4165 | |
| 4166 | <tr class="entry" id="controls_android.control.postRawSensitivityBoost"> |
| 4167 | <td class="entry_name |
| 4168 | " rowspan="3"> |
| 4169 | android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost |
| 4170 | </td> |
| 4171 | <td class="entry_type"> |
| 4172 | <span class="entry_type_name">int32</span> |
| 4173 | |
| 4174 | <span class="entry_type_visibility"> [public]</span> |
| 4175 | |
| 4176 | |
| 4177 | |
| 4178 | |
| 4179 | |
| 4180 | |
| 4181 | </td> <!-- entry_type --> |
| 4182 | |
| 4183 | <td class="entry_description"> |
| 4184 | <p>The amount of additional sensitivity boost applied to output images |
| 4185 | after RAW sensor data is captured.<wbr/></p> |
| 4186 | </td> |
| 4187 | |
| 4188 | <td class="entry_units"> |
| 4189 | ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity |
| 4190 | </td> |
| 4191 | |
| 4192 | <td class="entry_range"> |
| 4193 | <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p> |
| 4194 | </td> |
| 4195 | |
| 4196 | <td class="entry_tags"> |
| 4197 | </td> |
| 4198 | |
| 4199 | </tr> |
| 4200 | <tr class="entries_header"> |
| 4201 | <th class="th_details" colspan="5">Details</th> |
| 4202 | </tr> |
| 4203 | <tr class="entry_cont"> |
| 4204 | <td class="entry_details" colspan="5"> |
| 4205 | <p>Some camera devices support additional digital sensitivity boosting in the |
| 4206 | camera processing pipeline after sensor RAW image is captured.<wbr/> |
| 4207 | Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not |
| 4208 | have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p> |
| 4209 | <p>This key will be <code>null</code> for devices that do not support any RAW format |
| 4210 | outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always |
| 4211 | present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will |
| 4212 | list <code>100</code> in this key.<wbr/></p> |
| 4213 | <p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the |
| 4214 | boost to the nearest supported value.<wbr/> |
| 4215 | The final boost value used will be available in the output capture result.<wbr/></p> |
| 4216 | <p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images |
| 4217 | of such device will have the total sensitivity of |
| 4218 | <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> * <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> /<wbr/> 100</code> |
| 4219 | The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p> |
| 4220 | <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 |
| 4221 | OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> |
| 4222 | </td> |
| 4223 | </tr> |
| 4224 | |
| 4225 | |
| 4226 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 4227 | <!-- end of entry --> |
| 4228 | |
| 4229 | |
| 4230 | |
| 4231 | <!-- end of kind --> |
| 4232 | </tbody> |
| 4233 | <tr><td colspan="6" class="kind">static</td></tr> |
| 4234 | |
| 4235 | <thead class="entries_header"> |
| 4236 | <tr> |
| 4237 | <th class="th_name">Property Name</th> |
| 4238 | <th class="th_type">Type</th> |
| 4239 | <th class="th_description">Description</th> |
| 4240 | <th class="th_units">Units</th> |
| 4241 | <th class="th_range">Range</th> |
| 4242 | <th class="th_tags">Tags</th> |
| 4243 | </tr> |
| 4244 | </thead> |
| 4245 | |
| 4246 | <tbody> |
| 4247 | |
| 4248 | |
| 4249 | |
| 4250 | |
| 4251 | |
| 4252 | |
| 4253 | |
| 4254 | |
| 4255 | |
| 4256 | |
| 4257 | <tr class="entry" id="static_android.control.aeAvailableAntibandingModes"> |
| 4258 | <td class="entry_name |
| 4259 | " rowspan="3"> |
| 4260 | android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes |
| 4261 | </td> |
| 4262 | <td class="entry_type"> |
| 4263 | <span class="entry_type_name">byte</span> |
| 4264 | <span class="entry_type_container">x</span> |
| 4265 | |
| 4266 | <span class="entry_type_array"> |
| 4267 | n |
| 4268 | </span> |
| 4269 | <span class="entry_type_visibility"> [public as enumList]</span> |
| 4270 | |
| 4271 | |
| 4272 | <span class="entry_type_hwlevel">[legacy] </span> |
| 4273 | |
| 4274 | |
| 4275 | <div class="entry_type_notes">list of enums</div> |
| 4276 | |
| 4277 | |
| 4278 | </td> <!-- entry_type --> |
| 4279 | |
| 4280 | <td class="entry_description"> |
| 4281 | <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 |
| 4282 | supported by this camera device.<wbr/></p> |
| 4283 | </td> |
| 4284 | |
| 4285 | <td class="entry_units"> |
| 4286 | </td> |
| 4287 | |
| 4288 | <td class="entry_range"> |
| 4289 | <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p> |
| 4290 | </td> |
| 4291 | |
| 4292 | <td class="entry_tags"> |
| 4293 | <ul class="entry_tags"> |
| 4294 | <li><a href="#tag_BC">BC</a></li> |
| 4295 | </ul> |
| 4296 | </td> |
| 4297 | |
| 4298 | </tr> |
| 4299 | <tr class="entries_header"> |
| 4300 | <th class="th_details" colspan="5">Details</th> |
| 4301 | </tr> |
| 4302 | <tr class="entry_cont"> |
| 4303 | <td class="entry_details" colspan="5"> |
| 4304 | <p>Not all of the auto-exposure anti-banding modes may be |
| 4305 | supported by a given camera device.<wbr/> This field lists the |
| 4306 | valid anti-banding modes that the application may request |
| 4307 | for this camera device with the |
| 4308 | <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p> |
| 4309 | </td> |
| 4310 | </tr> |
| 4311 | |
| 4312 | |
| 4313 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 4314 | <!-- end of entry --> |
| 4315 | |
| 4316 | |
| 4317 | <tr class="entry" id="static_android.control.aeAvailableModes"> |
| 4318 | <td class="entry_name |
| 4319 | " rowspan="3"> |
| 4320 | android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes |
| 4321 | </td> |
| 4322 | <td class="entry_type"> |
| 4323 | <span class="entry_type_name">byte</span> |
| 4324 | <span class="entry_type_container">x</span> |
| 4325 | |
| 4326 | <span class="entry_type_array"> |
| 4327 | n |
| 4328 | </span> |
| 4329 | <span class="entry_type_visibility"> [public as enumList]</span> |
| 4330 | |
| 4331 | |
| 4332 | <span class="entry_type_hwlevel">[legacy] </span> |
| 4333 | |
| 4334 | |
| 4335 | <div class="entry_type_notes">list of enums</div> |
| 4336 | |
| 4337 | |
| 4338 | </td> <!-- entry_type --> |
| 4339 | |
| 4340 | <td class="entry_description"> |
| 4341 | <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 |
| 4342 | device.<wbr/></p> |
| 4343 | </td> |
| 4344 | |
| 4345 | <td class="entry_units"> |
| 4346 | </td> |
| 4347 | |
| 4348 | <td class="entry_range"> |
| 4349 | <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p> |
| 4350 | </td> |
| 4351 | |
| 4352 | <td class="entry_tags"> |
| 4353 | <ul class="entry_tags"> |
| 4354 | <li><a href="#tag_BC">BC</a></li> |
| 4355 | </ul> |
| 4356 | </td> |
| 4357 | |
| 4358 | </tr> |
| 4359 | <tr class="entries_header"> |
| 4360 | <th class="th_details" colspan="5">Details</th> |
| 4361 | </tr> |
| 4362 | <tr class="entry_cont"> |
| 4363 | <td class="entry_details" colspan="5"> |
| 4364 | <p>Not all the auto-exposure modes may be supported by a |
| 4365 | given camera device,<wbr/> especially if no flash unit is |
| 4366 | available.<wbr/> This entry lists the valid modes for |
| 4367 | <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p> |
| 4368 | <p>All camera devices support ON,<wbr/> and all camera devices with flash |
| 4369 | units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p> |
| 4370 | <p>FULL mode camera devices always support OFF mode,<wbr/> |
| 4371 | which enables application control of camera exposure time,<wbr/> |
| 4372 | sensitivity,<wbr/> and frame duration.<wbr/></p> |
| 4373 | <p>LEGACY mode camera devices never support OFF mode.<wbr/> |
| 4374 | LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR |
| 4375 | capability.<wbr/></p> |
| 4376 | </td> |
| 4377 | </tr> |
| 4378 | |
| 4379 | |
| 4380 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 4381 | <!-- end of entry --> |
| 4382 | |
| 4383 | |
| 4384 | <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges"> |
| 4385 | <td class="entry_name |
| 4386 | " rowspan="3"> |
| 4387 | android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges |
| 4388 | </td> |
| 4389 | <td class="entry_type"> |
| 4390 | <span class="entry_type_name">int32</span> |
| 4391 | <span class="entry_type_container">x</span> |
| 4392 | |
| 4393 | <span class="entry_type_array"> |
| 4394 | 2 x n |
| 4395 | </span> |
| 4396 | <span class="entry_type_visibility"> [public as rangeInt]</span> |
| 4397 | |
| 4398 | |
| 4399 | <span class="entry_type_hwlevel">[legacy] </span> |
| 4400 | |
| 4401 | |
| 4402 | <div class="entry_type_notes">list of pairs of frame rates</div> |
| 4403 | |
| 4404 | |
| 4405 | </td> <!-- entry_type --> |
| 4406 | |
| 4407 | <td class="entry_description"> |
| 4408 | <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 |
| 4409 | this camera device.<wbr/></p> |
| 4410 | </td> |
| 4411 | |
| 4412 | <td class="entry_units"> |
| 4413 | Frames per second (FPS) |
| 4414 | </td> |
| 4415 | |
| 4416 | <td class="entry_range"> |
| 4417 | </td> |
| 4418 | |
| 4419 | <td class="entry_tags"> |
| 4420 | <ul class="entry_tags"> |
| 4421 | <li><a href="#tag_BC">BC</a></li> |
| 4422 | </ul> |
| 4423 | </td> |
| 4424 | |
| 4425 | </tr> |
| 4426 | <tr class="entries_header"> |
| 4427 | <th class="th_details" colspan="5">Details</th> |
| 4428 | </tr> |
| 4429 | <tr class="entry_cont"> |
| 4430 | <td class="entry_details" colspan="5"> |
| 4431 | <p>For devices at the LEGACY level or above:</p> |
| 4432 | <ul> |
| 4433 | <li> |
| 4434 | <p>For constant-framerate recording,<wbr/> for each normal |
| 4435 | <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> that is,<wbr/> a |
| 4436 | <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has |
| 4437 | <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in |
| 4438 | the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/> |
| 4439 | <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is |
| 4440 | supported by the device and has |
| 4441 | <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will |
| 4442 | always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></p> |
| 4443 | </li> |
| 4444 | <li> |
| 4445 | <p>Also,<wbr/> a camera device must either not support any |
| 4446 | <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> |
| 4447 | or support at least one |
| 4448 | normal <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has |
| 4449 | <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code> >= 24.<wbr/></p> |
| 4450 | </li> |
| 4451 | </ul> |
| 4452 | <p>For devices at the LIMITED level or above:</p> |
| 4453 | <ul> |
| 4454 | <li>For YUV_<wbr/>420_<wbr/>888 burst capture use case,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>) |
| 4455 | and (<code>max</code>,<wbr/> <code>max</code>) where <code>min</code> <= 15 and <code>max</code> = the maximum output frame rate of the |
| 4456 | maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li> |
| 4457 | </ul> |
| 4458 | </td> |
| 4459 | </tr> |
| 4460 | |
| 4461 | |
| 4462 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 4463 | <!-- end of entry --> |
| 4464 | |
| 4465 | |
| 4466 | <tr class="entry" id="static_android.control.aeCompensationRange"> |
| 4467 | <td class="entry_name |
| 4468 | " rowspan="1"> |
| 4469 | android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range |
| 4470 | </td> |
| 4471 | <td class="entry_type"> |
| 4472 | <span class="entry_type_name">int32</span> |
| 4473 | <span class="entry_type_container">x</span> |
| 4474 | |
| 4475 | <span class="entry_type_array"> |
| 4476 | 2 |
| 4477 | </span> |
| 4478 | <span class="entry_type_visibility"> [public as rangeInt]</span> |
| 4479 | |
| 4480 | |
| 4481 | <span class="entry_type_hwlevel">[legacy] </span> |
| 4482 | |
| 4483 | |
| 4484 | |
| 4485 | |
| 4486 | </td> <!-- entry_type --> |
| 4487 | |
| 4488 | <td class="entry_description"> |
| 4489 | <p>Maximum and minimum exposure compensation values for |
| 4490 | <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/> |
| 4491 | that are supported by this camera device.<wbr/></p> |
| 4492 | </td> |
| 4493 | |
| 4494 | <td class="entry_units"> |
| 4495 | </td> |
| 4496 | |
| 4497 | <td class="entry_range"> |
| 4498 | <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p> |
| 4499 | <p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure |
| 4500 | compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p> |
| 4501 | <p><code>Min.<wbr/>exposure compensation * <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> <= -2 EV</code></p> |
| 4502 | <p><code>Max.<wbr/>exposure compensation * <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> >= 2 EV</code></p> |
| 4503 | <p>LEGACY devices may support a smaller range than this.<wbr/></p> |
| 4504 | </td> |
| 4505 | |
| 4506 | <td class="entry_tags"> |
| 4507 | <ul class="entry_tags"> |
| 4508 | <li><a href="#tag_BC">BC</a></li> |
| 4509 | </ul> |
| 4510 | </td> |
| 4511 | |
| 4512 | </tr> |
| 4513 | |
| 4514 | |
| 4515 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 4516 | <!-- end of entry --> |
| 4517 | |
| 4518 | |
| 4519 | <tr class="entry" id="static_android.control.aeCompensationStep"> |
| 4520 | <td class="entry_name |
| 4521 | " rowspan="5"> |
| 4522 | android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step |
| 4523 | </td> |
| 4524 | <td class="entry_type"> |
| 4525 | <span class="entry_type_name">rational</span> |
| 4526 | |
| 4527 | <span class="entry_type_visibility"> [public]</span> |
| 4528 | |
| 4529 | |
| 4530 | <span class="entry_type_hwlevel">[legacy] </span> |
| 4531 | |
| 4532 | |
| 4533 | |
| 4534 | |
| 4535 | </td> <!-- entry_type --> |
| 4536 | |
| 4537 | <td class="entry_description"> |
| 4538 | <p>Smallest step by which the exposure compensation |
| 4539 | can be changed.<wbr/></p> |
| 4540 | </td> |
| 4541 | |
| 4542 | <td class="entry_units"> |
| 4543 | Exposure Value (EV) |
| 4544 | </td> |
| 4545 | |
| 4546 | <td class="entry_range"> |
| 4547 | </td> |
| 4548 | |
| 4549 | <td class="entry_tags"> |
| 4550 | <ul class="entry_tags"> |
| 4551 | <li><a href="#tag_BC">BC</a></li> |
| 4552 | </ul> |
| 4553 | </td> |
| 4554 | |
| 4555 | </tr> |
| 4556 | <tr class="entries_header"> |
| 4557 | <th class="th_details" colspan="5">Details</th> |
| 4558 | </tr> |
| 4559 | <tr class="entry_cont"> |
| 4560 | <td class="entry_details" colspan="5"> |
| 4561 | <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 |
| 4562 | 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 |
| 4563 | that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p> |
| 4564 | <p>One unit of EV compensation changes the brightness of the captured image by a factor |
| 4565 | of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p> |
| 4566 | </td> |
| 4567 | </tr> |
| 4568 | |
| 4569 | <tr class="entries_header"> |
| 4570 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 4571 | </tr> |
| 4572 | <tr class="entry_cont"> |
| 4573 | <td class="entry_details" colspan="5"> |
| 4574 | <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p> |
| 4575 | </td> |
| 4576 | </tr> |
| 4577 | |
| 4578 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 4579 | <!-- end of entry --> |
| 4580 | |
| 4581 | |
| 4582 | <tr class="entry" id="static_android.control.afAvailableModes"> |
| 4583 | <td class="entry_name |
| 4584 | " rowspan="3"> |
| 4585 | android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes |
| 4586 | </td> |
| 4587 | <td class="entry_type"> |
| 4588 | <span class="entry_type_name">byte</span> |
| 4589 | <span class="entry_type_container">x</span> |
| 4590 | |
| 4591 | <span class="entry_type_array"> |
| 4592 | n |
| 4593 | </span> |
| 4594 | <span class="entry_type_visibility"> [public as enumList]</span> |
| 4595 | |
| 4596 | |
| 4597 | <span class="entry_type_hwlevel">[legacy] </span> |
| 4598 | |
| 4599 | |
| 4600 | <div class="entry_type_notes">List of enums</div> |
| 4601 | |
| 4602 | |
| 4603 | </td> <!-- entry_type --> |
| 4604 | |
| 4605 | <td class="entry_description"> |
| 4606 | <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are |
| 4607 | supported by this camera device.<wbr/></p> |
| 4608 | </td> |
| 4609 | |
| 4610 | <td class="entry_units"> |
| 4611 | </td> |
| 4612 | |
| 4613 | <td class="entry_range"> |
| 4614 | <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p> |
| 4615 | </td> |
| 4616 | |
| 4617 | <td class="entry_tags"> |
| 4618 | <ul class="entry_tags"> |
| 4619 | <li><a href="#tag_BC">BC</a></li> |
| 4620 | </ul> |
| 4621 | </td> |
| 4622 | |
| 4623 | </tr> |
| 4624 | <tr class="entries_header"> |
| 4625 | <th class="th_details" colspan="5">Details</th> |
| 4626 | </tr> |
| 4627 | <tr class="entry_cont"> |
| 4628 | <td class="entry_details" colspan="5"> |
| 4629 | <p>Not all the auto-focus modes may be supported by a |
| 4630 | given camera device.<wbr/> This entry lists the valid modes for |
| 4631 | <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p> |
| 4632 | <p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all |
| 4633 | camera devices with adjustable focuser units |
| 4634 | (<code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> > 0</code>) will support AUTO mode.<wbr/></p> |
| 4635 | <p>LEGACY devices will support OFF mode only if they support |
| 4636 | focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to |
| 4637 | <code>0.<wbr/>0f</code>).<wbr/></p> |
| 4638 | </td> |
| 4639 | </tr> |
| 4640 | |
| 4641 | |
| 4642 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 4643 | <!-- end of entry --> |
| 4644 | |
| 4645 | |
| 4646 | <tr class="entry" id="static_android.control.availableEffects"> |
| 4647 | <td class="entry_name |
| 4648 | " rowspan="3"> |
| 4649 | android.<wbr/>control.<wbr/>available<wbr/>Effects |
| 4650 | </td> |
| 4651 | <td class="entry_type"> |
| 4652 | <span class="entry_type_name">byte</span> |
| 4653 | <span class="entry_type_container">x</span> |
| 4654 | |
| 4655 | <span class="entry_type_array"> |
| 4656 | n |
| 4657 | </span> |
| 4658 | <span class="entry_type_visibility"> [public as enumList]</span> |
| 4659 | |
| 4660 | |
| 4661 | <span class="entry_type_hwlevel">[legacy] </span> |
| 4662 | |
| 4663 | |
| 4664 | <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div> |
| 4665 | |
| 4666 | |
| 4667 | </td> <!-- entry_type --> |
| 4668 | |
| 4669 | <td class="entry_description"> |
| 4670 | <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 |
| 4671 | device.<wbr/></p> |
| 4672 | </td> |
| 4673 | |
| 4674 | <td class="entry_units"> |
| 4675 | </td> |
| 4676 | |
| 4677 | <td class="entry_range"> |
| 4678 | <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p> |
| 4679 | </td> |
| 4680 | |
| 4681 | <td class="entry_tags"> |
| 4682 | <ul class="entry_tags"> |
| 4683 | <li><a href="#tag_BC">BC</a></li> |
| 4684 | </ul> |
| 4685 | </td> |
| 4686 | |
| 4687 | </tr> |
| 4688 | <tr class="entries_header"> |
| 4689 | <th class="th_details" colspan="5">Details</th> |
| 4690 | </tr> |
| 4691 | <tr class="entry_cont"> |
| 4692 | <td class="entry_details" colspan="5"> |
| 4693 | <p>This list contains the color effect modes that can be applied to |
| 4694 | images produced by the camera device.<wbr/> |
| 4695 | Implementations are not expected to be consistent across all devices.<wbr/> |
| 4696 | If no color effect modes are available for a device,<wbr/> this will only list |
| 4697 | OFF.<wbr/></p> |
| 4698 | <p>A color effect will only be applied if |
| 4699 | <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/> OFF is always included in this list.<wbr/></p> |
| 4700 | <p>This control has no effect on the operation of other control routines such |
| 4701 | as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p> |
| 4702 | </td> |
| 4703 | </tr> |
| 4704 | |
| 4705 | |
| 4706 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 4707 | <!-- end of entry --> |
| 4708 | |
| 4709 | |
| 4710 | <tr class="entry" id="static_android.control.availableSceneModes"> |
| 4711 | <td class="entry_name |
| 4712 | " rowspan="3"> |
| 4713 | android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes |
| 4714 | </td> |
| 4715 | <td class="entry_type"> |
| 4716 | <span class="entry_type_name">byte</span> |
| 4717 | <span class="entry_type_container">x</span> |
| 4718 | |
| 4719 | <span class="entry_type_array"> |
| 4720 | n |
| 4721 | </span> |
| 4722 | <span class="entry_type_visibility"> [public as enumList]</span> |
| 4723 | |
| 4724 | |
| 4725 | <span class="entry_type_hwlevel">[legacy] </span> |
| 4726 | |
| 4727 | |
| 4728 | <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div> |
| 4729 | |
| 4730 | |
| 4731 | </td> <!-- entry_type --> |
| 4732 | |
| 4733 | <td class="entry_description"> |
| 4734 | <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 |
| 4735 | device.<wbr/></p> |
| 4736 | </td> |
| 4737 | |
| 4738 | <td class="entry_units"> |
| 4739 | </td> |
| 4740 | |
| 4741 | <td class="entry_range"> |
| 4742 | <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p> |
| 4743 | </td> |
| 4744 | |
| 4745 | <td class="entry_tags"> |
| 4746 | <ul class="entry_tags"> |
| 4747 | <li><a href="#tag_BC">BC</a></li> |
| 4748 | </ul> |
| 4749 | </td> |
| 4750 | |
| 4751 | </tr> |
| 4752 | <tr class="entries_header"> |
| 4753 | <th class="th_details" colspan="5">Details</th> |
| 4754 | </tr> |
| 4755 | <tr class="entry_cont"> |
| 4756 | <td class="entry_details" colspan="5"> |
| 4757 | <p>This list contains scene modes that can be set for the camera device.<wbr/> |
| 4758 | Only scene modes that have been fully implemented for the |
| 4759 | camera device may be included here.<wbr/> Implementations are not expected |
| 4760 | to be consistent across all devices.<wbr/></p> |
| 4761 | <p>If no scene modes are supported by the camera device,<wbr/> this |
| 4762 | will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p> |
| 4763 | <p>FACE_<wbr/>PRIORITY is always listed if face detection is |
| 4764 | 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> > |
| 4765 | 0</code>).<wbr/></p> |
| 4766 | </td> |
| 4767 | </tr> |
| 4768 | |
| 4769 | |
| 4770 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 4771 | <!-- end of entry --> |
| 4772 | |
| 4773 | |
| 4774 | <tr class="entry" id="static_android.control.availableVideoStabilizationModes"> |
| 4775 | <td class="entry_name |
| 4776 | " rowspan="3"> |
| 4777 | android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes |
| 4778 | </td> |
| 4779 | <td class="entry_type"> |
| 4780 | <span class="entry_type_name">byte</span> |
| 4781 | <span class="entry_type_container">x</span> |
| 4782 | |
| 4783 | <span class="entry_type_array"> |
| 4784 | n |
| 4785 | </span> |
| 4786 | <span class="entry_type_visibility"> [public as enumList]</span> |
| 4787 | |
| 4788 | |
| 4789 | <span class="entry_type_hwlevel">[legacy] </span> |
| 4790 | |
| 4791 | |
| 4792 | <div class="entry_type_notes">List of enums.<wbr/></div> |
| 4793 | |
| 4794 | |
| 4795 | </td> <!-- entry_type --> |
| 4796 | |
| 4797 | <td class="entry_description"> |
| 4798 | <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> |
| 4799 | that are supported by this camera device.<wbr/></p> |
| 4800 | </td> |
| 4801 | |
| 4802 | <td class="entry_units"> |
| 4803 | </td> |
| 4804 | |
| 4805 | <td class="entry_range"> |
| 4806 | <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p> |
| 4807 | </td> |
| 4808 | |
| 4809 | <td class="entry_tags"> |
| 4810 | <ul class="entry_tags"> |
| 4811 | <li><a href="#tag_BC">BC</a></li> |
| 4812 | </ul> |
| 4813 | </td> |
| 4814 | |
| 4815 | </tr> |
| 4816 | <tr class="entries_header"> |
| 4817 | <th class="th_details" colspan="5">Details</th> |
| 4818 | </tr> |
| 4819 | <tr class="entry_cont"> |
| 4820 | <td class="entry_details" colspan="5"> |
| 4821 | <p>OFF will always be listed.<wbr/></p> |
| 4822 | </td> |
| 4823 | </tr> |
| 4824 | |
| 4825 | |
| 4826 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 4827 | <!-- end of entry --> |
| 4828 | |
| 4829 | |
| 4830 | <tr class="entry" id="static_android.control.awbAvailableModes"> |
| 4831 | <td class="entry_name |
| 4832 | " rowspan="3"> |
| 4833 | android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes |
| 4834 | </td> |
| 4835 | <td class="entry_type"> |
| 4836 | <span class="entry_type_name">byte</span> |
| 4837 | <span class="entry_type_container">x</span> |
| 4838 | |
| 4839 | <span class="entry_type_array"> |
| 4840 | n |
| 4841 | </span> |
| 4842 | <span class="entry_type_visibility"> [public as enumList]</span> |
| 4843 | |
| 4844 | |
| 4845 | <span class="entry_type_hwlevel">[legacy] </span> |
| 4846 | |
| 4847 | |
| 4848 | <div class="entry_type_notes">List of enums</div> |
| 4849 | |
| 4850 | |
| 4851 | </td> <!-- entry_type --> |
| 4852 | |
| 4853 | <td class="entry_description"> |
| 4854 | <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 |
| 4855 | camera device.<wbr/></p> |
| 4856 | </td> |
| 4857 | |
| 4858 | <td class="entry_units"> |
| 4859 | </td> |
| 4860 | |
| 4861 | <td class="entry_range"> |
| 4862 | <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p> |
| 4863 | </td> |
| 4864 | |
| 4865 | <td class="entry_tags"> |
| 4866 | <ul class="entry_tags"> |
| 4867 | <li><a href="#tag_BC">BC</a></li> |
| 4868 | </ul> |
| 4869 | </td> |
| 4870 | |
| 4871 | </tr> |
| 4872 | <tr class="entries_header"> |
| 4873 | <th class="th_details" colspan="5">Details</th> |
| 4874 | </tr> |
| 4875 | <tr class="entry_cont"> |
| 4876 | <td class="entry_details" colspan="5"> |
| 4877 | <p>Not all the auto-white-balance modes may be supported by a |
| 4878 | given camera device.<wbr/> This entry lists the valid modes for |
| 4879 | <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p> |
| 4880 | <p>All camera devices will support ON mode.<wbr/></p> |
| 4881 | <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF |
| 4882 | mode,<wbr/> which enables application control of white balance,<wbr/> by using |
| 4883 | <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 |
| 4884 | mode camera devices.<wbr/></p> |
| 4885 | </td> |
| 4886 | </tr> |
| 4887 | |
| 4888 | |
| 4889 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 4890 | <!-- end of entry --> |
| 4891 | |
| 4892 | |
| 4893 | <tr class="entry" id="static_android.control.maxRegions"> |
| 4894 | <td class="entry_name |
| 4895 | " rowspan="1"> |
| 4896 | android.<wbr/>control.<wbr/>max<wbr/>Regions |
| 4897 | </td> |
| 4898 | <td class="entry_type"> |
| 4899 | <span class="entry_type_name">int32</span> |
| 4900 | <span class="entry_type_container">x</span> |
| 4901 | |
| 4902 | <span class="entry_type_array"> |
| 4903 | 3 |
| 4904 | </span> |
| 4905 | <span class="entry_type_visibility"> [ndk_public]</span> |
| 4906 | |
| 4907 | |
| 4908 | <span class="entry_type_hwlevel">[legacy] </span> |
| 4909 | |
| 4910 | |
| 4911 | |
| 4912 | |
| 4913 | </td> <!-- entry_type --> |
| 4914 | |
| 4915 | <td class="entry_description"> |
| 4916 | <p>List of the maximum number of regions that can be used for metering in |
| 4917 | auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF); |
| 4918 | this corresponds to the the maximum number of elements in |
| 4919 | <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/> |
| 4920 | and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p> |
| 4921 | </td> |
| 4922 | |
| 4923 | <td class="entry_units"> |
| 4924 | </td> |
| 4925 | |
| 4926 | <td class="entry_range"> |
| 4927 | <p>Value must be >= 0 for each element.<wbr/> For full-capability devices |
| 4928 | this value must be >= 1 for AE and AF.<wbr/> The order of the elements is: |
| 4929 | <code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p> |
| 4930 | </td> |
| 4931 | |
| 4932 | <td class="entry_tags"> |
| 4933 | <ul class="entry_tags"> |
| 4934 | <li><a href="#tag_BC">BC</a></li> |
| 4935 | </ul> |
| 4936 | </td> |
| 4937 | |
| 4938 | </tr> |
| 4939 | |
| 4940 | |
| 4941 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 4942 | <!-- end of entry --> |
| 4943 | |
| 4944 | |
| 4945 | <tr class="entry" id="static_android.control.maxRegionsAe"> |
| 4946 | <td class="entry_name |
| 4947 | " rowspan="5"> |
| 4948 | android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae |
| 4949 | </td> |
| 4950 | <td class="entry_type"> |
| 4951 | <span class="entry_type_name">int32</span> |
| 4952 | |
| 4953 | <span class="entry_type_visibility"> [java_public]</span> |
| 4954 | |
| 4955 | <span class="entry_type_synthetic">[synthetic] </span> |
| 4956 | |
| 4957 | <span class="entry_type_hwlevel">[legacy] </span> |
| 4958 | |
| 4959 | |
| 4960 | |
| 4961 | |
| 4962 | </td> <!-- entry_type --> |
| 4963 | |
| 4964 | <td class="entry_description"> |
| 4965 | <p>The maximum number of metering regions that can be used by the auto-exposure (AE) |
| 4966 | routine.<wbr/></p> |
| 4967 | </td> |
| 4968 | |
| 4969 | <td class="entry_units"> |
| 4970 | </td> |
| 4971 | |
| 4972 | <td class="entry_range"> |
| 4973 | <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this |
| 4974 | value will be >= 1.<wbr/></p> |
| 4975 | </td> |
| 4976 | |
| 4977 | <td class="entry_tags"> |
| 4978 | </td> |
| 4979 | |
| 4980 | </tr> |
| 4981 | <tr class="entries_header"> |
| 4982 | <th class="th_details" colspan="5">Details</th> |
| 4983 | </tr> |
| 4984 | <tr class="entry_cont"> |
| 4985 | <td class="entry_details" colspan="5"> |
| 4986 | <p>This corresponds to the the maximum allowed number of elements in |
| 4987 | <a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p> |
| 4988 | </td> |
| 4989 | </tr> |
| 4990 | |
| 4991 | <tr class="entries_header"> |
| 4992 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 4993 | </tr> |
| 4994 | <tr class="entry_cont"> |
| 4995 | <td class="entry_details" colspan="5"> |
| 4996 | <p>This entry is private to the framework.<wbr/> Fill in |
| 4997 | maxRegions to have this entry be automatically populated.<wbr/></p> |
| 4998 | </td> |
| 4999 | </tr> |
| 5000 | |
| 5001 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 5002 | <!-- end of entry --> |
| 5003 | |
| 5004 | |
| 5005 | <tr class="entry" id="static_android.control.maxRegionsAwb"> |
| 5006 | <td class="entry_name |
| 5007 | " rowspan="5"> |
| 5008 | android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb |
| 5009 | </td> |
| 5010 | <td class="entry_type"> |
| 5011 | <span class="entry_type_name">int32</span> |
| 5012 | |
| 5013 | <span class="entry_type_visibility"> [java_public]</span> |
| 5014 | |
| 5015 | <span class="entry_type_synthetic">[synthetic] </span> |
| 5016 | |
| 5017 | <span class="entry_type_hwlevel">[legacy] </span> |
| 5018 | |
| 5019 | |
| 5020 | |
| 5021 | |
| 5022 | </td> <!-- entry_type --> |
| 5023 | |
| 5024 | <td class="entry_description"> |
| 5025 | <p>The maximum number of metering regions that can be used by the auto-white balance (AWB) |
| 5026 | routine.<wbr/></p> |
| 5027 | </td> |
| 5028 | |
| 5029 | <td class="entry_units"> |
| 5030 | </td> |
| 5031 | |
| 5032 | <td class="entry_range"> |
| 5033 | <p>Value will be >= 0.<wbr/></p> |
| 5034 | </td> |
| 5035 | |
| 5036 | <td class="entry_tags"> |
| 5037 | </td> |
| 5038 | |
| 5039 | </tr> |
| 5040 | <tr class="entries_header"> |
| 5041 | <th class="th_details" colspan="5">Details</th> |
| 5042 | </tr> |
| 5043 | <tr class="entry_cont"> |
| 5044 | <td class="entry_details" colspan="5"> |
| 5045 | <p>This corresponds to the the maximum allowed number of elements in |
| 5046 | <a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p> |
| 5047 | </td> |
| 5048 | </tr> |
| 5049 | |
| 5050 | <tr class="entries_header"> |
| 5051 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 5052 | </tr> |
| 5053 | <tr class="entry_cont"> |
| 5054 | <td class="entry_details" colspan="5"> |
| 5055 | <p>This entry is private to the framework.<wbr/> Fill in |
| 5056 | maxRegions to have this entry be automatically populated.<wbr/></p> |
| 5057 | </td> |
| 5058 | </tr> |
| 5059 | |
| 5060 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 5061 | <!-- end of entry --> |
| 5062 | |
| 5063 | |
| 5064 | <tr class="entry" id="static_android.control.maxRegionsAf"> |
| 5065 | <td class="entry_name |
| 5066 | " rowspan="5"> |
| 5067 | android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af |
| 5068 | </td> |
| 5069 | <td class="entry_type"> |
| 5070 | <span class="entry_type_name">int32</span> |
| 5071 | |
| 5072 | <span class="entry_type_visibility"> [java_public]</span> |
| 5073 | |
| 5074 | <span class="entry_type_synthetic">[synthetic] </span> |
| 5075 | |
| 5076 | <span class="entry_type_hwlevel">[legacy] </span> |
| 5077 | |
| 5078 | |
| 5079 | |
| 5080 | |
| 5081 | </td> <!-- entry_type --> |
| 5082 | |
| 5083 | <td class="entry_description"> |
| 5084 | <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p> |
| 5085 | </td> |
| 5086 | |
| 5087 | <td class="entry_units"> |
| 5088 | </td> |
| 5089 | |
| 5090 | <td class="entry_range"> |
| 5091 | <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this |
| 5092 | value will be >= 1.<wbr/></p> |
| 5093 | </td> |
| 5094 | |
| 5095 | <td class="entry_tags"> |
| 5096 | </td> |
| 5097 | |
| 5098 | </tr> |
| 5099 | <tr class="entries_header"> |
| 5100 | <th class="th_details" colspan="5">Details</th> |
| 5101 | </tr> |
| 5102 | <tr class="entry_cont"> |
| 5103 | <td class="entry_details" colspan="5"> |
| 5104 | <p>This corresponds to the the maximum allowed number of elements in |
| 5105 | <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p> |
| 5106 | </td> |
| 5107 | </tr> |
| 5108 | |
| 5109 | <tr class="entries_header"> |
| 5110 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 5111 | </tr> |
| 5112 | <tr class="entry_cont"> |
| 5113 | <td class="entry_details" colspan="5"> |
| 5114 | <p>This entry is private to the framework.<wbr/> Fill in |
| 5115 | maxRegions to have this entry be automatically populated.<wbr/></p> |
| 5116 | </td> |
| 5117 | </tr> |
| 5118 | |
| 5119 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 5120 | <!-- end of entry --> |
| 5121 | |
| 5122 | |
| 5123 | <tr class="entry" id="static_android.control.sceneModeOverrides"> |
| 5124 | <td class="entry_name |
| 5125 | " rowspan="5"> |
| 5126 | android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides |
| 5127 | </td> |
| 5128 | <td class="entry_type"> |
| 5129 | <span class="entry_type_name">byte</span> |
| 5130 | <span class="entry_type_container">x</span> |
| 5131 | |
| 5132 | <span class="entry_type_array"> |
| 5133 | 3 x length(availableSceneModes) |
| 5134 | </span> |
| 5135 | <span class="entry_type_visibility"> [system]</span> |
| 5136 | |
| 5137 | |
| 5138 | <span class="entry_type_hwlevel">[limited] </span> |
| 5139 | |
| 5140 | |
| 5141 | |
| 5142 | |
| 5143 | </td> <!-- entry_type --> |
| 5144 | |
| 5145 | <td class="entry_description"> |
| 5146 | <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus |
| 5147 | settings to use with each available scene mode.<wbr/></p> |
| 5148 | </td> |
| 5149 | |
| 5150 | <td class="entry_units"> |
| 5151 | </td> |
| 5152 | |
| 5153 | <td class="entry_range"> |
| 5154 | <p>For each available scene mode,<wbr/> the list must contain three |
| 5155 | entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> |
| 5156 | <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 |
| 5157 | by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code> |
| 5158 | where aeMode has the lowest index position.<wbr/></p> |
| 5159 | </td> |
| 5160 | |
| 5161 | <td class="entry_tags"> |
| 5162 | <ul class="entry_tags"> |
| 5163 | <li><a href="#tag_BC">BC</a></li> |
| 5164 | </ul> |
| 5165 | </td> |
| 5166 | |
| 5167 | </tr> |
| 5168 | <tr class="entries_header"> |
| 5169 | <th class="th_details" colspan="5">Details</th> |
| 5170 | </tr> |
| 5171 | <tr class="entry_cont"> |
| 5172 | <td class="entry_details" colspan="5"> |
| 5173 | <p>When a scene mode is enabled,<wbr/> the camera device is expected |
| 5174 | 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/> |
| 5175 | and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for |
| 5176 | that scene mode.<wbr/></p> |
| 5177 | <p>The order of this list matches that of availableSceneModes,<wbr/> |
| 5178 | with 3 entries for each mode.<wbr/> The overrides listed |
| 5179 | for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/> |
| 5180 | since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> |
| 5181 | <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 |
| 5182 | used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> |
| 5183 | is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and |
| 5184 | FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p> |
| 5185 | <p>For example,<wbr/> if availableSceneModes contains |
| 5186 | <code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/> then the camera framework |
| 5187 | expects sceneModeOverrides to have 9 entries formatted like: |
| 5188 | <code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/> |
| 5189 | ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p> |
| 5190 | </td> |
| 5191 | </tr> |
| 5192 | |
| 5193 | <tr class="entries_header"> |
| 5194 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 5195 | </tr> |
| 5196 | <tr class="entry_cont"> |
| 5197 | <td class="entry_details" colspan="5"> |
| 5198 | <p>To maintain backward compatibility,<wbr/> this list will be made available |
| 5199 | in the static metadata of the camera service.<wbr/> The camera service will |
| 5200 | use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> |
| 5201 | <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 |
| 5202 | mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p> |
| 5203 | </td> |
| 5204 | </tr> |
| 5205 | |
| 5206 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 5207 | <!-- end of entry --> |
| 5208 | |
| 5209 | |
| 5210 | <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations"> |
| 5211 | <td class="entry_name |
| 5212 | " rowspan="5"> |
| 5213 | android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations |
| 5214 | </td> |
| 5215 | <td class="entry_type"> |
| 5216 | <span class="entry_type_name">int32</span> |
| 5217 | <span class="entry_type_container">x</span> |
| 5218 | |
| 5219 | <span class="entry_type_array"> |
| 5220 | 5 x n |
| 5221 | </span> |
| 5222 | <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span> |
| 5223 | |
| 5224 | |
| 5225 | <span class="entry_type_hwlevel">[limited] </span> |
| 5226 | |
| 5227 | |
| 5228 | |
| 5229 | |
| 5230 | </td> <!-- entry_type --> |
| 5231 | |
| 5232 | <td class="entry_description"> |
| 5233 | <p>List of available high speed video size,<wbr/> fps range and max batch size configurations |
| 5234 | 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> |
| 5235 | </td> |
| 5236 | |
| 5237 | <td class="entry_units"> |
| 5238 | </td> |
| 5239 | |
| 5240 | <td class="entry_range"> |
| 5241 | <p>For each configuration,<wbr/> the fps_<wbr/>max >= 120fps.<wbr/></p> |
| 5242 | </td> |
| 5243 | |
| 5244 | <td class="entry_tags"> |
| 5245 | <ul class="entry_tags"> |
| 5246 | <li><a href="#tag_V1">V1</a></li> |
| 5247 | </ul> |
| 5248 | </td> |
| 5249 | |
| 5250 | </tr> |
| 5251 | <tr class="entries_header"> |
| 5252 | <th class="th_details" colspan="5">Details</th> |
| 5253 | </tr> |
| 5254 | <tr class="entry_cont"> |
| 5255 | <td class="entry_details" colspan="5"> |
| 5256 | <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/> |
| 5257 | this metadata will list the supported high speed video size,<wbr/> fps range and max batch size |
| 5258 | configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes |
| 5259 | reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> |
| 5260 | for processed non-stalling formats.<wbr/></p> |
| 5261 | <p>For the high speed video use case,<wbr/> the application must |
| 5262 | select the video size and fps range from this metadata to configure the recording and |
| 5263 | preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends |
| 5264 | to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to |
| 5265 | configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata |
| 5266 | by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the |
| 5267 | recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application |
| 5268 | must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams |
| 5269 | must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p> |
| 5270 | <p>The min and max fps will be multiple times of 30fps.<wbr/></p> |
| 5271 | <p>High speed video streaming extends significant performance pressue to camera hardware,<wbr/> |
| 5272 | to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate |
| 5273 | multiple frames together and send to camera device for processing where the request |
| 5274 | controls are same for all the frames in this batch.<wbr/> Max batch size indicates |
| 5275 | the max possible number of frames the camera device will group together for this high |
| 5276 | speed stream configuration.<wbr/> This max batch size will be used to generate a high speed |
| 5277 | recording request list by |
| 5278 | <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/> |
| 5279 | The max batch size for each configuration will satisfy below conditions:</p> |
| 5280 | <ul> |
| 5281 | <li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/> |
| 5282 | if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li> |
| 5283 | <li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but |
| 5284 | the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch |
| 5285 | 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> |
| 5286 | <li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li> |
| 5287 | </ul> |
| 5288 | <p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/> |
| 5289 | in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p> |
| 5290 | <p>This fps ranges in this configuration list can only be used to create requests |
| 5291 | that are submitted to a high speed camera capture session created by |
| 5292 | <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> |
| 5293 | The fps ranges reported in this metadata must not be used to setup capture requests for |
| 5294 | normal capture session,<wbr/> or it will cause request error.<wbr/></p> |
| 5295 | </td> |
| 5296 | </tr> |
| 5297 | |
| 5298 | <tr class="entries_header"> |
| 5299 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 5300 | </tr> |
| 5301 | <tr class="entry_cont"> |
| 5302 | <td class="entry_details" colspan="5"> |
| 5303 | <p>All the sizes listed in this configuration will be a subset of the sizes reported by |
| 5304 | <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/> |
| 5305 | Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum |
| 5306 | of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p> |
| 5307 | <p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps |
| 5308 | sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application |
| 5309 | usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused |
| 5310 | stutter when starting recording as much as possible,<wbr/> the application may want to ensure |
| 5311 | the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise |
| 5312 | the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/> |
| 5313 | For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise |
| 5314 | [30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to |
| 5315 | do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start |
| 5316 | recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps |
| 5317 | values that are suitable for smooth preview streaming.<wbr/> If the HAL sees different max_<wbr/>fps |
| 5318 | values that fall into different sensor modes in a sequence of requests,<wbr/> the HAL must |
| 5319 | switch the sensor mode as quick as possible to minimize the mode switch caused stutter.<wbr/></p> |
| 5320 | </td> |
| 5321 | </tr> |
| 5322 | |
| 5323 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 5324 | <!-- end of entry --> |
| 5325 | |
| 5326 | |
| 5327 | <tr class="entry" id="static_android.control.aeLockAvailable"> |
| 5328 | <td class="entry_name |
| 5329 | " rowspan="3"> |
| 5330 | android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available |
| 5331 | </td> |
| 5332 | <td class="entry_type"> |
| 5333 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 5334 | |
| 5335 | <span class="entry_type_visibility"> [public as boolean]</span> |
| 5336 | |
| 5337 | |
| 5338 | <span class="entry_type_hwlevel">[legacy] </span> |
| 5339 | |
| 5340 | |
| 5341 | |
| 5342 | <ul class="entry_type_enum"> |
| 5343 | <li> |
| 5344 | <span class="entry_type_enum_name">FALSE</span> |
| 5345 | </li> |
| 5346 | <li> |
| 5347 | <span class="entry_type_enum_name">TRUE</span> |
| 5348 | </li> |
| 5349 | </ul> |
| 5350 | |
| 5351 | </td> <!-- entry_type --> |
| 5352 | |
| 5353 | <td class="entry_description"> |
| 5354 | <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p> |
| 5355 | </td> |
| 5356 | |
| 5357 | <td class="entry_units"> |
| 5358 | </td> |
| 5359 | |
| 5360 | <td class="entry_range"> |
| 5361 | </td> |
| 5362 | |
| 5363 | <td class="entry_tags"> |
| 5364 | <ul class="entry_tags"> |
| 5365 | <li><a href="#tag_BC">BC</a></li> |
| 5366 | </ul> |
| 5367 | </td> |
| 5368 | |
| 5369 | </tr> |
| 5370 | <tr class="entries_header"> |
| 5371 | <th class="th_details" colspan="5">Details</th> |
| 5372 | </tr> |
| 5373 | <tr class="entry_cont"> |
| 5374 | <td class="entry_details" colspan="5"> |
| 5375 | <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always |
| 5376 | list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p> |
| 5377 | </td> |
| 5378 | </tr> |
| 5379 | |
| 5380 | |
| 5381 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 5382 | <!-- end of entry --> |
| 5383 | |
| 5384 | |
| 5385 | <tr class="entry" id="static_android.control.awbLockAvailable"> |
| 5386 | <td class="entry_name |
| 5387 | " rowspan="3"> |
| 5388 | android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available |
| 5389 | </td> |
| 5390 | <td class="entry_type"> |
| 5391 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 5392 | |
| 5393 | <span class="entry_type_visibility"> [public as boolean]</span> |
| 5394 | |
| 5395 | |
| 5396 | <span class="entry_type_hwlevel">[legacy] </span> |
| 5397 | |
| 5398 | |
| 5399 | |
| 5400 | <ul class="entry_type_enum"> |
| 5401 | <li> |
| 5402 | <span class="entry_type_enum_name">FALSE</span> |
| 5403 | </li> |
| 5404 | <li> |
| 5405 | <span class="entry_type_enum_name">TRUE</span> |
| 5406 | </li> |
| 5407 | </ul> |
| 5408 | |
| 5409 | </td> <!-- entry_type --> |
| 5410 | |
| 5411 | <td class="entry_description"> |
| 5412 | <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p> |
| 5413 | </td> |
| 5414 | |
| 5415 | <td class="entry_units"> |
| 5416 | </td> |
| 5417 | |
| 5418 | <td class="entry_range"> |
| 5419 | </td> |
| 5420 | |
| 5421 | <td class="entry_tags"> |
| 5422 | <ul class="entry_tags"> |
| 5423 | <li><a href="#tag_BC">BC</a></li> |
| 5424 | </ul> |
| 5425 | </td> |
| 5426 | |
| 5427 | </tr> |
| 5428 | <tr class="entries_header"> |
| 5429 | <th class="th_details" colspan="5">Details</th> |
| 5430 | </tr> |
| 5431 | <tr class="entry_cont"> |
| 5432 | <td class="entry_details" colspan="5"> |
| 5433 | <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will |
| 5434 | always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p> |
| 5435 | </td> |
| 5436 | </tr> |
| 5437 | |
| 5438 | |
| 5439 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 5440 | <!-- end of entry --> |
| 5441 | |
| 5442 | |
| 5443 | <tr class="entry" id="static_android.control.availableModes"> |
| 5444 | <td class="entry_name |
| 5445 | " rowspan="3"> |
| 5446 | android.<wbr/>control.<wbr/>available<wbr/>Modes |
| 5447 | </td> |
| 5448 | <td class="entry_type"> |
| 5449 | <span class="entry_type_name">byte</span> |
| 5450 | <span class="entry_type_container">x</span> |
| 5451 | |
| 5452 | <span class="entry_type_array"> |
| 5453 | n |
| 5454 | </span> |
| 5455 | <span class="entry_type_visibility"> [public as enumList]</span> |
| 5456 | |
| 5457 | |
| 5458 | <span class="entry_type_hwlevel">[legacy] </span> |
| 5459 | |
| 5460 | |
| 5461 | <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div> |
| 5462 | |
| 5463 | |
| 5464 | </td> <!-- entry_type --> |
| 5465 | |
| 5466 | <td class="entry_description"> |
| 5467 | <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera |
| 5468 | device.<wbr/></p> |
| 5469 | </td> |
| 5470 | |
| 5471 | <td class="entry_units"> |
| 5472 | </td> |
| 5473 | |
| 5474 | <td class="entry_range"> |
| 5475 | <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p> |
| 5476 | </td> |
| 5477 | |
| 5478 | <td class="entry_tags"> |
| 5479 | </td> |
| 5480 | |
| 5481 | </tr> |
| 5482 | <tr class="entries_header"> |
| 5483 | <th class="th_details" colspan="5">Details</th> |
| 5484 | </tr> |
| 5485 | <tr class="entry_cont"> |
| 5486 | <td class="entry_details" colspan="5"> |
| 5487 | <p>This list contains control modes that can be set for the camera device.<wbr/> |
| 5488 | LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL |
| 5489 | devices will always support OFF,<wbr/> AUTO modes.<wbr/></p> |
| 5490 | </td> |
| 5491 | </tr> |
| 5492 | |
| 5493 | |
| 5494 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 5495 | <!-- end of entry --> |
| 5496 | |
| 5497 | |
| 5498 | <tr class="entry" id="static_android.control.postRawSensitivityBoostRange"> |
| 5499 | <td class="entry_name |
| 5500 | " rowspan="5"> |
| 5501 | android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range |
| 5502 | </td> |
| 5503 | <td class="entry_type"> |
| 5504 | <span class="entry_type_name">int32</span> |
| 5505 | <span class="entry_type_container">x</span> |
| 5506 | |
| 5507 | <span class="entry_type_array"> |
| 5508 | 2 |
| 5509 | </span> |
| 5510 | <span class="entry_type_visibility"> [public as rangeInt]</span> |
| 5511 | |
| 5512 | |
| 5513 | |
| 5514 | |
| 5515 | <div class="entry_type_notes">Range of supported post RAW sensitivitiy boosts</div> |
| 5516 | |
| 5517 | |
| 5518 | </td> <!-- entry_type --> |
| 5519 | |
| 5520 | <td class="entry_description"> |
| 5521 | <p>Range of boosts for <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> supported |
| 5522 | by this camera device.<wbr/></p> |
| 5523 | </td> |
| 5524 | |
| 5525 | <td class="entry_units"> |
| 5526 | ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity |
| 5527 | </td> |
| 5528 | |
| 5529 | <td class="entry_range"> |
| 5530 | </td> |
| 5531 | |
| 5532 | <td class="entry_tags"> |
| 5533 | </td> |
| 5534 | |
| 5535 | </tr> |
| 5536 | <tr class="entries_header"> |
| 5537 | <th class="th_details" colspan="5">Details</th> |
| 5538 | </tr> |
| 5539 | <tr class="entry_cont"> |
| 5540 | <td class="entry_details" colspan="5"> |
| 5541 | <p>Devices support post RAW sensitivity boost will advertise |
| 5542 | <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> key for controling |
| 5543 | post RAW sensitivity boost.<wbr/></p> |
| 5544 | <p>This key will be <code>null</code> for devices that do not support any RAW format |
| 5545 | outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always |
| 5546 | present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will |
| 5547 | list <code>(100,<wbr/> 100)</code> in this key.<wbr/></p> |
| 5548 | </td> |
| 5549 | </tr> |
| 5550 | |
| 5551 | <tr class="entries_header"> |
| 5552 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 5553 | </tr> |
| 5554 | <tr class="entry_cont"> |
| 5555 | <td class="entry_details" colspan="5"> |
| 5556 | <p>This key is added in HAL3.<wbr/>4.<wbr/> For HAL3.<wbr/>3 or earlier devices,<wbr/> camera framework will |
| 5557 | generate this key as <code>(100,<wbr/> 100)</code> if device supports any of RAW output formats.<wbr/> |
| 5558 | All HAL3.<wbr/>4 and above devices should list this key if device supports any of RAW |
| 5559 | output formats.<wbr/></p> |
| 5560 | </td> |
| 5561 | </tr> |
| 5562 | |
| 5563 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 5564 | <!-- end of entry --> |
| 5565 | |
| 5566 | |
| 5567 | |
| 5568 | <!-- end of kind --> |
| 5569 | </tbody> |
| 5570 | <tr><td colspan="6" class="kind">dynamic</td></tr> |
| 5571 | |
| 5572 | <thead class="entries_header"> |
| 5573 | <tr> |
| 5574 | <th class="th_name">Property Name</th> |
| 5575 | <th class="th_type">Type</th> |
| 5576 | <th class="th_description">Description</th> |
| 5577 | <th class="th_units">Units</th> |
| 5578 | <th class="th_range">Range</th> |
| 5579 | <th class="th_tags">Tags</th> |
| 5580 | </tr> |
| 5581 | </thead> |
| 5582 | |
| 5583 | <tbody> |
| 5584 | |
| 5585 | |
| 5586 | |
| 5587 | |
| 5588 | |
| 5589 | |
| 5590 | |
| 5591 | |
| 5592 | |
| 5593 | |
| 5594 | <tr class="entry" id="dynamic_android.control.aePrecaptureId"> |
| 5595 | <td class="entry_name |
| 5596 | entry_name_deprecated |
| 5597 | " rowspan="3"> |
| 5598 | android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id |
| 5599 | </td> |
| 5600 | <td class="entry_type"> |
| 5601 | <span class="entry_type_name">int32</span> |
| 5602 | |
| 5603 | <span class="entry_type_visibility"> [system]</span> |
| 5604 | |
| 5605 | |
| 5606 | |
| 5607 | <span class="entry_type_deprecated">[deprecated] </span> |
| 5608 | |
| 5609 | |
| 5610 | |
| 5611 | </td> <!-- entry_type --> |
| 5612 | |
| 5613 | <td class="entry_description"> |
| 5614 | <p>The ID sent with the latest |
| 5615 | CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p> |
| 5616 | </td> |
| 5617 | |
| 5618 | <td class="entry_units"> |
| 5619 | </td> |
| 5620 | |
| 5621 | <td class="entry_range"> |
| 5622 | <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> |
| 5623 | </td> |
| 5624 | |
| 5625 | <td class="entry_tags"> |
| 5626 | </td> |
| 5627 | |
| 5628 | </tr> |
| 5629 | <tr class="entries_header"> |
| 5630 | <th class="th_details" colspan="5">Details</th> |
| 5631 | </tr> |
| 5632 | <tr class="entry_cont"> |
| 5633 | <td class="entry_details" colspan="5"> |
| 5634 | <p>Must be 0 if no |
| 5635 | CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet |
| 5636 | by HAL.<wbr/> Always updated even if AE algorithm ignores the |
| 5637 | trigger</p> |
| 5638 | </td> |
| 5639 | </tr> |
| 5640 | |
| 5641 | |
| 5642 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 5643 | <!-- end of entry --> |
| 5644 | |
| 5645 | |
| 5646 | <tr class="entry" id="dynamic_android.control.aeAntibandingMode"> |
| 5647 | <td class="entry_name |
| 5648 | " rowspan="5"> |
| 5649 | android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode |
| 5650 | </td> |
| 5651 | <td class="entry_type"> |
| 5652 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 5653 | |
| 5654 | <span class="entry_type_visibility"> [public]</span> |
| 5655 | |
| 5656 | |
| 5657 | <span class="entry_type_hwlevel">[legacy] </span> |
| 5658 | |
| 5659 | |
| 5660 | |
| 5661 | <ul class="entry_type_enum"> |
| 5662 | <li> |
| 5663 | <span class="entry_type_enum_name">OFF</span> |
| 5664 | <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to |
| 5665 | avoid banding problems.<wbr/></p></span> |
| 5666 | </li> |
| 5667 | <li> |
| 5668 | <span class="entry_type_enum_name">50HZ</span> |
| 5669 | <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to |
| 5670 | avoid banding problems with 50Hz illumination sources.<wbr/></p></span> |
| 5671 | </li> |
| 5672 | <li> |
| 5673 | <span class="entry_type_enum_name">60HZ</span> |
| 5674 | <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to |
| 5675 | avoid banding problems with 60Hz illumination |
| 5676 | sources.<wbr/></p></span> |
| 5677 | </li> |
| 5678 | <li> |
| 5679 | <span class="entry_type_enum_name">AUTO</span> |
| 5680 | <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its |
| 5681 | antibanding routine to the current illumination |
| 5682 | condition.<wbr/> This is the default mode if AUTO is |
| 5683 | available on given camera device.<wbr/></p></span> |
| 5684 | </li> |
| 5685 | </ul> |
| 5686 | |
| 5687 | </td> <!-- entry_type --> |
| 5688 | |
| 5689 | <td class="entry_description"> |
| 5690 | <p>The desired setting for the camera device's auto-exposure |
| 5691 | algorithm's antibanding compensation.<wbr/></p> |
| 5692 | </td> |
| 5693 | |
| 5694 | <td class="entry_units"> |
| 5695 | </td> |
| 5696 | |
| 5697 | <td class="entry_range"> |
| 5698 | <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p> |
| 5699 | </td> |
| 5700 | |
| 5701 | <td class="entry_tags"> |
| 5702 | <ul class="entry_tags"> |
| 5703 | <li><a href="#tag_BC">BC</a></li> |
| 5704 | </ul> |
| 5705 | </td> |
| 5706 | |
| 5707 | </tr> |
| 5708 | <tr class="entries_header"> |
| 5709 | <th class="th_details" colspan="5">Details</th> |
| 5710 | </tr> |
| 5711 | <tr class="entry_cont"> |
| 5712 | <td class="entry_details" colspan="5"> |
| 5713 | <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent |
| 5714 | lights,<wbr/> flicker at the rate of the power supply frequency |
| 5715 | (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is |
| 5716 | typically not noticeable to a person,<wbr/> it can be visible to |
| 5717 | a camera device.<wbr/> If a camera sets its exposure time to the |
| 5718 | wrong value,<wbr/> the flicker may become visible in the |
| 5719 | viewfinder as flicker or in a final captured image,<wbr/> as a |
| 5720 | set of variable-brightness bands across the image.<wbr/></p> |
| 5721 | <p>Therefore,<wbr/> the auto-exposure routines of camera devices |
| 5722 | include antibanding routines that ensure that the chosen |
| 5723 | exposure value will not cause such banding.<wbr/> The choice of |
| 5724 | exposure time depends on the rate of flicker,<wbr/> which the |
| 5725 | camera device can detect automatically,<wbr/> or the expected |
| 5726 | rate can be selected by the application using this |
| 5727 | control.<wbr/></p> |
| 5728 | <p>A given camera device may not support all of the possible |
| 5729 | options for the antibanding mode.<wbr/> The |
| 5730 | <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains |
| 5731 | the available modes for a given camera device.<wbr/></p> |
| 5732 | <p>AUTO mode is the default if it is available on given |
| 5733 | camera device.<wbr/> When AUTO mode is not available,<wbr/> the |
| 5734 | default will be either 50HZ or 60HZ,<wbr/> and both 50HZ |
| 5735 | and 60HZ will be available.<wbr/></p> |
| 5736 | <p>If manual exposure control is enabled (by setting |
| 5737 | <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/> |
| 5738 | then this setting has no effect,<wbr/> and the application must |
| 5739 | ensure it selects exposure times that do not cause banding |
| 5740 | issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist |
| 5741 | the application in this.<wbr/></p> |
| 5742 | </td> |
| 5743 | </tr> |
| 5744 | |
| 5745 | <tr class="entries_header"> |
| 5746 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 5747 | </tr> |
| 5748 | <tr class="entry_cont"> |
| 5749 | <td class="entry_details" colspan="5"> |
| 5750 | <p>For all capture request templates,<wbr/> this field must be set |
| 5751 | to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/> |
| 5752 | the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and |
| 5753 | 60HZ must be available.<wbr/></p> |
| 5754 | <p>If manual exposure control is enabled (by setting |
| 5755 | <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/> |
| 5756 | then the exposure values provided by the application must not be |
| 5757 | adjusted for antibanding.<wbr/></p> |
| 5758 | </td> |
| 5759 | </tr> |
| 5760 | |
| 5761 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 5762 | <!-- end of entry --> |
| 5763 | |
| 5764 | |
| 5765 | <tr class="entry" id="dynamic_android.control.aeExposureCompensation"> |
| 5766 | <td class="entry_name |
| 5767 | " rowspan="3"> |
| 5768 | android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation |
| 5769 | </td> |
| 5770 | <td class="entry_type"> |
| 5771 | <span class="entry_type_name">int32</span> |
| 5772 | |
| 5773 | <span class="entry_type_visibility"> [public]</span> |
| 5774 | |
| 5775 | |
| 5776 | <span class="entry_type_hwlevel">[legacy] </span> |
| 5777 | |
| 5778 | |
| 5779 | |
| 5780 | |
| 5781 | </td> <!-- entry_type --> |
| 5782 | |
| 5783 | <td class="entry_description"> |
| 5784 | <p>Adjustment to auto-exposure (AE) target image |
| 5785 | brightness.<wbr/></p> |
| 5786 | </td> |
| 5787 | |
| 5788 | <td class="entry_units"> |
| 5789 | Compensation steps |
| 5790 | </td> |
| 5791 | |
| 5792 | <td class="entry_range"> |
| 5793 | <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p> |
| 5794 | </td> |
| 5795 | |
| 5796 | <td class="entry_tags"> |
| 5797 | <ul class="entry_tags"> |
| 5798 | <li><a href="#tag_BC">BC</a></li> |
| 5799 | </ul> |
| 5800 | </td> |
| 5801 | |
| 5802 | </tr> |
| 5803 | <tr class="entries_header"> |
| 5804 | <th class="th_details" colspan="5">Details</th> |
| 5805 | </tr> |
| 5806 | <tr class="entry_cont"> |
| 5807 | <td class="entry_details" colspan="5"> |
| 5808 | <p>The adjustment is measured as a count of steps,<wbr/> with the |
| 5809 | step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the |
| 5810 | allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p> |
| 5811 | <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6' |
| 5812 | will mean an exposure compensation of +2 EV; -3 will mean an |
| 5813 | exposure compensation of -1 EV.<wbr/> One EV represents a doubling |
| 5814 | of image brightness.<wbr/> Note that this control will only be |
| 5815 | effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control |
| 5816 | will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p> |
| 5817 | <p>In the event of exposure compensation value being changed,<wbr/> camera device |
| 5818 | may take several frames to reach the newly requested exposure target.<wbr/> |
| 5819 | During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING |
| 5820 | 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 |
| 5821 | change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or |
| 5822 | FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p> |
| 5823 | </td> |
| 5824 | </tr> |
| 5825 | |
| 5826 | |
| 5827 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 5828 | <!-- end of entry --> |
| 5829 | |
| 5830 | |
| 5831 | <tr class="entry" id="dynamic_android.control.aeLock"> |
| 5832 | <td class="entry_name |
| 5833 | " rowspan="3"> |
| 5834 | android.<wbr/>control.<wbr/>ae<wbr/>Lock |
| 5835 | </td> |
| 5836 | <td class="entry_type"> |
| 5837 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 5838 | |
| 5839 | <span class="entry_type_visibility"> [public as boolean]</span> |
| 5840 | |
| 5841 | |
| 5842 | <span class="entry_type_hwlevel">[legacy] </span> |
| 5843 | |
| 5844 | |
| 5845 | |
| 5846 | <ul class="entry_type_enum"> |
| 5847 | <li> |
| 5848 | <span class="entry_type_enum_name">OFF</span> |
| 5849 | <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm |
| 5850 | is free to update its parameters.<wbr/></p></span> |
| 5851 | </li> |
| 5852 | <li> |
| 5853 | <span class="entry_type_enum_name">ON</span> |
| 5854 | <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm |
| 5855 | must not update the exposure and sensitivity parameters |
| 5856 | while the lock is active.<wbr/></p> |
| 5857 | <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes |
| 5858 | will still take effect while auto-exposure is locked.<wbr/></p> |
| 5859 | <p>Some rare LEGACY devices may not support |
| 5860 | this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span> |
| 5861 | </li> |
| 5862 | </ul> |
| 5863 | |
| 5864 | </td> <!-- entry_type --> |
| 5865 | |
| 5866 | <td class="entry_description"> |
| 5867 | <p>Whether auto-exposure (AE) is currently locked to its latest |
| 5868 | calculated values.<wbr/></p> |
| 5869 | </td> |
| 5870 | |
| 5871 | <td class="entry_units"> |
| 5872 | </td> |
| 5873 | |
| 5874 | <td class="entry_range"> |
| 5875 | </td> |
| 5876 | |
| 5877 | <td class="entry_tags"> |
| 5878 | <ul class="entry_tags"> |
| 5879 | <li><a href="#tag_BC">BC</a></li> |
| 5880 | </ul> |
| 5881 | </td> |
| 5882 | |
| 5883 | </tr> |
| 5884 | <tr class="entries_header"> |
| 5885 | <th class="th_details" colspan="5">Details</th> |
| 5886 | </tr> |
| 5887 | <tr class="entry_cont"> |
| 5888 | <td class="entry_details" colspan="5"> |
| 5889 | <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/> |
| 5890 | and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p> |
| 5891 | <p>Note that even when AE is locked,<wbr/> the flash may be fired if |
| 5892 | the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/> |
| 5893 | ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p> |
| 5894 | <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 |
| 5895 | is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p> |
| 5896 | <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) |
| 5897 | when AE is already locked,<wbr/> the camera device will not change the exposure time |
| 5898 | (<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>) |
| 5899 | parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> |
| 5900 | is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the |
| 5901 | <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/> |
| 5902 | Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p> |
| 5903 | <p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock |
| 5904 | the AE if AE is locked by the camera device internally during precapture metering |
| 5905 | sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an |
| 5906 | ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence |
| 5907 | will never succeed in a sequence of preview requests where AE lock is always set |
| 5908 | to <code>false</code>.<wbr/></p> |
| 5909 | <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that |
| 5910 | get locked do not necessarily correspond to the settings that were present in the |
| 5911 | latest capture result received from the camera device,<wbr/> since additional captures |
| 5912 | and AE updates may have occurred even before the result was sent out.<wbr/> If an |
| 5913 | application is switching between automatic and manual control and wishes to eliminate |
| 5914 | any flicker during the switch,<wbr/> the following procedure is recommended:</p> |
| 5915 | <ol> |
| 5916 | <li>Starting in auto-AE mode:</li> |
| 5917 | <li>Lock AE</li> |
| 5918 | <li>Wait for the first result to be output that has the AE locked</li> |
| 5919 | <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li> |
| 5920 | <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li> |
| 5921 | </ol> |
| 5922 | <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> |
| 5923 | </td> |
| 5924 | </tr> |
| 5925 | |
| 5926 | |
| 5927 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 5928 | <!-- end of entry --> |
| 5929 | |
| 5930 | |
| 5931 | <tr class="entry" id="dynamic_android.control.aeMode"> |
| 5932 | <td class="entry_name |
| 5933 | " rowspan="3"> |
| 5934 | android.<wbr/>control.<wbr/>ae<wbr/>Mode |
| 5935 | </td> |
| 5936 | <td class="entry_type"> |
| 5937 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 5938 | |
| 5939 | <span class="entry_type_visibility"> [public]</span> |
| 5940 | |
| 5941 | |
| 5942 | <span class="entry_type_hwlevel">[legacy] </span> |
| 5943 | |
| 5944 | |
| 5945 | |
| 5946 | <ul class="entry_type_enum"> |
| 5947 | <li> |
| 5948 | <span class="entry_type_enum_name">OFF</span> |
| 5949 | <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p> |
| 5950 | <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> |
| 5951 | <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and |
| 5952 | <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera |
| 5953 | device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's |
| 5954 | a flash unit for this camera device.<wbr/></p> |
| 5955 | <p>Note that auto-white balance (AWB) and auto-focus (AF) |
| 5956 | behavior is device dependent when AE is in OFF mode.<wbr/> |
| 5957 | To have consistent behavior across different devices,<wbr/> |
| 5958 | it is recommended to either set AWB and AF to OFF mode |
| 5959 | or lock AWB and AF before setting AE to OFF.<wbr/> |
| 5960 | 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/> |
| 5961 | <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> |
| 5962 | for more details.<wbr/></p> |
| 5963 | <p>LEGACY devices do not support the OFF mode and will |
| 5964 | override attempts to use this value to ON.<wbr/></p></span> |
| 5965 | </li> |
| 5966 | <li> |
| 5967 | <span class="entry_type_enum_name">ON</span> |
| 5968 | <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/> |
| 5969 | with no flash control.<wbr/></p> |
| 5970 | <p>The application's values for |
| 5971 | <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> |
| 5972 | <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and |
| 5973 | <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The |
| 5974 | application has control over the various |
| 5975 | android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span> |
| 5976 | </li> |
| 5977 | <li> |
| 5978 | <span class="entry_type_enum_name">ON_AUTO_FLASH</span> |
| 5979 | <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls |
| 5980 | the camera's flash unit,<wbr/> firing it in low-light |
| 5981 | conditions.<wbr/></p> |
| 5982 | <p>The flash may be fired during a precapture sequence |
| 5983 | (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and |
| 5984 | may be fired for captures for which the |
| 5985 | <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to |
| 5986 | STILL_<wbr/>CAPTURE</p></span> |
| 5987 | </li> |
| 5988 | <li> |
| 5989 | <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span> |
| 5990 | <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls |
| 5991 | the camera's flash unit,<wbr/> always firing it for still |
| 5992 | captures.<wbr/></p> |
| 5993 | <p>The flash may be fired during a precapture sequence |
| 5994 | (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and |
| 5995 | will always be fired for captures for which the |
| 5996 | <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to |
| 5997 | STILL_<wbr/>CAPTURE</p></span> |
| 5998 | </li> |
| 5999 | <li> |
| 6000 | <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span> |
| 6001 | <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye |
| 6002 | reduction.<wbr/></p> |
| 6003 | <p>If deemed necessary by the camera device,<wbr/> a red eye |
| 6004 | reduction flash will fire during the precapture |
| 6005 | sequence.<wbr/></p></span> |
| 6006 | </li> |
| 6007 | </ul> |
| 6008 | |
| 6009 | </td> <!-- entry_type --> |
| 6010 | |
| 6011 | <td class="entry_description"> |
| 6012 | <p>The desired mode for the camera device's |
| 6013 | auto-exposure routine.<wbr/></p> |
| 6014 | </td> |
| 6015 | |
| 6016 | <td class="entry_units"> |
| 6017 | </td> |
| 6018 | |
| 6019 | <td class="entry_range"> |
| 6020 | <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p> |
| 6021 | </td> |
| 6022 | |
| 6023 | <td class="entry_tags"> |
| 6024 | <ul class="entry_tags"> |
| 6025 | <li><a href="#tag_BC">BC</a></li> |
| 6026 | </ul> |
| 6027 | </td> |
| 6028 | |
| 6029 | </tr> |
| 6030 | <tr class="entries_header"> |
| 6031 | <th class="th_details" colspan="5">Details</th> |
| 6032 | </tr> |
| 6033 | <tr class="entry_cont"> |
| 6034 | <td class="entry_details" colspan="5"> |
| 6035 | <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is |
| 6036 | AUTO.<wbr/></p> |
| 6037 | <p>When set to any of the ON modes,<wbr/> the camera device's |
| 6038 | auto-exposure routine is enabled,<wbr/> overriding the |
| 6039 | application's selected exposure time,<wbr/> sensor sensitivity,<wbr/> |
| 6040 | and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> |
| 6041 | <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and |
| 6042 | <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes |
| 6043 | is selected,<wbr/> the camera device's flash unit controls are |
| 6044 | also overridden.<wbr/></p> |
| 6045 | <p>The FLASH modes are only available if the camera device |
| 6046 | 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> |
| 6047 | <p>If flash TORCH mode is desired,<wbr/> this field must be set to |
| 6048 | ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p> |
| 6049 | <p>When set to any of the ON modes,<wbr/> the values chosen by the |
| 6050 | camera device auto-exposure routine for the overridden |
| 6051 | fields for a given capture will be available in its |
| 6052 | CaptureResult.<wbr/></p> |
| 6053 | </td> |
| 6054 | </tr> |
| 6055 | |
| 6056 | |
| 6057 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 6058 | <!-- end of entry --> |
| 6059 | |
| 6060 | |
| 6061 | <tr class="entry" id="dynamic_android.control.aeRegions"> |
| 6062 | <td class="entry_name |
| 6063 | " rowspan="5"> |
| 6064 | android.<wbr/>control.<wbr/>ae<wbr/>Regions |
| 6065 | </td> |
| 6066 | <td class="entry_type"> |
| 6067 | <span class="entry_type_name">int32</span> |
| 6068 | <span class="entry_type_container">x</span> |
| 6069 | |
| 6070 | <span class="entry_type_array"> |
| 6071 | 5 x area_count |
| 6072 | </span> |
| 6073 | <span class="entry_type_visibility"> [public as meteringRectangle]</span> |
| 6074 | |
| 6075 | |
| 6076 | |
| 6077 | |
| 6078 | |
| 6079 | |
| 6080 | </td> <!-- entry_type --> |
| 6081 | |
| 6082 | <td class="entry_description"> |
| 6083 | <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p> |
| 6084 | </td> |
| 6085 | |
| 6086 | <td class="entry_units"> |
| 6087 | Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size |
| 6088 | </td> |
| 6089 | |
| 6090 | <td class="entry_range"> |
| 6091 | <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of |
| 6092 | <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> |
| 6093 | </td> |
| 6094 | |
| 6095 | <td class="entry_tags"> |
| 6096 | <ul class="entry_tags"> |
| 6097 | <li><a href="#tag_BC">BC</a></li> |
| 6098 | </ul> |
| 6099 | </td> |
| 6100 | |
| 6101 | </tr> |
| 6102 | <tr class="entries_header"> |
| 6103 | <th class="th_details" colspan="5">Details</th> |
| 6104 | </tr> |
| 6105 | <tr class="entry_cont"> |
| 6106 | <td class="entry_details" colspan="5"> |
| 6107 | <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/> |
| 6108 | Otherwise will always be present.<wbr/></p> |
| 6109 | <p>The maximum number of regions supported by the device is determined by the value |
| 6110 | of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p> |
| 6111 | <p>The coordinate system is based on the active pixel array,<wbr/> |
| 6112 | with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and |
| 6113 | (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> |
| 6114 | <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the |
| 6115 | bottom-right pixel in the active pixel array.<wbr/></p> |
| 6116 | <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight |
| 6117 | for every pixel in the area.<wbr/> This means that a large metering area |
| 6118 | with the same weight as a smaller area will have more effect in |
| 6119 | the metering result.<wbr/> Metering areas can partially overlap and the |
| 6120 | camera device will add the weights in the overlap region.<wbr/></p> |
| 6121 | <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one |
| 6122 | region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 |
| 6123 | weight is ignored.<wbr/></p> |
| 6124 | <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the |
| 6125 | camera device.<wbr/></p> |
| 6126 | <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 |
| 6127 | capture result metadata,<wbr/> the camera device will ignore the sections outside the crop |
| 6128 | region and output only the intersection rectangle as the metering region in the result |
| 6129 | metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and |
| 6130 | not reported in the result metadata.<wbr/></p> |
| 6131 | </td> |
| 6132 | </tr> |
| 6133 | |
| 6134 | <tr class="entries_header"> |
| 6135 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 6136 | </tr> |
| 6137 | <tr class="entry_cont"> |
| 6138 | <td class="entry_details" colspan="5"> |
| 6139 | <p>The HAL level representation of MeteringRectangle[] is a |
| 6140 | int[5 * area_<wbr/>count].<wbr/> |
| 6141 | Every five elements represent a metering region of |
| 6142 | (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> |
| 6143 | The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but |
| 6144 | exclusive on xmax and ymax.<wbr/></p> |
| 6145 | </td> |
| 6146 | </tr> |
| 6147 | |
| 6148 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 6149 | <!-- end of entry --> |
| 6150 | |
| 6151 | |
| 6152 | <tr class="entry" id="dynamic_android.control.aeTargetFpsRange"> |
| 6153 | <td class="entry_name |
| 6154 | " rowspan="3"> |
| 6155 | android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range |
| 6156 | </td> |
| 6157 | <td class="entry_type"> |
| 6158 | <span class="entry_type_name">int32</span> |
| 6159 | <span class="entry_type_container">x</span> |
| 6160 | |
| 6161 | <span class="entry_type_array"> |
| 6162 | 2 |
| 6163 | </span> |
| 6164 | <span class="entry_type_visibility"> [public as rangeInt]</span> |
| 6165 | |
| 6166 | |
| 6167 | <span class="entry_type_hwlevel">[legacy] </span> |
| 6168 | |
| 6169 | |
| 6170 | |
| 6171 | |
| 6172 | </td> <!-- entry_type --> |
| 6173 | |
| 6174 | <td class="entry_description"> |
| 6175 | <p>Range over which the auto-exposure routine can |
| 6176 | adjust the capture frame rate to maintain good |
| 6177 | exposure.<wbr/></p> |
| 6178 | </td> |
| 6179 | |
| 6180 | <td class="entry_units"> |
| 6181 | Frames per second (FPS) |
| 6182 | </td> |
| 6183 | |
| 6184 | <td class="entry_range"> |
| 6185 | <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> |
| 6186 | </td> |
| 6187 | |
| 6188 | <td class="entry_tags"> |
| 6189 | <ul class="entry_tags"> |
| 6190 | <li><a href="#tag_BC">BC</a></li> |
| 6191 | </ul> |
| 6192 | </td> |
| 6193 | |
| 6194 | </tr> |
| 6195 | <tr class="entries_header"> |
| 6196 | <th class="th_details" colspan="5">Details</th> |
| 6197 | </tr> |
| 6198 | <tr class="entry_cont"> |
| 6199 | <td class="entry_details" colspan="5"> |
| 6200 | <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not |
| 6201 | manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and |
| 6202 | <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p> |
| 6203 | </td> |
| 6204 | </tr> |
| 6205 | |
| 6206 | |
| 6207 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 6208 | <!-- end of entry --> |
| 6209 | |
| 6210 | |
| 6211 | <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger"> |
| 6212 | <td class="entry_name |
| 6213 | " rowspan="5"> |
| 6214 | android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger |
| 6215 | </td> |
| 6216 | <td class="entry_type"> |
| 6217 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 6218 | |
| 6219 | <span class="entry_type_visibility"> [public]</span> |
| 6220 | |
| 6221 | |
| 6222 | <span class="entry_type_hwlevel">[limited] </span> |
| 6223 | |
| 6224 | |
| 6225 | |
| 6226 | <ul class="entry_type_enum"> |
| 6227 | <li> |
| 6228 | <span class="entry_type_enum_name">IDLE</span> |
| 6229 | <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> |
| 6230 | </li> |
| 6231 | <li> |
| 6232 | <span class="entry_type_enum_name">START</span> |
| 6233 | <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started |
| 6234 | by the camera device.<wbr/></p> |
| 6235 | <p>The exact effect of the precapture trigger depends on |
| 6236 | the current AE mode and state.<wbr/></p></span> |
| 6237 | </li> |
| 6238 | <li> |
| 6239 | <span class="entry_type_enum_name">CANCEL</span> |
| 6240 | <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed |
| 6241 | precapture metering sequence,<wbr/> the auto-exposure routine will return to its |
| 6242 | initial state.<wbr/></p></span> |
| 6243 | </li> |
| 6244 | </ul> |
| 6245 | |
| 6246 | </td> <!-- entry_type --> |
| 6247 | |
| 6248 | <td class="entry_description"> |
| 6249 | <p>Whether the camera device will trigger a precapture |
| 6250 | metering sequence when it processes this request.<wbr/></p> |
| 6251 | </td> |
| 6252 | |
| 6253 | <td class="entry_units"> |
| 6254 | </td> |
| 6255 | |
| 6256 | <td class="entry_range"> |
| 6257 | </td> |
| 6258 | |
| 6259 | <td class="entry_tags"> |
| 6260 | <ul class="entry_tags"> |
| 6261 | <li><a href="#tag_BC">BC</a></li> |
| 6262 | </ul> |
| 6263 | </td> |
| 6264 | |
| 6265 | </tr> |
| 6266 | <tr class="entries_header"> |
| 6267 | <th class="th_details" colspan="5">Details</th> |
| 6268 | </tr> |
| 6269 | <tr class="entry_cont"> |
| 6270 | <td class="entry_details" colspan="5"> |
| 6271 | <p>This entry is normally set to IDLE,<wbr/> or is not |
| 6272 | included at all in the request settings.<wbr/> When included and |
| 6273 | set to START,<wbr/> the camera device will trigger the auto-exposure (AE) |
| 6274 | precapture metering sequence.<wbr/></p> |
| 6275 | <p>When set to CANCEL,<wbr/> the camera device will cancel any active |
| 6276 | precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/> |
| 6277 | If a precapture metering sequence is already completed,<wbr/> and the camera |
| 6278 | device has implicitly locked the AE for subsequent still capture,<wbr/> the |
| 6279 | CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p> |
| 6280 | <p>The precapture sequence should be triggered before starting a |
| 6281 | high-quality still capture for final metering decisions to |
| 6282 | be made,<wbr/> and for firing pre-capture flash pulses to estimate |
| 6283 | scene brightness and required final capture flash power,<wbr/> when |
| 6284 | the flash is enabled.<wbr/></p> |
| 6285 | <p>Normally,<wbr/> this entry should be set to START for only a |
| 6286 | single request,<wbr/> and the application should wait until the |
| 6287 | sequence completes before starting a new one.<wbr/></p> |
| 6288 | <p>When a precapture metering sequence is finished,<wbr/> the camera device |
| 6289 | may lock the auto-exposure routine internally to be able to accurately expose the |
| 6290 | subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/> |
| 6291 | For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is |
| 6292 | submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should |
| 6293 | 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 |
| 6294 | 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 |
| 6295 | still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for |
| 6296 | API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device |
| 6297 | internally locked AE if the application doesn't submit a still capture request after |
| 6298 | the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not |
| 6299 | be used in devices that have earlier API levels.<wbr/></p> |
| 6300 | <p>The exact effect of auto-exposure (AE) precapture trigger |
| 6301 | depends on the current AE mode and state; see |
| 6302 | <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition |
| 6303 | details.<wbr/></p> |
| 6304 | <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported; |
| 6305 | capturing a high-resolution JPEG image will automatically trigger a |
| 6306 | precapture sequence before the high-resolution capture,<wbr/> including |
| 6307 | potentially firing a pre-capture flash.<wbr/></p> |
| 6308 | <p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> |
| 6309 | simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between |
| 6310 | the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a |
| 6311 | focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous |
| 6312 | trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and |
| 6313 | 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 |
| 6314 | example.<wbr/></p> |
| 6315 | <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then |
| 6316 | the camera device will complete them in the optimal order for that device.<wbr/></p> |
| 6317 | </td> |
| 6318 | </tr> |
| 6319 | |
| 6320 | <tr class="entries_header"> |
| 6321 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 6322 | </tr> |
| 6323 | <tr class="entry_cont"> |
| 6324 | <td class="entry_details" colspan="5"> |
| 6325 | <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active |
| 6326 | (and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to |
| 6327 | treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the |
| 6328 | AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> |
| 6329 | to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> |
| 6330 | </td> |
| 6331 | </tr> |
| 6332 | |
| 6333 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 6334 | <!-- end of entry --> |
| 6335 | |
| 6336 | |
| 6337 | <tr class="entry" id="dynamic_android.control.aeState"> |
| 6338 | <td class="entry_name |
| 6339 | " rowspan="3"> |
| 6340 | android.<wbr/>control.<wbr/>ae<wbr/>State |
| 6341 | </td> |
| 6342 | <td class="entry_type"> |
| 6343 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 6344 | |
| 6345 | <span class="entry_type_visibility"> [public]</span> |
| 6346 | |
| 6347 | |
| 6348 | <span class="entry_type_hwlevel">[limited] </span> |
| 6349 | |
| 6350 | |
| 6351 | |
| 6352 | <ul class="entry_type_enum"> |
| 6353 | <li> |
| 6354 | <span class="entry_type_enum_name">INACTIVE</span> |
| 6355 | <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p> |
| 6356 | <p>When a camera device is opened,<wbr/> it starts in |
| 6357 | this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting |
| 6358 | this state in capture result.<wbr/></p></span> |
| 6359 | </li> |
| 6360 | <li> |
| 6361 | <span class="entry_type_enum_name">SEARCHING</span> |
| 6362 | <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values |
| 6363 | for the current scene.<wbr/></p> |
| 6364 | <p>This is a transient state,<wbr/> the camera device may skip |
| 6365 | reporting this state in capture result.<wbr/></p></span> |
| 6366 | </li> |
| 6367 | <li> |
| 6368 | <span class="entry_type_enum_name">CONVERGED</span> |
| 6369 | <span class="entry_type_enum_notes"><p>AE has a good set of control values for the |
| 6370 | current scene.<wbr/></p></span> |
| 6371 | </li> |
| 6372 | <li> |
| 6373 | <span class="entry_type_enum_name">LOCKED</span> |
| 6374 | <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span> |
| 6375 | </li> |
| 6376 | <li> |
| 6377 | <span class="entry_type_enum_name">FLASH_REQUIRED</span> |
| 6378 | <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash |
| 6379 | needs to be fired for good quality still |
| 6380 | capture.<wbr/></p></span> |
| 6381 | </li> |
| 6382 | <li> |
| 6383 | <span class="entry_type_enum_name">PRECAPTURE</span> |
| 6384 | <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence |
| 6385 | and is currently executing it.<wbr/></p> |
| 6386 | <p>Precapture can be triggered through setting |
| 6387 | <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently |
| 6388 | active and completed (if it causes camera device internal AE lock) precapture |
| 6389 | metering sequence can be canceled through setting |
| 6390 | <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p> |
| 6391 | <p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED |
| 6392 | or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient |
| 6393 | state,<wbr/> the camera device may skip reporting this state in |
| 6394 | capture result.<wbr/></p></span> |
| 6395 | </li> |
| 6396 | </ul> |
| 6397 | |
| 6398 | </td> <!-- entry_type --> |
| 6399 | |
| 6400 | <td class="entry_description"> |
| 6401 | <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p> |
| 6402 | </td> |
| 6403 | |
| 6404 | <td class="entry_units"> |
| 6405 | </td> |
| 6406 | |
| 6407 | <td class="entry_range"> |
| 6408 | </td> |
| 6409 | |
| 6410 | <td class="entry_tags"> |
| 6411 | </td> |
| 6412 | |
| 6413 | </tr> |
| 6414 | <tr class="entries_header"> |
| 6415 | <th class="th_details" colspan="5">Details</th> |
| 6416 | </tr> |
| 6417 | <tr class="entry_cont"> |
| 6418 | <td class="entry_details" colspan="5"> |
| 6419 | <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always |
| 6420 | resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> |
| 6421 | 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 |
| 6422 | the algorithm states to INACTIVE.<wbr/></p> |
| 6423 | <p>The camera device can do several state transitions between two results,<wbr/> if it is |
| 6424 | allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be |
| 6425 | seen in a result.<wbr/></p> |
| 6426 | <p>The state in the result is the state for this image (in sync with this image): if |
| 6427 | AE state becomes CONVERGED,<wbr/> then the image data associated with this result should |
| 6428 | be good to use.<wbr/></p> |
| 6429 | <p>Below are state transition tables for different AE modes.<wbr/></p> |
| 6430 | <table> |
| 6431 | <thead> |
| 6432 | <tr> |
| 6433 | <th align="center">State</th> |
| 6434 | <th align="center">Transition Cause</th> |
| 6435 | <th align="center">New State</th> |
| 6436 | <th align="center">Notes</th> |
| 6437 | </tr> |
| 6438 | </thead> |
| 6439 | <tbody> |
| 6440 | <tr> |
| 6441 | <td align="center">INACTIVE</td> |
| 6442 | <td align="center"></td> |
| 6443 | <td align="center">INACTIVE</td> |
| 6444 | <td align="center">Camera device auto exposure algorithm is disabled</td> |
| 6445 | </tr> |
| 6446 | </tbody> |
| 6447 | </table> |
| 6448 | <p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON_<wbr/>*:</p> |
| 6449 | <table> |
| 6450 | <thead> |
| 6451 | <tr> |
| 6452 | <th align="center">State</th> |
| 6453 | <th align="center">Transition Cause</th> |
| 6454 | <th align="center">New State</th> |
| 6455 | <th align="center">Notes</th> |
| 6456 | </tr> |
| 6457 | </thead> |
| 6458 | <tbody> |
| 6459 | <tr> |
| 6460 | <td align="center">INACTIVE</td> |
| 6461 | <td align="center">Camera device initiates AE scan</td> |
| 6462 | <td align="center">SEARCHING</td> |
| 6463 | <td align="center">Values changing</td> |
| 6464 | </tr> |
| 6465 | <tr> |
| 6466 | <td align="center">INACTIVE</td> |
| 6467 | <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> |
| 6468 | <td align="center">LOCKED</td> |
| 6469 | <td align="center">Values locked</td> |
| 6470 | </tr> |
| 6471 | <tr> |
| 6472 | <td align="center">SEARCHING</td> |
| 6473 | <td align="center">Camera device finishes AE scan</td> |
| 6474 | <td align="center">CONVERGED</td> |
| 6475 | <td align="center">Good values,<wbr/> not changing</td> |
| 6476 | </tr> |
| 6477 | <tr> |
| 6478 | <td align="center">SEARCHING</td> |
| 6479 | <td align="center">Camera device finishes AE scan</td> |
| 6480 | <td align="center">FLASH_<wbr/>REQUIRED</td> |
| 6481 | <td align="center">Converged but too dark w/<wbr/>o flash</td> |
| 6482 | </tr> |
| 6483 | <tr> |
| 6484 | <td align="center">SEARCHING</td> |
| 6485 | <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> |
| 6486 | <td align="center">LOCKED</td> |
| 6487 | <td align="center">Values locked</td> |
| 6488 | </tr> |
| 6489 | <tr> |
| 6490 | <td align="center">CONVERGED</td> |
| 6491 | <td align="center">Camera device initiates AE scan</td> |
| 6492 | <td align="center">SEARCHING</td> |
| 6493 | <td align="center">Values changing</td> |
| 6494 | </tr> |
| 6495 | <tr> |
| 6496 | <td align="center">CONVERGED</td> |
| 6497 | <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> |
| 6498 | <td align="center">LOCKED</td> |
| 6499 | <td align="center">Values locked</td> |
| 6500 | </tr> |
| 6501 | <tr> |
| 6502 | <td align="center">FLASH_<wbr/>REQUIRED</td> |
| 6503 | <td align="center">Camera device initiates AE scan</td> |
| 6504 | <td align="center">SEARCHING</td> |
| 6505 | <td align="center">Values changing</td> |
| 6506 | </tr> |
| 6507 | <tr> |
| 6508 | <td align="center">FLASH_<wbr/>REQUIRED</td> |
| 6509 | <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> |
| 6510 | <td align="center">LOCKED</td> |
| 6511 | <td align="center">Values locked</td> |
| 6512 | </tr> |
| 6513 | <tr> |
| 6514 | <td align="center">LOCKED</td> |
| 6515 | <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> |
| 6516 | <td align="center">SEARCHING</td> |
| 6517 | <td align="center">Values not good after unlock</td> |
| 6518 | </tr> |
| 6519 | <tr> |
| 6520 | <td align="center">LOCKED</td> |
| 6521 | <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> |
| 6522 | <td align="center">CONVERGED</td> |
| 6523 | <td align="center">Values good after unlock</td> |
| 6524 | </tr> |
| 6525 | <tr> |
| 6526 | <td align="center">LOCKED</td> |
| 6527 | <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> |
| 6528 | <td align="center">FLASH_<wbr/>REQUIRED</td> |
| 6529 | <td align="center">Exposure good,<wbr/> but too dark</td> |
| 6530 | </tr> |
| 6531 | <tr> |
| 6532 | <td align="center">PRECAPTURE</td> |
| 6533 | <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> |
| 6534 | <td align="center">CONVERGED</td> |
| 6535 | <td align="center">Ready for high-quality capture</td> |
| 6536 | </tr> |
| 6537 | <tr> |
| 6538 | <td align="center">PRECAPTURE</td> |
| 6539 | <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> |
| 6540 | <td align="center">LOCKED</td> |
| 6541 | <td align="center">Ready for high-quality capture</td> |
| 6542 | </tr> |
| 6543 | <tr> |
| 6544 | <td align="center">LOCKED</td> |
| 6545 | <td align="center">aeLock is ON and aePrecaptureTrigger is START</td> |
| 6546 | <td align="center">LOCKED</td> |
| 6547 | <td align="center">Precapture trigger is ignored when AE is already locked</td> |
| 6548 | </tr> |
| 6549 | <tr> |
| 6550 | <td align="center">LOCKED</td> |
| 6551 | <td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td> |
| 6552 | <td align="center">LOCKED</td> |
| 6553 | <td align="center">Precapture trigger is ignored when AE is already locked</td> |
| 6554 | </tr> |
| 6555 | <tr> |
| 6556 | <td align="center">Any state (excluding LOCKED)</td> |
| 6557 | <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td> |
| 6558 | <td align="center">PRECAPTURE</td> |
| 6559 | <td align="center">Start AE precapture metering sequence</td> |
| 6560 | </tr> |
| 6561 | <tr> |
| 6562 | <td align="center">Any state (excluding LOCKED)</td> |
| 6563 | <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td> |
| 6564 | <td align="center">INACTIVE</td> |
| 6565 | <td align="center">Currently active precapture metering sequence is canceled</td> |
| 6566 | </tr> |
| 6567 | </tbody> |
| 6568 | </table> |
| 6569 | <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen |
| 6570 | without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that |
| 6571 | can be skipped in that manner is called a transient state.<wbr/></p> |
| 6572 | <p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON_<wbr/>*),<wbr/> in addition to the state transitions |
| 6573 | listed in above table,<wbr/> it is also legal for the camera device to skip one or more |
| 6574 | transient states between two results.<wbr/> See below table for examples:</p> |
| 6575 | <table> |
| 6576 | <thead> |
| 6577 | <tr> |
| 6578 | <th align="center">State</th> |
| 6579 | <th align="center">Transition Cause</th> |
| 6580 | <th align="center">New State</th> |
| 6581 | <th align="center">Notes</th> |
| 6582 | </tr> |
| 6583 | </thead> |
| 6584 | <tbody> |
| 6585 | <tr> |
| 6586 | <td align="center">INACTIVE</td> |
| 6587 | <td align="center">Camera device finished AE scan</td> |
| 6588 | <td align="center">CONVERGED</td> |
| 6589 | <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td> |
| 6590 | </tr> |
| 6591 | <tr> |
| 6592 | <td align="center">Any state (excluding LOCKED)</td> |
| 6593 | <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> |
| 6594 | <td align="center">FLASH_<wbr/>REQUIRED</td> |
| 6595 | <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> |
| 6596 | </tr> |
| 6597 | <tr> |
| 6598 | <td align="center">Any state (excluding LOCKED)</td> |
| 6599 | <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> |
| 6600 | <td align="center">CONVERGED</td> |
| 6601 | <td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td> |
| 6602 | </tr> |
| 6603 | <tr> |
| 6604 | <td align="center">Any state (excluding LOCKED)</td> |
| 6605 | <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td> |
| 6606 | <td align="center">FLASH_<wbr/>REQUIRED</td> |
| 6607 | <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> |
| 6608 | </tr> |
| 6609 | <tr> |
| 6610 | <td align="center">Any state (excluding LOCKED)</td> |
| 6611 | <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td> |
| 6612 | <td align="center">CONVERGED</td> |
| 6613 | <td align="center">Converged after a precapture sequenceis canceled,<wbr/> transient states are skipped by camera device.<wbr/></td> |
| 6614 | </tr> |
| 6615 | <tr> |
| 6616 | <td align="center">CONVERGED</td> |
| 6617 | <td align="center">Camera device finished AE scan</td> |
| 6618 | <td align="center">FLASH_<wbr/>REQUIRED</td> |
| 6619 | <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> |
| 6620 | </tr> |
| 6621 | <tr> |
| 6622 | <td align="center">FLASH_<wbr/>REQUIRED</td> |
| 6623 | <td align="center">Camera device finished AE scan</td> |
| 6624 | <td align="center">CONVERGED</td> |
| 6625 | <td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td> |
| 6626 | </tr> |
| 6627 | </tbody> |
| 6628 | </table> |
| 6629 | </td> |
| 6630 | </tr> |
| 6631 | |
| 6632 | |
| 6633 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 6634 | <!-- end of entry --> |
| 6635 | |
| 6636 | |
| 6637 | <tr class="entry" id="dynamic_android.control.afMode"> |
| 6638 | <td class="entry_name |
| 6639 | " rowspan="5"> |
| 6640 | android.<wbr/>control.<wbr/>af<wbr/>Mode |
| 6641 | </td> |
| 6642 | <td class="entry_type"> |
| 6643 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 6644 | |
| 6645 | <span class="entry_type_visibility"> [public]</span> |
| 6646 | |
| 6647 | |
| 6648 | <span class="entry_type_hwlevel">[legacy] </span> |
| 6649 | |
| 6650 | |
| 6651 | |
| 6652 | <ul class="entry_type_enum"> |
| 6653 | <li> |
| 6654 | <span class="entry_type_enum_name">OFF</span> |
| 6655 | <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens; |
| 6656 | <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the |
| 6657 | application.<wbr/></p></span> |
| 6658 | </li> |
| 6659 | <li> |
| 6660 | <span class="entry_type_enum_name">AUTO</span> |
| 6661 | <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p> |
| 6662 | <p>In this mode,<wbr/> the lens does not move unless |
| 6663 | the autofocus trigger action is called.<wbr/> When that trigger |
| 6664 | is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to |
| 6665 | the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p> |
| 6666 | <p>Always supported if lens is not fixed focus.<wbr/></p> |
| 6667 | <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 |
| 6668 | is fixed-focus.<wbr/></p> |
| 6669 | <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/> |
| 6670 | and sets the AF state to INACTIVE.<wbr/></p></span> |
| 6671 | </li> |
| 6672 | <li> |
| 6673 | <span class="entry_type_enum_name">MACRO</span> |
| 6674 | <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p> |
| 6675 | <p>In this mode,<wbr/> the lens does not move unless the |
| 6676 | autofocus trigger action is called.<wbr/> When that trigger is |
| 6677 | activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to |
| 6678 | the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This |
| 6679 | mode is optimized for focusing on objects very close to |
| 6680 | the camera.<wbr/></p> |
| 6681 | <p>When that trigger is activated,<wbr/> AF will transition to |
| 6682 | ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or |
| 6683 | NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens |
| 6684 | position to default,<wbr/> and sets the AF state to |
| 6685 | INACTIVE.<wbr/></p></span> |
| 6686 | </li> |
| 6687 | <li> |
| 6688 | <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span> |
| 6689 | <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens |
| 6690 | position continually to attempt to provide a |
| 6691 | constantly-in-focus image stream.<wbr/></p> |
| 6692 | <p>The focusing behavior should be suitable for good quality |
| 6693 | video recording; typically this means slower focus |
| 6694 | movement and no overshoots.<wbr/> When the AF trigger is not |
| 6695 | involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/> |
| 6696 | and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED |
| 6697 | states as appropriate.<wbr/> When the AF trigger is activated,<wbr/> |
| 6698 | the algorithm should immediately transition into |
| 6699 | AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the |
| 6700 | lens position until a cancel AF trigger is received.<wbr/></p> |
| 6701 | <p>Once cancel is received,<wbr/> the algorithm should transition |
| 6702 | back to INACTIVE and resume passive scan.<wbr/> Note that this |
| 6703 | behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an |
| 6704 | ongoing PASSIVE_<wbr/>SCAN must immediately be |
| 6705 | canceled.<wbr/></p></span> |
| 6706 | </li> |
| 6707 | <li> |
| 6708 | <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span> |
| 6709 | <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens |
| 6710 | position continually to attempt to provide a |
| 6711 | constantly-in-focus image stream.<wbr/></p> |
| 6712 | <p>The focusing behavior should be suitable for still image |
| 6713 | capture; typically this means focusing as fast as |
| 6714 | possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF |
| 6715 | algorithm should start in INACTIVE state,<wbr/> and then |
| 6716 | transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as |
| 6717 | appropriate as it attempts to maintain focus.<wbr/> When the AF |
| 6718 | trigger is activated,<wbr/> the algorithm should finish its |
| 6719 | PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into |
| 6720 | AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the |
| 6721 | lens position until a cancel AF trigger is received.<wbr/></p> |
| 6722 | <p>When the AF cancel trigger is activated,<wbr/> the algorithm |
| 6723 | should transition back to INACTIVE and then act as if it |
| 6724 | has just been started.<wbr/></p></span> |
| 6725 | </li> |
| 6726 | <li> |
| 6727 | <span class="entry_type_enum_name">EDOF</span> |
| 6728 | <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p> |
| 6729 | <p>The camera device will produce images with an extended |
| 6730 | depth of field automatically; no special focusing |
| 6731 | operations need to be done before taking a picture.<wbr/></p> |
| 6732 | <p>AF triggers are ignored,<wbr/> and the AF state will always be |
| 6733 | INACTIVE.<wbr/></p></span> |
| 6734 | </li> |
| 6735 | </ul> |
| 6736 | |
| 6737 | </td> <!-- entry_type --> |
| 6738 | |
| 6739 | <td class="entry_description"> |
| 6740 | <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what |
| 6741 | mode it is set to.<wbr/></p> |
| 6742 | </td> |
| 6743 | |
| 6744 | <td class="entry_units"> |
| 6745 | </td> |
| 6746 | |
| 6747 | <td class="entry_range"> |
| 6748 | <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p> |
| 6749 | </td> |
| 6750 | |
| 6751 | <td class="entry_tags"> |
| 6752 | <ul class="entry_tags"> |
| 6753 | <li><a href="#tag_BC">BC</a></li> |
| 6754 | </ul> |
| 6755 | </td> |
| 6756 | |
| 6757 | </tr> |
| 6758 | <tr class="entries_header"> |
| 6759 | <th class="th_details" colspan="5">Details</th> |
| 6760 | </tr> |
| 6761 | <tr class="entry_cont"> |
| 6762 | <td class="entry_details" colspan="5"> |
| 6763 | <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus |
| 6764 | (i.<wbr/>e.<wbr/> <code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> > 0</code>).<wbr/> Also note that |
| 6765 | when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device |
| 6766 | 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 |
| 6767 | 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> |
| 6768 | <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/> |
| 6769 | the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> |
| 6770 | in result metadata.<wbr/></p> |
| 6771 | </td> |
| 6772 | </tr> |
| 6773 | |
| 6774 | <tr class="entries_header"> |
| 6775 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 6776 | </tr> |
| 6777 | <tr class="entry_cont"> |
| 6778 | <td class="entry_details" colspan="5"> |
| 6779 | <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a |
| 6780 | 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 |
| 6781 | up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see |
| 6782 | <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 |
| 6783 | locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move |
| 6784 | after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that |
| 6785 | the same focal plane remains in focus.<wbr/></p> |
| 6786 | <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF |
| 6787 | scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger |
| 6788 | (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 |
| 6789 | same lock behavior as above.<wbr/></p> |
| 6790 | <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the |
| 6791 | 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/> |
| 6792 | However,<wbr/> the lens must not move regardless of the camera movement for any focus distance |
| 6793 | manual control.<wbr/></p> |
| 6794 | <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on |
| 6795 | camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to |
| 6796 | remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/> |
| 6797 | by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue |
| 6798 | that will arise on camera modules with open-loop VCMs.<wbr/></p> |
| 6799 | </td> |
| 6800 | </tr> |
| 6801 | |
| 6802 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 6803 | <!-- end of entry --> |
| 6804 | |
| 6805 | |
| 6806 | <tr class="entry" id="dynamic_android.control.afRegions"> |
| 6807 | <td class="entry_name |
| 6808 | " rowspan="5"> |
| 6809 | android.<wbr/>control.<wbr/>af<wbr/>Regions |
| 6810 | </td> |
| 6811 | <td class="entry_type"> |
| 6812 | <span class="entry_type_name">int32</span> |
| 6813 | <span class="entry_type_container">x</span> |
| 6814 | |
| 6815 | <span class="entry_type_array"> |
| 6816 | 5 x area_count |
| 6817 | </span> |
| 6818 | <span class="entry_type_visibility"> [public as meteringRectangle]</span> |
| 6819 | |
| 6820 | |
| 6821 | |
| 6822 | |
| 6823 | |
| 6824 | |
| 6825 | </td> <!-- entry_type --> |
| 6826 | |
| 6827 | <td class="entry_description"> |
| 6828 | <p>List of metering areas to use for auto-focus.<wbr/></p> |
| 6829 | </td> |
| 6830 | |
| 6831 | <td class="entry_units"> |
| 6832 | Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size |
| 6833 | </td> |
| 6834 | |
| 6835 | <td class="entry_range"> |
| 6836 | <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of |
| 6837 | <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> |
| 6838 | </td> |
| 6839 | |
| 6840 | <td class="entry_tags"> |
| 6841 | <ul class="entry_tags"> |
| 6842 | <li><a href="#tag_BC">BC</a></li> |
| 6843 | </ul> |
| 6844 | </td> |
| 6845 | |
| 6846 | </tr> |
| 6847 | <tr class="entries_header"> |
| 6848 | <th class="th_details" colspan="5">Details</th> |
| 6849 | </tr> |
| 6850 | <tr class="entry_cont"> |
| 6851 | <td class="entry_details" colspan="5"> |
| 6852 | <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/> |
| 6853 | Otherwise will always be present.<wbr/></p> |
| 6854 | <p>The maximum number of focus areas supported by the device is determined by the value |
| 6855 | of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p> |
| 6856 | <p>The coordinate system is based on the active pixel array,<wbr/> |
| 6857 | with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and |
| 6858 | (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> |
| 6859 | <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the |
| 6860 | bottom-right pixel in the active pixel array.<wbr/></p> |
| 6861 | <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight |
| 6862 | for every pixel in the area.<wbr/> This means that a large metering area |
| 6863 | with the same weight as a smaller area will have more effect in |
| 6864 | the metering result.<wbr/> Metering areas can partially overlap and the |
| 6865 | camera device will add the weights in the overlap region.<wbr/></p> |
| 6866 | <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region |
| 6867 | is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is |
| 6868 | ignored.<wbr/></p> |
| 6869 | <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the |
| 6870 | camera device.<wbr/></p> |
| 6871 | <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 |
| 6872 | capture result metadata,<wbr/> the camera device will ignore the sections outside the crop |
| 6873 | region and output only the intersection rectangle as the metering region in the result |
| 6874 | metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and |
| 6875 | not reported in the result metadata.<wbr/></p> |
| 6876 | </td> |
| 6877 | </tr> |
| 6878 | |
| 6879 | <tr class="entries_header"> |
| 6880 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 6881 | </tr> |
| 6882 | <tr class="entry_cont"> |
| 6883 | <td class="entry_details" colspan="5"> |
| 6884 | <p>The HAL level representation of MeteringRectangle[] is a |
| 6885 | int[5 * area_<wbr/>count].<wbr/> |
| 6886 | Every five elements represent a metering region of |
| 6887 | (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> |
| 6888 | The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but |
| 6889 | exclusive on xmax and ymax.<wbr/></p> |
| 6890 | </td> |
| 6891 | </tr> |
| 6892 | |
| 6893 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 6894 | <!-- end of entry --> |
| 6895 | |
| 6896 | |
| 6897 | <tr class="entry" id="dynamic_android.control.afTrigger"> |
| 6898 | <td class="entry_name |
| 6899 | " rowspan="5"> |
| 6900 | android.<wbr/>control.<wbr/>af<wbr/>Trigger |
| 6901 | </td> |
| 6902 | <td class="entry_type"> |
| 6903 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 6904 | |
| 6905 | <span class="entry_type_visibility"> [public]</span> |
| 6906 | |
| 6907 | |
| 6908 | <span class="entry_type_hwlevel">[legacy] </span> |
| 6909 | |
| 6910 | |
| 6911 | |
| 6912 | <ul class="entry_type_enum"> |
| 6913 | <li> |
| 6914 | <span class="entry_type_enum_name">IDLE</span> |
| 6915 | <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> |
| 6916 | </li> |
| 6917 | <li> |
| 6918 | <span class="entry_type_enum_name">START</span> |
| 6919 | <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span> |
| 6920 | </li> |
| 6921 | <li> |
| 6922 | <span class="entry_type_enum_name">CANCEL</span> |
| 6923 | <span class="entry_type_enum_notes"><p>Autofocus will return to its initial |
| 6924 | state,<wbr/> and cancel any currently active trigger.<wbr/></p></span> |
| 6925 | </li> |
| 6926 | </ul> |
| 6927 | |
| 6928 | </td> <!-- entry_type --> |
| 6929 | |
| 6930 | <td class="entry_description"> |
| 6931 | <p>Whether the camera device will trigger autofocus for this request.<wbr/></p> |
| 6932 | </td> |
| 6933 | |
| 6934 | <td class="entry_units"> |
| 6935 | </td> |
| 6936 | |
| 6937 | <td class="entry_range"> |
| 6938 | </td> |
| 6939 | |
| 6940 | <td class="entry_tags"> |
| 6941 | <ul class="entry_tags"> |
| 6942 | <li><a href="#tag_BC">BC</a></li> |
| 6943 | </ul> |
| 6944 | </td> |
| 6945 | |
| 6946 | </tr> |
| 6947 | <tr class="entries_header"> |
| 6948 | <th class="th_details" colspan="5">Details</th> |
| 6949 | </tr> |
| 6950 | <tr class="entry_cont"> |
| 6951 | <td class="entry_details" colspan="5"> |
| 6952 | <p>This entry is normally set to IDLE,<wbr/> or is not |
| 6953 | included at all in the request settings.<wbr/></p> |
| 6954 | <p>When included and set to START,<wbr/> the camera device will trigger the |
| 6955 | autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p> |
| 6956 | <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/> |
| 6957 | and return to its initial AF state.<wbr/></p> |
| 6958 | <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a |
| 6959 | single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying |
| 6960 | START for multiple captures in a row means restarting the AF operation over |
| 6961 | and over again.<wbr/></p> |
| 6962 | <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> |
| 6963 | <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> |
| 6964 | simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between |
| 6965 | the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a |
| 6966 | focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous |
| 6967 | trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and |
| 6968 | changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p> |
| 6969 | </td> |
| 6970 | </tr> |
| 6971 | |
| 6972 | <tr class="entries_header"> |
| 6973 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 6974 | </tr> |
| 6975 | <tr class="entry_cont"> |
| 6976 | <td class="entry_details" colspan="5"> |
| 6977 | <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active |
| 6978 | (and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to |
| 6979 | treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the |
| 6980 | AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> |
| 6981 | to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> |
| 6982 | </td> |
| 6983 | </tr> |
| 6984 | |
| 6985 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 6986 | <!-- end of entry --> |
| 6987 | |
| 6988 | |
| 6989 | <tr class="entry" id="dynamic_android.control.afState"> |
| 6990 | <td class="entry_name |
| 6991 | " rowspan="3"> |
| 6992 | android.<wbr/>control.<wbr/>af<wbr/>State |
| 6993 | </td> |
| 6994 | <td class="entry_type"> |
| 6995 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 6996 | |
| 6997 | <span class="entry_type_visibility"> [public]</span> |
| 6998 | |
| 6999 | |
| 7000 | <span class="entry_type_hwlevel">[legacy] </span> |
| 7001 | |
| 7002 | |
| 7003 | |
| 7004 | <ul class="entry_type_enum"> |
| 7005 | <li> |
| 7006 | <span class="entry_type_enum_name">INACTIVE</span> |
| 7007 | <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked |
| 7008 | to scan.<wbr/></p> |
| 7009 | <p>When a camera device is opened,<wbr/> it starts in this |
| 7010 | state.<wbr/> This is a transient state,<wbr/> the camera device may |
| 7011 | skip reporting this state in capture |
| 7012 | result.<wbr/></p></span> |
| 7013 | </li> |
| 7014 | <li> |
| 7015 | <span class="entry_type_enum_name">PASSIVE_SCAN</span> |
| 7016 | <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the |
| 7017 | camera device in a continuous autofocus mode.<wbr/></p> |
| 7018 | <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient |
| 7019 | state,<wbr/> the camera device may skip reporting this state in |
| 7020 | capture result.<wbr/></p></span> |
| 7021 | </li> |
| 7022 | <li> |
| 7023 | <span class="entry_type_enum_name">PASSIVE_FOCUSED</span> |
| 7024 | <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may |
| 7025 | restart scanning at any time.<wbr/></p> |
| 7026 | <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient |
| 7027 | state,<wbr/> the camera device may skip reporting this state in |
| 7028 | capture result.<wbr/></p></span> |
| 7029 | </li> |
| 7030 | <li> |
| 7031 | <span class="entry_type_enum_name">ACTIVE_SCAN</span> |
| 7032 | <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was |
| 7033 | triggered by AF trigger.<wbr/></p> |
| 7034 | <p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient |
| 7035 | state,<wbr/> the camera device may skip reporting this state in |
| 7036 | capture result.<wbr/></p></span> |
| 7037 | </li> |
| 7038 | <li> |
| 7039 | <span class="entry_type_enum_name">FOCUSED_LOCKED</span> |
| 7040 | <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked |
| 7041 | focus.<wbr/></p> |
| 7042 | <p>This state is reached only after an explicit START AF trigger has been |
| 7043 | sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p> |
| 7044 | <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 |
| 7045 | 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> |
| 7046 | </li> |
| 7047 | <li> |
| 7048 | <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED</span> |
| 7049 | <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked |
| 7050 | focus.<wbr/></p> |
| 7051 | <p>This state is reached only after an explicit START AF trigger has been |
| 7052 | sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p> |
| 7053 | <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 |
| 7054 | 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> |
| 7055 | </li> |
| 7056 | <li> |
| 7057 | <span class="entry_type_enum_name">PASSIVE_UNFOCUSED</span> |
| 7058 | <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/> |
| 7059 | and may restart scanning at any time.<wbr/></p> |
| 7060 | <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera |
| 7061 | device may skip reporting this state in capture result.<wbr/></p> |
| 7062 | <p>LEGACY camera devices do not support this state.<wbr/> When a passive |
| 7063 | scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span> |
| 7064 | </li> |
| 7065 | </ul> |
| 7066 | |
| 7067 | </td> <!-- entry_type --> |
| 7068 | |
| 7069 | <td class="entry_description"> |
| 7070 | <p>Current state of auto-focus (AF) algorithm.<wbr/></p> |
| 7071 | </td> |
| 7072 | |
| 7073 | <td class="entry_units"> |
| 7074 | </td> |
| 7075 | |
| 7076 | <td class="entry_range"> |
| 7077 | </td> |
| 7078 | |
| 7079 | <td class="entry_tags"> |
| 7080 | </td> |
| 7081 | |
| 7082 | </tr> |
| 7083 | <tr class="entries_header"> |
| 7084 | <th class="th_details" colspan="5">Details</th> |
| 7085 | </tr> |
| 7086 | <tr class="entry_cont"> |
| 7087 | <td class="entry_details" colspan="5"> |
| 7088 | <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always |
| 7089 | resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> |
| 7090 | 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 |
| 7091 | the algorithm states to INACTIVE.<wbr/></p> |
| 7092 | <p>The camera device can do several state transitions between two results,<wbr/> if it is |
| 7093 | allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be |
| 7094 | seen in a result.<wbr/></p> |
| 7095 | <p>The state in the result is the state for this image (in sync with this image): if |
| 7096 | AF state becomes FOCUSED,<wbr/> then the image data associated with this result should |
| 7097 | be sharp.<wbr/></p> |
| 7098 | <p>Below are state transition tables for different AF modes.<wbr/></p> |
| 7099 | <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> |
| 7100 | <table> |
| 7101 | <thead> |
| 7102 | <tr> |
| 7103 | <th align="center">State</th> |
| 7104 | <th align="center">Transition Cause</th> |
| 7105 | <th align="center">New State</th> |
| 7106 | <th align="center">Notes</th> |
| 7107 | </tr> |
| 7108 | </thead> |
| 7109 | <tbody> |
| 7110 | <tr> |
| 7111 | <td align="center">INACTIVE</td> |
| 7112 | <td align="center"></td> |
| 7113 | <td align="center">INACTIVE</td> |
| 7114 | <td align="center">Never changes</td> |
| 7115 | </tr> |
| 7116 | </tbody> |
| 7117 | </table> |
| 7118 | <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> |
| 7119 | <table> |
| 7120 | <thead> |
| 7121 | <tr> |
| 7122 | <th align="center">State</th> |
| 7123 | <th align="center">Transition Cause</th> |
| 7124 | <th align="center">New State</th> |
| 7125 | <th align="center">Notes</th> |
| 7126 | </tr> |
| 7127 | </thead> |
| 7128 | <tbody> |
| 7129 | <tr> |
| 7130 | <td align="center">INACTIVE</td> |
| 7131 | <td align="center">AF_<wbr/>TRIGGER</td> |
| 7132 | <td align="center">ACTIVE_<wbr/>SCAN</td> |
| 7133 | <td align="center">Start AF sweep,<wbr/> Lens now moving</td> |
| 7134 | </tr> |
| 7135 | <tr> |
| 7136 | <td align="center">ACTIVE_<wbr/>SCAN</td> |
| 7137 | <td align="center">AF sweep done</td> |
| 7138 | <td align="center">FOCUSED_<wbr/>LOCKED</td> |
| 7139 | <td align="center">Focused,<wbr/> Lens now locked</td> |
| 7140 | </tr> |
| 7141 | <tr> |
| 7142 | <td align="center">ACTIVE_<wbr/>SCAN</td> |
| 7143 | <td align="center">AF sweep done</td> |
| 7144 | <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| 7145 | <td align="center">Not focused,<wbr/> Lens now locked</td> |
| 7146 | </tr> |
| 7147 | <tr> |
| 7148 | <td align="center">ACTIVE_<wbr/>SCAN</td> |
| 7149 | <td align="center">AF_<wbr/>CANCEL</td> |
| 7150 | <td align="center">INACTIVE</td> |
| 7151 | <td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td> |
| 7152 | </tr> |
| 7153 | <tr> |
| 7154 | <td align="center">FOCUSED_<wbr/>LOCKED</td> |
| 7155 | <td align="center">AF_<wbr/>CANCEL</td> |
| 7156 | <td align="center">INACTIVE</td> |
| 7157 | <td align="center">Cancel/<wbr/>reset AF</td> |
| 7158 | </tr> |
| 7159 | <tr> |
| 7160 | <td align="center">FOCUSED_<wbr/>LOCKED</td> |
| 7161 | <td align="center">AF_<wbr/>TRIGGER</td> |
| 7162 | <td align="center">ACTIVE_<wbr/>SCAN</td> |
| 7163 | <td align="center">Start new sweep,<wbr/> Lens now moving</td> |
| 7164 | </tr> |
| 7165 | <tr> |
| 7166 | <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| 7167 | <td align="center">AF_<wbr/>CANCEL</td> |
| 7168 | <td align="center">INACTIVE</td> |
| 7169 | <td align="center">Cancel/<wbr/>reset AF</td> |
| 7170 | </tr> |
| 7171 | <tr> |
| 7172 | <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| 7173 | <td align="center">AF_<wbr/>TRIGGER</td> |
| 7174 | <td align="center">ACTIVE_<wbr/>SCAN</td> |
| 7175 | <td align="center">Start new sweep,<wbr/> Lens now moving</td> |
| 7176 | </tr> |
| 7177 | <tr> |
| 7178 | <td align="center">Any state</td> |
| 7179 | <td align="center">Mode change</td> |
| 7180 | <td align="center">INACTIVE</td> |
| 7181 | <td align="center"></td> |
| 7182 | </tr> |
| 7183 | </tbody> |
| 7184 | </table> |
| 7185 | <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen |
| 7186 | without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that |
| 7187 | can be skipped in that manner is called a transient state.<wbr/></p> |
| 7188 | <p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the |
| 7189 | state transitions listed in above table,<wbr/> it is also legal for the camera device to skip |
| 7190 | one or more transient states between two results.<wbr/> See below table for examples:</p> |
| 7191 | <table> |
| 7192 | <thead> |
| 7193 | <tr> |
| 7194 | <th align="center">State</th> |
| 7195 | <th align="center">Transition Cause</th> |
| 7196 | <th align="center">New State</th> |
| 7197 | <th align="center">Notes</th> |
| 7198 | </tr> |
| 7199 | </thead> |
| 7200 | <tbody> |
| 7201 | <tr> |
| 7202 | <td align="center">INACTIVE</td> |
| 7203 | <td align="center">AF_<wbr/>TRIGGER</td> |
| 7204 | <td align="center">FOCUSED_<wbr/>LOCKED</td> |
| 7205 | <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td> |
| 7206 | </tr> |
| 7207 | <tr> |
| 7208 | <td align="center">INACTIVE</td> |
| 7209 | <td align="center">AF_<wbr/>TRIGGER</td> |
| 7210 | <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| 7211 | <td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td> |
| 7212 | </tr> |
| 7213 | <tr> |
| 7214 | <td align="center">FOCUSED_<wbr/>LOCKED</td> |
| 7215 | <td align="center">AF_<wbr/>TRIGGER</td> |
| 7216 | <td align="center">FOCUSED_<wbr/>LOCKED</td> |
| 7217 | <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td> |
| 7218 | </tr> |
| 7219 | <tr> |
| 7220 | <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| 7221 | <td align="center">AF_<wbr/>TRIGGER</td> |
| 7222 | <td align="center">FOCUSED_<wbr/>LOCKED</td> |
| 7223 | <td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td> |
| 7224 | </tr> |
| 7225 | </tbody> |
| 7226 | </table> |
| 7227 | <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> |
| 7228 | <table> |
| 7229 | <thead> |
| 7230 | <tr> |
| 7231 | <th align="center">State</th> |
| 7232 | <th align="center">Transition Cause</th> |
| 7233 | <th align="center">New State</th> |
| 7234 | <th align="center">Notes</th> |
| 7235 | </tr> |
| 7236 | </thead> |
| 7237 | <tbody> |
| 7238 | <tr> |
| 7239 | <td align="center">INACTIVE</td> |
| 7240 | <td align="center">Camera device initiates new scan</td> |
| 7241 | <td align="center">PASSIVE_<wbr/>SCAN</td> |
| 7242 | <td align="center">Start AF scan,<wbr/> Lens now moving</td> |
| 7243 | </tr> |
| 7244 | <tr> |
| 7245 | <td align="center">INACTIVE</td> |
| 7246 | <td align="center">AF_<wbr/>TRIGGER</td> |
| 7247 | <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| 7248 | <td align="center">AF state query,<wbr/> Lens now locked</td> |
| 7249 | </tr> |
| 7250 | <tr> |
| 7251 | <td align="center">PASSIVE_<wbr/>SCAN</td> |
| 7252 | <td align="center">Camera device completes current scan</td> |
| 7253 | <td align="center">PASSIVE_<wbr/>FOCUSED</td> |
| 7254 | <td align="center">End AF scan,<wbr/> Lens now locked</td> |
| 7255 | </tr> |
| 7256 | <tr> |
| 7257 | <td align="center">PASSIVE_<wbr/>SCAN</td> |
| 7258 | <td align="center">Camera device fails current scan</td> |
| 7259 | <td align="center">PASSIVE_<wbr/>UNFOCUSED</td> |
| 7260 | <td align="center">End AF scan,<wbr/> Lens now locked</td> |
| 7261 | </tr> |
| 7262 | <tr> |
| 7263 | <td align="center">PASSIVE_<wbr/>SCAN</td> |
| 7264 | <td align="center">AF_<wbr/>TRIGGER</td> |
| 7265 | <td align="center">FOCUSED_<wbr/>LOCKED</td> |
| 7266 | <td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td> |
| 7267 | </tr> |
| 7268 | <tr> |
| 7269 | <td align="center">PASSIVE_<wbr/>SCAN</td> |
| 7270 | <td align="center">AF_<wbr/>TRIGGER</td> |
| 7271 | <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| 7272 | <td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td> |
| 7273 | </tr> |
| 7274 | <tr> |
| 7275 | <td align="center">PASSIVE_<wbr/>SCAN</td> |
| 7276 | <td align="center">AF_<wbr/>CANCEL</td> |
| 7277 | <td align="center">INACTIVE</td> |
| 7278 | <td align="center">Reset lens position,<wbr/> Lens now locked</td> |
| 7279 | </tr> |
| 7280 | <tr> |
| 7281 | <td align="center">PASSIVE_<wbr/>FOCUSED</td> |
| 7282 | <td align="center">Camera device initiates new scan</td> |
| 7283 | <td align="center">PASSIVE_<wbr/>SCAN</td> |
| 7284 | <td align="center">Start AF scan,<wbr/> Lens now moving</td> |
| 7285 | </tr> |
| 7286 | <tr> |
| 7287 | <td align="center">PASSIVE_<wbr/>UNFOCUSED</td> |
| 7288 | <td align="center">Camera device initiates new scan</td> |
| 7289 | <td align="center">PASSIVE_<wbr/>SCAN</td> |
| 7290 | <td align="center">Start AF scan,<wbr/> Lens now moving</td> |
| 7291 | </tr> |
| 7292 | <tr> |
| 7293 | <td align="center">PASSIVE_<wbr/>FOCUSED</td> |
| 7294 | <td align="center">AF_<wbr/>TRIGGER</td> |
| 7295 | <td align="center">FOCUSED_<wbr/>LOCKED</td> |
| 7296 | <td align="center">Immediate transition,<wbr/> lens now locked</td> |
| 7297 | </tr> |
| 7298 | <tr> |
| 7299 | <td align="center">PASSIVE_<wbr/>UNFOCUSED</td> |
| 7300 | <td align="center">AF_<wbr/>TRIGGER</td> |
| 7301 | <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| 7302 | <td align="center">Immediate transition,<wbr/> lens now locked</td> |
| 7303 | </tr> |
| 7304 | <tr> |
| 7305 | <td align="center">FOCUSED_<wbr/>LOCKED</td> |
| 7306 | <td align="center">AF_<wbr/>TRIGGER</td> |
| 7307 | <td align="center">FOCUSED_<wbr/>LOCKED</td> |
| 7308 | <td align="center">No effect</td> |
| 7309 | </tr> |
| 7310 | <tr> |
| 7311 | <td align="center">FOCUSED_<wbr/>LOCKED</td> |
| 7312 | <td align="center">AF_<wbr/>CANCEL</td> |
| 7313 | <td align="center">INACTIVE</td> |
| 7314 | <td align="center">Restart AF scan</td> |
| 7315 | </tr> |
| 7316 | <tr> |
| 7317 | <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| 7318 | <td align="center">AF_<wbr/>TRIGGER</td> |
| 7319 | <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| 7320 | <td align="center">No effect</td> |
| 7321 | </tr> |
| 7322 | <tr> |
| 7323 | <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| 7324 | <td align="center">AF_<wbr/>CANCEL</td> |
| 7325 | <td align="center">INACTIVE</td> |
| 7326 | <td align="center">Restart AF scan</td> |
| 7327 | </tr> |
| 7328 | </tbody> |
| 7329 | </table> |
| 7330 | <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> |
| 7331 | <table> |
| 7332 | <thead> |
| 7333 | <tr> |
| 7334 | <th align="center">State</th> |
| 7335 | <th align="center">Transition Cause</th> |
| 7336 | <th align="center">New State</th> |
| 7337 | <th align="center">Notes</th> |
| 7338 | </tr> |
| 7339 | </thead> |
| 7340 | <tbody> |
| 7341 | <tr> |
| 7342 | <td align="center">INACTIVE</td> |
| 7343 | <td align="center">Camera device initiates new scan</td> |
| 7344 | <td align="center">PASSIVE_<wbr/>SCAN</td> |
| 7345 | <td align="center">Start AF scan,<wbr/> Lens now moving</td> |
| 7346 | </tr> |
| 7347 | <tr> |
| 7348 | <td align="center">INACTIVE</td> |
| 7349 | <td align="center">AF_<wbr/>TRIGGER</td> |
| 7350 | <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| 7351 | <td align="center">AF state query,<wbr/> Lens now locked</td> |
| 7352 | </tr> |
| 7353 | <tr> |
| 7354 | <td align="center">PASSIVE_<wbr/>SCAN</td> |
| 7355 | <td align="center">Camera device completes current scan</td> |
| 7356 | <td align="center">PASSIVE_<wbr/>FOCUSED</td> |
| 7357 | <td align="center">End AF scan,<wbr/> Lens now locked</td> |
| 7358 | </tr> |
| 7359 | <tr> |
| 7360 | <td align="center">PASSIVE_<wbr/>SCAN</td> |
| 7361 | <td align="center">Camera device fails current scan</td> |
| 7362 | <td align="center">PASSIVE_<wbr/>UNFOCUSED</td> |
| 7363 | <td align="center">End AF scan,<wbr/> Lens now locked</td> |
| 7364 | </tr> |
| 7365 | <tr> |
| 7366 | <td align="center">PASSIVE_<wbr/>SCAN</td> |
| 7367 | <td align="center">AF_<wbr/>TRIGGER</td> |
| 7368 | <td align="center">FOCUSED_<wbr/>LOCKED</td> |
| 7369 | <td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td> |
| 7370 | </tr> |
| 7371 | <tr> |
| 7372 | <td align="center">PASSIVE_<wbr/>SCAN</td> |
| 7373 | <td align="center">AF_<wbr/>TRIGGER</td> |
| 7374 | <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| 7375 | <td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td> |
| 7376 | </tr> |
| 7377 | <tr> |
| 7378 | <td align="center">PASSIVE_<wbr/>SCAN</td> |
| 7379 | <td align="center">AF_<wbr/>CANCEL</td> |
| 7380 | <td align="center">INACTIVE</td> |
| 7381 | <td align="center">Reset lens position,<wbr/> Lens now locked</td> |
| 7382 | </tr> |
| 7383 | <tr> |
| 7384 | <td align="center">PASSIVE_<wbr/>FOCUSED</td> |
| 7385 | <td align="center">Camera device initiates new scan</td> |
| 7386 | <td align="center">PASSIVE_<wbr/>SCAN</td> |
| 7387 | <td align="center">Start AF scan,<wbr/> Lens now moving</td> |
| 7388 | </tr> |
| 7389 | <tr> |
| 7390 | <td align="center">PASSIVE_<wbr/>UNFOCUSED</td> |
| 7391 | <td align="center">Camera device initiates new scan</td> |
| 7392 | <td align="center">PASSIVE_<wbr/>SCAN</td> |
| 7393 | <td align="center">Start AF scan,<wbr/> Lens now moving</td> |
| 7394 | </tr> |
| 7395 | <tr> |
| 7396 | <td align="center">PASSIVE_<wbr/>FOCUSED</td> |
| 7397 | <td align="center">AF_<wbr/>TRIGGER</td> |
| 7398 | <td align="center">FOCUSED_<wbr/>LOCKED</td> |
| 7399 | <td align="center">Immediate trans.<wbr/> Lens now locked</td> |
| 7400 | </tr> |
| 7401 | <tr> |
| 7402 | <td align="center">PASSIVE_<wbr/>UNFOCUSED</td> |
| 7403 | <td align="center">AF_<wbr/>TRIGGER</td> |
| 7404 | <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| 7405 | <td align="center">Immediate trans.<wbr/> Lens now locked</td> |
| 7406 | </tr> |
| 7407 | <tr> |
| 7408 | <td align="center">FOCUSED_<wbr/>LOCKED</td> |
| 7409 | <td align="center">AF_<wbr/>TRIGGER</td> |
| 7410 | <td align="center">FOCUSED_<wbr/>LOCKED</td> |
| 7411 | <td align="center">No effect</td> |
| 7412 | </tr> |
| 7413 | <tr> |
| 7414 | <td align="center">FOCUSED_<wbr/>LOCKED</td> |
| 7415 | <td align="center">AF_<wbr/>CANCEL</td> |
| 7416 | <td align="center">INACTIVE</td> |
| 7417 | <td align="center">Restart AF scan</td> |
| 7418 | </tr> |
| 7419 | <tr> |
| 7420 | <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| 7421 | <td align="center">AF_<wbr/>TRIGGER</td> |
| 7422 | <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| 7423 | <td align="center">No effect</td> |
| 7424 | </tr> |
| 7425 | <tr> |
| 7426 | <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| 7427 | <td align="center">AF_<wbr/>CANCEL</td> |
| 7428 | <td align="center">INACTIVE</td> |
| 7429 | <td align="center">Restart AF scan</td> |
| 7430 | </tr> |
| 7431 | </tbody> |
| 7432 | </table> |
| 7433 | <p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO |
| 7434 | (AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the |
| 7435 | camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger |
| 7436 | will be evaluated in the context of the new mode in the request.<wbr/> |
| 7437 | See below table for examples:</p> |
| 7438 | <table> |
| 7439 | <thead> |
| 7440 | <tr> |
| 7441 | <th align="center">State</th> |
| 7442 | <th align="center">Transition Cause</th> |
| 7443 | <th align="center">New State</th> |
| 7444 | <th align="center">Notes</th> |
| 7445 | </tr> |
| 7446 | </thead> |
| 7447 | <tbody> |
| 7448 | <tr> |
| 7449 | <td align="center">any state</td> |
| 7450 | <td align="center">CAF-->AUTO mode switch</td> |
| 7451 | <td align="center">INACTIVE</td> |
| 7452 | <td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td> |
| 7453 | </tr> |
| 7454 | <tr> |
| 7455 | <td align="center">any state</td> |
| 7456 | <td align="center">CAF-->AUTO mode switch with AF_<wbr/>TRIGGER</td> |
| 7457 | <td align="center">trigger-reachable states from INACTIVE</td> |
| 7458 | <td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td> |
| 7459 | </tr> |
| 7460 | <tr> |
| 7461 | <td align="center">any state</td> |
| 7462 | <td align="center">AUTO-->CAF mode switch</td> |
| 7463 | <td align="center">passively reachable states from INACTIVE</td> |
| 7464 | <td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td> |
| 7465 | </tr> |
| 7466 | </tbody> |
| 7467 | </table> |
| 7468 | </td> |
| 7469 | </tr> |
| 7470 | |
| 7471 | |
| 7472 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 7473 | <!-- end of entry --> |
| 7474 | |
| 7475 | |
| 7476 | <tr class="entry" id="dynamic_android.control.afTriggerId"> |
| 7477 | <td class="entry_name |
| 7478 | entry_name_deprecated |
| 7479 | " rowspan="3"> |
| 7480 | android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id |
| 7481 | </td> |
| 7482 | <td class="entry_type"> |
| 7483 | <span class="entry_type_name">int32</span> |
| 7484 | |
| 7485 | <span class="entry_type_visibility"> [system]</span> |
| 7486 | |
| 7487 | |
| 7488 | |
| 7489 | <span class="entry_type_deprecated">[deprecated] </span> |
| 7490 | |
| 7491 | |
| 7492 | |
| 7493 | </td> <!-- entry_type --> |
| 7494 | |
| 7495 | <td class="entry_description"> |
| 7496 | <p>The ID sent with the latest |
| 7497 | CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p> |
| 7498 | </td> |
| 7499 | |
| 7500 | <td class="entry_units"> |
| 7501 | </td> |
| 7502 | |
| 7503 | <td class="entry_range"> |
| 7504 | <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> |
| 7505 | </td> |
| 7506 | |
| 7507 | <td class="entry_tags"> |
| 7508 | </td> |
| 7509 | |
| 7510 | </tr> |
| 7511 | <tr class="entries_header"> |
| 7512 | <th class="th_details" colspan="5">Details</th> |
| 7513 | </tr> |
| 7514 | <tr class="entry_cont"> |
| 7515 | <td class="entry_details" colspan="5"> |
| 7516 | <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger |
| 7517 | received yet by HAL.<wbr/> Always updated even if AF algorithm |
| 7518 | ignores the trigger</p> |
| 7519 | </td> |
| 7520 | </tr> |
| 7521 | |
| 7522 | |
| 7523 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 7524 | <!-- end of entry --> |
| 7525 | |
| 7526 | |
| 7527 | <tr class="entry" id="dynamic_android.control.awbLock"> |
| 7528 | <td class="entry_name |
| 7529 | " rowspan="3"> |
| 7530 | android.<wbr/>control.<wbr/>awb<wbr/>Lock |
| 7531 | </td> |
| 7532 | <td class="entry_type"> |
| 7533 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 7534 | |
| 7535 | <span class="entry_type_visibility"> [public as boolean]</span> |
| 7536 | |
| 7537 | |
| 7538 | <span class="entry_type_hwlevel">[legacy] </span> |
| 7539 | |
| 7540 | |
| 7541 | |
| 7542 | <ul class="entry_type_enum"> |
| 7543 | <li> |
| 7544 | <span class="entry_type_enum_name">OFF</span> |
| 7545 | <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB |
| 7546 | algorithm is free to update its parameters if in AUTO |
| 7547 | mode.<wbr/></p></span> |
| 7548 | </li> |
| 7549 | <li> |
| 7550 | <span class="entry_type_enum_name">ON</span> |
| 7551 | <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB |
| 7552 | algorithm will not update its parameters while the lock |
| 7553 | is active.<wbr/></p></span> |
| 7554 | </li> |
| 7555 | </ul> |
| 7556 | |
| 7557 | </td> <!-- entry_type --> |
| 7558 | |
| 7559 | <td class="entry_description"> |
| 7560 | <p>Whether auto-white balance (AWB) is currently locked to its |
| 7561 | latest calculated values.<wbr/></p> |
| 7562 | </td> |
| 7563 | |
| 7564 | <td class="entry_units"> |
| 7565 | </td> |
| 7566 | |
| 7567 | <td class="entry_range"> |
| 7568 | </td> |
| 7569 | |
| 7570 | <td class="entry_tags"> |
| 7571 | <ul class="entry_tags"> |
| 7572 | <li><a href="#tag_BC">BC</a></li> |
| 7573 | </ul> |
| 7574 | </td> |
| 7575 | |
| 7576 | </tr> |
| 7577 | <tr class="entries_header"> |
| 7578 | <th class="th_details" colspan="5">Details</th> |
| 7579 | </tr> |
| 7580 | <tr class="entry_cont"> |
| 7581 | <td class="entry_details" colspan="5"> |
| 7582 | <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/> |
| 7583 | and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p> |
| 7584 | <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that |
| 7585 | get locked do not necessarily correspond to the settings that were present in the |
| 7586 | latest capture result received from the camera device,<wbr/> since additional captures |
| 7587 | and AWB updates may have occurred even before the result was sent out.<wbr/> If an |
| 7588 | application is switching between automatic and manual control and wishes to eliminate |
| 7589 | any flicker during the switch,<wbr/> the following procedure is recommended:</p> |
| 7590 | <ol> |
| 7591 | <li>Starting in auto-AWB mode:</li> |
| 7592 | <li>Lock AWB</li> |
| 7593 | <li>Wait for the first result to be output that has the AWB locked</li> |
| 7594 | <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li> |
| 7595 | <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li> |
| 7596 | </ol> |
| 7597 | <p>Note that AWB lock is only meaningful when |
| 7598 | <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/> |
| 7599 | AWB is already fixed to a specific setting.<wbr/></p> |
| 7600 | <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p> |
| 7601 | </td> |
| 7602 | </tr> |
| 7603 | |
| 7604 | |
| 7605 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 7606 | <!-- end of entry --> |
| 7607 | |
| 7608 | |
| 7609 | <tr class="entry" id="dynamic_android.control.awbMode"> |
| 7610 | <td class="entry_name |
| 7611 | " rowspan="3"> |
| 7612 | android.<wbr/>control.<wbr/>awb<wbr/>Mode |
| 7613 | </td> |
| 7614 | <td class="entry_type"> |
| 7615 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 7616 | |
| 7617 | <span class="entry_type_visibility"> [public]</span> |
| 7618 | |
| 7619 | |
| 7620 | <span class="entry_type_hwlevel">[legacy] </span> |
| 7621 | |
| 7622 | |
| 7623 | |
| 7624 | <ul class="entry_type_enum"> |
| 7625 | <li> |
| 7626 | <span class="entry_type_enum_name">OFF</span> |
| 7627 | <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p> |
| 7628 | <p>The application-selected color transform matrix |
| 7629 | (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains |
| 7630 | (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera |
| 7631 | device for manual white balance control.<wbr/></p></span> |
| 7632 | </li> |
| 7633 | <li> |
| 7634 | <span class="entry_type_enum_name">AUTO</span> |
| 7635 | <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p> |
| 7636 | <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> |
| 7637 | and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> |
| 7638 | For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the |
| 7639 | values used by the camera device for the transform and gains |
| 7640 | will be available in the capture result for this request.<wbr/></p></span> |
| 7641 | </li> |
| 7642 | <li> |
| 7643 | <span class="entry_type_enum_name">INCANDESCENT</span> |
| 7644 | <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; |
| 7645 | the camera device uses incandescent light as the assumed scene |
| 7646 | illumination for white balance.<wbr/></p> |
| 7647 | <p>While the exact white balance transforms are up to the |
| 7648 | camera device,<wbr/> they will approximately match the CIE |
| 7649 | standard illuminant A.<wbr/></p> |
| 7650 | <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> |
| 7651 | and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> |
| 7652 | For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the |
| 7653 | values used by the camera device for the transform and gains |
| 7654 | will be available in the capture result for this request.<wbr/></p></span> |
| 7655 | </li> |
| 7656 | <li> |
| 7657 | <span class="entry_type_enum_name">FLUORESCENT</span> |
| 7658 | <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; |
| 7659 | the camera device uses fluorescent light as the assumed scene |
| 7660 | illumination for white balance.<wbr/></p> |
| 7661 | <p>While the exact white balance transforms are up to the |
| 7662 | camera device,<wbr/> they will approximately match the CIE |
| 7663 | standard illuminant F2.<wbr/></p> |
| 7664 | <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> |
| 7665 | and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> |
| 7666 | For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the |
| 7667 | values used by the camera device for the transform and gains |
| 7668 | will be available in the capture result for this request.<wbr/></p></span> |
| 7669 | </li> |
| 7670 | <li> |
| 7671 | <span class="entry_type_enum_name">WARM_FLUORESCENT</span> |
| 7672 | <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; |
| 7673 | the camera device uses warm fluorescent light as the assumed scene |
| 7674 | illumination for white balance.<wbr/></p> |
| 7675 | <p>While the exact white balance transforms are up to the |
| 7676 | camera device,<wbr/> they will approximately match the CIE |
| 7677 | standard illuminant F4.<wbr/></p> |
| 7678 | <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> |
| 7679 | and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> |
| 7680 | For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the |
| 7681 | values used by the camera device for the transform and gains |
| 7682 | will be available in the capture result for this request.<wbr/></p></span> |
| 7683 | </li> |
| 7684 | <li> |
| 7685 | <span class="entry_type_enum_name">DAYLIGHT</span> |
| 7686 | <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; |
| 7687 | the camera device uses daylight light as the assumed scene |
| 7688 | illumination for white balance.<wbr/></p> |
| 7689 | <p>While the exact white balance transforms are up to the |
| 7690 | camera device,<wbr/> they will approximately match the CIE |
| 7691 | standard illuminant D65.<wbr/></p> |
| 7692 | <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> |
| 7693 | and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> |
| 7694 | For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the |
| 7695 | values used by the camera device for the transform and gains |
| 7696 | will be available in the capture result for this request.<wbr/></p></span> |
| 7697 | </li> |
| 7698 | <li> |
| 7699 | <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span> |
| 7700 | <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; |
| 7701 | the camera device uses cloudy daylight light as the assumed scene |
| 7702 | illumination for white balance.<wbr/></p> |
| 7703 | <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> |
| 7704 | and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> |
| 7705 | For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the |
| 7706 | values used by the camera device for the transform and gains |
| 7707 | will be available in the capture result for this request.<wbr/></p></span> |
| 7708 | </li> |
| 7709 | <li> |
| 7710 | <span class="entry_type_enum_name">TWILIGHT</span> |
| 7711 | <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; |
| 7712 | the camera device uses twilight light as the assumed scene |
| 7713 | illumination for white balance.<wbr/></p> |
| 7714 | <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> |
| 7715 | and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> |
| 7716 | For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the |
| 7717 | values used by the camera device for the transform and gains |
| 7718 | will be available in the capture result for this request.<wbr/></p></span> |
| 7719 | </li> |
| 7720 | <li> |
| 7721 | <span class="entry_type_enum_name">SHADE</span> |
| 7722 | <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; |
| 7723 | the camera device uses shade light as the assumed scene |
| 7724 | illumination for white balance.<wbr/></p> |
| 7725 | <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> |
| 7726 | and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> |
| 7727 | For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the |
| 7728 | values used by the camera device for the transform and gains |
| 7729 | will be available in the capture result for this request.<wbr/></p></span> |
| 7730 | </li> |
| 7731 | </ul> |
| 7732 | |
| 7733 | </td> <!-- entry_type --> |
| 7734 | |
| 7735 | <td class="entry_description"> |
| 7736 | <p>Whether auto-white balance (AWB) is currently setting the color |
| 7737 | transform fields,<wbr/> and what its illumination target |
| 7738 | is.<wbr/></p> |
| 7739 | </td> |
| 7740 | |
| 7741 | <td class="entry_units"> |
| 7742 | </td> |
| 7743 | |
| 7744 | <td class="entry_range"> |
| 7745 | <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p> |
| 7746 | </td> |
| 7747 | |
| 7748 | <td class="entry_tags"> |
| 7749 | <ul class="entry_tags"> |
| 7750 | <li><a href="#tag_BC">BC</a></li> |
| 7751 | </ul> |
| 7752 | </td> |
| 7753 | |
| 7754 | </tr> |
| 7755 | <tr class="entries_header"> |
| 7756 | <th class="th_details" colspan="5">Details</th> |
| 7757 | </tr> |
| 7758 | <tr class="entry_cont"> |
| 7759 | <td class="entry_details" colspan="5"> |
| 7760 | <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p> |
| 7761 | <p>When set to the ON mode,<wbr/> the camera device's auto-white balance |
| 7762 | routine is enabled,<wbr/> overriding the application's selected |
| 7763 | <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 |
| 7764 | <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> |
| 7765 | is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to |
| 7766 | 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 |
| 7767 | setting AE mode to OFF.<wbr/></p> |
| 7768 | <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance |
| 7769 | routine is disabled.<wbr/> The application manually controls the white |
| 7770 | 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> |
| 7771 | and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> |
| 7772 | <p>When set to any other modes,<wbr/> the camera device's auto-white |
| 7773 | balance routine is disabled.<wbr/> The camera device uses each |
| 7774 | particular illumination target for white balance |
| 7775 | adjustment.<wbr/> The application's values for |
| 7776 | <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> |
| 7777 | <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and |
| 7778 | <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p> |
| 7779 | </td> |
| 7780 | </tr> |
| 7781 | |
| 7782 | |
| 7783 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 7784 | <!-- end of entry --> |
| 7785 | |
| 7786 | |
| 7787 | <tr class="entry" id="dynamic_android.control.awbRegions"> |
| 7788 | <td class="entry_name |
| 7789 | " rowspan="5"> |
| 7790 | android.<wbr/>control.<wbr/>awb<wbr/>Regions |
| 7791 | </td> |
| 7792 | <td class="entry_type"> |
| 7793 | <span class="entry_type_name">int32</span> |
| 7794 | <span class="entry_type_container">x</span> |
| 7795 | |
| 7796 | <span class="entry_type_array"> |
| 7797 | 5 x area_count |
| 7798 | </span> |
| 7799 | <span class="entry_type_visibility"> [public as meteringRectangle]</span> |
| 7800 | |
| 7801 | |
| 7802 | |
| 7803 | |
| 7804 | |
| 7805 | |
| 7806 | </td> <!-- entry_type --> |
| 7807 | |
| 7808 | <td class="entry_description"> |
| 7809 | <p>List of metering areas to use for auto-white-balance illuminant |
| 7810 | estimation.<wbr/></p> |
| 7811 | </td> |
| 7812 | |
| 7813 | <td class="entry_units"> |
| 7814 | Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size |
| 7815 | </td> |
| 7816 | |
| 7817 | <td class="entry_range"> |
| 7818 | <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of |
| 7819 | <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> |
| 7820 | </td> |
| 7821 | |
| 7822 | <td class="entry_tags"> |
| 7823 | <ul class="entry_tags"> |
| 7824 | <li><a href="#tag_BC">BC</a></li> |
| 7825 | </ul> |
| 7826 | </td> |
| 7827 | |
| 7828 | </tr> |
| 7829 | <tr class="entries_header"> |
| 7830 | <th class="th_details" colspan="5">Details</th> |
| 7831 | </tr> |
| 7832 | <tr class="entry_cont"> |
| 7833 | <td class="entry_details" colspan="5"> |
| 7834 | <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/> |
| 7835 | Otherwise will always be present.<wbr/></p> |
| 7836 | <p>The maximum number of regions supported by the device is determined by the value |
| 7837 | of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p> |
| 7838 | <p>The coordinate system is based on the active pixel array,<wbr/> |
| 7839 | with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and |
| 7840 | (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> |
| 7841 | <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the |
| 7842 | bottom-right pixel in the active pixel array.<wbr/></p> |
| 7843 | <p>The weight must range from 0 to 1000,<wbr/> and represents a weight |
| 7844 | for every pixel in the area.<wbr/> This means that a large metering area |
| 7845 | with the same weight as a smaller area will have more effect in |
| 7846 | the metering result.<wbr/> Metering areas can partially overlap and the |
| 7847 | camera device will add the weights in the overlap region.<wbr/></p> |
| 7848 | <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if |
| 7849 | only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with |
| 7850 | 0 weight is ignored.<wbr/></p> |
| 7851 | <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the |
| 7852 | camera device.<wbr/></p> |
| 7853 | <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 |
| 7854 | capture result metadata,<wbr/> the camera device will ignore the sections outside the crop |
| 7855 | region and output only the intersection rectangle as the metering region in the result |
| 7856 | metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and |
| 7857 | not reported in the result metadata.<wbr/></p> |
| 7858 | </td> |
| 7859 | </tr> |
| 7860 | |
| 7861 | <tr class="entries_header"> |
| 7862 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 7863 | </tr> |
| 7864 | <tr class="entry_cont"> |
| 7865 | <td class="entry_details" colspan="5"> |
| 7866 | <p>The HAL level representation of MeteringRectangle[] is a |
| 7867 | int[5 * area_<wbr/>count].<wbr/> |
| 7868 | Every five elements represent a metering region of |
| 7869 | (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> |
| 7870 | The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but |
| 7871 | exclusive on xmax and ymax.<wbr/></p> |
| 7872 | </td> |
| 7873 | </tr> |
| 7874 | |
| 7875 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 7876 | <!-- end of entry --> |
| 7877 | |
| 7878 | |
| 7879 | <tr class="entry" id="dynamic_android.control.captureIntent"> |
| 7880 | <td class="entry_name |
| 7881 | " rowspan="3"> |
| 7882 | android.<wbr/>control.<wbr/>capture<wbr/>Intent |
| 7883 | </td> |
| 7884 | <td class="entry_type"> |
| 7885 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 7886 | |
| 7887 | <span class="entry_type_visibility"> [public]</span> |
| 7888 | |
| 7889 | |
| 7890 | <span class="entry_type_hwlevel">[legacy] </span> |
| 7891 | |
| 7892 | |
| 7893 | |
| 7894 | <ul class="entry_type_enum"> |
| 7895 | <li> |
| 7896 | <span class="entry_type_enum_name">CUSTOM</span> |
| 7897 | <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other |
| 7898 | categories.<wbr/> The camera device will default to preview-like |
| 7899 | behavior.<wbr/></p></span> |
| 7900 | </li> |
| 7901 | <li> |
| 7902 | <span class="entry_type_enum_name">PREVIEW</span> |
| 7903 | <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p> |
| 7904 | <p>The precapture trigger may be used to start off a metering |
| 7905 | w/<wbr/>flash sequence.<wbr/></p></span> |
| 7906 | </li> |
| 7907 | <li> |
| 7908 | <span class="entry_type_enum_name">STILL_CAPTURE</span> |
| 7909 | <span class="entry_type_enum_notes"><p>This request is for a still capture-type |
| 7910 | use case.<wbr/></p> |
| 7911 | <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span> |
| 7912 | </li> |
| 7913 | <li> |
| 7914 | <span class="entry_type_enum_name">VIDEO_RECORD</span> |
| 7915 | <span class="entry_type_enum_notes"><p>This request is for a video recording |
| 7916 | use case.<wbr/></p></span> |
| 7917 | </li> |
| 7918 | <li> |
| 7919 | <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span> |
| 7920 | <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still |
| 7921 | image while recording video) use case.<wbr/></p> |
| 7922 | <p>The camera device should take the highest-quality image |
| 7923 | possible (given the other settings) without disrupting the |
| 7924 | frame rate of video recording.<wbr/> </p></span> |
| 7925 | </li> |
| 7926 | <li> |
| 7927 | <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> |
| 7928 | <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the |
| 7929 | application will stream full-resolution images and |
| 7930 | reprocess one or several later for a final |
| 7931 | capture.<wbr/></p></span> |
| 7932 | </li> |
| 7933 | <li> |
| 7934 | <span class="entry_type_enum_name">MANUAL</span> |
| 7935 | <span class="entry_type_enum_notes"><p>This request is for manual capture use case where |
| 7936 | the applications want to directly control the capture parameters.<wbr/></p> |
| 7937 | <p>For example,<wbr/> the application may wish to manually control |
| 7938 | <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> |
| 7939 | </li> |
| 7940 | </ul> |
| 7941 | |
| 7942 | </td> <!-- entry_type --> |
| 7943 | |
| 7944 | <td class="entry_description"> |
| 7945 | <p>Information to the camera device 3A (auto-exposure,<wbr/> |
| 7946 | auto-focus,<wbr/> auto-white balance) routines about the purpose |
| 7947 | of this capture,<wbr/> to help the camera device to decide optimal 3A |
| 7948 | strategy.<wbr/></p> |
| 7949 | </td> |
| 7950 | |
| 7951 | <td class="entry_units"> |
| 7952 | </td> |
| 7953 | |
| 7954 | <td class="entry_range"> |
| 7955 | </td> |
| 7956 | |
| 7957 | <td class="entry_tags"> |
| 7958 | <ul class="entry_tags"> |
| 7959 | <li><a href="#tag_BC">BC</a></li> |
| 7960 | </ul> |
| 7961 | </td> |
| 7962 | |
| 7963 | </tr> |
| 7964 | <tr class="entries_header"> |
| 7965 | <th class="th_details" colspan="5">Details</th> |
| 7966 | </tr> |
| 7967 | <tr class="entry_cont"> |
| 7968 | <td class="entry_details" colspan="5"> |
| 7969 | <p>This control (except for MANUAL) is only effective if |
| 7970 | <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p> |
| 7971 | <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> |
| 7972 | contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if |
| 7973 | <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are |
| 7974 | always supported.<wbr/></p> |
| 7975 | </td> |
| 7976 | </tr> |
| 7977 | |
| 7978 | |
| 7979 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 7980 | <!-- end of entry --> |
| 7981 | |
| 7982 | |
| 7983 | <tr class="entry" id="dynamic_android.control.awbState"> |
| 7984 | <td class="entry_name |
| 7985 | " rowspan="3"> |
| 7986 | android.<wbr/>control.<wbr/>awb<wbr/>State |
| 7987 | </td> |
| 7988 | <td class="entry_type"> |
| 7989 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 7990 | |
| 7991 | <span class="entry_type_visibility"> [public]</span> |
| 7992 | |
| 7993 | |
| 7994 | <span class="entry_type_hwlevel">[limited] </span> |
| 7995 | |
| 7996 | |
| 7997 | |
| 7998 | <ul class="entry_type_enum"> |
| 7999 | <li> |
| 8000 | <span class="entry_type_enum_name">INACTIVE</span> |
| 8001 | <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p> |
| 8002 | <p>When a camera device is opened,<wbr/> it starts in this |
| 8003 | state.<wbr/> This is a transient state,<wbr/> the camera device may |
| 8004 | skip reporting this state in capture |
| 8005 | result.<wbr/></p></span> |
| 8006 | </li> |
| 8007 | <li> |
| 8008 | <span class="entry_type_enum_name">SEARCHING</span> |
| 8009 | <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control |
| 8010 | values for the current scene.<wbr/></p> |
| 8011 | <p>This is a transient state,<wbr/> the camera device |
| 8012 | may skip reporting this state in capture result.<wbr/></p></span> |
| 8013 | </li> |
| 8014 | <li> |
| 8015 | <span class="entry_type_enum_name">CONVERGED</span> |
| 8016 | <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the |
| 8017 | current scene.<wbr/></p></span> |
| 8018 | </li> |
| 8019 | <li> |
| 8020 | <span class="entry_type_enum_name">LOCKED</span> |
| 8021 | <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span> |
| 8022 | </li> |
| 8023 | </ul> |
| 8024 | |
| 8025 | </td> <!-- entry_type --> |
| 8026 | |
| 8027 | <td class="entry_description"> |
| 8028 | <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p> |
| 8029 | </td> |
| 8030 | |
| 8031 | <td class="entry_units"> |
| 8032 | </td> |
| 8033 | |
| 8034 | <td class="entry_range"> |
| 8035 | </td> |
| 8036 | |
| 8037 | <td class="entry_tags"> |
| 8038 | </td> |
| 8039 | |
| 8040 | </tr> |
| 8041 | <tr class="entries_header"> |
| 8042 | <th class="th_details" colspan="5">Details</th> |
| 8043 | </tr> |
| 8044 | <tr class="entry_cont"> |
| 8045 | <td class="entry_details" colspan="5"> |
| 8046 | <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always |
| 8047 | resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> |
| 8048 | 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 |
| 8049 | the algorithm states to INACTIVE.<wbr/></p> |
| 8050 | <p>The camera device can do several state transitions between two results,<wbr/> if it is |
| 8051 | allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in |
| 8052 | a result.<wbr/></p> |
| 8053 | <p>The state in the result is the state for this image (in sync with this image): if |
| 8054 | AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should |
| 8055 | be good to use.<wbr/></p> |
| 8056 | <p>Below are state transition tables for different AWB modes.<wbr/></p> |
| 8057 | <p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p> |
| 8058 | <table> |
| 8059 | <thead> |
| 8060 | <tr> |
| 8061 | <th align="center">State</th> |
| 8062 | <th align="center">Transition Cause</th> |
| 8063 | <th align="center">New State</th> |
| 8064 | <th align="center">Notes</th> |
| 8065 | </tr> |
| 8066 | </thead> |
| 8067 | <tbody> |
| 8068 | <tr> |
| 8069 | <td align="center">INACTIVE</td> |
| 8070 | <td align="center"></td> |
| 8071 | <td align="center">INACTIVE</td> |
| 8072 | <td align="center">Camera device auto white balance algorithm is disabled</td> |
| 8073 | </tr> |
| 8074 | </tbody> |
| 8075 | </table> |
| 8076 | <p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p> |
| 8077 | <table> |
| 8078 | <thead> |
| 8079 | <tr> |
| 8080 | <th align="center">State</th> |
| 8081 | <th align="center">Transition Cause</th> |
| 8082 | <th align="center">New State</th> |
| 8083 | <th align="center">Notes</th> |
| 8084 | </tr> |
| 8085 | </thead> |
| 8086 | <tbody> |
| 8087 | <tr> |
| 8088 | <td align="center">INACTIVE</td> |
| 8089 | <td align="center">Camera device initiates AWB scan</td> |
| 8090 | <td align="center">SEARCHING</td> |
| 8091 | <td align="center">Values changing</td> |
| 8092 | </tr> |
| 8093 | <tr> |
| 8094 | <td align="center">INACTIVE</td> |
| 8095 | <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> |
| 8096 | <td align="center">LOCKED</td> |
| 8097 | <td align="center">Values locked</td> |
| 8098 | </tr> |
| 8099 | <tr> |
| 8100 | <td align="center">SEARCHING</td> |
| 8101 | <td align="center">Camera device finishes AWB scan</td> |
| 8102 | <td align="center">CONVERGED</td> |
| 8103 | <td align="center">Good values,<wbr/> not changing</td> |
| 8104 | </tr> |
| 8105 | <tr> |
| 8106 | <td align="center">SEARCHING</td> |
| 8107 | <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> |
| 8108 | <td align="center">LOCKED</td> |
| 8109 | <td align="center">Values locked</td> |
| 8110 | </tr> |
| 8111 | <tr> |
| 8112 | <td align="center">CONVERGED</td> |
| 8113 | <td align="center">Camera device initiates AWB scan</td> |
| 8114 | <td align="center">SEARCHING</td> |
| 8115 | <td align="center">Values changing</td> |
| 8116 | </tr> |
| 8117 | <tr> |
| 8118 | <td align="center">CONVERGED</td> |
| 8119 | <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> |
| 8120 | <td align="center">LOCKED</td> |
| 8121 | <td align="center">Values locked</td> |
| 8122 | </tr> |
| 8123 | <tr> |
| 8124 | <td align="center">LOCKED</td> |
| 8125 | <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td> |
| 8126 | <td align="center">SEARCHING</td> |
| 8127 | <td align="center">Values not good after unlock</td> |
| 8128 | </tr> |
| 8129 | </tbody> |
| 8130 | </table> |
| 8131 | <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen |
| 8132 | without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that |
| 8133 | can be skipped in that manner is called a transient state.<wbr/></p> |
| 8134 | <p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions |
| 8135 | listed in above table,<wbr/> it is also legal for the camera device to skip one or more |
| 8136 | transient states between two results.<wbr/> See below table for examples:</p> |
| 8137 | <table> |
| 8138 | <thead> |
| 8139 | <tr> |
| 8140 | <th align="center">State</th> |
| 8141 | <th align="center">Transition Cause</th> |
| 8142 | <th align="center">New State</th> |
| 8143 | <th align="center">Notes</th> |
| 8144 | </tr> |
| 8145 | </thead> |
| 8146 | <tbody> |
| 8147 | <tr> |
| 8148 | <td align="center">INACTIVE</td> |
| 8149 | <td align="center">Camera device finished AWB scan</td> |
| 8150 | <td align="center">CONVERGED</td> |
| 8151 | <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td> |
| 8152 | </tr> |
| 8153 | <tr> |
| 8154 | <td align="center">LOCKED</td> |
| 8155 | <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td> |
| 8156 | <td align="center">CONVERGED</td> |
| 8157 | <td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td> |
| 8158 | </tr> |
| 8159 | </tbody> |
| 8160 | </table> |
| 8161 | </td> |
| 8162 | </tr> |
| 8163 | |
| 8164 | |
| 8165 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 8166 | <!-- end of entry --> |
| 8167 | |
| 8168 | |
| 8169 | <tr class="entry" id="dynamic_android.control.effectMode"> |
| 8170 | <td class="entry_name |
| 8171 | " rowspan="3"> |
| 8172 | android.<wbr/>control.<wbr/>effect<wbr/>Mode |
| 8173 | </td> |
| 8174 | <td class="entry_type"> |
| 8175 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 8176 | |
| 8177 | <span class="entry_type_visibility"> [public]</span> |
| 8178 | |
| 8179 | |
| 8180 | <span class="entry_type_hwlevel">[legacy] </span> |
| 8181 | |
| 8182 | |
| 8183 | |
| 8184 | <ul class="entry_type_enum"> |
| 8185 | <li> |
| 8186 | <span class="entry_type_enum_name">OFF</span> |
| 8187 | <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span> |
| 8188 | </li> |
| 8189 | <li> |
| 8190 | <span class="entry_type_enum_name">MONO</span> |
| 8191 | <span class="entry_type_enum_optional">[optional]</span> |
| 8192 | <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into |
| 8193 | a single color.<wbr/></p> |
| 8194 | <p>This will typically be grayscale.<wbr/></p></span> |
| 8195 | </li> |
| 8196 | <li> |
| 8197 | <span class="entry_type_enum_name">NEGATIVE</span> |
| 8198 | <span class="entry_type_enum_optional">[optional]</span> |
| 8199 | <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors |
| 8200 | are inverted.<wbr/></p></span> |
| 8201 | </li> |
| 8202 | <li> |
| 8203 | <span class="entry_type_enum_name">SOLARIZE</span> |
| 8204 | <span class="entry_type_enum_optional">[optional]</span> |
| 8205 | <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the |
| 8206 | image is wholly or partially reversed in |
| 8207 | tone.<wbr/></p></span> |
| 8208 | </li> |
| 8209 | <li> |
| 8210 | <span class="entry_type_enum_name">SEPIA</span> |
| 8211 | <span class="entry_type_enum_optional">[optional]</span> |
| 8212 | <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm |
| 8213 | gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span> |
| 8214 | </li> |
| 8215 | <li> |
| 8216 | <span class="entry_type_enum_name">POSTERIZE</span> |
| 8217 | <span class="entry_type_enum_optional">[optional]</span> |
| 8218 | <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses |
| 8219 | discrete regions of tone rather than a continuous |
| 8220 | gradient of tones.<wbr/></p></span> |
| 8221 | </li> |
| 8222 | <li> |
| 8223 | <span class="entry_type_enum_name">WHITEBOARD</span> |
| 8224 | <span class="entry_type_enum_optional">[optional]</span> |
| 8225 | <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed |
| 8226 | as regions of white,<wbr/> with black or grey details.<wbr/></p></span> |
| 8227 | </li> |
| 8228 | <li> |
| 8229 | <span class="entry_type_enum_name">BLACKBOARD</span> |
| 8230 | <span class="entry_type_enum_optional">[optional]</span> |
| 8231 | <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed |
| 8232 | as regions of black,<wbr/> with white or grey details.<wbr/></p></span> |
| 8233 | </li> |
| 8234 | <li> |
| 8235 | <span class="entry_type_enum_name">AQUA</span> |
| 8236 | <span class="entry_type_enum_optional">[optional]</span> |
| 8237 | <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span> |
| 8238 | </li> |
| 8239 | </ul> |
| 8240 | |
| 8241 | </td> <!-- entry_type --> |
| 8242 | |
| 8243 | <td class="entry_description"> |
| 8244 | <p>A special color effect to apply.<wbr/></p> |
| 8245 | </td> |
| 8246 | |
| 8247 | <td class="entry_units"> |
| 8248 | </td> |
| 8249 | |
| 8250 | <td class="entry_range"> |
| 8251 | <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p> |
| 8252 | </td> |
| 8253 | |
| 8254 | <td class="entry_tags"> |
| 8255 | <ul class="entry_tags"> |
| 8256 | <li><a href="#tag_BC">BC</a></li> |
| 8257 | </ul> |
| 8258 | </td> |
| 8259 | |
| 8260 | </tr> |
| 8261 | <tr class="entries_header"> |
| 8262 | <th class="th_details" colspan="5">Details</th> |
| 8263 | </tr> |
| 8264 | <tr class="entry_cont"> |
| 8265 | <td class="entry_details" colspan="5"> |
| 8266 | <p>When this mode is set,<wbr/> a color effect will be applied |
| 8267 | to images produced by the camera device.<wbr/> The interpretation |
| 8268 | and implementation of these color effects is left to the |
| 8269 | implementor of the camera device,<wbr/> and should not be |
| 8270 | depended on to be consistent (or present) across all |
| 8271 | devices.<wbr/></p> |
| 8272 | </td> |
| 8273 | </tr> |
| 8274 | |
| 8275 | |
| 8276 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 8277 | <!-- end of entry --> |
| 8278 | |
| 8279 | |
| 8280 | <tr class="entry" id="dynamic_android.control.mode"> |
| 8281 | <td class="entry_name |
| 8282 | " rowspan="3"> |
| 8283 | android.<wbr/>control.<wbr/>mode |
| 8284 | </td> |
| 8285 | <td class="entry_type"> |
| 8286 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 8287 | |
| 8288 | <span class="entry_type_visibility"> [public]</span> |
| 8289 | |
| 8290 | |
| 8291 | <span class="entry_type_hwlevel">[legacy] </span> |
| 8292 | |
| 8293 | |
| 8294 | |
| 8295 | <ul class="entry_type_enum"> |
| 8296 | <li> |
| 8297 | <span class="entry_type_enum_name">OFF</span> |
| 8298 | <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p> |
| 8299 | <p>All control by the device's metering and focusing (3A) |
| 8300 | routines is disabled,<wbr/> and no other settings in |
| 8301 | android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that |
| 8302 | <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera |
| 8303 | device to select post-processing values for processing |
| 8304 | blocks that do not allow for manual control,<wbr/> or are not |
| 8305 | exposed by the camera API.<wbr/></p> |
| 8306 | <p>However,<wbr/> the camera device's 3A routines may continue to |
| 8307 | collect statistics and update their internal state so that |
| 8308 | when control is switched to AUTO mode,<wbr/> good control values |
| 8309 | can be immediately applied.<wbr/></p></span> |
| 8310 | </li> |
| 8311 | <li> |
| 8312 | <span class="entry_type_enum_name">AUTO</span> |
| 8313 | <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p> |
| 8314 | <p>Manual control of capture parameters is disabled.<wbr/> All |
| 8315 | controls in android.<wbr/>control.<wbr/>* besides sceneMode take |
| 8316 | effect.<wbr/></p></span> |
| 8317 | </li> |
| 8318 | <li> |
| 8319 | <span class="entry_type_enum_name">USE_SCENE_MODE</span> |
| 8320 | <span class="entry_type_enum_optional">[optional]</span> |
| 8321 | <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p> |
| 8322 | <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and |
| 8323 | control.<wbr/>afMode controls; the camera device will ignore |
| 8324 | those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for |
| 8325 | FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/> |
| 8326 | This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/> |
| 8327 | <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a> |
| 8328 | contain some modes other than DISABLED).<wbr/></p></span> |
| 8329 | </li> |
| 8330 | <li> |
| 8331 | <span class="entry_type_enum_name">OFF_KEEP_STATE</span> |
| 8332 | <span class="entry_type_enum_optional">[optional]</span> |
| 8333 | <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be |
| 8334 | used by camera device background auto-exposure,<wbr/> auto-white balance and |
| 8335 | auto-focus algorithms (3A) to update their statistics.<wbr/></p> |
| 8336 | <p>Specifically,<wbr/> the 3A routines are locked to the last |
| 8337 | values set from a request with AUTO,<wbr/> OFF,<wbr/> or |
| 8338 | USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates |
| 8339 | collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be |
| 8340 | discarded by the camera device.<wbr/></p></span> |
| 8341 | </li> |
| 8342 | </ul> |
| 8343 | |
| 8344 | </td> <!-- entry_type --> |
| 8345 | |
| 8346 | <td class="entry_description"> |
| 8347 | <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control |
| 8348 | routines.<wbr/></p> |
| 8349 | </td> |
| 8350 | |
| 8351 | <td class="entry_units"> |
| 8352 | </td> |
| 8353 | |
| 8354 | <td class="entry_range"> |
| 8355 | <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p> |
| 8356 | </td> |
| 8357 | |
| 8358 | <td class="entry_tags"> |
| 8359 | <ul class="entry_tags"> |
| 8360 | <li><a href="#tag_BC">BC</a></li> |
| 8361 | </ul> |
| 8362 | </td> |
| 8363 | |
| 8364 | </tr> |
| 8365 | <tr class="entries_header"> |
| 8366 | <th class="th_details" colspan="5">Details</th> |
| 8367 | </tr> |
| 8368 | <tr class="entry_cont"> |
| 8369 | <td class="entry_details" colspan="5"> |
| 8370 | <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control |
| 8371 | by the camera device is disabled.<wbr/> The application must set the fields for |
| 8372 | capture parameters itself.<wbr/></p> |
| 8373 | <p>When set to AUTO,<wbr/> the individual algorithm controls in |
| 8374 | 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> |
| 8375 | <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in |
| 8376 | android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements |
| 8377 | one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY) |
| 8378 | as it wishes.<wbr/> The camera device scene mode 3A settings are provided by |
| 8379 | <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p> |
| 8380 | <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference |
| 8381 | is that this frame will not be used by camera device background 3A statistics |
| 8382 | update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario |
| 8383 | where the application doesn't want a 3A manual control capture to affect |
| 8384 | the subsequent auto 3A capture results.<wbr/></p> |
| 8385 | </td> |
| 8386 | </tr> |
| 8387 | |
| 8388 | |
| 8389 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 8390 | <!-- end of entry --> |
| 8391 | |
| 8392 | |
| 8393 | <tr class="entry" id="dynamic_android.control.sceneMode"> |
| 8394 | <td class="entry_name |
| 8395 | " rowspan="5"> |
| 8396 | android.<wbr/>control.<wbr/>scene<wbr/>Mode |
| 8397 | </td> |
| 8398 | <td class="entry_type"> |
| 8399 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 8400 | |
| 8401 | <span class="entry_type_visibility"> [public]</span> |
| 8402 | |
| 8403 | |
| 8404 | <span class="entry_type_hwlevel">[legacy] </span> |
| 8405 | |
| 8406 | |
| 8407 | |
| 8408 | <ul class="entry_type_enum"> |
| 8409 | <li> |
| 8410 | <span class="entry_type_enum_name">DISABLED</span> |
| 8411 | <span class="entry_type_enum_value">0</span> |
| 8412 | <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span> |
| 8413 | </li> |
| 8414 | <li> |
| 8415 | <span class="entry_type_enum_name">FACE_PRIORITY</span> |
| 8416 | <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face |
| 8417 | detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and |
| 8418 | auto-exposure routines.<wbr/></p> |
| 8419 | <p>If face detection statistics are disabled |
| 8420 | (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/> |
| 8421 | this should still operate correctly (but will not return |
| 8422 | face detection statistics to the framework).<wbr/></p> |
| 8423 | <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> |
| 8424 | <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> |
| 8425 | remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span> |
| 8426 | </li> |
| 8427 | <li> |
| 8428 | <span class="entry_type_enum_name">ACTION</span> |
| 8429 | <span class="entry_type_enum_optional">[optional]</span> |
| 8430 | <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p> |
| 8431 | <p>Similar to SPORTS.<wbr/></p></span> |
| 8432 | </li> |
| 8433 | <li> |
| 8434 | <span class="entry_type_enum_name">PORTRAIT</span> |
| 8435 | <span class="entry_type_enum_optional">[optional]</span> |
| 8436 | <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span> |
| 8437 | </li> |
| 8438 | <li> |
| 8439 | <span class="entry_type_enum_name">LANDSCAPE</span> |
| 8440 | <span class="entry_type_enum_optional">[optional]</span> |
| 8441 | <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span> |
| 8442 | </li> |
| 8443 | <li> |
| 8444 | <span class="entry_type_enum_name">NIGHT</span> |
| 8445 | <span class="entry_type_enum_optional">[optional]</span> |
| 8446 | <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span> |
| 8447 | </li> |
| 8448 | <li> |
| 8449 | <span class="entry_type_enum_name">NIGHT_PORTRAIT</span> |
| 8450 | <span class="entry_type_enum_optional">[optional]</span> |
| 8451 | <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light |
| 8452 | settings.<wbr/></p></span> |
| 8453 | </li> |
| 8454 | <li> |
| 8455 | <span class="entry_type_enum_name">THEATRE</span> |
| 8456 | <span class="entry_type_enum_optional">[optional]</span> |
| 8457 | <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must |
| 8458 | remain off.<wbr/></p></span> |
| 8459 | </li> |
| 8460 | <li> |
| 8461 | <span class="entry_type_enum_name">BEACH</span> |
| 8462 | <span class="entry_type_enum_optional">[optional]</span> |
| 8463 | <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span> |
| 8464 | </li> |
| 8465 | <li> |
| 8466 | <span class="entry_type_enum_name">SNOW</span> |
| 8467 | <span class="entry_type_enum_optional">[optional]</span> |
| 8468 | <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span> |
| 8469 | </li> |
| 8470 | <li> |
| 8471 | <span class="entry_type_enum_name">SUNSET</span> |
| 8472 | <span class="entry_type_enum_optional">[optional]</span> |
| 8473 | <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span> |
| 8474 | </li> |
| 8475 | <li> |
| 8476 | <span class="entry_type_enum_name">STEADYPHOTO</span> |
| 8477 | <span class="entry_type_enum_optional">[optional]</span> |
| 8478 | <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of |
| 8479 | device motion (for example: due to hand shake).<wbr/></p></span> |
| 8480 | </li> |
| 8481 | <li> |
| 8482 | <span class="entry_type_enum_name">FIREWORKS</span> |
| 8483 | <span class="entry_type_enum_optional">[optional]</span> |
| 8484 | <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span> |
| 8485 | </li> |
| 8486 | <li> |
| 8487 | <span class="entry_type_enum_name">SPORTS</span> |
| 8488 | <span class="entry_type_enum_optional">[optional]</span> |
| 8489 | <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p> |
| 8490 | <p>Similar to ACTION.<wbr/></p></span> |
| 8491 | </li> |
| 8492 | <li> |
| 8493 | <span class="entry_type_enum_name">PARTY</span> |
| 8494 | <span class="entry_type_enum_optional">[optional]</span> |
| 8495 | <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving |
| 8496 | people.<wbr/></p></span> |
| 8497 | </li> |
| 8498 | <li> |
| 8499 | <span class="entry_type_enum_name">CANDLELIGHT</span> |
| 8500 | <span class="entry_type_enum_optional">[optional]</span> |
| 8501 | <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source |
| 8502 | is a flame.<wbr/></p></span> |
| 8503 | </li> |
| 8504 | <li> |
| 8505 | <span class="entry_type_enum_name">BARCODE</span> |
| 8506 | <span class="entry_type_enum_optional">[optional]</span> |
| 8507 | <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode |
| 8508 | for use by camera applications that wish to read the |
| 8509 | barcode value.<wbr/></p></span> |
| 8510 | </li> |
| 8511 | <li> |
| 8512 | <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span> |
| 8513 | <span class="entry_type_enum_deprecated">[deprecated]</span> |
| 8514 | <span class="entry_type_enum_optional">[optional]</span> |
| 8515 | <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> |
| 8516 | and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a> |
| 8517 | for high speed video recording.<wbr/></p> |
| 8518 | <p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p> |
| 8519 | <p>The supported high speed video sizes and fps ranges are specified in |
| 8520 | <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired |
| 8521 | output frame rates,<wbr/> the application is only allowed to select video size |
| 8522 | and fps range combinations listed in this static metadata.<wbr/> The fps range |
| 8523 | can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p> |
| 8524 | <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to |
| 8525 | ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode |
| 8526 | controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture |
| 8527 | and post-processing parameters is possible.<wbr/> All other controls operate the |
| 8528 | same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other |
| 8529 | android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> |
| 8530 | <ul> |
| 8531 | <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> |
| 8532 | <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> |
| 8533 | <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> |
| 8534 | <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> |
| 8535 | <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> |
| 8536 | <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> |
| 8537 | <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> |
| 8538 | <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> |
| 8539 | <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> |
| 8540 | <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> |
| 8541 | </ul> |
| 8542 | <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> |
| 8543 | <ul> |
| 8544 | <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> |
| 8545 | <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> |
| 8546 | <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> |
| 8547 | <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li> |
| 8548 | </ul> |
| 8549 | <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may |
| 8550 | be lower than what camera can output,<wbr/> depending on the destination Surfaces for |
| 8551 | the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> |
| 8552 | the application need check if the video encoder is capable of supporting the |
| 8553 | high frame rate for a given video size,<wbr/> or it will end up with lower recording |
| 8554 | frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame |
| 8555 | rate will be bounded by the screen refresh rate.<wbr/></p> |
| 8556 | <p>The camera device will only support up to 2 output high speed streams |
| 8557 | (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>) |
| 8558 | in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p> |
| 8559 | <ul> |
| 8560 | <li>The application created no more than maxNumHighSpeedStreams processed non-stalling |
| 8561 | format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as |
| 8562 | 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> |
| 8563 | <li>The stream sizes are selected from the sizes reported by |
| 8564 | <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li> |
| 8565 | <li>No processed non-stalling or raw streams are configured.<wbr/></li> |
| 8566 | </ul> |
| 8567 | <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and |
| 8568 | <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/> |
| 8569 | the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/> |
| 8570 | and the returned capture result metadata will give the fps range choosen |
| 8571 | by the camera device.<wbr/></p> |
| 8572 | <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor |
| 8573 | reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that |
| 8574 | the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span> |
| 8575 | </li> |
| 8576 | <li> |
| 8577 | <span class="entry_type_enum_name">HDR</span> |
| 8578 | <span class="entry_type_enum_optional">[optional]</span> |
| 8579 | <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p> |
| 8580 | <p>In this scene mode,<wbr/> the camera device captures images |
| 8581 | that keep a larger range of scene illumination levels |
| 8582 | visible in the final image.<wbr/> For example,<wbr/> when taking a |
| 8583 | picture of a object in front of a bright window,<wbr/> both |
| 8584 | the object and the scene through the window may be |
| 8585 | visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/> |
| 8586 | one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/> |
| 8587 | HDR mode generally takes much longer to capture a single |
| 8588 | image,<wbr/> has no user control,<wbr/> and may have other artifacts |
| 8589 | depending on the HDR method used.<wbr/></p> |
| 8590 | <p>Therefore,<wbr/> HDR captures operate at a much slower rate |
| 8591 | than regular captures.<wbr/></p> |
| 8592 | <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request |
| 8593 | is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of |
| 8594 | STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image |
| 8595 | using a high dynamic range capture technique.<wbr/> On LEGACY |
| 8596 | devices,<wbr/> captures that target a JPEG-format output will |
| 8597 | be captured with HDR,<wbr/> and the capture intent is not |
| 8598 | relevant.<wbr/></p> |
| 8599 | <p>The HDR capture may involve the device capturing a burst |
| 8600 | of images internally and combining them into one,<wbr/> or it |
| 8601 | may involve the device using specialized high dynamic |
| 8602 | range capture hardware.<wbr/> In all cases,<wbr/> a single image is |
| 8603 | produced in response to a capture request submitted |
| 8604 | while in HDR mode.<wbr/></p> |
| 8605 | <p>Since substantial post-processing is generally needed to |
| 8606 | produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG |
| 8607 | outputs are supported for LIMITED/<wbr/>FULL device HDR |
| 8608 | captures,<wbr/> and only JPEG outputs are supported for LEGACY |
| 8609 | HDR captures.<wbr/> Using a RAW output for HDR capture is not |
| 8610 | supported.<wbr/></p> |
| 8611 | <p>Some devices may also support always-on HDR,<wbr/> which |
| 8612 | applies HDR processing at full frame rate.<wbr/> For these |
| 8613 | devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also |
| 8614 | produce an HDR output with no frame rate impact compared |
| 8615 | to normal operation,<wbr/> though the quality may be lower |
| 8616 | than for STILL_<wbr/>CAPTURE intents.<wbr/></p> |
| 8617 | <p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types |
| 8618 | or capture intents,<wbr/> the images captured will be as if |
| 8619 | the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span> |
| 8620 | </li> |
| 8621 | <li> |
| 8622 | <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span> |
| 8623 | <span class="entry_type_enum_optional">[optional]</span> |
| 8624 | <span class="entry_type_enum_hidden">[hidden]</span> |
| 8625 | <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera |
| 8626 | device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>) |
| 8627 | under low light conditions.<wbr/></p> |
| 8628 | <p>The camera device may be tuned to expose the images in a reduced |
| 8629 | sensitivity range to produce the best quality images.<wbr/> For example,<wbr/> |
| 8630 | 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/> |
| 8631 | the camera device auto-exposure routine tuning process may limit the actual |
| 8632 | exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't |
| 8633 | exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under |
| 8634 | low light may be under-exposed when the sensor max exposure time (bounded by the |
| 8635 | <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 |
| 8636 | ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the |
| 8637 | camera device auto-exposure routine to increase the sensitivity up to the max |
| 8638 | 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 |
| 8639 | dark and the max exposure time is reached.<wbr/> The captured images may be noisier |
| 8640 | compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is |
| 8641 | recommended that the application only use this scene mode when it is capable of |
| 8642 | reducing the noise level of the captured images.<wbr/></p> |
| 8643 | <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> |
| 8644 | <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> |
| 8645 | remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span> |
| 8646 | </li> |
| 8647 | <li> |
| 8648 | <span class="entry_type_enum_name">DEVICE_CUSTOM_START</span> |
| 8649 | <span class="entry_type_enum_optional">[optional]</span> |
| 8650 | <span class="entry_type_enum_hidden">[hidden]</span> |
| 8651 | <span class="entry_type_enum_value">100</span> |
| 8652 | <span class="entry_type_enum_notes"><p>Scene mode values within the range of |
| 8653 | <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific |
| 8654 | customized scene modes.<wbr/></p></span> |
| 8655 | </li> |
| 8656 | <li> |
| 8657 | <span class="entry_type_enum_name">DEVICE_CUSTOM_END</span> |
| 8658 | <span class="entry_type_enum_optional">[optional]</span> |
| 8659 | <span class="entry_type_enum_hidden">[hidden]</span> |
| 8660 | <span class="entry_type_enum_value">127</span> |
| 8661 | <span class="entry_type_enum_notes"><p>Scene mode values within the range of |
| 8662 | <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific |
| 8663 | customized scene modes.<wbr/></p></span> |
| 8664 | </li> |
| 8665 | </ul> |
| 8666 | |
| 8667 | </td> <!-- entry_type --> |
| 8668 | |
| 8669 | <td class="entry_description"> |
| 8670 | <p>Control for which scene mode is currently active.<wbr/></p> |
| 8671 | </td> |
| 8672 | |
| 8673 | <td class="entry_units"> |
| 8674 | </td> |
| 8675 | |
| 8676 | <td class="entry_range"> |
| 8677 | <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p> |
| 8678 | </td> |
| 8679 | |
| 8680 | <td class="entry_tags"> |
| 8681 | <ul class="entry_tags"> |
| 8682 | <li><a href="#tag_BC">BC</a></li> |
| 8683 | </ul> |
| 8684 | </td> |
| 8685 | |
| 8686 | </tr> |
| 8687 | <tr class="entries_header"> |
| 8688 | <th class="th_details" colspan="5">Details</th> |
| 8689 | </tr> |
| 8690 | <tr class="entry_cont"> |
| 8691 | <td class="entry_details" colspan="5"> |
| 8692 | <p>Scene modes are custom camera modes optimized for a certain set of conditions and |
| 8693 | capture settings.<wbr/></p> |
| 8694 | <p>This is the mode that that is active when |
| 8695 | <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 |
| 8696 | 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> |
| 8697 | while in use.<wbr/></p> |
| 8698 | <p>The interpretation and implementation of these scene modes is left |
| 8699 | to the implementor of the camera device.<wbr/> Their behavior will not be |
| 8700 | consistent across all devices,<wbr/> and any given device may only implement |
| 8701 | a subset of these modes.<wbr/></p> |
| 8702 | </td> |
| 8703 | </tr> |
| 8704 | |
| 8705 | <tr class="entries_header"> |
| 8706 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 8707 | </tr> |
| 8708 | <tr class="entry_cont"> |
| 8709 | <td class="entry_details" colspan="5"> |
| 8710 | <p>HAL implementations that include scene modes are expected to provide |
| 8711 | the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> |
| 8712 | <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 |
| 8713 | <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> |
| 8714 | <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/> |
| 8715 | the HAL must list supported video size and fps range in |
| 8716 | <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/> |
| 8717 | 1280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming |
| 8718 | mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture |
| 8719 | requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/> |
| 8720 | This mode is deprecated in HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement |
| 8721 | <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 |
| 8722 | capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> |
| 8723 | </td> |
| 8724 | </tr> |
| 8725 | |
| 8726 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 8727 | <!-- end of entry --> |
| 8728 | |
| 8729 | |
| 8730 | <tr class="entry" id="dynamic_android.control.videoStabilizationMode"> |
| 8731 | <td class="entry_name |
| 8732 | " rowspan="3"> |
| 8733 | android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode |
| 8734 | </td> |
| 8735 | <td class="entry_type"> |
| 8736 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 8737 | |
| 8738 | <span class="entry_type_visibility"> [public]</span> |
| 8739 | |
| 8740 | |
| 8741 | <span class="entry_type_hwlevel">[legacy] </span> |
| 8742 | |
| 8743 | |
| 8744 | |
| 8745 | <ul class="entry_type_enum"> |
| 8746 | <li> |
| 8747 | <span class="entry_type_enum_name">OFF</span> |
| 8748 | <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span> |
| 8749 | </li> |
| 8750 | <li> |
| 8751 | <span class="entry_type_enum_name">ON</span> |
| 8752 | <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span> |
| 8753 | </li> |
| 8754 | </ul> |
| 8755 | |
| 8756 | </td> <!-- entry_type --> |
| 8757 | |
| 8758 | <td class="entry_description"> |
| 8759 | <p>Whether video stabilization is |
| 8760 | active.<wbr/></p> |
| 8761 | </td> |
| 8762 | |
| 8763 | <td class="entry_units"> |
| 8764 | </td> |
| 8765 | |
| 8766 | <td class="entry_range"> |
| 8767 | </td> |
| 8768 | |
| 8769 | <td class="entry_tags"> |
| 8770 | <ul class="entry_tags"> |
| 8771 | <li><a href="#tag_BC">BC</a></li> |
| 8772 | </ul> |
| 8773 | </td> |
| 8774 | |
| 8775 | </tr> |
| 8776 | <tr class="entries_header"> |
| 8777 | <th class="th_details" colspan="5">Details</th> |
| 8778 | </tr> |
| 8779 | <tr class="entry_cont"> |
| 8780 | <td class="entry_details" colspan="5"> |
| 8781 | <p>Video stabilization automatically warps images from |
| 8782 | the camera in order to stabilize motion between consecutive frames.<wbr/></p> |
| 8783 | <p>If enabled,<wbr/> video stabilization can modify the |
| 8784 | <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p> |
| 8785 | <p>Switching between different video stabilization modes may take several |
| 8786 | frames to initialize,<wbr/> the camera device will report the current mode |
| 8787 | in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> |
| 8788 | the video stabilization modes in the first several capture results may |
| 8789 | still be "OFF",<wbr/> and it will become "ON" when the initialization is |
| 8790 | done.<wbr/></p> |
| 8791 | <p>In addition,<wbr/> not all recording sizes or frame rates may be supported for |
| 8792 | stabilization by a device that reports stabilization support.<wbr/> It is guaranteed |
| 8793 | that an output targeting a MediaRecorder or MediaCodec will be stabilized if |
| 8794 | the recording resolution is less than or equal to 1920 x 1080 (width less than |
| 8795 | or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording |
| 8796 | frame rate is less than or equal to 30fps.<wbr/> At other sizes,<wbr/> the CaptureResult |
| 8797 | <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return |
| 8798 | OFF if the recording output is not stabilized,<wbr/> or if there are no output |
| 8799 | Surface types that can be stabilized.<wbr/></p> |
| 8800 | <p>If a camera device supports both this mode and OIS |
| 8801 | (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may |
| 8802 | produce undesirable interaction,<wbr/> so it is recommended not to enable |
| 8803 | both at the same time.<wbr/></p> |
| 8804 | </td> |
| 8805 | </tr> |
| 8806 | |
| 8807 | |
| 8808 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 8809 | <!-- end of entry --> |
| 8810 | |
| 8811 | |
| 8812 | <tr class="entry" id="dynamic_android.control.postRawSensitivityBoost"> |
| 8813 | <td class="entry_name |
| 8814 | " rowspan="3"> |
| 8815 | android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost |
| 8816 | </td> |
| 8817 | <td class="entry_type"> |
| 8818 | <span class="entry_type_name">int32</span> |
| 8819 | |
| 8820 | <span class="entry_type_visibility"> [public]</span> |
| 8821 | |
| 8822 | |
| 8823 | |
| 8824 | |
| 8825 | |
| 8826 | |
| 8827 | </td> <!-- entry_type --> |
| 8828 | |
| 8829 | <td class="entry_description"> |
| 8830 | <p>The amount of additional sensitivity boost applied to output images |
| 8831 | after RAW sensor data is captured.<wbr/></p> |
| 8832 | </td> |
| 8833 | |
| 8834 | <td class="entry_units"> |
| 8835 | ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity |
| 8836 | </td> |
| 8837 | |
| 8838 | <td class="entry_range"> |
| 8839 | <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p> |
| 8840 | </td> |
| 8841 | |
| 8842 | <td class="entry_tags"> |
| 8843 | </td> |
| 8844 | |
| 8845 | </tr> |
| 8846 | <tr class="entries_header"> |
| 8847 | <th class="th_details" colspan="5">Details</th> |
| 8848 | </tr> |
| 8849 | <tr class="entry_cont"> |
| 8850 | <td class="entry_details" colspan="5"> |
| 8851 | <p>Some camera devices support additional digital sensitivity boosting in the |
| 8852 | camera processing pipeline after sensor RAW image is captured.<wbr/> |
| 8853 | Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not |
| 8854 | have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p> |
| 8855 | <p>This key will be <code>null</code> for devices that do not support any RAW format |
| 8856 | outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always |
| 8857 | present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will |
| 8858 | list <code>100</code> in this key.<wbr/></p> |
| 8859 | <p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the |
| 8860 | boost to the nearest supported value.<wbr/> |
| 8861 | The final boost value used will be available in the output capture result.<wbr/></p> |
| 8862 | <p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images |
| 8863 | of such device will have the total sensitivity of |
| 8864 | <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> * <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> /<wbr/> 100</code> |
| 8865 | The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p> |
| 8866 | <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 |
| 8867 | OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> |
| 8868 | </td> |
| 8869 | </tr> |
| 8870 | |
| 8871 | |
| 8872 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 8873 | <!-- end of entry --> |
| 8874 | |
| 8875 | |
| 8876 | |
| 8877 | <!-- end of kind --> |
| 8878 | </tbody> |
| 8879 | |
| 8880 | <!-- end of section --> |
| 8881 | <tr><td colspan="6" id="section_demosaic" class="section">demosaic</td></tr> |
| 8882 | |
| 8883 | |
| 8884 | <tr><td colspan="6" class="kind">controls</td></tr> |
| 8885 | |
| 8886 | <thead class="entries_header"> |
| 8887 | <tr> |
| 8888 | <th class="th_name">Property Name</th> |
| 8889 | <th class="th_type">Type</th> |
| 8890 | <th class="th_description">Description</th> |
| 8891 | <th class="th_units">Units</th> |
| 8892 | <th class="th_range">Range</th> |
| 8893 | <th class="th_tags">Tags</th> |
| 8894 | </tr> |
| 8895 | </thead> |
| 8896 | |
| 8897 | <tbody> |
| 8898 | |
| 8899 | |
| 8900 | |
| 8901 | |
| 8902 | |
| 8903 | |
| 8904 | |
| 8905 | |
| 8906 | |
| 8907 | |
| 8908 | <tr class="entry" id="controls_android.demosaic.mode"> |
| 8909 | <td class="entry_name |
| 8910 | " rowspan="1"> |
| 8911 | android.<wbr/>demosaic.<wbr/>mode |
| 8912 | </td> |
| 8913 | <td class="entry_type"> |
| 8914 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 8915 | |
| 8916 | <span class="entry_type_visibility"> [system]</span> |
| 8917 | |
| 8918 | |
| 8919 | |
| 8920 | |
| 8921 | |
| 8922 | <ul class="entry_type_enum"> |
| 8923 | <li> |
| 8924 | <span class="entry_type_enum_name">FAST</span> |
| 8925 | <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to |
| 8926 | Bayer RAW output.<wbr/></p></span> |
| 8927 | </li> |
| 8928 | <li> |
| 8929 | <span class="entry_type_enum_name">HIGH_QUALITY</span> |
| 8930 | <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down |
| 8931 | relative to raw output.<wbr/></p></span> |
| 8932 | </li> |
| 8933 | </ul> |
| 8934 | |
| 8935 | </td> <!-- entry_type --> |
| 8936 | |
| 8937 | <td class="entry_description"> |
| 8938 | <p>Controls the quality of the demosaicing |
| 8939 | processing.<wbr/></p> |
| 8940 | </td> |
| 8941 | |
| 8942 | <td class="entry_units"> |
| 8943 | </td> |
| 8944 | |
| 8945 | <td class="entry_range"> |
| 8946 | </td> |
| 8947 | |
| 8948 | <td class="entry_tags"> |
| 8949 | <ul class="entry_tags"> |
| 8950 | <li><a href="#tag_FUTURE">FUTURE</a></li> |
| 8951 | </ul> |
| 8952 | </td> |
| 8953 | |
| 8954 | </tr> |
| 8955 | |
| 8956 | |
| 8957 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 8958 | <!-- end of entry --> |
| 8959 | |
| 8960 | |
| 8961 | |
| 8962 | <!-- end of kind --> |
| 8963 | </tbody> |
| 8964 | |
| 8965 | <!-- end of section --> |
| 8966 | <tr><td colspan="6" id="section_edge" class="section">edge</td></tr> |
| 8967 | |
| 8968 | |
| 8969 | <tr><td colspan="6" class="kind">controls</td></tr> |
| 8970 | |
| 8971 | <thead class="entries_header"> |
| 8972 | <tr> |
| 8973 | <th class="th_name">Property Name</th> |
| 8974 | <th class="th_type">Type</th> |
| 8975 | <th class="th_description">Description</th> |
| 8976 | <th class="th_units">Units</th> |
| 8977 | <th class="th_range">Range</th> |
| 8978 | <th class="th_tags">Tags</th> |
| 8979 | </tr> |
| 8980 | </thead> |
| 8981 | |
| 8982 | <tbody> |
| 8983 | |
| 8984 | |
| 8985 | |
| 8986 | |
| 8987 | |
| 8988 | |
| 8989 | |
| 8990 | |
| 8991 | |
| 8992 | |
| 8993 | <tr class="entry" id="controls_android.edge.mode"> |
| 8994 | <td class="entry_name |
| 8995 | " rowspan="5"> |
| 8996 | android.<wbr/>edge.<wbr/>mode |
| 8997 | </td> |
| 8998 | <td class="entry_type"> |
| 8999 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 9000 | |
| 9001 | <span class="entry_type_visibility"> [public]</span> |
| 9002 | |
| 9003 | |
| 9004 | <span class="entry_type_hwlevel">[full] </span> |
| 9005 | |
| 9006 | |
| 9007 | |
| 9008 | <ul class="entry_type_enum"> |
| 9009 | <li> |
| 9010 | <span class="entry_type_enum_name">OFF</span> |
| 9011 | <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span> |
| 9012 | </li> |
| 9013 | <li> |
| 9014 | <span class="entry_type_enum_name">FAST</span> |
| 9015 | <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate |
| 9016 | relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will |
| 9017 | slow down frame rate relative to sensor.<wbr/></p></span> |
| 9018 | </li> |
| 9019 | <li> |
| 9020 | <span class="entry_type_enum_name">HIGH_QUALITY</span> |
| 9021 | <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> |
| 9022 | </li> |
| 9023 | <li> |
| 9024 | <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> |
| 9025 | <span class="entry_type_enum_optional">[optional]</span> |
| 9026 | <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different levels for different output streams,<wbr/> |
| 9027 | 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 |
| 9028 | edge enhancement applied,<wbr/> while higher-resolution streams have no edge enhancement |
| 9029 | applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned so that |
| 9030 | frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST (since it |
| 9031 | is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p> |
| 9032 | <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode |
| 9033 | with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures |
| 9034 | high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is |
| 9035 | produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the |
| 9036 | high-resolution buffers must not have edge enhancement applied to maximize efficiency of |
| 9037 | preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution |
| 9038 | buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for |
| 9039 | reasonable preview quality.<wbr/></p> |
| 9040 | <p>This mode is guaranteed to be supported by devices that support either the |
| 9041 | YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities |
| 9042 | (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will |
| 9043 | be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> |
| 9044 | </li> |
| 9045 | </ul> |
| 9046 | |
| 9047 | </td> <!-- entry_type --> |
| 9048 | |
| 9049 | <td class="entry_description"> |
| 9050 | <p>Operation mode for edge |
| 9051 | enhancement.<wbr/></p> |
| 9052 | </td> |
| 9053 | |
| 9054 | <td class="entry_units"> |
| 9055 | </td> |
| 9056 | |
| 9057 | <td class="entry_range"> |
| 9058 | <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p> |
| 9059 | </td> |
| 9060 | |
| 9061 | <td class="entry_tags"> |
| 9062 | <ul class="entry_tags"> |
| 9063 | <li><a href="#tag_V1">V1</a></li> |
| 9064 | <li><a href="#tag_REPROC">REPROC</a></li> |
| 9065 | </ul> |
| 9066 | </td> |
| 9067 | |
| 9068 | </tr> |
| 9069 | <tr class="entries_header"> |
| 9070 | <th class="th_details" colspan="5">Details</th> |
| 9071 | </tr> |
| 9072 | <tr class="entry_cont"> |
| 9073 | <td class="entry_details" colspan="5"> |
| 9074 | <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means |
| 9075 | no enhancement will be applied by the camera device.<wbr/></p> |
| 9076 | <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement |
| 9077 | will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the |
| 9078 | camera device will use the highest-quality enhancement algorithms,<wbr/> |
| 9079 | even if it slows down capture rate.<wbr/> FAST means the camera device will |
| 9080 | not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if |
| 9081 | edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar |
| 9082 | amount of enhancement applied.<wbr/></p> |
| 9083 | <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular |
| 9084 | buffer of high-resolution images during preview and reprocess image(s) from that buffer |
| 9085 | into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies |
| 9086 | edge enhancement to low-resolution streams (below maximum recording resolution) to |
| 9087 | maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/> |
| 9088 | since those will be reprocessed later if necessary.<wbr/></p> |
| 9089 | <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera |
| 9090 | device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/> |
| 9091 | The camera device may adjust its internal edge enhancement parameters for best |
| 9092 | 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> |
| 9093 | </td> |
| 9094 | </tr> |
| 9095 | |
| 9096 | <tr class="entries_header"> |
| 9097 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 9098 | </tr> |
| 9099 | <tr class="entry_cont"> |
| 9100 | <td class="entry_details" colspan="5"> |
| 9101 | <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 |
| 9102 | adjust the internal edge enhancement reduction parameters appropriately to get the best |
| 9103 | quality images.<wbr/></p> |
| 9104 | </td> |
| 9105 | </tr> |
| 9106 | |
| 9107 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 9108 | <!-- end of entry --> |
| 9109 | |
| 9110 | |
| 9111 | <tr class="entry" id="controls_android.edge.strength"> |
| 9112 | <td class="entry_name |
| 9113 | " rowspan="1"> |
| 9114 | android.<wbr/>edge.<wbr/>strength |
| 9115 | </td> |
| 9116 | <td class="entry_type"> |
| 9117 | <span class="entry_type_name">byte</span> |
| 9118 | |
| 9119 | <span class="entry_type_visibility"> [system]</span> |
| 9120 | |
| 9121 | |
| 9122 | |
| 9123 | |
| 9124 | |
| 9125 | |
| 9126 | </td> <!-- entry_type --> |
| 9127 | |
| 9128 | <td class="entry_description"> |
| 9129 | <p>Control the amount of edge enhancement |
| 9130 | applied to the images</p> |
| 9131 | </td> |
| 9132 | |
| 9133 | <td class="entry_units"> |
| 9134 | 1-10; 10 is maximum sharpening |
| 9135 | </td> |
| 9136 | |
| 9137 | <td class="entry_range"> |
| 9138 | </td> |
| 9139 | |
| 9140 | <td class="entry_tags"> |
| 9141 | <ul class="entry_tags"> |
| 9142 | <li><a href="#tag_FUTURE">FUTURE</a></li> |
| 9143 | </ul> |
| 9144 | </td> |
| 9145 | |
| 9146 | </tr> |
| 9147 | |
| 9148 | |
| 9149 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 9150 | <!-- end of entry --> |
| 9151 | |
| 9152 | |
| 9153 | |
| 9154 | <!-- end of kind --> |
| 9155 | </tbody> |
| 9156 | <tr><td colspan="6" class="kind">static</td></tr> |
| 9157 | |
| 9158 | <thead class="entries_header"> |
| 9159 | <tr> |
| 9160 | <th class="th_name">Property Name</th> |
| 9161 | <th class="th_type">Type</th> |
| 9162 | <th class="th_description">Description</th> |
| 9163 | <th class="th_units">Units</th> |
| 9164 | <th class="th_range">Range</th> |
| 9165 | <th class="th_tags">Tags</th> |
| 9166 | </tr> |
| 9167 | </thead> |
| 9168 | |
| 9169 | <tbody> |
| 9170 | |
| 9171 | |
| 9172 | |
| 9173 | |
| 9174 | |
| 9175 | |
| 9176 | |
| 9177 | |
| 9178 | |
| 9179 | |
| 9180 | <tr class="entry" id="static_android.edge.availableEdgeModes"> |
| 9181 | <td class="entry_name |
| 9182 | " rowspan="5"> |
| 9183 | android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes |
| 9184 | </td> |
| 9185 | <td class="entry_type"> |
| 9186 | <span class="entry_type_name">byte</span> |
| 9187 | <span class="entry_type_container">x</span> |
| 9188 | |
| 9189 | <span class="entry_type_array"> |
| 9190 | n |
| 9191 | </span> |
| 9192 | <span class="entry_type_visibility"> [public as enumList]</span> |
| 9193 | |
| 9194 | |
| 9195 | <span class="entry_type_hwlevel">[full] </span> |
| 9196 | |
| 9197 | |
| 9198 | <div class="entry_type_notes">list of enums</div> |
| 9199 | |
| 9200 | |
| 9201 | </td> <!-- entry_type --> |
| 9202 | |
| 9203 | <td class="entry_description"> |
| 9204 | <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 |
| 9205 | device.<wbr/></p> |
| 9206 | </td> |
| 9207 | |
| 9208 | <td class="entry_units"> |
| 9209 | </td> |
| 9210 | |
| 9211 | <td class="entry_range"> |
| 9212 | <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p> |
| 9213 | </td> |
| 9214 | |
| 9215 | <td class="entry_tags"> |
| 9216 | <ul class="entry_tags"> |
| 9217 | <li><a href="#tag_V1">V1</a></li> |
| 9218 | <li><a href="#tag_REPROC">REPROC</a></li> |
| 9219 | </ul> |
| 9220 | </td> |
| 9221 | |
| 9222 | </tr> |
| 9223 | <tr class="entries_header"> |
| 9224 | <th class="th_details" colspan="5">Details</th> |
| 9225 | </tr> |
| 9226 | <tr class="entry_cont"> |
| 9227 | <td class="entry_details" colspan="5"> |
| 9228 | <p>Full-capability camera devices must always support OFF; camera devices that support |
| 9229 | YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will |
| 9230 | list FAST.<wbr/></p> |
| 9231 | </td> |
| 9232 | </tr> |
| 9233 | |
| 9234 | <tr class="entries_header"> |
| 9235 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 9236 | </tr> |
| 9237 | <tr class="entry_cont"> |
| 9238 | <td class="entry_details" colspan="5"> |
| 9239 | <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available |
| 9240 | on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> |
| 9241 | That is,<wbr/> if the highest quality implementation on the camera device does not slow down |
| 9242 | capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> |
| 9243 | </td> |
| 9244 | </tr> |
| 9245 | |
| 9246 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 9247 | <!-- end of entry --> |
| 9248 | |
| 9249 | |
| 9250 | |
| 9251 | <!-- end of kind --> |
| 9252 | </tbody> |
| 9253 | <tr><td colspan="6" class="kind">dynamic</td></tr> |
| 9254 | |
| 9255 | <thead class="entries_header"> |
| 9256 | <tr> |
| 9257 | <th class="th_name">Property Name</th> |
| 9258 | <th class="th_type">Type</th> |
| 9259 | <th class="th_description">Description</th> |
| 9260 | <th class="th_units">Units</th> |
| 9261 | <th class="th_range">Range</th> |
| 9262 | <th class="th_tags">Tags</th> |
| 9263 | </tr> |
| 9264 | </thead> |
| 9265 | |
| 9266 | <tbody> |
| 9267 | |
| 9268 | |
| 9269 | |
| 9270 | |
| 9271 | |
| 9272 | |
| 9273 | |
| 9274 | |
| 9275 | |
| 9276 | |
| 9277 | <tr class="entry" id="dynamic_android.edge.mode"> |
| 9278 | <td class="entry_name |
| 9279 | " rowspan="5"> |
| 9280 | android.<wbr/>edge.<wbr/>mode |
| 9281 | </td> |
| 9282 | <td class="entry_type"> |
| 9283 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 9284 | |
| 9285 | <span class="entry_type_visibility"> [public]</span> |
| 9286 | |
| 9287 | |
| 9288 | <span class="entry_type_hwlevel">[full] </span> |
| 9289 | |
| 9290 | |
| 9291 | |
| 9292 | <ul class="entry_type_enum"> |
| 9293 | <li> |
| 9294 | <span class="entry_type_enum_name">OFF</span> |
| 9295 | <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span> |
| 9296 | </li> |
| 9297 | <li> |
| 9298 | <span class="entry_type_enum_name">FAST</span> |
| 9299 | <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate |
| 9300 | relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will |
| 9301 | slow down frame rate relative to sensor.<wbr/></p></span> |
| 9302 | </li> |
| 9303 | <li> |
| 9304 | <span class="entry_type_enum_name">HIGH_QUALITY</span> |
| 9305 | <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> |
| 9306 | </li> |
| 9307 | <li> |
| 9308 | <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> |
| 9309 | <span class="entry_type_enum_optional">[optional]</span> |
| 9310 | <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different levels for different output streams,<wbr/> |
| 9311 | 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 |
| 9312 | edge enhancement applied,<wbr/> while higher-resolution streams have no edge enhancement |
| 9313 | applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned so that |
| 9314 | frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST (since it |
| 9315 | is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p> |
| 9316 | <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode |
| 9317 | with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures |
| 9318 | high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is |
| 9319 | produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the |
| 9320 | high-resolution buffers must not have edge enhancement applied to maximize efficiency of |
| 9321 | preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution |
| 9322 | buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for |
| 9323 | reasonable preview quality.<wbr/></p> |
| 9324 | <p>This mode is guaranteed to be supported by devices that support either the |
| 9325 | YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities |
| 9326 | (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will |
| 9327 | be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> |
| 9328 | </li> |
| 9329 | </ul> |
| 9330 | |
| 9331 | </td> <!-- entry_type --> |
| 9332 | |
| 9333 | <td class="entry_description"> |
| 9334 | <p>Operation mode for edge |
| 9335 | enhancement.<wbr/></p> |
| 9336 | </td> |
| 9337 | |
| 9338 | <td class="entry_units"> |
| 9339 | </td> |
| 9340 | |
| 9341 | <td class="entry_range"> |
| 9342 | <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p> |
| 9343 | </td> |
| 9344 | |
| 9345 | <td class="entry_tags"> |
| 9346 | <ul class="entry_tags"> |
| 9347 | <li><a href="#tag_V1">V1</a></li> |
| 9348 | <li><a href="#tag_REPROC">REPROC</a></li> |
| 9349 | </ul> |
| 9350 | </td> |
| 9351 | |
| 9352 | </tr> |
| 9353 | <tr class="entries_header"> |
| 9354 | <th class="th_details" colspan="5">Details</th> |
| 9355 | </tr> |
| 9356 | <tr class="entry_cont"> |
| 9357 | <td class="entry_details" colspan="5"> |
| 9358 | <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means |
| 9359 | no enhancement will be applied by the camera device.<wbr/></p> |
| 9360 | <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement |
| 9361 | will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the |
| 9362 | camera device will use the highest-quality enhancement algorithms,<wbr/> |
| 9363 | even if it slows down capture rate.<wbr/> FAST means the camera device will |
| 9364 | not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if |
| 9365 | edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar |
| 9366 | amount of enhancement applied.<wbr/></p> |
| 9367 | <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular |
| 9368 | buffer of high-resolution images during preview and reprocess image(s) from that buffer |
| 9369 | into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies |
| 9370 | edge enhancement to low-resolution streams (below maximum recording resolution) to |
| 9371 | maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/> |
| 9372 | since those will be reprocessed later if necessary.<wbr/></p> |
| 9373 | <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera |
| 9374 | device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/> |
| 9375 | The camera device may adjust its internal edge enhancement parameters for best |
| 9376 | 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> |
| 9377 | </td> |
| 9378 | </tr> |
| 9379 | |
| 9380 | <tr class="entries_header"> |
| 9381 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 9382 | </tr> |
| 9383 | <tr class="entry_cont"> |
| 9384 | <td class="entry_details" colspan="5"> |
| 9385 | <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 |
| 9386 | adjust the internal edge enhancement reduction parameters appropriately to get the best |
| 9387 | quality images.<wbr/></p> |
| 9388 | </td> |
| 9389 | </tr> |
| 9390 | |
| 9391 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 9392 | <!-- end of entry --> |
| 9393 | |
| 9394 | |
| 9395 | |
| 9396 | <!-- end of kind --> |
| 9397 | </tbody> |
| 9398 | |
| 9399 | <!-- end of section --> |
| 9400 | <tr><td colspan="6" id="section_flash" class="section">flash</td></tr> |
| 9401 | |
| 9402 | |
| 9403 | <tr><td colspan="6" class="kind">controls</td></tr> |
| 9404 | |
| 9405 | <thead class="entries_header"> |
| 9406 | <tr> |
| 9407 | <th class="th_name">Property Name</th> |
| 9408 | <th class="th_type">Type</th> |
| 9409 | <th class="th_description">Description</th> |
| 9410 | <th class="th_units">Units</th> |
| 9411 | <th class="th_range">Range</th> |
| 9412 | <th class="th_tags">Tags</th> |
| 9413 | </tr> |
| 9414 | </thead> |
| 9415 | |
| 9416 | <tbody> |
| 9417 | |
| 9418 | |
| 9419 | |
| 9420 | |
| 9421 | |
| 9422 | |
| 9423 | |
| 9424 | |
| 9425 | |
| 9426 | |
| 9427 | <tr class="entry" id="controls_android.flash.firingPower"> |
| 9428 | <td class="entry_name |
| 9429 | " rowspan="3"> |
| 9430 | android.<wbr/>flash.<wbr/>firing<wbr/>Power |
| 9431 | </td> |
| 9432 | <td class="entry_type"> |
| 9433 | <span class="entry_type_name">byte</span> |
| 9434 | |
| 9435 | <span class="entry_type_visibility"> [system]</span> |
| 9436 | |
| 9437 | |
| 9438 | |
| 9439 | |
| 9440 | |
| 9441 | |
| 9442 | </td> <!-- entry_type --> |
| 9443 | |
| 9444 | <td class="entry_description"> |
| 9445 | <p>Power for flash firing/<wbr/>torch</p> |
| 9446 | </td> |
| 9447 | |
| 9448 | <td class="entry_units"> |
| 9449 | 10 is max power; 0 is no flash.<wbr/> Linear |
| 9450 | </td> |
| 9451 | |
| 9452 | <td class="entry_range"> |
| 9453 | <p>0 - 10</p> |
| 9454 | </td> |
| 9455 | |
| 9456 | <td class="entry_tags"> |
| 9457 | <ul class="entry_tags"> |
| 9458 | <li><a href="#tag_FUTURE">FUTURE</a></li> |
| 9459 | </ul> |
| 9460 | </td> |
| 9461 | |
| 9462 | </tr> |
| 9463 | <tr class="entries_header"> |
| 9464 | <th class="th_details" colspan="5">Details</th> |
| 9465 | </tr> |
| 9466 | <tr class="entry_cont"> |
| 9467 | <td class="entry_details" colspan="5"> |
| 9468 | <p>Power for snapshot may use a different scale than |
| 9469 | for torch mode.<wbr/> Only one entry for torch mode will be |
| 9470 | used</p> |
| 9471 | </td> |
| 9472 | </tr> |
| 9473 | |
| 9474 | |
| 9475 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 9476 | <!-- end of entry --> |
| 9477 | |
| 9478 | |
| 9479 | <tr class="entry" id="controls_android.flash.firingTime"> |
| 9480 | <td class="entry_name |
| 9481 | " rowspan="3"> |
| 9482 | android.<wbr/>flash.<wbr/>firing<wbr/>Time |
| 9483 | </td> |
| 9484 | <td class="entry_type"> |
| 9485 | <span class="entry_type_name">int64</span> |
| 9486 | |
| 9487 | <span class="entry_type_visibility"> [system]</span> |
| 9488 | |
| 9489 | |
| 9490 | |
| 9491 | |
| 9492 | |
| 9493 | |
| 9494 | </td> <!-- entry_type --> |
| 9495 | |
| 9496 | <td class="entry_description"> |
| 9497 | <p>Firing time of flash relative to start of |
| 9498 | exposure</p> |
| 9499 | </td> |
| 9500 | |
| 9501 | <td class="entry_units"> |
| 9502 | nanoseconds |
| 9503 | </td> |
| 9504 | |
| 9505 | <td class="entry_range"> |
| 9506 | <p>0-(exposure time-flash duration)</p> |
| 9507 | </td> |
| 9508 | |
| 9509 | <td class="entry_tags"> |
| 9510 | <ul class="entry_tags"> |
| 9511 | <li><a href="#tag_FUTURE">FUTURE</a></li> |
| 9512 | </ul> |
| 9513 | </td> |
| 9514 | |
| 9515 | </tr> |
| 9516 | <tr class="entries_header"> |
| 9517 | <th class="th_details" colspan="5">Details</th> |
| 9518 | </tr> |
| 9519 | <tr class="entry_cont"> |
| 9520 | <td class="entry_details" colspan="5"> |
| 9521 | <p>Clamped to (0,<wbr/> exposure time - flash |
| 9522 | duration).<wbr/></p> |
| 9523 | </td> |
| 9524 | </tr> |
| 9525 | |
| 9526 | |
| 9527 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 9528 | <!-- end of entry --> |
| 9529 | |
| 9530 | |
| 9531 | <tr class="entry" id="controls_android.flash.mode"> |
| 9532 | <td class="entry_name |
| 9533 | " rowspan="3"> |
| 9534 | android.<wbr/>flash.<wbr/>mode |
| 9535 | </td> |
| 9536 | <td class="entry_type"> |
| 9537 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 9538 | |
| 9539 | <span class="entry_type_visibility"> [public]</span> |
| 9540 | |
| 9541 | |
| 9542 | <span class="entry_type_hwlevel">[legacy] </span> |
| 9543 | |
| 9544 | |
| 9545 | |
| 9546 | <ul class="entry_type_enum"> |
| 9547 | <li> |
| 9548 | <span class="entry_type_enum_name">OFF</span> |
| 9549 | <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span> |
| 9550 | </li> |
| 9551 | <li> |
| 9552 | <span class="entry_type_enum_name">SINGLE</span> |
| 9553 | <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash |
| 9554 | for this capture.<wbr/></p></span> |
| 9555 | </li> |
| 9556 | <li> |
| 9557 | <span class="entry_type_enum_name">TORCH</span> |
| 9558 | <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span> |
| 9559 | </li> |
| 9560 | </ul> |
| 9561 | |
| 9562 | </td> <!-- entry_type --> |
| 9563 | |
| 9564 | <td class="entry_description"> |
| 9565 | <p>The desired mode for for the camera device's flash control.<wbr/></p> |
| 9566 | </td> |
| 9567 | |
| 9568 | <td class="entry_units"> |
| 9569 | </td> |
| 9570 | |
| 9571 | <td class="entry_range"> |
| 9572 | </td> |
| 9573 | |
| 9574 | <td class="entry_tags"> |
| 9575 | <ul class="entry_tags"> |
| 9576 | <li><a href="#tag_BC">BC</a></li> |
| 9577 | </ul> |
| 9578 | </td> |
| 9579 | |
| 9580 | </tr> |
| 9581 | <tr class="entries_header"> |
| 9582 | <th class="th_details" colspan="5">Details</th> |
| 9583 | </tr> |
| 9584 | <tr class="entry_cont"> |
| 9585 | <td class="entry_details" colspan="5"> |
| 9586 | <p>This control is only effective when flash unit is available |
| 9587 | (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p> |
| 9588 | <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/> |
| 9589 | Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> |
| 9590 | ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p> |
| 9591 | <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p> |
| 9592 | <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera |
| 9593 | device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this |
| 9594 | control should be used along with auto-exposure (AE) precapture metering sequence |
| 9595 | (<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> |
| 9596 | <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used |
| 9597 | for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p> |
| 9598 | <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> |
| 9599 | </td> |
| 9600 | </tr> |
| 9601 | |
| 9602 | |
| 9603 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 9604 | <!-- end of entry --> |
| 9605 | |
| 9606 | |
| 9607 | |
| 9608 | <!-- end of kind --> |
| 9609 | </tbody> |
| 9610 | <tr><td colspan="6" class="kind">static</td></tr> |
| 9611 | |
| 9612 | <thead class="entries_header"> |
| 9613 | <tr> |
| 9614 | <th class="th_name">Property Name</th> |
| 9615 | <th class="th_type">Type</th> |
| 9616 | <th class="th_description">Description</th> |
| 9617 | <th class="th_units">Units</th> |
| 9618 | <th class="th_range">Range</th> |
| 9619 | <th class="th_tags">Tags</th> |
| 9620 | </tr> |
| 9621 | </thead> |
| 9622 | |
| 9623 | <tbody> |
| 9624 | |
| 9625 | |
| 9626 | |
| 9627 | |
| 9628 | |
| 9629 | |
| 9630 | |
| 9631 | |
| 9632 | |
| 9633 | |
| 9634 | |
| 9635 | |
| 9636 | <tr class="entry" id="static_android.flash.info.available"> |
| 9637 | <td class="entry_name |
| 9638 | " rowspan="3"> |
| 9639 | android.<wbr/>flash.<wbr/>info.<wbr/>available |
| 9640 | </td> |
| 9641 | <td class="entry_type"> |
| 9642 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 9643 | |
| 9644 | <span class="entry_type_visibility"> [public as boolean]</span> |
| 9645 | |
| 9646 | |
| 9647 | <span class="entry_type_hwlevel">[legacy] </span> |
| 9648 | |
| 9649 | |
| 9650 | |
| 9651 | <ul class="entry_type_enum"> |
| 9652 | <li> |
| 9653 | <span class="entry_type_enum_name">FALSE</span> |
| 9654 | </li> |
| 9655 | <li> |
| 9656 | <span class="entry_type_enum_name">TRUE</span> |
| 9657 | </li> |
| 9658 | </ul> |
| 9659 | |
| 9660 | </td> <!-- entry_type --> |
| 9661 | |
| 9662 | <td class="entry_description"> |
| 9663 | <p>Whether this camera device has a |
| 9664 | flash unit.<wbr/></p> |
| 9665 | </td> |
| 9666 | |
| 9667 | <td class="entry_units"> |
| 9668 | </td> |
| 9669 | |
| 9670 | <td class="entry_range"> |
| 9671 | </td> |
| 9672 | |
| 9673 | <td class="entry_tags"> |
| 9674 | <ul class="entry_tags"> |
| 9675 | <li><a href="#tag_BC">BC</a></li> |
| 9676 | </ul> |
| 9677 | </td> |
| 9678 | |
| 9679 | </tr> |
| 9680 | <tr class="entries_header"> |
| 9681 | <th class="th_details" colspan="5">Details</th> |
| 9682 | </tr> |
| 9683 | <tr class="entry_cont"> |
| 9684 | <td class="entry_details" colspan="5"> |
| 9685 | <p>Will be <code>false</code> if no flash is available.<wbr/></p> |
| 9686 | <p>If there is no flash unit,<wbr/> none of the flash controls do |
| 9687 | anything.<wbr/></p> |
| 9688 | </td> |
| 9689 | </tr> |
| 9690 | |
| 9691 | |
| 9692 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 9693 | <!-- end of entry --> |
| 9694 | |
| 9695 | |
| 9696 | <tr class="entry" id="static_android.flash.info.chargeDuration"> |
| 9697 | <td class="entry_name |
| 9698 | " rowspan="3"> |
| 9699 | android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration |
| 9700 | </td> |
| 9701 | <td class="entry_type"> |
| 9702 | <span class="entry_type_name">int64</span> |
| 9703 | |
| 9704 | <span class="entry_type_visibility"> [system]</span> |
| 9705 | |
| 9706 | |
| 9707 | |
| 9708 | |
| 9709 | |
| 9710 | |
| 9711 | </td> <!-- entry_type --> |
| 9712 | |
| 9713 | <td class="entry_description"> |
| 9714 | <p>Time taken before flash can fire |
| 9715 | again</p> |
| 9716 | </td> |
| 9717 | |
| 9718 | <td class="entry_units"> |
| 9719 | nanoseconds |
| 9720 | </td> |
| 9721 | |
| 9722 | <td class="entry_range"> |
| 9723 | <p>0-1e9</p> |
| 9724 | </td> |
| 9725 | |
| 9726 | <td class="entry_tags"> |
| 9727 | <ul class="entry_tags"> |
| 9728 | <li><a href="#tag_FUTURE">FUTURE</a></li> |
| 9729 | </ul> |
| 9730 | </td> |
| 9731 | |
| 9732 | </tr> |
| 9733 | <tr class="entries_header"> |
| 9734 | <th class="th_details" colspan="5">Details</th> |
| 9735 | </tr> |
| 9736 | <tr class="entry_cont"> |
| 9737 | <td class="entry_details" colspan="5"> |
| 9738 | <p>1 second too long/<wbr/>too short for recharge? Should |
| 9739 | this be power-dependent?</p> |
| 9740 | </td> |
| 9741 | </tr> |
| 9742 | |
| 9743 | |
| 9744 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 9745 | <!-- end of entry --> |
| 9746 | |
| 9747 | |
| 9748 | |
| 9749 | |
| 9750 | |
| 9751 | <tr class="entry" id="static_android.flash.colorTemperature"> |
| 9752 | <td class="entry_name |
| 9753 | " rowspan="1"> |
| 9754 | android.<wbr/>flash.<wbr/>color<wbr/>Temperature |
| 9755 | </td> |
| 9756 | <td class="entry_type"> |
| 9757 | <span class="entry_type_name">byte</span> |
| 9758 | |
| 9759 | <span class="entry_type_visibility"> [system]</span> |
| 9760 | |
| 9761 | |
| 9762 | |
| 9763 | |
| 9764 | |
| 9765 | |
| 9766 | </td> <!-- entry_type --> |
| 9767 | |
| 9768 | <td class="entry_description"> |
| 9769 | <p>The x,<wbr/>y whitepoint of the |
| 9770 | flash</p> |
| 9771 | </td> |
| 9772 | |
| 9773 | <td class="entry_units"> |
| 9774 | pair of floats |
| 9775 | </td> |
| 9776 | |
| 9777 | <td class="entry_range"> |
| 9778 | <p>0-1 for both</p> |
| 9779 | </td> |
| 9780 | |
| 9781 | <td class="entry_tags"> |
| 9782 | <ul class="entry_tags"> |
| 9783 | <li><a href="#tag_FUTURE">FUTURE</a></li> |
| 9784 | </ul> |
| 9785 | </td> |
| 9786 | |
| 9787 | </tr> |
| 9788 | |
| 9789 | |
| 9790 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 9791 | <!-- end of entry --> |
| 9792 | |
| 9793 | |
| 9794 | <tr class="entry" id="static_android.flash.maxEnergy"> |
| 9795 | <td class="entry_name |
| 9796 | " rowspan="1"> |
| 9797 | android.<wbr/>flash.<wbr/>max<wbr/>Energy |
| 9798 | </td> |
| 9799 | <td class="entry_type"> |
| 9800 | <span class="entry_type_name">byte</span> |
| 9801 | |
| 9802 | <span class="entry_type_visibility"> [system]</span> |
| 9803 | |
| 9804 | |
| 9805 | |
| 9806 | |
| 9807 | |
| 9808 | |
| 9809 | </td> <!-- entry_type --> |
| 9810 | |
| 9811 | <td class="entry_description"> |
| 9812 | <p>Max energy output of the flash for a full |
| 9813 | power single flash</p> |
| 9814 | </td> |
| 9815 | |
| 9816 | <td class="entry_units"> |
| 9817 | lumen-seconds |
| 9818 | </td> |
| 9819 | |
| 9820 | <td class="entry_range"> |
| 9821 | <p>>= 0</p> |
| 9822 | </td> |
| 9823 | |
| 9824 | <td class="entry_tags"> |
| 9825 | <ul class="entry_tags"> |
| 9826 | <li><a href="#tag_FUTURE">FUTURE</a></li> |
| 9827 | </ul> |
| 9828 | </td> |
| 9829 | |
| 9830 | </tr> |
| 9831 | |
| 9832 | |
| 9833 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 9834 | <!-- end of entry --> |
| 9835 | |
| 9836 | |
| 9837 | |
| 9838 | <!-- end of kind --> |
| 9839 | </tbody> |
| 9840 | <tr><td colspan="6" class="kind">dynamic</td></tr> |
| 9841 | |
| 9842 | <thead class="entries_header"> |
| 9843 | <tr> |
| 9844 | <th class="th_name">Property Name</th> |
| 9845 | <th class="th_type">Type</th> |
| 9846 | <th class="th_description">Description</th> |
| 9847 | <th class="th_units">Units</th> |
| 9848 | <th class="th_range">Range</th> |
| 9849 | <th class="th_tags">Tags</th> |
| 9850 | </tr> |
| 9851 | </thead> |
| 9852 | |
| 9853 | <tbody> |
| 9854 | |
| 9855 | |
| 9856 | |
| 9857 | |
| 9858 | |
| 9859 | |
| 9860 | |
| 9861 | |
| 9862 | |
| 9863 | |
| 9864 | <tr class="entry" id="dynamic_android.flash.firingPower"> |
| 9865 | <td class="entry_name |
| 9866 | " rowspan="3"> |
| 9867 | android.<wbr/>flash.<wbr/>firing<wbr/>Power |
| 9868 | </td> |
| 9869 | <td class="entry_type"> |
| 9870 | <span class="entry_type_name">byte</span> |
| 9871 | |
| 9872 | <span class="entry_type_visibility"> [system]</span> |
| 9873 | |
| 9874 | |
| 9875 | |
| 9876 | |
| 9877 | |
| 9878 | |
| 9879 | </td> <!-- entry_type --> |
| 9880 | |
| 9881 | <td class="entry_description"> |
| 9882 | <p>Power for flash firing/<wbr/>torch</p> |
| 9883 | </td> |
| 9884 | |
| 9885 | <td class="entry_units"> |
| 9886 | 10 is max power; 0 is no flash.<wbr/> Linear |
| 9887 | </td> |
| 9888 | |
| 9889 | <td class="entry_range"> |
| 9890 | <p>0 - 10</p> |
| 9891 | </td> |
| 9892 | |
| 9893 | <td class="entry_tags"> |
| 9894 | <ul class="entry_tags"> |
| 9895 | <li><a href="#tag_FUTURE">FUTURE</a></li> |
| 9896 | </ul> |
| 9897 | </td> |
| 9898 | |
| 9899 | </tr> |
| 9900 | <tr class="entries_header"> |
| 9901 | <th class="th_details" colspan="5">Details</th> |
| 9902 | </tr> |
| 9903 | <tr class="entry_cont"> |
| 9904 | <td class="entry_details" colspan="5"> |
| 9905 | <p>Power for snapshot may use a different scale than |
| 9906 | for torch mode.<wbr/> Only one entry for torch mode will be |
| 9907 | used</p> |
| 9908 | </td> |
| 9909 | </tr> |
| 9910 | |
| 9911 | |
| 9912 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 9913 | <!-- end of entry --> |
| 9914 | |
| 9915 | |
| 9916 | <tr class="entry" id="dynamic_android.flash.firingTime"> |
| 9917 | <td class="entry_name |
| 9918 | " rowspan="3"> |
| 9919 | android.<wbr/>flash.<wbr/>firing<wbr/>Time |
| 9920 | </td> |
| 9921 | <td class="entry_type"> |
| 9922 | <span class="entry_type_name">int64</span> |
| 9923 | |
| 9924 | <span class="entry_type_visibility"> [system]</span> |
| 9925 | |
| 9926 | |
| 9927 | |
| 9928 | |
| 9929 | |
| 9930 | |
| 9931 | </td> <!-- entry_type --> |
| 9932 | |
| 9933 | <td class="entry_description"> |
| 9934 | <p>Firing time of flash relative to start of |
| 9935 | exposure</p> |
| 9936 | </td> |
| 9937 | |
| 9938 | <td class="entry_units"> |
| 9939 | nanoseconds |
| 9940 | </td> |
| 9941 | |
| 9942 | <td class="entry_range"> |
| 9943 | <p>0-(exposure time-flash duration)</p> |
| 9944 | </td> |
| 9945 | |
| 9946 | <td class="entry_tags"> |
| 9947 | <ul class="entry_tags"> |
| 9948 | <li><a href="#tag_FUTURE">FUTURE</a></li> |
| 9949 | </ul> |
| 9950 | </td> |
| 9951 | |
| 9952 | </tr> |
| 9953 | <tr class="entries_header"> |
| 9954 | <th class="th_details" colspan="5">Details</th> |
| 9955 | </tr> |
| 9956 | <tr class="entry_cont"> |
| 9957 | <td class="entry_details" colspan="5"> |
| 9958 | <p>Clamped to (0,<wbr/> exposure time - flash |
| 9959 | duration).<wbr/></p> |
| 9960 | </td> |
| 9961 | </tr> |
| 9962 | |
| 9963 | |
| 9964 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 9965 | <!-- end of entry --> |
| 9966 | |
| 9967 | |
| 9968 | <tr class="entry" id="dynamic_android.flash.mode"> |
| 9969 | <td class="entry_name |
| 9970 | " rowspan="3"> |
| 9971 | android.<wbr/>flash.<wbr/>mode |
| 9972 | </td> |
| 9973 | <td class="entry_type"> |
| 9974 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 9975 | |
| 9976 | <span class="entry_type_visibility"> [public]</span> |
| 9977 | |
| 9978 | |
| 9979 | <span class="entry_type_hwlevel">[legacy] </span> |
| 9980 | |
| 9981 | |
| 9982 | |
| 9983 | <ul class="entry_type_enum"> |
| 9984 | <li> |
| 9985 | <span class="entry_type_enum_name">OFF</span> |
| 9986 | <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span> |
| 9987 | </li> |
| 9988 | <li> |
| 9989 | <span class="entry_type_enum_name">SINGLE</span> |
| 9990 | <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash |
| 9991 | for this capture.<wbr/></p></span> |
| 9992 | </li> |
| 9993 | <li> |
| 9994 | <span class="entry_type_enum_name">TORCH</span> |
| 9995 | <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span> |
| 9996 | </li> |
| 9997 | </ul> |
| 9998 | |
| 9999 | </td> <!-- entry_type --> |
| 10000 | |
| 10001 | <td class="entry_description"> |
| 10002 | <p>The desired mode for for the camera device's flash control.<wbr/></p> |
| 10003 | </td> |
| 10004 | |
| 10005 | <td class="entry_units"> |
| 10006 | </td> |
| 10007 | |
| 10008 | <td class="entry_range"> |
| 10009 | </td> |
| 10010 | |
| 10011 | <td class="entry_tags"> |
| 10012 | <ul class="entry_tags"> |
| 10013 | <li><a href="#tag_BC">BC</a></li> |
| 10014 | </ul> |
| 10015 | </td> |
| 10016 | |
| 10017 | </tr> |
| 10018 | <tr class="entries_header"> |
| 10019 | <th class="th_details" colspan="5">Details</th> |
| 10020 | </tr> |
| 10021 | <tr class="entry_cont"> |
| 10022 | <td class="entry_details" colspan="5"> |
| 10023 | <p>This control is only effective when flash unit is available |
| 10024 | (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p> |
| 10025 | <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/> |
| 10026 | Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> |
| 10027 | ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p> |
| 10028 | <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p> |
| 10029 | <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera |
| 10030 | device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this |
| 10031 | control should be used along with auto-exposure (AE) precapture metering sequence |
| 10032 | (<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> |
| 10033 | <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used |
| 10034 | for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p> |
| 10035 | <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> |
| 10036 | </td> |
| 10037 | </tr> |
| 10038 | |
| 10039 | |
| 10040 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 10041 | <!-- end of entry --> |
| 10042 | |
| 10043 | |
| 10044 | <tr class="entry" id="dynamic_android.flash.state"> |
| 10045 | <td class="entry_name |
| 10046 | " rowspan="3"> |
| 10047 | android.<wbr/>flash.<wbr/>state |
| 10048 | </td> |
| 10049 | <td class="entry_type"> |
| 10050 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 10051 | |
| 10052 | <span class="entry_type_visibility"> [public]</span> |
| 10053 | |
| 10054 | |
| 10055 | <span class="entry_type_hwlevel">[limited] </span> |
| 10056 | |
| 10057 | |
| 10058 | |
| 10059 | <ul class="entry_type_enum"> |
| 10060 | <li> |
| 10061 | <span class="entry_type_enum_name">UNAVAILABLE</span> |
| 10062 | <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span> |
| 10063 | </li> |
| 10064 | <li> |
| 10065 | <span class="entry_type_enum_name">CHARGING</span> |
| 10066 | <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span> |
| 10067 | </li> |
| 10068 | <li> |
| 10069 | <span class="entry_type_enum_name">READY</span> |
| 10070 | <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span> |
| 10071 | </li> |
| 10072 | <li> |
| 10073 | <span class="entry_type_enum_name">FIRED</span> |
| 10074 | <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span> |
| 10075 | </li> |
| 10076 | <li> |
| 10077 | <span class="entry_type_enum_name">PARTIAL</span> |
| 10078 | <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p> |
| 10079 | <p>This is usually due to the next or previous frame having |
| 10080 | the flash fire,<wbr/> and the flash spilling into this capture |
| 10081 | due to hardware limitations.<wbr/></p></span> |
| 10082 | </li> |
| 10083 | </ul> |
| 10084 | |
| 10085 | </td> <!-- entry_type --> |
| 10086 | |
| 10087 | <td class="entry_description"> |
| 10088 | <p>Current state of the flash |
| 10089 | unit.<wbr/></p> |
| 10090 | </td> |
| 10091 | |
| 10092 | <td class="entry_units"> |
| 10093 | </td> |
| 10094 | |
| 10095 | <td class="entry_range"> |
| 10096 | </td> |
| 10097 | |
| 10098 | <td class="entry_tags"> |
| 10099 | </td> |
| 10100 | |
| 10101 | </tr> |
| 10102 | <tr class="entries_header"> |
| 10103 | <th class="th_details" colspan="5">Details</th> |
| 10104 | </tr> |
| 10105 | <tr class="entry_cont"> |
| 10106 | <td class="entry_details" colspan="5"> |
| 10107 | <p>When the camera device doesn't have flash unit |
| 10108 | (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/> |
| 10109 | Other states indicate the current flash status.<wbr/></p> |
| 10110 | <p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p> |
| 10111 | <ul> |
| 10112 | <li>Flash-less cameras always return UNAVAILABLE.<wbr/></li> |
| 10113 | <li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH |
| 10114 | will always return FIRED.<wbr/></li> |
| 10115 | <li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH |
| 10116 | will always return FIRED.<wbr/></li> |
| 10117 | </ul> |
| 10118 | <p>In all other conditions the state will not be available on |
| 10119 | LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p> |
| 10120 | </td> |
| 10121 | </tr> |
| 10122 | |
| 10123 | |
| 10124 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 10125 | <!-- end of entry --> |
| 10126 | |
| 10127 | |
| 10128 | |
| 10129 | <!-- end of kind --> |
| 10130 | </tbody> |
| 10131 | |
| 10132 | <!-- end of section --> |
| 10133 | <tr><td colspan="6" id="section_hotPixel" class="section">hotPixel</td></tr> |
| 10134 | |
| 10135 | |
| 10136 | <tr><td colspan="6" class="kind">controls</td></tr> |
| 10137 | |
| 10138 | <thead class="entries_header"> |
| 10139 | <tr> |
| 10140 | <th class="th_name">Property Name</th> |
| 10141 | <th class="th_type">Type</th> |
| 10142 | <th class="th_description">Description</th> |
| 10143 | <th class="th_units">Units</th> |
| 10144 | <th class="th_range">Range</th> |
| 10145 | <th class="th_tags">Tags</th> |
| 10146 | </tr> |
| 10147 | </thead> |
| 10148 | |
| 10149 | <tbody> |
| 10150 | |
| 10151 | |
| 10152 | |
| 10153 | |
| 10154 | |
| 10155 | |
| 10156 | |
| 10157 | |
| 10158 | |
| 10159 | |
| 10160 | <tr class="entry" id="controls_android.hotPixel.mode"> |
| 10161 | <td class="entry_name |
| 10162 | " rowspan="3"> |
| 10163 | android.<wbr/>hot<wbr/>Pixel.<wbr/>mode |
| 10164 | </td> |
| 10165 | <td class="entry_type"> |
| 10166 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 10167 | |
| 10168 | <span class="entry_type_visibility"> [public]</span> |
| 10169 | |
| 10170 | |
| 10171 | |
| 10172 | |
| 10173 | |
| 10174 | <ul class="entry_type_enum"> |
| 10175 | <li> |
| 10176 | <span class="entry_type_enum_name">OFF</span> |
| 10177 | <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p> |
| 10178 | <p>The frame rate must not be reduced relative to sensor raw output |
| 10179 | for this option.<wbr/></p> |
| 10180 | <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> |
| 10181 | </li> |
| 10182 | <li> |
| 10183 | <span class="entry_type_enum_name">FAST</span> |
| 10184 | <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame |
| 10185 | rate relative to sensor raw output.<wbr/></p> |
| 10186 | <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> |
| 10187 | </li> |
| 10188 | <li> |
| 10189 | <span class="entry_type_enum_name">HIGH_QUALITY</span> |
| 10190 | <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost |
| 10191 | of possibly reduced frame rate relative to sensor raw output.<wbr/></p> |
| 10192 | <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> |
| 10193 | </li> |
| 10194 | </ul> |
| 10195 | |
| 10196 | </td> <!-- entry_type --> |
| 10197 | |
| 10198 | <td class="entry_description"> |
| 10199 | <p>Operational mode for hot pixel correction.<wbr/></p> |
| 10200 | </td> |
| 10201 | |
| 10202 | <td class="entry_units"> |
| 10203 | </td> |
| 10204 | |
| 10205 | <td class="entry_range"> |
| 10206 | <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p> |
| 10207 | </td> |
| 10208 | |
| 10209 | <td class="entry_tags"> |
| 10210 | <ul class="entry_tags"> |
| 10211 | <li><a href="#tag_V1">V1</a></li> |
| 10212 | <li><a href="#tag_RAW">RAW</a></li> |
| 10213 | </ul> |
| 10214 | </td> |
| 10215 | |
| 10216 | </tr> |
| 10217 | <tr class="entries_header"> |
| 10218 | <th class="th_details" colspan="5">Details</th> |
| 10219 | </tr> |
| 10220 | <tr class="entry_cont"> |
| 10221 | <td class="entry_details" colspan="5"> |
| 10222 | <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels |
| 10223 | that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that |
| 10224 | are stuck at an arbitrary value or are oversensitive).<wbr/></p> |
| 10225 | </td> |
| 10226 | </tr> |
| 10227 | |
| 10228 | |
| 10229 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 10230 | <!-- end of entry --> |
| 10231 | |
| 10232 | |
| 10233 | |
| 10234 | <!-- end of kind --> |
| 10235 | </tbody> |
| 10236 | <tr><td colspan="6" class="kind">static</td></tr> |
| 10237 | |
| 10238 | <thead class="entries_header"> |
| 10239 | <tr> |
| 10240 | <th class="th_name">Property Name</th> |
| 10241 | <th class="th_type">Type</th> |
| 10242 | <th class="th_description">Description</th> |
| 10243 | <th class="th_units">Units</th> |
| 10244 | <th class="th_range">Range</th> |
| 10245 | <th class="th_tags">Tags</th> |
| 10246 | </tr> |
| 10247 | </thead> |
| 10248 | |
| 10249 | <tbody> |
| 10250 | |
| 10251 | |
| 10252 | |
| 10253 | |
| 10254 | |
| 10255 | |
| 10256 | |
| 10257 | |
| 10258 | |
| 10259 | |
| 10260 | <tr class="entry" id="static_android.hotPixel.availableHotPixelModes"> |
| 10261 | <td class="entry_name |
| 10262 | " rowspan="5"> |
| 10263 | android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes |
| 10264 | </td> |
| 10265 | <td class="entry_type"> |
| 10266 | <span class="entry_type_name">byte</span> |
| 10267 | <span class="entry_type_container">x</span> |
| 10268 | |
| 10269 | <span class="entry_type_array"> |
| 10270 | n |
| 10271 | </span> |
| 10272 | <span class="entry_type_visibility"> [public as enumList]</span> |
| 10273 | |
| 10274 | |
| 10275 | |
| 10276 | |
| 10277 | <div class="entry_type_notes">list of enums</div> |
| 10278 | |
| 10279 | |
| 10280 | </td> <!-- entry_type --> |
| 10281 | |
| 10282 | <td class="entry_description"> |
| 10283 | <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 |
| 10284 | camera device.<wbr/></p> |
| 10285 | </td> |
| 10286 | |
| 10287 | <td class="entry_units"> |
| 10288 | </td> |
| 10289 | |
| 10290 | <td class="entry_range"> |
| 10291 | <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p> |
| 10292 | </td> |
| 10293 | |
| 10294 | <td class="entry_tags"> |
| 10295 | <ul class="entry_tags"> |
| 10296 | <li><a href="#tag_V1">V1</a></li> |
| 10297 | <li><a href="#tag_RAW">RAW</a></li> |
| 10298 | </ul> |
| 10299 | </td> |
| 10300 | |
| 10301 | </tr> |
| 10302 | <tr class="entries_header"> |
| 10303 | <th class="th_details" colspan="5">Details</th> |
| 10304 | </tr> |
| 10305 | <tr class="entry_cont"> |
| 10306 | <td class="entry_details" colspan="5"> |
| 10307 | <p>FULL mode camera devices will always support FAST.<wbr/></p> |
| 10308 | </td> |
| 10309 | </tr> |
| 10310 | |
| 10311 | <tr class="entries_header"> |
| 10312 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 10313 | </tr> |
| 10314 | <tr class="entry_cont"> |
| 10315 | <td class="entry_details" colspan="5"> |
| 10316 | <p>To avoid performance issues,<wbr/> there will be significantly fewer hot |
| 10317 | pixels than actual pixels on the camera sensor.<wbr/> |
| 10318 | HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available |
| 10319 | on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> |
| 10320 | That is,<wbr/> if the highest quality implementation on the camera device does not slow down |
| 10321 | capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> |
| 10322 | </td> |
| 10323 | </tr> |
| 10324 | |
| 10325 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 10326 | <!-- end of entry --> |
| 10327 | |
| 10328 | |
| 10329 | |
| 10330 | <!-- end of kind --> |
| 10331 | </tbody> |
| 10332 | <tr><td colspan="6" class="kind">dynamic</td></tr> |
| 10333 | |
| 10334 | <thead class="entries_header"> |
| 10335 | <tr> |
| 10336 | <th class="th_name">Property Name</th> |
| 10337 | <th class="th_type">Type</th> |
| 10338 | <th class="th_description">Description</th> |
| 10339 | <th class="th_units">Units</th> |
| 10340 | <th class="th_range">Range</th> |
| 10341 | <th class="th_tags">Tags</th> |
| 10342 | </tr> |
| 10343 | </thead> |
| 10344 | |
| 10345 | <tbody> |
| 10346 | |
| 10347 | |
| 10348 | |
| 10349 | |
| 10350 | |
| 10351 | |
| 10352 | |
| 10353 | |
| 10354 | |
| 10355 | |
| 10356 | <tr class="entry" id="dynamic_android.hotPixel.mode"> |
| 10357 | <td class="entry_name |
| 10358 | " rowspan="3"> |
| 10359 | android.<wbr/>hot<wbr/>Pixel.<wbr/>mode |
| 10360 | </td> |
| 10361 | <td class="entry_type"> |
| 10362 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 10363 | |
| 10364 | <span class="entry_type_visibility"> [public]</span> |
| 10365 | |
| 10366 | |
| 10367 | |
| 10368 | |
| 10369 | |
| 10370 | <ul class="entry_type_enum"> |
| 10371 | <li> |
| 10372 | <span class="entry_type_enum_name">OFF</span> |
| 10373 | <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p> |
| 10374 | <p>The frame rate must not be reduced relative to sensor raw output |
| 10375 | for this option.<wbr/></p> |
| 10376 | <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> |
| 10377 | </li> |
| 10378 | <li> |
| 10379 | <span class="entry_type_enum_name">FAST</span> |
| 10380 | <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame |
| 10381 | rate relative to sensor raw output.<wbr/></p> |
| 10382 | <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> |
| 10383 | </li> |
| 10384 | <li> |
| 10385 | <span class="entry_type_enum_name">HIGH_QUALITY</span> |
| 10386 | <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost |
| 10387 | of possibly reduced frame rate relative to sensor raw output.<wbr/></p> |
| 10388 | <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> |
| 10389 | </li> |
| 10390 | </ul> |
| 10391 | |
| 10392 | </td> <!-- entry_type --> |
| 10393 | |
| 10394 | <td class="entry_description"> |
| 10395 | <p>Operational mode for hot pixel correction.<wbr/></p> |
| 10396 | </td> |
| 10397 | |
| 10398 | <td class="entry_units"> |
| 10399 | </td> |
| 10400 | |
| 10401 | <td class="entry_range"> |
| 10402 | <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p> |
| 10403 | </td> |
| 10404 | |
| 10405 | <td class="entry_tags"> |
| 10406 | <ul class="entry_tags"> |
| 10407 | <li><a href="#tag_V1">V1</a></li> |
| 10408 | <li><a href="#tag_RAW">RAW</a></li> |
| 10409 | </ul> |
| 10410 | </td> |
| 10411 | |
| 10412 | </tr> |
| 10413 | <tr class="entries_header"> |
| 10414 | <th class="th_details" colspan="5">Details</th> |
| 10415 | </tr> |
| 10416 | <tr class="entry_cont"> |
| 10417 | <td class="entry_details" colspan="5"> |
| 10418 | <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels |
| 10419 | that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that |
| 10420 | are stuck at an arbitrary value or are oversensitive).<wbr/></p> |
| 10421 | </td> |
| 10422 | </tr> |
| 10423 | |
| 10424 | |
| 10425 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 10426 | <!-- end of entry --> |
| 10427 | |
| 10428 | |
| 10429 | |
| 10430 | <!-- end of kind --> |
| 10431 | </tbody> |
| 10432 | |
| 10433 | <!-- end of section --> |
| 10434 | <tr><td colspan="6" id="section_jpeg" class="section">jpeg</td></tr> |
| 10435 | |
| 10436 | |
| 10437 | <tr><td colspan="6" class="kind">controls</td></tr> |
| 10438 | |
| 10439 | <thead class="entries_header"> |
| 10440 | <tr> |
| 10441 | <th class="th_name">Property Name</th> |
| 10442 | <th class="th_type">Type</th> |
| 10443 | <th class="th_description">Description</th> |
| 10444 | <th class="th_units">Units</th> |
| 10445 | <th class="th_range">Range</th> |
| 10446 | <th class="th_tags">Tags</th> |
| 10447 | </tr> |
| 10448 | </thead> |
| 10449 | |
| 10450 | <tbody> |
| 10451 | |
| 10452 | |
| 10453 | |
| 10454 | |
| 10455 | |
| 10456 | |
| 10457 | |
| 10458 | |
| 10459 | |
| 10460 | |
| 10461 | <tr class="entry" id="controls_android.jpeg.gpsLocation"> |
| 10462 | <td class="entry_name |
| 10463 | " rowspan="3"> |
| 10464 | android.<wbr/>jpeg.<wbr/>gps<wbr/>Location |
| 10465 | </td> |
| 10466 | <td class="entry_type"> |
| 10467 | <span class="entry_type_name">byte</span> |
| 10468 | |
| 10469 | <span class="entry_type_visibility"> [java_public as location]</span> |
| 10470 | |
| 10471 | <span class="entry_type_synthetic">[synthetic] </span> |
| 10472 | |
| 10473 | <span class="entry_type_hwlevel">[legacy] </span> |
| 10474 | |
| 10475 | |
| 10476 | |
| 10477 | |
| 10478 | </td> <!-- entry_type --> |
| 10479 | |
| 10480 | <td class="entry_description"> |
| 10481 | <p>A location object to use when generating image GPS metadata.<wbr/></p> |
| 10482 | </td> |
| 10483 | |
| 10484 | <td class="entry_units"> |
| 10485 | </td> |
| 10486 | |
| 10487 | <td class="entry_range"> |
| 10488 | </td> |
| 10489 | |
| 10490 | <td class="entry_tags"> |
| 10491 | </td> |
| 10492 | |
| 10493 | </tr> |
| 10494 | <tr class="entries_header"> |
| 10495 | <th class="th_details" colspan="5">Details</th> |
| 10496 | </tr> |
| 10497 | <tr class="entry_cont"> |
| 10498 | <td class="entry_details" colspan="5"> |
| 10499 | <p>Setting a location object in a request will include the GPS coordinates of the location |
| 10500 | into any JPEG images captured based on the request.<wbr/> These coordinates can then be |
| 10501 | viewed by anyone who receives the JPEG image.<wbr/></p> |
| 10502 | </td> |
| 10503 | </tr> |
| 10504 | |
| 10505 | |
| 10506 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 10507 | <!-- end of entry --> |
| 10508 | |
| 10509 | |
| 10510 | <tr class="entry" id="controls_android.jpeg.gpsCoordinates"> |
| 10511 | <td class="entry_name |
| 10512 | " rowspan="1"> |
| 10513 | android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates |
| 10514 | </td> |
| 10515 | <td class="entry_type"> |
| 10516 | <span class="entry_type_name">double</span> |
| 10517 | <span class="entry_type_container">x</span> |
| 10518 | |
| 10519 | <span class="entry_type_array"> |
| 10520 | 3 |
| 10521 | </span> |
| 10522 | <span class="entry_type_visibility"> [ndk_public]</span> |
| 10523 | |
| 10524 | |
| 10525 | <span class="entry_type_hwlevel">[legacy] </span> |
| 10526 | |
| 10527 | |
| 10528 | <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div> |
| 10529 | |
| 10530 | |
| 10531 | </td> <!-- entry_type --> |
| 10532 | |
| 10533 | <td class="entry_description"> |
| 10534 | <p>GPS coordinates to include in output JPEG |
| 10535 | EXIF.<wbr/></p> |
| 10536 | </td> |
| 10537 | |
| 10538 | <td class="entry_units"> |
| 10539 | </td> |
| 10540 | |
| 10541 | <td class="entry_range"> |
| 10542 | <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p> |
| 10543 | </td> |
| 10544 | |
| 10545 | <td class="entry_tags"> |
| 10546 | <ul class="entry_tags"> |
| 10547 | <li><a href="#tag_BC">BC</a></li> |
| 10548 | </ul> |
| 10549 | </td> |
| 10550 | |
| 10551 | </tr> |
| 10552 | |
| 10553 | |
| 10554 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 10555 | <!-- end of entry --> |
| 10556 | |
| 10557 | |
| 10558 | <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod"> |
| 10559 | <td class="entry_name |
| 10560 | " rowspan="1"> |
| 10561 | android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method |
| 10562 | </td> |
| 10563 | <td class="entry_type"> |
| 10564 | <span class="entry_type_name">byte</span> |
| 10565 | |
| 10566 | <span class="entry_type_visibility"> [ndk_public as string]</span> |
| 10567 | |
| 10568 | |
| 10569 | <span class="entry_type_hwlevel">[legacy] </span> |
| 10570 | |
| 10571 | |
| 10572 | |
| 10573 | |
| 10574 | </td> <!-- entry_type --> |
| 10575 | |
| 10576 | <td class="entry_description"> |
| 10577 | <p>32 characters describing GPS algorithm to |
| 10578 | include in EXIF.<wbr/></p> |
| 10579 | </td> |
| 10580 | |
| 10581 | <td class="entry_units"> |
| 10582 | UTF-8 null-terminated string |
| 10583 | </td> |
| 10584 | |
| 10585 | <td class="entry_range"> |
| 10586 | </td> |
| 10587 | |
| 10588 | <td class="entry_tags"> |
| 10589 | <ul class="entry_tags"> |
| 10590 | <li><a href="#tag_BC">BC</a></li> |
| 10591 | </ul> |
| 10592 | </td> |
| 10593 | |
| 10594 | </tr> |
| 10595 | |
| 10596 | |
| 10597 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 10598 | <!-- end of entry --> |
| 10599 | |
| 10600 | |
| 10601 | <tr class="entry" id="controls_android.jpeg.gpsTimestamp"> |
| 10602 | <td class="entry_name |
| 10603 | " rowspan="1"> |
| 10604 | android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp |
| 10605 | </td> |
| 10606 | <td class="entry_type"> |
| 10607 | <span class="entry_type_name">int64</span> |
| 10608 | |
| 10609 | <span class="entry_type_visibility"> [ndk_public]</span> |
| 10610 | |
| 10611 | |
| 10612 | <span class="entry_type_hwlevel">[legacy] </span> |
| 10613 | |
| 10614 | |
| 10615 | |
| 10616 | |
| 10617 | </td> <!-- entry_type --> |
| 10618 | |
| 10619 | <td class="entry_description"> |
| 10620 | <p>Time GPS fix was made to include in |
| 10621 | EXIF.<wbr/></p> |
| 10622 | </td> |
| 10623 | |
| 10624 | <td class="entry_units"> |
| 10625 | UTC in seconds since January 1,<wbr/> 1970 |
| 10626 | </td> |
| 10627 | |
| 10628 | <td class="entry_range"> |
| 10629 | </td> |
| 10630 | |
| 10631 | <td class="entry_tags"> |
| 10632 | <ul class="entry_tags"> |
| 10633 | <li><a href="#tag_BC">BC</a></li> |
| 10634 | </ul> |
| 10635 | </td> |
| 10636 | |
| 10637 | </tr> |
| 10638 | |
| 10639 | |
| 10640 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 10641 | <!-- end of entry --> |
| 10642 | |
| 10643 | |
| 10644 | <tr class="entry" id="controls_android.jpeg.orientation"> |
| 10645 | <td class="entry_name |
| 10646 | " rowspan="3"> |
| 10647 | android.<wbr/>jpeg.<wbr/>orientation |
| 10648 | </td> |
| 10649 | <td class="entry_type"> |
| 10650 | <span class="entry_type_name">int32</span> |
| 10651 | |
| 10652 | <span class="entry_type_visibility"> [public]</span> |
| 10653 | |
| 10654 | |
| 10655 | <span class="entry_type_hwlevel">[legacy] </span> |
| 10656 | |
| 10657 | |
| 10658 | |
| 10659 | |
| 10660 | </td> <!-- entry_type --> |
| 10661 | |
| 10662 | <td class="entry_description"> |
| 10663 | <p>The orientation for a JPEG image.<wbr/></p> |
| 10664 | </td> |
| 10665 | |
| 10666 | <td class="entry_units"> |
| 10667 | Degrees in multiples of 90 |
| 10668 | </td> |
| 10669 | |
| 10670 | <td class="entry_range"> |
| 10671 | <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> |
| 10672 | </td> |
| 10673 | |
| 10674 | <td class="entry_tags"> |
| 10675 | <ul class="entry_tags"> |
| 10676 | <li><a href="#tag_BC">BC</a></li> |
| 10677 | </ul> |
| 10678 | </td> |
| 10679 | |
| 10680 | </tr> |
| 10681 | <tr class="entries_header"> |
| 10682 | <th class="th_details" colspan="5">Details</th> |
| 10683 | </tr> |
| 10684 | <tr class="entry_cont"> |
| 10685 | <td class="entry_details" colspan="5"> |
| 10686 | <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation |
| 10687 | to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed |
| 10688 | upright.<wbr/></p> |
| 10689 | <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or |
| 10690 | rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/> |
| 10691 | the thumbnail data will also be rotated.<wbr/></p> |
| 10692 | <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given |
| 10693 | by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p> |
| 10694 | <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following |
| 10695 | sample code may be used:</p> |
| 10696 | <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) { |
| 10697 | if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0; |
| 10698 | int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION); |
| 10699 | |
| 10700 | //<wbr/> Round device orientation to a multiple of 90 |
| 10701 | deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90; |
| 10702 | |
| 10703 | //<wbr/> Reverse device orientation for front-facing cameras |
| 10704 | boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT; |
| 10705 | if (facingFront) deviceOrientation = -deviceOrientation; |
| 10706 | |
| 10707 | //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make |
| 10708 | //<wbr/> the image upright relative to the device orientation |
| 10709 | int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360; |
| 10710 | |
| 10711 | return jpegOrientation; |
| 10712 | } |
| 10713 | </code></pre> |
| 10714 | </td> |
| 10715 | </tr> |
| 10716 | |
| 10717 | |
| 10718 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 10719 | <!-- end of entry --> |
| 10720 | |
| 10721 | |
| 10722 | <tr class="entry" id="controls_android.jpeg.quality"> |
| 10723 | <td class="entry_name |
| 10724 | " rowspan="3"> |
| 10725 | android.<wbr/>jpeg.<wbr/>quality |
| 10726 | </td> |
| 10727 | <td class="entry_type"> |
| 10728 | <span class="entry_type_name">byte</span> |
| 10729 | |
| 10730 | <span class="entry_type_visibility"> [public]</span> |
| 10731 | |
| 10732 | |
| 10733 | <span class="entry_type_hwlevel">[legacy] </span> |
| 10734 | |
| 10735 | |
| 10736 | |
| 10737 | |
| 10738 | </td> <!-- entry_type --> |
| 10739 | |
| 10740 | <td class="entry_description"> |
| 10741 | <p>Compression quality of the final JPEG |
| 10742 | image.<wbr/></p> |
| 10743 | </td> |
| 10744 | |
| 10745 | <td class="entry_units"> |
| 10746 | </td> |
| 10747 | |
| 10748 | <td class="entry_range"> |
| 10749 | <p>1-100; larger is higher quality</p> |
| 10750 | </td> |
| 10751 | |
| 10752 | <td class="entry_tags"> |
| 10753 | <ul class="entry_tags"> |
| 10754 | <li><a href="#tag_BC">BC</a></li> |
| 10755 | </ul> |
| 10756 | </td> |
| 10757 | |
| 10758 | </tr> |
| 10759 | <tr class="entries_header"> |
| 10760 | <th class="th_details" colspan="5">Details</th> |
| 10761 | </tr> |
| 10762 | <tr class="entry_cont"> |
| 10763 | <td class="entry_details" colspan="5"> |
| 10764 | <p>85-95 is typical usage range.<wbr/></p> |
| 10765 | </td> |
| 10766 | </tr> |
| 10767 | |
| 10768 | |
| 10769 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 10770 | <!-- end of entry --> |
| 10771 | |
| 10772 | |
| 10773 | <tr class="entry" id="controls_android.jpeg.thumbnailQuality"> |
| 10774 | <td class="entry_name |
| 10775 | " rowspan="1"> |
| 10776 | android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality |
| 10777 | </td> |
| 10778 | <td class="entry_type"> |
| 10779 | <span class="entry_type_name">byte</span> |
| 10780 | |
| 10781 | <span class="entry_type_visibility"> [public]</span> |
| 10782 | |
| 10783 | |
| 10784 | <span class="entry_type_hwlevel">[legacy] </span> |
| 10785 | |
| 10786 | |
| 10787 | |
| 10788 | |
| 10789 | </td> <!-- entry_type --> |
| 10790 | |
| 10791 | <td class="entry_description"> |
| 10792 | <p>Compression quality of JPEG |
| 10793 | thumbnail.<wbr/></p> |
| 10794 | </td> |
| 10795 | |
| 10796 | <td class="entry_units"> |
| 10797 | </td> |
| 10798 | |
| 10799 | <td class="entry_range"> |
| 10800 | <p>1-100; larger is higher quality</p> |
| 10801 | </td> |
| 10802 | |
| 10803 | <td class="entry_tags"> |
| 10804 | <ul class="entry_tags"> |
| 10805 | <li><a href="#tag_BC">BC</a></li> |
| 10806 | </ul> |
| 10807 | </td> |
| 10808 | |
| 10809 | </tr> |
| 10810 | |
| 10811 | |
| 10812 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 10813 | <!-- end of entry --> |
| 10814 | |
| 10815 | |
| 10816 | <tr class="entry" id="controls_android.jpeg.thumbnailSize"> |
| 10817 | <td class="entry_name |
| 10818 | " rowspan="5"> |
| 10819 | android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size |
| 10820 | </td> |
| 10821 | <td class="entry_type"> |
| 10822 | <span class="entry_type_name">int32</span> |
| 10823 | <span class="entry_type_container">x</span> |
| 10824 | |
| 10825 | <span class="entry_type_array"> |
| 10826 | 2 |
| 10827 | </span> |
| 10828 | <span class="entry_type_visibility"> [public as size]</span> |
| 10829 | |
| 10830 | |
| 10831 | <span class="entry_type_hwlevel">[legacy] </span> |
| 10832 | |
| 10833 | |
| 10834 | |
| 10835 | |
| 10836 | </td> <!-- entry_type --> |
| 10837 | |
| 10838 | <td class="entry_description"> |
| 10839 | <p>Resolution of embedded JPEG thumbnail.<wbr/></p> |
| 10840 | </td> |
| 10841 | |
| 10842 | <td class="entry_units"> |
| 10843 | </td> |
| 10844 | |
| 10845 | <td class="entry_range"> |
| 10846 | <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p> |
| 10847 | </td> |
| 10848 | |
| 10849 | <td class="entry_tags"> |
| 10850 | <ul class="entry_tags"> |
| 10851 | <li><a href="#tag_BC">BC</a></li> |
| 10852 | </ul> |
| 10853 | </td> |
| 10854 | |
| 10855 | </tr> |
| 10856 | <tr class="entries_header"> |
| 10857 | <th class="th_details" colspan="5">Details</th> |
| 10858 | </tr> |
| 10859 | <tr class="entry_cont"> |
| 10860 | <td class="entry_details" colspan="5"> |
| 10861 | <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/> |
| 10862 | but the captured JPEG will still be a valid image.<wbr/></p> |
| 10863 | <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected |
| 10864 | should have the same aspect ratio as the main JPEG output.<wbr/></p> |
| 10865 | <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect |
| 10866 | ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/> |
| 10867 | For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has |
| 10868 | 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to |
| 10869 | generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field |
| 10870 | Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p> |
| 10871 | <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/> |
| 10872 | the camera device will handle thumbnail rotation in one of the following ways:</p> |
| 10873 | <ul> |
| 10874 | <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a> |
| 10875 | and keep jpeg and thumbnail image data unrotated.<wbr/></li> |
| 10876 | <li>Rotate the jpeg and thumbnail image data and not set |
| 10877 | <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this |
| 10878 | case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in |
| 10879 | capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree |
| 10880 | orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail |
| 10881 | size.<wbr/></li> |
| 10882 | </ul> |
| 10883 | </td> |
| 10884 | </tr> |
| 10885 | |
| 10886 | <tr class="entries_header"> |
| 10887 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 10888 | </tr> |
| 10889 | <tr class="entry_cont"> |
| 10890 | <td class="entry_details" colspan="5"> |
| 10891 | <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/> |
| 10892 | The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/> |
| 10893 | The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the |
| 10894 | thumbnail image cropping.<wbr/></p> |
| 10895 | </td> |
| 10896 | </tr> |
| 10897 | |
| 10898 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 10899 | <!-- end of entry --> |
| 10900 | |
| 10901 | |
| 10902 | |
| 10903 | <!-- end of kind --> |
| 10904 | </tbody> |
| 10905 | <tr><td colspan="6" class="kind">static</td></tr> |
| 10906 | |
| 10907 | <thead class="entries_header"> |
| 10908 | <tr> |
| 10909 | <th class="th_name">Property Name</th> |
| 10910 | <th class="th_type">Type</th> |
| 10911 | <th class="th_description">Description</th> |
| 10912 | <th class="th_units">Units</th> |
| 10913 | <th class="th_range">Range</th> |
| 10914 | <th class="th_tags">Tags</th> |
| 10915 | </tr> |
| 10916 | </thead> |
| 10917 | |
| 10918 | <tbody> |
| 10919 | |
| 10920 | |
| 10921 | |
| 10922 | |
| 10923 | |
| 10924 | |
| 10925 | |
| 10926 | |
| 10927 | |
| 10928 | |
| 10929 | <tr class="entry" id="static_android.jpeg.availableThumbnailSizes"> |
| 10930 | <td class="entry_name |
| 10931 | " rowspan="3"> |
| 10932 | android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes |
| 10933 | </td> |
| 10934 | <td class="entry_type"> |
| 10935 | <span class="entry_type_name">int32</span> |
| 10936 | <span class="entry_type_container">x</span> |
| 10937 | |
| 10938 | <span class="entry_type_array"> |
| 10939 | 2 x n |
| 10940 | </span> |
| 10941 | <span class="entry_type_visibility"> [public as size]</span> |
| 10942 | |
| 10943 | |
| 10944 | <span class="entry_type_hwlevel">[legacy] </span> |
| 10945 | |
| 10946 | |
| 10947 | |
| 10948 | |
| 10949 | </td> <!-- entry_type --> |
| 10950 | |
| 10951 | <td class="entry_description"> |
| 10952 | <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this |
| 10953 | camera device.<wbr/></p> |
| 10954 | </td> |
| 10955 | |
| 10956 | <td class="entry_units"> |
| 10957 | </td> |
| 10958 | |
| 10959 | <td class="entry_range"> |
| 10960 | </td> |
| 10961 | |
| 10962 | <td class="entry_tags"> |
| 10963 | <ul class="entry_tags"> |
| 10964 | <li><a href="#tag_BC">BC</a></li> |
| 10965 | </ul> |
| 10966 | </td> |
| 10967 | |
| 10968 | </tr> |
| 10969 | <tr class="entries_header"> |
| 10970 | <th class="th_details" colspan="5">Details</th> |
| 10971 | </tr> |
| 10972 | <tr class="entry_cont"> |
| 10973 | <td class="entry_details" colspan="5"> |
| 10974 | <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no |
| 10975 | thumbnail should be generated.<wbr/></p> |
| 10976 | <p>Below condiditions will be satisfied for this size list:</p> |
| 10977 | <ul> |
| 10978 | <li>The sizes will be sorted by increasing pixel area (width x height).<wbr/> |
| 10979 | If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li> |
| 10980 | <li>The aspect ratio of the largest thumbnail size will be same as the |
| 10981 | 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/> |
| 10982 | The largest size is defined as the size that has the largest pixel area |
| 10983 | in a given size list.<wbr/></li> |
| 10984 | <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 |
| 10985 | one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/> |
| 10986 | and vice versa.<wbr/></li> |
| 10987 | <li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li> |
| 10988 | </ul> |
| 10989 | </td> |
| 10990 | </tr> |
| 10991 | |
| 10992 | |
| 10993 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 10994 | <!-- end of entry --> |
| 10995 | |
| 10996 | |
| 10997 | <tr class="entry" id="static_android.jpeg.maxSize"> |
| 10998 | <td class="entry_name |
| 10999 | " rowspan="3"> |
| 11000 | android.<wbr/>jpeg.<wbr/>max<wbr/>Size |
| 11001 | </td> |
| 11002 | <td class="entry_type"> |
| 11003 | <span class="entry_type_name">int32</span> |
| 11004 | |
| 11005 | <span class="entry_type_visibility"> [system]</span> |
| 11006 | |
| 11007 | |
| 11008 | |
| 11009 | |
| 11010 | |
| 11011 | |
| 11012 | </td> <!-- entry_type --> |
| 11013 | |
| 11014 | <td class="entry_description"> |
| 11015 | <p>Maximum size in bytes for the compressed |
| 11016 | JPEG buffer</p> |
| 11017 | </td> |
| 11018 | |
| 11019 | <td class="entry_units"> |
| 11020 | </td> |
| 11021 | |
| 11022 | <td class="entry_range"> |
| 11023 | <p>Must be large enough to fit any JPEG produced by |
| 11024 | the camera</p> |
| 11025 | </td> |
| 11026 | |
| 11027 | <td class="entry_tags"> |
| 11028 | </td> |
| 11029 | |
| 11030 | </tr> |
| 11031 | <tr class="entries_header"> |
| 11032 | <th class="th_details" colspan="5">Details</th> |
| 11033 | </tr> |
| 11034 | <tr class="entry_cont"> |
| 11035 | <td class="entry_details" colspan="5"> |
| 11036 | <p>This is used for sizing the gralloc buffers for |
| 11037 | JPEG</p> |
| 11038 | </td> |
| 11039 | </tr> |
| 11040 | |
| 11041 | |
| 11042 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 11043 | <!-- end of entry --> |
| 11044 | |
| 11045 | |
| 11046 | |
| 11047 | <!-- end of kind --> |
| 11048 | </tbody> |
| 11049 | <tr><td colspan="6" class="kind">dynamic</td></tr> |
| 11050 | |
| 11051 | <thead class="entries_header"> |
| 11052 | <tr> |
| 11053 | <th class="th_name">Property Name</th> |
| 11054 | <th class="th_type">Type</th> |
| 11055 | <th class="th_description">Description</th> |
| 11056 | <th class="th_units">Units</th> |
| 11057 | <th class="th_range">Range</th> |
| 11058 | <th class="th_tags">Tags</th> |
| 11059 | </tr> |
| 11060 | </thead> |
| 11061 | |
| 11062 | <tbody> |
| 11063 | |
| 11064 | |
| 11065 | |
| 11066 | |
| 11067 | |
| 11068 | |
| 11069 | |
| 11070 | |
| 11071 | |
| 11072 | |
| 11073 | <tr class="entry" id="dynamic_android.jpeg.gpsLocation"> |
| 11074 | <td class="entry_name |
| 11075 | " rowspan="3"> |
| 11076 | android.<wbr/>jpeg.<wbr/>gps<wbr/>Location |
| 11077 | </td> |
| 11078 | <td class="entry_type"> |
| 11079 | <span class="entry_type_name">byte</span> |
| 11080 | |
| 11081 | <span class="entry_type_visibility"> [java_public as location]</span> |
| 11082 | |
| 11083 | <span class="entry_type_synthetic">[synthetic] </span> |
| 11084 | |
| 11085 | <span class="entry_type_hwlevel">[legacy] </span> |
| 11086 | |
| 11087 | |
| 11088 | |
| 11089 | |
| 11090 | </td> <!-- entry_type --> |
| 11091 | |
| 11092 | <td class="entry_description"> |
| 11093 | <p>A location object to use when generating image GPS metadata.<wbr/></p> |
| 11094 | </td> |
| 11095 | |
| 11096 | <td class="entry_units"> |
| 11097 | </td> |
| 11098 | |
| 11099 | <td class="entry_range"> |
| 11100 | </td> |
| 11101 | |
| 11102 | <td class="entry_tags"> |
| 11103 | </td> |
| 11104 | |
| 11105 | </tr> |
| 11106 | <tr class="entries_header"> |
| 11107 | <th class="th_details" colspan="5">Details</th> |
| 11108 | </tr> |
| 11109 | <tr class="entry_cont"> |
| 11110 | <td class="entry_details" colspan="5"> |
| 11111 | <p>Setting a location object in a request will include the GPS coordinates of the location |
| 11112 | into any JPEG images captured based on the request.<wbr/> These coordinates can then be |
| 11113 | viewed by anyone who receives the JPEG image.<wbr/></p> |
| 11114 | </td> |
| 11115 | </tr> |
| 11116 | |
| 11117 | |
| 11118 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 11119 | <!-- end of entry --> |
| 11120 | |
| 11121 | |
| 11122 | <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates"> |
| 11123 | <td class="entry_name |
| 11124 | " rowspan="1"> |
| 11125 | android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates |
| 11126 | </td> |
| 11127 | <td class="entry_type"> |
| 11128 | <span class="entry_type_name">double</span> |
| 11129 | <span class="entry_type_container">x</span> |
| 11130 | |
| 11131 | <span class="entry_type_array"> |
| 11132 | 3 |
| 11133 | </span> |
| 11134 | <span class="entry_type_visibility"> [ndk_public]</span> |
| 11135 | |
| 11136 | |
| 11137 | <span class="entry_type_hwlevel">[legacy] </span> |
| 11138 | |
| 11139 | |
| 11140 | <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div> |
| 11141 | |
| 11142 | |
| 11143 | </td> <!-- entry_type --> |
| 11144 | |
| 11145 | <td class="entry_description"> |
| 11146 | <p>GPS coordinates to include in output JPEG |
| 11147 | EXIF.<wbr/></p> |
| 11148 | </td> |
| 11149 | |
| 11150 | <td class="entry_units"> |
| 11151 | </td> |
| 11152 | |
| 11153 | <td class="entry_range"> |
| 11154 | <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p> |
| 11155 | </td> |
| 11156 | |
| 11157 | <td class="entry_tags"> |
| 11158 | <ul class="entry_tags"> |
| 11159 | <li><a href="#tag_BC">BC</a></li> |
| 11160 | </ul> |
| 11161 | </td> |
| 11162 | |
| 11163 | </tr> |
| 11164 | |
| 11165 | |
| 11166 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 11167 | <!-- end of entry --> |
| 11168 | |
| 11169 | |
| 11170 | <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod"> |
| 11171 | <td class="entry_name |
| 11172 | " rowspan="1"> |
| 11173 | android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method |
| 11174 | </td> |
| 11175 | <td class="entry_type"> |
| 11176 | <span class="entry_type_name">byte</span> |
| 11177 | |
| 11178 | <span class="entry_type_visibility"> [ndk_public as string]</span> |
| 11179 | |
| 11180 | |
| 11181 | <span class="entry_type_hwlevel">[legacy] </span> |
| 11182 | |
| 11183 | |
| 11184 | |
| 11185 | |
| 11186 | </td> <!-- entry_type --> |
| 11187 | |
| 11188 | <td class="entry_description"> |
| 11189 | <p>32 characters describing GPS algorithm to |
| 11190 | include in EXIF.<wbr/></p> |
| 11191 | </td> |
| 11192 | |
| 11193 | <td class="entry_units"> |
| 11194 | UTF-8 null-terminated string |
| 11195 | </td> |
| 11196 | |
| 11197 | <td class="entry_range"> |
| 11198 | </td> |
| 11199 | |
| 11200 | <td class="entry_tags"> |
| 11201 | <ul class="entry_tags"> |
| 11202 | <li><a href="#tag_BC">BC</a></li> |
| 11203 | </ul> |
| 11204 | </td> |
| 11205 | |
| 11206 | </tr> |
| 11207 | |
| 11208 | |
| 11209 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 11210 | <!-- end of entry --> |
| 11211 | |
| 11212 | |
| 11213 | <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp"> |
| 11214 | <td class="entry_name |
| 11215 | " rowspan="1"> |
| 11216 | android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp |
| 11217 | </td> |
| 11218 | <td class="entry_type"> |
| 11219 | <span class="entry_type_name">int64</span> |
| 11220 | |
| 11221 | <span class="entry_type_visibility"> [ndk_public]</span> |
| 11222 | |
| 11223 | |
| 11224 | <span class="entry_type_hwlevel">[legacy] </span> |
| 11225 | |
| 11226 | |
| 11227 | |
| 11228 | |
| 11229 | </td> <!-- entry_type --> |
| 11230 | |
| 11231 | <td class="entry_description"> |
| 11232 | <p>Time GPS fix was made to include in |
| 11233 | EXIF.<wbr/></p> |
| 11234 | </td> |
| 11235 | |
| 11236 | <td class="entry_units"> |
| 11237 | UTC in seconds since January 1,<wbr/> 1970 |
| 11238 | </td> |
| 11239 | |
| 11240 | <td class="entry_range"> |
| 11241 | </td> |
| 11242 | |
| 11243 | <td class="entry_tags"> |
| 11244 | <ul class="entry_tags"> |
| 11245 | <li><a href="#tag_BC">BC</a></li> |
| 11246 | </ul> |
| 11247 | </td> |
| 11248 | |
| 11249 | </tr> |
| 11250 | |
| 11251 | |
| 11252 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 11253 | <!-- end of entry --> |
| 11254 | |
| 11255 | |
| 11256 | <tr class="entry" id="dynamic_android.jpeg.orientation"> |
| 11257 | <td class="entry_name |
| 11258 | " rowspan="3"> |
| 11259 | android.<wbr/>jpeg.<wbr/>orientation |
| 11260 | </td> |
| 11261 | <td class="entry_type"> |
| 11262 | <span class="entry_type_name">int32</span> |
| 11263 | |
| 11264 | <span class="entry_type_visibility"> [public]</span> |
| 11265 | |
| 11266 | |
| 11267 | <span class="entry_type_hwlevel">[legacy] </span> |
| 11268 | |
| 11269 | |
| 11270 | |
| 11271 | |
| 11272 | </td> <!-- entry_type --> |
| 11273 | |
| 11274 | <td class="entry_description"> |
| 11275 | <p>The orientation for a JPEG image.<wbr/></p> |
| 11276 | </td> |
| 11277 | |
| 11278 | <td class="entry_units"> |
| 11279 | Degrees in multiples of 90 |
| 11280 | </td> |
| 11281 | |
| 11282 | <td class="entry_range"> |
| 11283 | <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> |
| 11284 | </td> |
| 11285 | |
| 11286 | <td class="entry_tags"> |
| 11287 | <ul class="entry_tags"> |
| 11288 | <li><a href="#tag_BC">BC</a></li> |
| 11289 | </ul> |
| 11290 | </td> |
| 11291 | |
| 11292 | </tr> |
| 11293 | <tr class="entries_header"> |
| 11294 | <th class="th_details" colspan="5">Details</th> |
| 11295 | </tr> |
| 11296 | <tr class="entry_cont"> |
| 11297 | <td class="entry_details" colspan="5"> |
| 11298 | <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation |
| 11299 | to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed |
| 11300 | upright.<wbr/></p> |
| 11301 | <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or |
| 11302 | rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/> |
| 11303 | the thumbnail data will also be rotated.<wbr/></p> |
| 11304 | <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given |
| 11305 | by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p> |
| 11306 | <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following |
| 11307 | sample code may be used:</p> |
| 11308 | <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) { |
| 11309 | if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0; |
| 11310 | int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION); |
| 11311 | |
| 11312 | //<wbr/> Round device orientation to a multiple of 90 |
| 11313 | deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90; |
| 11314 | |
| 11315 | //<wbr/> Reverse device orientation for front-facing cameras |
| 11316 | boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT; |
| 11317 | if (facingFront) deviceOrientation = -deviceOrientation; |
| 11318 | |
| 11319 | //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make |
| 11320 | //<wbr/> the image upright relative to the device orientation |
| 11321 | int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360; |
| 11322 | |
| 11323 | return jpegOrientation; |
| 11324 | } |
| 11325 | </code></pre> |
| 11326 | </td> |
| 11327 | </tr> |
| 11328 | |
| 11329 | |
| 11330 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 11331 | <!-- end of entry --> |
| 11332 | |
| 11333 | |
| 11334 | <tr class="entry" id="dynamic_android.jpeg.quality"> |
| 11335 | <td class="entry_name |
| 11336 | " rowspan="3"> |
| 11337 | android.<wbr/>jpeg.<wbr/>quality |
| 11338 | </td> |
| 11339 | <td class="entry_type"> |
| 11340 | <span class="entry_type_name">byte</span> |
| 11341 | |
| 11342 | <span class="entry_type_visibility"> [public]</span> |
| 11343 | |
| 11344 | |
| 11345 | <span class="entry_type_hwlevel">[legacy] </span> |
| 11346 | |
| 11347 | |
| 11348 | |
| 11349 | |
| 11350 | </td> <!-- entry_type --> |
| 11351 | |
| 11352 | <td class="entry_description"> |
| 11353 | <p>Compression quality of the final JPEG |
| 11354 | image.<wbr/></p> |
| 11355 | </td> |
| 11356 | |
| 11357 | <td class="entry_units"> |
| 11358 | </td> |
| 11359 | |
| 11360 | <td class="entry_range"> |
| 11361 | <p>1-100; larger is higher quality</p> |
| 11362 | </td> |
| 11363 | |
| 11364 | <td class="entry_tags"> |
| 11365 | <ul class="entry_tags"> |
| 11366 | <li><a href="#tag_BC">BC</a></li> |
| 11367 | </ul> |
| 11368 | </td> |
| 11369 | |
| 11370 | </tr> |
| 11371 | <tr class="entries_header"> |
| 11372 | <th class="th_details" colspan="5">Details</th> |
| 11373 | </tr> |
| 11374 | <tr class="entry_cont"> |
| 11375 | <td class="entry_details" colspan="5"> |
| 11376 | <p>85-95 is typical usage range.<wbr/></p> |
| 11377 | </td> |
| 11378 | </tr> |
| 11379 | |
| 11380 | |
| 11381 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 11382 | <!-- end of entry --> |
| 11383 | |
| 11384 | |
| 11385 | <tr class="entry" id="dynamic_android.jpeg.size"> |
| 11386 | <td class="entry_name |
| 11387 | " rowspan="3"> |
| 11388 | android.<wbr/>jpeg.<wbr/>size |
| 11389 | </td> |
| 11390 | <td class="entry_type"> |
| 11391 | <span class="entry_type_name">int32</span> |
| 11392 | |
| 11393 | <span class="entry_type_visibility"> [system]</span> |
| 11394 | |
| 11395 | |
| 11396 | |
| 11397 | |
| 11398 | |
| 11399 | |
| 11400 | </td> <!-- entry_type --> |
| 11401 | |
| 11402 | <td class="entry_description"> |
| 11403 | <p>The size of the compressed JPEG image,<wbr/> in |
| 11404 | bytes</p> |
| 11405 | </td> |
| 11406 | |
| 11407 | <td class="entry_units"> |
| 11408 | </td> |
| 11409 | |
| 11410 | <td class="entry_range"> |
| 11411 | <p>>= 0</p> |
| 11412 | </td> |
| 11413 | |
| 11414 | <td class="entry_tags"> |
| 11415 | <ul class="entry_tags"> |
| 11416 | <li><a href="#tag_FUTURE">FUTURE</a></li> |
| 11417 | </ul> |
| 11418 | </td> |
| 11419 | |
| 11420 | </tr> |
| 11421 | <tr class="entries_header"> |
| 11422 | <th class="th_details" colspan="5">Details</th> |
| 11423 | </tr> |
| 11424 | <tr class="entry_cont"> |
| 11425 | <td class="entry_details" colspan="5"> |
| 11426 | <p>If no JPEG output is produced for the request,<wbr/> |
| 11427 | this must be 0.<wbr/></p> |
| 11428 | <p>Otherwise,<wbr/> this describes the real size of the compressed |
| 11429 | JPEG image placed in the output stream.<wbr/> More specifically,<wbr/> |
| 11430 | if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture |
| 11431 | has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from |
| 11432 | the JPEG stream will be 1000000 bytes,<wbr/> of which the first |
| 11433 | 500000 make up the real data.<wbr/></p> |
| 11434 | </td> |
| 11435 | </tr> |
| 11436 | |
| 11437 | |
| 11438 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 11439 | <!-- end of entry --> |
| 11440 | |
| 11441 | |
| 11442 | <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality"> |
| 11443 | <td class="entry_name |
| 11444 | " rowspan="1"> |
| 11445 | android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality |
| 11446 | </td> |
| 11447 | <td class="entry_type"> |
| 11448 | <span class="entry_type_name">byte</span> |
| 11449 | |
| 11450 | <span class="entry_type_visibility"> [public]</span> |
| 11451 | |
| 11452 | |
| 11453 | <span class="entry_type_hwlevel">[legacy] </span> |
| 11454 | |
| 11455 | |
| 11456 | |
| 11457 | |
| 11458 | </td> <!-- entry_type --> |
| 11459 | |
| 11460 | <td class="entry_description"> |
| 11461 | <p>Compression quality of JPEG |
| 11462 | thumbnail.<wbr/></p> |
| 11463 | </td> |
| 11464 | |
| 11465 | <td class="entry_units"> |
| 11466 | </td> |
| 11467 | |
| 11468 | <td class="entry_range"> |
| 11469 | <p>1-100; larger is higher quality</p> |
| 11470 | </td> |
| 11471 | |
| 11472 | <td class="entry_tags"> |
| 11473 | <ul class="entry_tags"> |
| 11474 | <li><a href="#tag_BC">BC</a></li> |
| 11475 | </ul> |
| 11476 | </td> |
| 11477 | |
| 11478 | </tr> |
| 11479 | |
| 11480 | |
| 11481 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 11482 | <!-- end of entry --> |
| 11483 | |
| 11484 | |
| 11485 | <tr class="entry" id="dynamic_android.jpeg.thumbnailSize"> |
| 11486 | <td class="entry_name |
| 11487 | " rowspan="5"> |
| 11488 | android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size |
| 11489 | </td> |
| 11490 | <td class="entry_type"> |
| 11491 | <span class="entry_type_name">int32</span> |
| 11492 | <span class="entry_type_container">x</span> |
| 11493 | |
| 11494 | <span class="entry_type_array"> |
| 11495 | 2 |
| 11496 | </span> |
| 11497 | <span class="entry_type_visibility"> [public as size]</span> |
| 11498 | |
| 11499 | |
| 11500 | <span class="entry_type_hwlevel">[legacy] </span> |
| 11501 | |
| 11502 | |
| 11503 | |
| 11504 | |
| 11505 | </td> <!-- entry_type --> |
| 11506 | |
| 11507 | <td class="entry_description"> |
| 11508 | <p>Resolution of embedded JPEG thumbnail.<wbr/></p> |
| 11509 | </td> |
| 11510 | |
| 11511 | <td class="entry_units"> |
| 11512 | </td> |
| 11513 | |
| 11514 | <td class="entry_range"> |
| 11515 | <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p> |
| 11516 | </td> |
| 11517 | |
| 11518 | <td class="entry_tags"> |
| 11519 | <ul class="entry_tags"> |
| 11520 | <li><a href="#tag_BC">BC</a></li> |
| 11521 | </ul> |
| 11522 | </td> |
| 11523 | |
| 11524 | </tr> |
| 11525 | <tr class="entries_header"> |
| 11526 | <th class="th_details" colspan="5">Details</th> |
| 11527 | </tr> |
| 11528 | <tr class="entry_cont"> |
| 11529 | <td class="entry_details" colspan="5"> |
| 11530 | <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/> |
| 11531 | but the captured JPEG will still be a valid image.<wbr/></p> |
| 11532 | <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected |
| 11533 | should have the same aspect ratio as the main JPEG output.<wbr/></p> |
| 11534 | <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect |
| 11535 | ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/> |
| 11536 | For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has |
| 11537 | 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to |
| 11538 | generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field |
| 11539 | Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p> |
| 11540 | <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/> |
| 11541 | the camera device will handle thumbnail rotation in one of the following ways:</p> |
| 11542 | <ul> |
| 11543 | <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a> |
| 11544 | and keep jpeg and thumbnail image data unrotated.<wbr/></li> |
| 11545 | <li>Rotate the jpeg and thumbnail image data and not set |
| 11546 | <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this |
| 11547 | case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in |
| 11548 | capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree |
| 11549 | orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail |
| 11550 | size.<wbr/></li> |
| 11551 | </ul> |
| 11552 | </td> |
| 11553 | </tr> |
| 11554 | |
| 11555 | <tr class="entries_header"> |
| 11556 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 11557 | </tr> |
| 11558 | <tr class="entry_cont"> |
| 11559 | <td class="entry_details" colspan="5"> |
| 11560 | <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/> |
| 11561 | The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/> |
| 11562 | The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the |
| 11563 | thumbnail image cropping.<wbr/></p> |
| 11564 | </td> |
| 11565 | </tr> |
| 11566 | |
| 11567 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 11568 | <!-- end of entry --> |
| 11569 | |
| 11570 | |
| 11571 | |
| 11572 | <!-- end of kind --> |
| 11573 | </tbody> |
| 11574 | |
| 11575 | <!-- end of section --> |
| 11576 | <tr><td colspan="6" id="section_lens" class="section">lens</td></tr> |
| 11577 | |
| 11578 | |
| 11579 | <tr><td colspan="6" class="kind">controls</td></tr> |
| 11580 | |
| 11581 | <thead class="entries_header"> |
| 11582 | <tr> |
| 11583 | <th class="th_name">Property Name</th> |
| 11584 | <th class="th_type">Type</th> |
| 11585 | <th class="th_description">Description</th> |
| 11586 | <th class="th_units">Units</th> |
| 11587 | <th class="th_range">Range</th> |
| 11588 | <th class="th_tags">Tags</th> |
| 11589 | </tr> |
| 11590 | </thead> |
| 11591 | |
| 11592 | <tbody> |
| 11593 | |
| 11594 | |
| 11595 | |
| 11596 | |
| 11597 | |
| 11598 | |
| 11599 | |
| 11600 | |
| 11601 | |
| 11602 | |
| 11603 | <tr class="entry" id="controls_android.lens.aperture"> |
| 11604 | <td class="entry_name |
| 11605 | " rowspan="3"> |
| 11606 | android.<wbr/>lens.<wbr/>aperture |
| 11607 | </td> |
| 11608 | <td class="entry_type"> |
| 11609 | <span class="entry_type_name">float</span> |
| 11610 | |
| 11611 | <span class="entry_type_visibility"> [public]</span> |
| 11612 | |
| 11613 | |
| 11614 | <span class="entry_type_hwlevel">[full] </span> |
| 11615 | |
| 11616 | |
| 11617 | |
| 11618 | |
| 11619 | </td> <!-- entry_type --> |
| 11620 | |
| 11621 | <td class="entry_description"> |
| 11622 | <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the |
| 11623 | effective aperture diameter.<wbr/></p> |
| 11624 | </td> |
| 11625 | |
| 11626 | <td class="entry_units"> |
| 11627 | The f-number (f/<wbr/>N) |
| 11628 | </td> |
| 11629 | |
| 11630 | <td class="entry_range"> |
| 11631 | <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p> |
| 11632 | </td> |
| 11633 | |
| 11634 | <td class="entry_tags"> |
| 11635 | <ul class="entry_tags"> |
| 11636 | <li><a href="#tag_V1">V1</a></li> |
| 11637 | </ul> |
| 11638 | </td> |
| 11639 | |
| 11640 | </tr> |
| 11641 | <tr class="entries_header"> |
| 11642 | <th class="th_details" colspan="5">Details</th> |
| 11643 | </tr> |
| 11644 | <tr class="entry_cont"> |
| 11645 | <td class="entry_details" colspan="5"> |
| 11646 | <p>Setting this value is only supported on the camera devices that have a variable |
| 11647 | aperture lens.<wbr/></p> |
| 11648 | <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> |
| 11649 | this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> |
| 11650 | <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> |
| 11651 | to achieve manual exposure control.<wbr/></p> |
| 11652 | <p>The requested aperture value may take several frames to reach the |
| 11653 | requested value; the camera device will report the current (intermediate) |
| 11654 | aperture size in capture result metadata while the aperture is changing.<wbr/> |
| 11655 | 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> |
| 11656 | <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of |
| 11657 | the ON modes,<wbr/> this will be overridden by the camera device |
| 11658 | auto-exposure algorithm,<wbr/> the overridden values are then provided |
| 11659 | back to the user in the corresponding result.<wbr/></p> |
| 11660 | </td> |
| 11661 | </tr> |
| 11662 | |
| 11663 | |
| 11664 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 11665 | <!-- end of entry --> |
| 11666 | |
| 11667 | |
| 11668 | <tr class="entry" id="controls_android.lens.filterDensity"> |
| 11669 | <td class="entry_name |
| 11670 | " rowspan="3"> |
| 11671 | android.<wbr/>lens.<wbr/>filter<wbr/>Density |
| 11672 | </td> |
| 11673 | <td class="entry_type"> |
| 11674 | <span class="entry_type_name">float</span> |
| 11675 | |
| 11676 | <span class="entry_type_visibility"> [public]</span> |
| 11677 | |
| 11678 | |
| 11679 | <span class="entry_type_hwlevel">[full] </span> |
| 11680 | |
| 11681 | |
| 11682 | |
| 11683 | |
| 11684 | </td> <!-- entry_type --> |
| 11685 | |
| 11686 | <td class="entry_description"> |
| 11687 | <p>The desired setting for the lens neutral density filter(s).<wbr/></p> |
| 11688 | </td> |
| 11689 | |
| 11690 | <td class="entry_units"> |
| 11691 | Exposure Value (EV) |
| 11692 | </td> |
| 11693 | |
| 11694 | <td class="entry_range"> |
| 11695 | <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p> |
| 11696 | </td> |
| 11697 | |
| 11698 | <td class="entry_tags"> |
| 11699 | <ul class="entry_tags"> |
| 11700 | <li><a href="#tag_V1">V1</a></li> |
| 11701 | </ul> |
| 11702 | </td> |
| 11703 | |
| 11704 | </tr> |
| 11705 | <tr class="entries_header"> |
| 11706 | <th class="th_details" colspan="5">Details</th> |
| 11707 | </tr> |
| 11708 | <tr class="entry_cont"> |
| 11709 | <td class="entry_details" colspan="5"> |
| 11710 | <p>This control will not be supported on most camera devices.<wbr/></p> |
| 11711 | <p>Lens filters are typically used to lower the amount of light the |
| 11712 | sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV |
| 11713 | step is the standard logarithmic representation,<wbr/> which are |
| 11714 | non-negative,<wbr/> and inversely proportional to the amount of light |
| 11715 | hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result |
| 11716 | in no reduction of the incoming light,<wbr/> and setting this to 2 would |
| 11717 | mean that the filter is set to reduce incoming light by two stops |
| 11718 | (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p> |
| 11719 | <p>It may take several frames before the lens filter density changes |
| 11720 | to the requested value.<wbr/> While the filter density is still changing,<wbr/> |
| 11721 | <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> |
| 11722 | </td> |
| 11723 | </tr> |
| 11724 | |
| 11725 | |
| 11726 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 11727 | <!-- end of entry --> |
| 11728 | |
| 11729 | |
| 11730 | <tr class="entry" id="controls_android.lens.focalLength"> |
| 11731 | <td class="entry_name |
| 11732 | " rowspan="3"> |
| 11733 | android.<wbr/>lens.<wbr/>focal<wbr/>Length |
| 11734 | </td> |
| 11735 | <td class="entry_type"> |
| 11736 | <span class="entry_type_name">float</span> |
| 11737 | |
| 11738 | <span class="entry_type_visibility"> [public]</span> |
| 11739 | |
| 11740 | |
| 11741 | <span class="entry_type_hwlevel">[legacy] </span> |
| 11742 | |
| 11743 | |
| 11744 | |
| 11745 | |
| 11746 | </td> <!-- entry_type --> |
| 11747 | |
| 11748 | <td class="entry_description"> |
| 11749 | <p>The desired lens focal length; used for optical zoom.<wbr/></p> |
| 11750 | </td> |
| 11751 | |
| 11752 | <td class="entry_units"> |
| 11753 | Millimeters |
| 11754 | </td> |
| 11755 | |
| 11756 | <td class="entry_range"> |
| 11757 | <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p> |
| 11758 | </td> |
| 11759 | |
| 11760 | <td class="entry_tags"> |
| 11761 | <ul class="entry_tags"> |
| 11762 | <li><a href="#tag_V1">V1</a></li> |
| 11763 | </ul> |
| 11764 | </td> |
| 11765 | |
| 11766 | </tr> |
| 11767 | <tr class="entries_header"> |
| 11768 | <th class="th_details" colspan="5">Details</th> |
| 11769 | </tr> |
| 11770 | <tr class="entry_cont"> |
| 11771 | <td class="entry_details" colspan="5"> |
| 11772 | <p>This setting controls the physical focal length of the camera |
| 11773 | device's lens.<wbr/> Changing the focal length changes the field of |
| 11774 | view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p> |
| 11775 | <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 |
| 11776 | setting won't be applied instantaneously,<wbr/> and it may take several |
| 11777 | frames before the lens can change to the requested focal length.<wbr/> |
| 11778 | While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will |
| 11779 | be set to MOVING.<wbr/></p> |
| 11780 | <p>Optical zoom will not be supported on most devices.<wbr/></p> |
| 11781 | </td> |
| 11782 | </tr> |
| 11783 | |
| 11784 | |
| 11785 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 11786 | <!-- end of entry --> |
| 11787 | |
| 11788 | |
| 11789 | <tr class="entry" id="controls_android.lens.focusDistance"> |
| 11790 | <td class="entry_name |
| 11791 | " rowspan="3"> |
| 11792 | android.<wbr/>lens.<wbr/>focus<wbr/>Distance |
| 11793 | </td> |
| 11794 | <td class="entry_type"> |
| 11795 | <span class="entry_type_name">float</span> |
| 11796 | |
| 11797 | <span class="entry_type_visibility"> [public]</span> |
| 11798 | |
| 11799 | |
| 11800 | <span class="entry_type_hwlevel">[full] </span> |
| 11801 | |
| 11802 | |
| 11803 | |
| 11804 | |
| 11805 | </td> <!-- entry_type --> |
| 11806 | |
| 11807 | <td class="entry_description"> |
| 11808 | <p>Desired distance to plane of sharpest focus,<wbr/> |
| 11809 | measured from frontmost surface of the lens.<wbr/></p> |
| 11810 | </td> |
| 11811 | |
| 11812 | <td class="entry_units"> |
| 11813 | See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details |
| 11814 | </td> |
| 11815 | |
| 11816 | <td class="entry_range"> |
| 11817 | <p>>= 0</p> |
| 11818 | </td> |
| 11819 | |
| 11820 | <td class="entry_tags"> |
| 11821 | <ul class="entry_tags"> |
| 11822 | <li><a href="#tag_BC">BC</a></li> |
| 11823 | <li><a href="#tag_V1">V1</a></li> |
| 11824 | </ul> |
| 11825 | </td> |
| 11826 | |
| 11827 | </tr> |
| 11828 | <tr class="entries_header"> |
| 11829 | <th class="th_details" colspan="5">Details</th> |
| 11830 | </tr> |
| 11831 | <tr class="entry_cont"> |
| 11832 | <td class="entry_details" colspan="5"> |
| 11833 | <p>This control can be used for setting manual focus,<wbr/> on devices that support |
| 11834 | the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see |
| 11835 | <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p> |
| 11836 | <p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to |
| 11837 | <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> |
| 11838 | <p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied |
| 11839 | instantaneously,<wbr/> and it may take several frames before the lens |
| 11840 | can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/> |
| 11841 | <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> |
| 11842 | <p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code> |
| 11843 | for infinity focus.<wbr/></p> |
| 11844 | </td> |
| 11845 | </tr> |
| 11846 | |
| 11847 | |
| 11848 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 11849 | <!-- end of entry --> |
| 11850 | |
| 11851 | |
| 11852 | <tr class="entry" id="controls_android.lens.opticalStabilizationMode"> |
| 11853 | <td class="entry_name |
| 11854 | " rowspan="3"> |
| 11855 | android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode |
| 11856 | </td> |
| 11857 | <td class="entry_type"> |
| 11858 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 11859 | |
| 11860 | <span class="entry_type_visibility"> [public]</span> |
| 11861 | |
| 11862 | |
| 11863 | <span class="entry_type_hwlevel">[limited] </span> |
| 11864 | |
| 11865 | |
| 11866 | |
| 11867 | <ul class="entry_type_enum"> |
| 11868 | <li> |
| 11869 | <span class="entry_type_enum_name">OFF</span> |
| 11870 | <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span> |
| 11871 | </li> |
| 11872 | <li> |
| 11873 | <span class="entry_type_enum_name">ON</span> |
| 11874 | <span class="entry_type_enum_optional">[optional]</span> |
| 11875 | <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span> |
| 11876 | </li> |
| 11877 | </ul> |
| 11878 | |
| 11879 | </td> <!-- entry_type --> |
| 11880 | |
| 11881 | <td class="entry_description"> |
| 11882 | <p>Sets whether the camera device uses optical image stabilization (OIS) |
| 11883 | when capturing images.<wbr/></p> |
| 11884 | </td> |
| 11885 | |
| 11886 | <td class="entry_units"> |
| 11887 | </td> |
| 11888 | |
| 11889 | <td class="entry_range"> |
| 11890 | <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p> |
| 11891 | </td> |
| 11892 | |
| 11893 | <td class="entry_tags"> |
| 11894 | <ul class="entry_tags"> |
| 11895 | <li><a href="#tag_V1">V1</a></li> |
| 11896 | </ul> |
| 11897 | </td> |
| 11898 | |
| 11899 | </tr> |
| 11900 | <tr class="entries_header"> |
| 11901 | <th class="th_details" colspan="5">Details</th> |
| 11902 | </tr> |
| 11903 | <tr class="entry_cont"> |
| 11904 | <td class="entry_details" colspan="5"> |
| 11905 | <p>OIS is used to compensate for motion blur due to small |
| 11906 | movements of the camera during capture.<wbr/> Unlike digital image |
| 11907 | stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS |
| 11908 | makes use of mechanical elements to stabilize the camera |
| 11909 | sensor,<wbr/> and thus allows for longer exposure times before |
| 11910 | camera shake becomes apparent.<wbr/></p> |
| 11911 | <p>Switching between different optical stabilization modes may take several |
| 11912 | frames to initialize,<wbr/> the camera device will report the current mode in |
| 11913 | capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the |
| 11914 | optical stabilization modes in the first several capture results may still |
| 11915 | be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p> |
| 11916 | <p>If a camera device supports both OIS and digital image stabilization |
| 11917 | (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable |
| 11918 | interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p> |
| 11919 | <p>Not all devices will support OIS; see |
| 11920 | <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for |
| 11921 | available controls.<wbr/></p> |
| 11922 | </td> |
| 11923 | </tr> |
| 11924 | |
| 11925 | |
| 11926 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 11927 | <!-- end of entry --> |
| 11928 | |
| 11929 | |
| 11930 | |
| 11931 | <!-- end of kind --> |
| 11932 | </tbody> |
| 11933 | <tr><td colspan="6" class="kind">static</td></tr> |
| 11934 | |
| 11935 | <thead class="entries_header"> |
| 11936 | <tr> |
| 11937 | <th class="th_name">Property Name</th> |
| 11938 | <th class="th_type">Type</th> |
| 11939 | <th class="th_description">Description</th> |
| 11940 | <th class="th_units">Units</th> |
| 11941 | <th class="th_range">Range</th> |
| 11942 | <th class="th_tags">Tags</th> |
| 11943 | </tr> |
| 11944 | </thead> |
| 11945 | |
| 11946 | <tbody> |
| 11947 | |
| 11948 | |
| 11949 | |
| 11950 | |
| 11951 | |
| 11952 | |
| 11953 | |
| 11954 | |
| 11955 | |
| 11956 | |
| 11957 | |
| 11958 | |
| 11959 | <tr class="entry" id="static_android.lens.info.availableApertures"> |
| 11960 | <td class="entry_name |
| 11961 | " rowspan="3"> |
| 11962 | android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures |
| 11963 | </td> |
| 11964 | <td class="entry_type"> |
| 11965 | <span class="entry_type_name">float</span> |
| 11966 | <span class="entry_type_container">x</span> |
| 11967 | |
| 11968 | <span class="entry_type_array"> |
| 11969 | n |
| 11970 | </span> |
| 11971 | <span class="entry_type_visibility"> [public]</span> |
| 11972 | |
| 11973 | |
| 11974 | <span class="entry_type_hwlevel">[full] </span> |
| 11975 | |
| 11976 | |
| 11977 | |
| 11978 | |
| 11979 | </td> <!-- entry_type --> |
| 11980 | |
| 11981 | <td class="entry_description"> |
| 11982 | <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are |
| 11983 | supported by this camera device.<wbr/></p> |
| 11984 | </td> |
| 11985 | |
| 11986 | <td class="entry_units"> |
| 11987 | The aperture f-number |
| 11988 | </td> |
| 11989 | |
| 11990 | <td class="entry_range"> |
| 11991 | </td> |
| 11992 | |
| 11993 | <td class="entry_tags"> |
| 11994 | <ul class="entry_tags"> |
| 11995 | <li><a href="#tag_V1">V1</a></li> |
| 11996 | </ul> |
| 11997 | </td> |
| 11998 | |
| 11999 | </tr> |
| 12000 | <tr class="entries_header"> |
| 12001 | <th class="th_details" colspan="5">Details</th> |
| 12002 | </tr> |
| 12003 | <tr class="entry_cont"> |
| 12004 | <td class="entry_details" colspan="5"> |
| 12005 | <p>If the camera device doesn't support a variable lens aperture,<wbr/> |
| 12006 | this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p> |
| 12007 | <p>If the camera device supports a variable aperture,<wbr/> the aperture values |
| 12008 | in this list will be sorted in ascending order.<wbr/></p> |
| 12009 | </td> |
| 12010 | </tr> |
| 12011 | |
| 12012 | |
| 12013 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 12014 | <!-- end of entry --> |
| 12015 | |
| 12016 | |
| 12017 | <tr class="entry" id="static_android.lens.info.availableFilterDensities"> |
| 12018 | <td class="entry_name |
| 12019 | " rowspan="3"> |
| 12020 | android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities |
| 12021 | </td> |
| 12022 | <td class="entry_type"> |
| 12023 | <span class="entry_type_name">float</span> |
| 12024 | <span class="entry_type_container">x</span> |
| 12025 | |
| 12026 | <span class="entry_type_array"> |
| 12027 | n |
| 12028 | </span> |
| 12029 | <span class="entry_type_visibility"> [public]</span> |
| 12030 | |
| 12031 | |
| 12032 | <span class="entry_type_hwlevel">[full] </span> |
| 12033 | |
| 12034 | |
| 12035 | |
| 12036 | |
| 12037 | </td> <!-- entry_type --> |
| 12038 | |
| 12039 | <td class="entry_description"> |
| 12040 | <p>List of neutral density filter values for |
| 12041 | <a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p> |
| 12042 | </td> |
| 12043 | |
| 12044 | <td class="entry_units"> |
| 12045 | Exposure value (EV) |
| 12046 | </td> |
| 12047 | |
| 12048 | <td class="entry_range"> |
| 12049 | <p>Values are >= 0</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>If a neutral density filter is not supported by this camera device,<wbr/> |
| 12065 | this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every |
| 12066 | filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p> |
| 12067 | </td> |
| 12068 | </tr> |
| 12069 | |
| 12070 | |
| 12071 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 12072 | <!-- end of entry --> |
| 12073 | |
| 12074 | |
| 12075 | <tr class="entry" id="static_android.lens.info.availableFocalLengths"> |
| 12076 | <td class="entry_name |
| 12077 | " rowspan="3"> |
| 12078 | android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths |
| 12079 | </td> |
| 12080 | <td class="entry_type"> |
| 12081 | <span class="entry_type_name">float</span> |
| 12082 | <span class="entry_type_container">x</span> |
| 12083 | |
| 12084 | <span class="entry_type_array"> |
| 12085 | n |
| 12086 | </span> |
| 12087 | <span class="entry_type_visibility"> [public]</span> |
| 12088 | |
| 12089 | |
| 12090 | <span class="entry_type_hwlevel">[legacy] </span> |
| 12091 | |
| 12092 | |
| 12093 | <div class="entry_type_notes">The list of available focal lengths</div> |
| 12094 | |
| 12095 | |
| 12096 | </td> <!-- entry_type --> |
| 12097 | |
| 12098 | <td class="entry_description"> |
| 12099 | <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 |
| 12100 | device.<wbr/></p> |
| 12101 | </td> |
| 12102 | |
| 12103 | <td class="entry_units"> |
| 12104 | Millimeters |
| 12105 | </td> |
| 12106 | |
| 12107 | <td class="entry_range"> |
| 12108 | <p>Values are > 0</p> |
| 12109 | </td> |
| 12110 | |
| 12111 | <td class="entry_tags"> |
| 12112 | <ul class="entry_tags"> |
| 12113 | <li><a href="#tag_BC">BC</a></li> |
| 12114 | <li><a href="#tag_V1">V1</a></li> |
| 12115 | </ul> |
| 12116 | </td> |
| 12117 | |
| 12118 | </tr> |
| 12119 | <tr class="entries_header"> |
| 12120 | <th class="th_details" colspan="5">Details</th> |
| 12121 | </tr> |
| 12122 | <tr class="entry_cont"> |
| 12123 | <td class="entry_details" colspan="5"> |
| 12124 | <p>If optical zoom is not supported,<wbr/> this list will only contain |
| 12125 | a single value corresponding to the fixed focal length of the |
| 12126 | device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported |
| 12127 | by the camera device,<wbr/> in ascending order.<wbr/></p> |
| 12128 | </td> |
| 12129 | </tr> |
| 12130 | |
| 12131 | |
| 12132 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 12133 | <!-- end of entry --> |
| 12134 | |
| 12135 | |
| 12136 | <tr class="entry" id="static_android.lens.info.availableOpticalStabilization"> |
| 12137 | <td class="entry_name |
| 12138 | " rowspan="3"> |
| 12139 | android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization |
| 12140 | </td> |
| 12141 | <td class="entry_type"> |
| 12142 | <span class="entry_type_name">byte</span> |
| 12143 | <span class="entry_type_container">x</span> |
| 12144 | |
| 12145 | <span class="entry_type_array"> |
| 12146 | n |
| 12147 | </span> |
| 12148 | <span class="entry_type_visibility"> [public as enumList]</span> |
| 12149 | |
| 12150 | |
| 12151 | <span class="entry_type_hwlevel">[limited] </span> |
| 12152 | |
| 12153 | |
| 12154 | <div class="entry_type_notes">list of enums</div> |
| 12155 | |
| 12156 | |
| 12157 | </td> <!-- entry_type --> |
| 12158 | |
| 12159 | <td class="entry_description"> |
| 12160 | <p>List of optical image stabilization (OIS) modes for |
| 12161 | <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> |
| 12162 | </td> |
| 12163 | |
| 12164 | <td class="entry_units"> |
| 12165 | </td> |
| 12166 | |
| 12167 | <td class="entry_range"> |
| 12168 | <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p> |
| 12169 | </td> |
| 12170 | |
| 12171 | <td class="entry_tags"> |
| 12172 | <ul class="entry_tags"> |
| 12173 | <li><a href="#tag_V1">V1</a></li> |
| 12174 | </ul> |
| 12175 | </td> |
| 12176 | |
| 12177 | </tr> |
| 12178 | <tr class="entries_header"> |
| 12179 | <th class="th_details" colspan="5">Details</th> |
| 12180 | </tr> |
| 12181 | <tr class="entry_cont"> |
| 12182 | <td class="entry_details" colspan="5"> |
| 12183 | <p>If OIS is not supported by a given camera device,<wbr/> this list will |
| 12184 | contain only OFF.<wbr/></p> |
| 12185 | </td> |
| 12186 | </tr> |
| 12187 | |
| 12188 | |
| 12189 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 12190 | <!-- end of entry --> |
| 12191 | |
| 12192 | |
| 12193 | <tr class="entry" id="static_android.lens.info.hyperfocalDistance"> |
| 12194 | <td class="entry_name |
| 12195 | " rowspan="3"> |
| 12196 | android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance |
| 12197 | </td> |
| 12198 | <td class="entry_type"> |
| 12199 | <span class="entry_type_name">float</span> |
| 12200 | |
| 12201 | <span class="entry_type_visibility"> [public]</span> |
| 12202 | |
| 12203 | |
| 12204 | <span class="entry_type_hwlevel">[limited] </span> |
| 12205 | |
| 12206 | |
| 12207 | |
| 12208 | |
| 12209 | </td> <!-- entry_type --> |
| 12210 | |
| 12211 | <td class="entry_description"> |
| 12212 | <p>Hyperfocal distance for this lens.<wbr/></p> |
| 12213 | </td> |
| 12214 | |
| 12215 | <td class="entry_units"> |
| 12216 | See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details |
| 12217 | </td> |
| 12218 | |
| 12219 | <td class="entry_range"> |
| 12220 | <p>If lens is fixed focus,<wbr/> >= 0.<wbr/> If lens has focuser unit,<wbr/> the value is |
| 12221 | 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> |
| 12222 | </td> |
| 12223 | |
| 12224 | <td class="entry_tags"> |
| 12225 | </td> |
| 12226 | |
| 12227 | </tr> |
| 12228 | <tr class="entries_header"> |
| 12229 | <th class="th_details" colspan="5">Details</th> |
| 12230 | </tr> |
| 12231 | <tr class="entry_cont"> |
| 12232 | <td class="entry_details" colspan="5"> |
| 12233 | <p>If the lens is not fixed focus,<wbr/> the camera device will report this |
| 12234 | 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> |
| 12235 | </td> |
| 12236 | </tr> |
| 12237 | |
| 12238 | |
| 12239 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 12240 | <!-- end of entry --> |
| 12241 | |
| 12242 | |
| 12243 | <tr class="entry" id="static_android.lens.info.minimumFocusDistance"> |
| 12244 | <td class="entry_name |
| 12245 | " rowspan="5"> |
| 12246 | android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance |
| 12247 | </td> |
| 12248 | <td class="entry_type"> |
| 12249 | <span class="entry_type_name">float</span> |
| 12250 | |
| 12251 | <span class="entry_type_visibility"> [public]</span> |
| 12252 | |
| 12253 | |
| 12254 | <span class="entry_type_hwlevel">[limited] </span> |
| 12255 | |
| 12256 | |
| 12257 | |
| 12258 | |
| 12259 | </td> <!-- entry_type --> |
| 12260 | |
| 12261 | <td class="entry_description"> |
| 12262 | <p>Shortest distance from frontmost surface |
| 12263 | of the lens that can be brought into sharp focus.<wbr/></p> |
| 12264 | </td> |
| 12265 | |
| 12266 | <td class="entry_units"> |
| 12267 | See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details |
| 12268 | </td> |
| 12269 | |
| 12270 | <td class="entry_range"> |
| 12271 | <p>>= 0</p> |
| 12272 | </td> |
| 12273 | |
| 12274 | <td class="entry_tags"> |
| 12275 | <ul class="entry_tags"> |
| 12276 | <li><a href="#tag_V1">V1</a></li> |
| 12277 | </ul> |
| 12278 | </td> |
| 12279 | |
| 12280 | </tr> |
| 12281 | <tr class="entries_header"> |
| 12282 | <th class="th_details" colspan="5">Details</th> |
| 12283 | </tr> |
| 12284 | <tr class="entry_cont"> |
| 12285 | <td class="entry_details" colspan="5"> |
| 12286 | <p>If the lens is fixed-focus,<wbr/> this will be |
| 12287 | 0.<wbr/></p> |
| 12288 | </td> |
| 12289 | </tr> |
| 12290 | |
| 12291 | <tr class="entries_header"> |
| 12292 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 12293 | </tr> |
| 12294 | <tr class="entry_cont"> |
| 12295 | <td class="entry_details" colspan="5"> |
| 12296 | <p>Mandatory for FULL devices; LIMITED devices |
| 12297 | must always set this value to 0 for fixed-focus; and may omit |
| 12298 | the minimum focus distance otherwise.<wbr/></p> |
| 12299 | <p>This field is also mandatory for all devices advertising |
| 12300 | the MANUAL_<wbr/>SENSOR capability.<wbr/></p> |
| 12301 | </td> |
| 12302 | </tr> |
| 12303 | |
| 12304 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 12305 | <!-- end of entry --> |
| 12306 | |
| 12307 | |
| 12308 | <tr class="entry" id="static_android.lens.info.shadingMapSize"> |
| 12309 | <td class="entry_name |
| 12310 | " rowspan="3"> |
| 12311 | android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size |
| 12312 | </td> |
| 12313 | <td class="entry_type"> |
| 12314 | <span class="entry_type_name">int32</span> |
| 12315 | <span class="entry_type_container">x</span> |
| 12316 | |
| 12317 | <span class="entry_type_array"> |
| 12318 | 2 |
| 12319 | </span> |
| 12320 | <span class="entry_type_visibility"> [ndk_public as size]</span> |
| 12321 | |
| 12322 | |
| 12323 | <span class="entry_type_hwlevel">[full] </span> |
| 12324 | |
| 12325 | |
| 12326 | <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div> |
| 12327 | |
| 12328 | |
| 12329 | </td> <!-- entry_type --> |
| 12330 | |
| 12331 | <td class="entry_description"> |
| 12332 | <p>Dimensions of lens shading map.<wbr/></p> |
| 12333 | </td> |
| 12334 | |
| 12335 | <td class="entry_units"> |
| 12336 | </td> |
| 12337 | |
| 12338 | <td class="entry_range"> |
| 12339 | <p>Both values >= 1</p> |
| 12340 | </td> |
| 12341 | |
| 12342 | <td class="entry_tags"> |
| 12343 | <ul class="entry_tags"> |
| 12344 | <li><a href="#tag_V1">V1</a></li> |
| 12345 | </ul> |
| 12346 | </td> |
| 12347 | |
| 12348 | </tr> |
| 12349 | <tr class="entries_header"> |
| 12350 | <th class="th_details" colspan="5">Details</th> |
| 12351 | </tr> |
| 12352 | <tr class="entry_cont"> |
| 12353 | <td class="entry_details" colspan="5"> |
| 12354 | <p>The map should be on the order of 30-40 rows and columns,<wbr/> and |
| 12355 | must be smaller than 64x64.<wbr/></p> |
| 12356 | </td> |
| 12357 | </tr> |
| 12358 | |
| 12359 | |
| 12360 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 12361 | <!-- end of entry --> |
| 12362 | |
| 12363 | |
| 12364 | <tr class="entry" id="static_android.lens.info.focusDistanceCalibration"> |
| 12365 | <td class="entry_name |
| 12366 | " rowspan="5"> |
| 12367 | android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration |
| 12368 | </td> |
| 12369 | <td class="entry_type"> |
| 12370 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 12371 | |
| 12372 | <span class="entry_type_visibility"> [public]</span> |
| 12373 | |
| 12374 | |
| 12375 | <span class="entry_type_hwlevel">[limited] </span> |
| 12376 | |
| 12377 | |
| 12378 | |
| 12379 | <ul class="entry_type_enum"> |
| 12380 | <li> |
| 12381 | <span class="entry_type_enum_name">UNCALIBRATED</span> |
| 12382 | <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for |
| 12383 | <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p> |
| 12384 | <p>Setting the lens to the same focus distance on separate occasions may |
| 12385 | result in a different real focus distance,<wbr/> depending on factors such |
| 12386 | as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/> |
| 12387 | and the device temperature.<wbr/> The focus distance value will still be |
| 12388 | 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 |
| 12389 | represents the farthest focus.<wbr/></p></span> |
| 12390 | </li> |
| 12391 | <li> |
| 12392 | <span class="entry_type_enum_name">APPROXIMATE</span> |
| 12393 | <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p> |
| 12394 | <p>However,<wbr/> setting the lens to the same focus distance |
| 12395 | on separate occasions may result in a different real |
| 12396 | focus distance,<wbr/> depending on factors such as the |
| 12397 | orientation of the device,<wbr/> the age of the focusing |
| 12398 | mechanism,<wbr/> and the device temperature.<wbr/></p></span> |
| 12399 | </li> |
| 12400 | <li> |
| 12401 | <span class="entry_type_enum_name">CALIBRATED</span> |
| 12402 | <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and |
| 12403 | is calibrated.<wbr/></p> |
| 12404 | <p>The lens mechanism is calibrated so that setting the |
| 12405 | same focus distance is repeatable on multiple |
| 12406 | occasions with good accuracy,<wbr/> and the focus distance |
| 12407 | corresponds to the real physical distance to the plane |
| 12408 | of best focus.<wbr/></p></span> |
| 12409 | </li> |
| 12410 | </ul> |
| 12411 | |
| 12412 | </td> <!-- entry_type --> |
| 12413 | |
| 12414 | <td class="entry_description"> |
| 12415 | <p>The lens focus distance calibration quality.<wbr/></p> |
| 12416 | </td> |
| 12417 | |
| 12418 | <td class="entry_units"> |
| 12419 | </td> |
| 12420 | |
| 12421 | <td class="entry_range"> |
| 12422 | </td> |
| 12423 | |
| 12424 | <td class="entry_tags"> |
| 12425 | <ul class="entry_tags"> |
| 12426 | <li><a href="#tag_V1">V1</a></li> |
| 12427 | </ul> |
| 12428 | </td> |
| 12429 | |
| 12430 | </tr> |
| 12431 | <tr class="entries_header"> |
| 12432 | <th class="th_details" colspan="5">Details</th> |
| 12433 | </tr> |
| 12434 | <tr class="entry_cont"> |
| 12435 | <td class="entry_details" colspan="5"> |
| 12436 | <p>The lens focus distance calibration quality determines the reliability of |
| 12437 | focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/> |
| 12438 | <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 |
| 12439 | <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p> |
| 12440 | <p>APPROXIMATE and CALIBRATED devices report the focus metadata in |
| 12441 | units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/> |
| 12442 | and increasing positive numbers represent focusing closer and closer |
| 12443 | to the camera device.<wbr/> The focus distance control also uses diopters |
| 12444 | on these devices.<wbr/></p> |
| 12445 | <p>UNCALIBRATED devices do not use units that are directly comparable |
| 12446 | to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest |
| 12447 | focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the |
| 12448 | nearest focus the device can achieve.<wbr/></p> |
| 12449 | </td> |
| 12450 | </tr> |
| 12451 | |
| 12452 | <tr class="entries_header"> |
| 12453 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 12454 | </tr> |
| 12455 | <tr class="entry_cont"> |
| 12456 | <td class="entry_details" colspan="5"> |
| 12457 | <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity |
| 12458 | focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF) |
| 12459 | and the lens focus distance is set to 0 diopters |
| 12460 | (<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity |
| 12461 | and is stably focused at infinity even if the device tilts.<wbr/> It may take the |
| 12462 | lens some time to move; during the move the lens state should be MOVING and |
| 12463 | the output diopter value should be changing toward 0.<wbr/></p> |
| 12464 | </td> |
| 12465 | </tr> |
| 12466 | |
| 12467 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 12468 | <!-- end of entry --> |
| 12469 | |
| 12470 | |
| 12471 | |
| 12472 | |
| 12473 | |
| 12474 | <tr class="entry" id="static_android.lens.facing"> |
| 12475 | <td class="entry_name |
| 12476 | " rowspan="1"> |
| 12477 | android.<wbr/>lens.<wbr/>facing |
| 12478 | </td> |
| 12479 | <td class="entry_type"> |
| 12480 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 12481 | |
| 12482 | <span class="entry_type_visibility"> [public]</span> |
| 12483 | |
| 12484 | |
| 12485 | <span class="entry_type_hwlevel">[legacy] </span> |
| 12486 | |
| 12487 | |
| 12488 | |
| 12489 | <ul class="entry_type_enum"> |
| 12490 | <li> |
| 12491 | <span class="entry_type_enum_name">FRONT</span> |
| 12492 | <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span> |
| 12493 | </li> |
| 12494 | <li> |
| 12495 | <span class="entry_type_enum_name">BACK</span> |
| 12496 | <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span> |
| 12497 | </li> |
| 12498 | <li> |
| 12499 | <span class="entry_type_enum_name">EXTERNAL</span> |
| 12500 | <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the |
| 12501 | device's screen.<wbr/></p></span> |
| 12502 | </li> |
| 12503 | </ul> |
| 12504 | |
| 12505 | </td> <!-- entry_type --> |
| 12506 | |
| 12507 | <td class="entry_description"> |
| 12508 | <p>Direction the camera faces relative to |
| 12509 | device screen.<wbr/></p> |
| 12510 | </td> |
| 12511 | |
| 12512 | <td class="entry_units"> |
| 12513 | </td> |
| 12514 | |
| 12515 | <td class="entry_range"> |
| 12516 | </td> |
| 12517 | |
| 12518 | <td class="entry_tags"> |
| 12519 | </td> |
| 12520 | |
| 12521 | </tr> |
| 12522 | |
| 12523 | |
| 12524 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 12525 | <!-- end of entry --> |
| 12526 | |
| 12527 | |
| 12528 | <tr class="entry" id="static_android.lens.poseRotation"> |
| 12529 | <td class="entry_name |
| 12530 | " rowspan="3"> |
| 12531 | android.<wbr/>lens.<wbr/>pose<wbr/>Rotation |
| 12532 | </td> |
| 12533 | <td class="entry_type"> |
| 12534 | <span class="entry_type_name">float</span> |
| 12535 | <span class="entry_type_container">x</span> |
| 12536 | |
| 12537 | <span class="entry_type_array"> |
| 12538 | 4 |
| 12539 | </span> |
| 12540 | <span class="entry_type_visibility"> [public]</span> |
| 12541 | |
| 12542 | |
| 12543 | |
| 12544 | |
| 12545 | |
| 12546 | |
| 12547 | </td> <!-- entry_type --> |
| 12548 | |
| 12549 | <td class="entry_description"> |
| 12550 | <p>The orientation of the camera relative to the sensor |
| 12551 | coordinate system.<wbr/></p> |
| 12552 | </td> |
| 12553 | |
| 12554 | <td class="entry_units"> |
| 12555 | |
| 12556 | Quaternion coefficients |
| 12557 | |
| 12558 | </td> |
| 12559 | |
| 12560 | <td class="entry_range"> |
| 12561 | </td> |
| 12562 | |
| 12563 | <td class="entry_tags"> |
| 12564 | <ul class="entry_tags"> |
| 12565 | <li><a href="#tag_DEPTH">DEPTH</a></li> |
| 12566 | </ul> |
| 12567 | </td> |
| 12568 | |
| 12569 | </tr> |
| 12570 | <tr class="entries_header"> |
| 12571 | <th class="th_details" colspan="5">Details</th> |
| 12572 | </tr> |
| 12573 | <tr class="entry_cont"> |
| 12574 | <td class="entry_details" colspan="5"> |
| 12575 | <p>The four coefficients that describe the quaternion |
| 12576 | rotation from the Android sensor coordinate system to a |
| 12577 | camera-aligned coordinate system where the X-axis is |
| 12578 | aligned with the long side of the image sensor,<wbr/> the Y-axis |
| 12579 | is aligned with the short side of the image sensor,<wbr/> and |
| 12580 | the Z-axis is aligned with the optical axis of the sensor.<wbr/></p> |
| 12581 | <p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code> |
| 12582 | to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation |
| 12583 | amount <code>theta</code>,<wbr/> the following formulas can be used:</p> |
| 12584 | <pre><code> theta = 2 * acos(w) |
| 12585 | a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2) |
| 12586 | a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2) |
| 12587 | a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2) |
| 12588 | </code></pre> |
| 12589 | <p>To create a 3x3 rotation matrix that applies the rotation |
| 12590 | defined by this quaternion,<wbr/> the following matrix can be |
| 12591 | used:</p> |
| 12592 | <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/> |
| 12593 | 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/> |
| 12594 | 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ] |
| 12595 | </code></pre> |
| 12596 | <p>This matrix can then be used to apply the rotation to a |
| 12597 | column vector point with</p> |
| 12598 | <p><code>p' = Rp</code></p> |
| 12599 | <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and |
| 12600 | <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p> |
| 12601 | </td> |
| 12602 | </tr> |
| 12603 | |
| 12604 | |
| 12605 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 12606 | <!-- end of entry --> |
| 12607 | |
| 12608 | |
| 12609 | <tr class="entry" id="static_android.lens.poseTranslation"> |
| 12610 | <td class="entry_name |
| 12611 | " rowspan="3"> |
| 12612 | android.<wbr/>lens.<wbr/>pose<wbr/>Translation |
| 12613 | </td> |
| 12614 | <td class="entry_type"> |
| 12615 | <span class="entry_type_name">float</span> |
| 12616 | <span class="entry_type_container">x</span> |
| 12617 | |
| 12618 | <span class="entry_type_array"> |
| 12619 | 3 |
| 12620 | </span> |
| 12621 | <span class="entry_type_visibility"> [public]</span> |
| 12622 | |
| 12623 | |
| 12624 | |
| 12625 | |
| 12626 | |
| 12627 | |
| 12628 | </td> <!-- entry_type --> |
| 12629 | |
| 12630 | <td class="entry_description"> |
| 12631 | <p>Position of the camera optical center.<wbr/></p> |
| 12632 | </td> |
| 12633 | |
| 12634 | <td class="entry_units"> |
| 12635 | Meters |
| 12636 | </td> |
| 12637 | |
| 12638 | <td class="entry_range"> |
| 12639 | </td> |
| 12640 | |
| 12641 | <td class="entry_tags"> |
| 12642 | <ul class="entry_tags"> |
| 12643 | <li><a href="#tag_DEPTH">DEPTH</a></li> |
| 12644 | </ul> |
| 12645 | </td> |
| 12646 | |
| 12647 | </tr> |
| 12648 | <tr class="entries_header"> |
| 12649 | <th class="th_details" colspan="5">Details</th> |
| 12650 | </tr> |
| 12651 | <tr class="entry_cont"> |
| 12652 | <td class="entry_details" colspan="5"> |
| 12653 | <p>The position of the camera device's lens optical center,<wbr/> |
| 12654 | as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the |
| 12655 | optical center of the largest camera device facing in the |
| 12656 | same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate |
| 12657 | axes</a>.<wbr/> Note that only the axis definitions are shared with |
| 12658 | the sensor coordinate system,<wbr/> but not the origin.<wbr/></p> |
| 12659 | <p>If this device is the largest or only camera device with a |
| 12660 | given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a |
| 12661 | camera device with a lens optical center located 3 cm from |
| 12662 | the main sensor along the +X axis (to the right from the |
| 12663 | user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p> |
| 12664 | <p>To transform a pixel coordinates between two cameras |
| 12665 | facing the same direction,<wbr/> first the source camera |
| 12666 | <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/> Then |
| 12667 | the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs |
| 12668 | to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> |
| 12669 | of the source camera,<wbr/> the translation of the source camera |
| 12670 | relative to the destination camera,<wbr/> the |
| 12671 | <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and |
| 12672 | finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> |
| 12673 | of the destination camera.<wbr/> This obtains a |
| 12674 | radial-distortion-free coordinate in the destination |
| 12675 | camera pixel coordinates.<wbr/></p> |
| 12676 | <p>To compare this against a real image from the destination |
| 12677 | camera,<wbr/> the destination camera image then needs to be |
| 12678 | corrected for radial distortion before comparison or |
| 12679 | sampling.<wbr/></p> |
| 12680 | </td> |
| 12681 | </tr> |
| 12682 | |
| 12683 | |
| 12684 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 12685 | <!-- end of entry --> |
| 12686 | |
| 12687 | |
| 12688 | <tr class="entry" id="static_android.lens.intrinsicCalibration"> |
| 12689 | <td class="entry_name |
| 12690 | " rowspan="3"> |
| 12691 | android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration |
| 12692 | </td> |
| 12693 | <td class="entry_type"> |
| 12694 | <span class="entry_type_name">float</span> |
| 12695 | <span class="entry_type_container">x</span> |
| 12696 | |
| 12697 | <span class="entry_type_array"> |
| 12698 | 5 |
| 12699 | </span> |
| 12700 | <span class="entry_type_visibility"> [public]</span> |
| 12701 | |
| 12702 | |
| 12703 | |
| 12704 | |
| 12705 | |
| 12706 | |
| 12707 | </td> <!-- entry_type --> |
| 12708 | |
| 12709 | <td class="entry_description"> |
| 12710 | <p>The parameters for this camera device's intrinsic |
| 12711 | calibration.<wbr/></p> |
| 12712 | </td> |
| 12713 | |
| 12714 | <td class="entry_units"> |
| 12715 | |
| 12716 | Pixels in the |
| 12717 | android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size |
| 12718 | coordinate system.<wbr/> |
| 12719 | |
| 12720 | </td> |
| 12721 | |
| 12722 | <td class="entry_range"> |
| 12723 | </td> |
| 12724 | |
| 12725 | <td class="entry_tags"> |
| 12726 | <ul class="entry_tags"> |
| 12727 | <li><a href="#tag_DEPTH">DEPTH</a></li> |
| 12728 | </ul> |
| 12729 | </td> |
| 12730 | |
| 12731 | </tr> |
| 12732 | <tr class="entries_header"> |
| 12733 | <th class="th_details" colspan="5">Details</th> |
| 12734 | </tr> |
| 12735 | <tr class="entry_cont"> |
| 12736 | <td class="entry_details" colspan="5"> |
| 12737 | <p>The five calibration parameters that describe the |
| 12738 | transform from camera-centric 3D coordinates to sensor |
| 12739 | pixel coordinates:</p> |
| 12740 | <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s] |
| 12741 | </code></pre> |
| 12742 | <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical |
| 12743 | focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical |
| 12744 | axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not |
| 12745 | being aligned with the lens plane.<wbr/></p> |
| 12746 | <p>These are typically used within a transformation matrix K:</p> |
| 12747 | <pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/> |
| 12748 | 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/> |
| 12749 | 0 0,<wbr/> 1 ] |
| 12750 | </code></pre> |
| 12751 | <p>which can then be combined with the camera pose rotation |
| 12752 | <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and |
| 12753 | <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the |
| 12754 | complete transform from world coordinates to pixel |
| 12755 | coordinates:</p> |
| 12756 | <pre><code>P = [ K 0 * [ R t |
| 12757 | 0 1 ] 0 1 ] |
| 12758 | </code></pre> |
| 12759 | <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system |
| 12760 | and <code>p_<wbr/>s</code> being a point in the camera active pixel array |
| 12761 | coordinate system,<wbr/> and with the mapping including the |
| 12762 | homogeneous division by z:</p> |
| 12763 | <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w |
| 12764 | p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h |
| 12765 | </code></pre> |
| 12766 | <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world |
| 12767 | point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity |
| 12768 | (depth) in pixel coordinates.<wbr/></p> |
| 12769 | <p>Note that the coordinate system for this transform is the |
| 12770 | <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/> |
| 12771 | where <code>(0,<wbr/>0)</code> is the top-left of the |
| 12772 | preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and |
| 12773 | intrinsic calibration transforms have been applied to a |
| 12774 | world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> |
| 12775 | transform needs to be applied,<wbr/> and the result adjusted to |
| 12776 | be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate |
| 12777 | system (where <code>(0,<wbr/> 0)</code> is the top-left of the |
| 12778 | activeArraySize rectangle),<wbr/> to determine the final pixel |
| 12779 | coordinate of the world point for processed (non-RAW) |
| 12780 | output buffers.<wbr/></p> |
| 12781 | </td> |
| 12782 | </tr> |
| 12783 | |
| 12784 | |
| 12785 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 12786 | <!-- end of entry --> |
| 12787 | |
| 12788 | |
| 12789 | <tr class="entry" id="static_android.lens.radialDistortion"> |
| 12790 | <td class="entry_name |
| 12791 | " rowspan="3"> |
| 12792 | android.<wbr/>lens.<wbr/>radial<wbr/>Distortion |
| 12793 | </td> |
| 12794 | <td class="entry_type"> |
| 12795 | <span class="entry_type_name">float</span> |
| 12796 | <span class="entry_type_container">x</span> |
| 12797 | |
| 12798 | <span class="entry_type_array"> |
| 12799 | 6 |
| 12800 | </span> |
| 12801 | <span class="entry_type_visibility"> [public]</span> |
| 12802 | |
| 12803 | |
| 12804 | |
| 12805 | |
| 12806 | |
| 12807 | |
| 12808 | </td> <!-- entry_type --> |
| 12809 | |
| 12810 | <td class="entry_description"> |
| 12811 | <p>The correction coefficients to correct for this camera device's |
| 12812 | radial and tangential lens distortion.<wbr/></p> |
| 12813 | </td> |
| 12814 | |
| 12815 | <td class="entry_units"> |
| 12816 | |
| 12817 | Unitless coefficients.<wbr/> |
| 12818 | |
| 12819 | </td> |
| 12820 | |
| 12821 | <td class="entry_range"> |
| 12822 | </td> |
| 12823 | |
| 12824 | <td class="entry_tags"> |
| 12825 | <ul class="entry_tags"> |
| 12826 | <li><a href="#tag_DEPTH">DEPTH</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>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/> |
| 12837 | kappa_<wbr/>3]</code> and two tangential distortion coefficients |
| 12838 | <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the |
| 12839 | lens's geometric distortion with the mapping equations:</p> |
| 12840 | <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 ) + |
| 12841 | kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 ) |
| 12842 | y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + |
| 12843 | kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 ) |
| 12844 | </code></pre> |
| 12845 | <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the |
| 12846 | input image that correspond to the pixel values in the |
| 12847 | corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p> |
| 12848 | <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage) |
| 12849 | </code></pre> |
| 12850 | <p>The pixel coordinates are defined in a normalized |
| 12851 | coordinate system related to the |
| 12852 | <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/> |
| 12853 | 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 |
| 12854 | lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes |
| 12855 | of both x and y coordinates are normalized to be 1 at the |
| 12856 | edge further from the optical center,<wbr/> so the range |
| 12857 | for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p> |
| 12858 | <p>Finally,<wbr/> <code>r</code> represents the radial distance from the |
| 12859 | optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude |
| 12860 | is therefore no larger than <code>|<wbr/>r|<wbr/> <= sqrt(2)</code>.<wbr/></p> |
| 12861 | <p>The distortion model used is the Brown-Conrady model.<wbr/></p> |
| 12862 | </td> |
| 12863 | </tr> |
| 12864 | |
| 12865 | |
| 12866 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 12867 | <!-- end of entry --> |
| 12868 | |
| 12869 | |
| 12870 | |
| 12871 | <!-- end of kind --> |
| 12872 | </tbody> |
| 12873 | <tr><td colspan="6" class="kind">dynamic</td></tr> |
| 12874 | |
| 12875 | <thead class="entries_header"> |
| 12876 | <tr> |
| 12877 | <th class="th_name">Property Name</th> |
| 12878 | <th class="th_type">Type</th> |
| 12879 | <th class="th_description">Description</th> |
| 12880 | <th class="th_units">Units</th> |
| 12881 | <th class="th_range">Range</th> |
| 12882 | <th class="th_tags">Tags</th> |
| 12883 | </tr> |
| 12884 | </thead> |
| 12885 | |
| 12886 | <tbody> |
| 12887 | |
| 12888 | |
| 12889 | |
| 12890 | |
| 12891 | |
| 12892 | |
| 12893 | |
| 12894 | |
| 12895 | |
| 12896 | |
| 12897 | <tr class="entry" id="dynamic_android.lens.aperture"> |
| 12898 | <td class="entry_name |
| 12899 | " rowspan="3"> |
| 12900 | android.<wbr/>lens.<wbr/>aperture |
| 12901 | </td> |
| 12902 | <td class="entry_type"> |
| 12903 | <span class="entry_type_name">float</span> |
| 12904 | |
| 12905 | <span class="entry_type_visibility"> [public]</span> |
| 12906 | |
| 12907 | |
| 12908 | <span class="entry_type_hwlevel">[full] </span> |
| 12909 | |
| 12910 | |
| 12911 | |
| 12912 | |
| 12913 | </td> <!-- entry_type --> |
| 12914 | |
| 12915 | <td class="entry_description"> |
| 12916 | <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the |
| 12917 | effective aperture diameter.<wbr/></p> |
| 12918 | </td> |
| 12919 | |
| 12920 | <td class="entry_units"> |
| 12921 | The f-number (f/<wbr/>N) |
| 12922 | </td> |
| 12923 | |
| 12924 | <td class="entry_range"> |
| 12925 | <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p> |
| 12926 | </td> |
| 12927 | |
| 12928 | <td class="entry_tags"> |
| 12929 | <ul class="entry_tags"> |
| 12930 | <li><a href="#tag_V1">V1</a></li> |
| 12931 | </ul> |
| 12932 | </td> |
| 12933 | |
| 12934 | </tr> |
| 12935 | <tr class="entries_header"> |
| 12936 | <th class="th_details" colspan="5">Details</th> |
| 12937 | </tr> |
| 12938 | <tr class="entry_cont"> |
| 12939 | <td class="entry_details" colspan="5"> |
| 12940 | <p>Setting this value is only supported on the camera devices that have a variable |
| 12941 | aperture lens.<wbr/></p> |
| 12942 | <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> |
| 12943 | this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> |
| 12944 | <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> |
| 12945 | to achieve manual exposure control.<wbr/></p> |
| 12946 | <p>The requested aperture value may take several frames to reach the |
| 12947 | requested value; the camera device will report the current (intermediate) |
| 12948 | aperture size in capture result metadata while the aperture is changing.<wbr/> |
| 12949 | 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> |
| 12950 | <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of |
| 12951 | the ON modes,<wbr/> this will be overridden by the camera device |
| 12952 | auto-exposure algorithm,<wbr/> the overridden values are then provided |
| 12953 | back to the user in the corresponding result.<wbr/></p> |
| 12954 | </td> |
| 12955 | </tr> |
| 12956 | |
| 12957 | |
| 12958 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 12959 | <!-- end of entry --> |
| 12960 | |
| 12961 | |
| 12962 | <tr class="entry" id="dynamic_android.lens.filterDensity"> |
| 12963 | <td class="entry_name |
| 12964 | " rowspan="3"> |
| 12965 | android.<wbr/>lens.<wbr/>filter<wbr/>Density |
| 12966 | </td> |
| 12967 | <td class="entry_type"> |
| 12968 | <span class="entry_type_name">float</span> |
| 12969 | |
| 12970 | <span class="entry_type_visibility"> [public]</span> |
| 12971 | |
| 12972 | |
| 12973 | <span class="entry_type_hwlevel">[full] </span> |
| 12974 | |
| 12975 | |
| 12976 | |
| 12977 | |
| 12978 | </td> <!-- entry_type --> |
| 12979 | |
| 12980 | <td class="entry_description"> |
| 12981 | <p>The desired setting for the lens neutral density filter(s).<wbr/></p> |
| 12982 | </td> |
| 12983 | |
| 12984 | <td class="entry_units"> |
| 12985 | Exposure Value (EV) |
| 12986 | </td> |
| 12987 | |
| 12988 | <td class="entry_range"> |
| 12989 | <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p> |
| 12990 | </td> |
| 12991 | |
| 12992 | <td class="entry_tags"> |
| 12993 | <ul class="entry_tags"> |
| 12994 | <li><a href="#tag_V1">V1</a></li> |
| 12995 | </ul> |
| 12996 | </td> |
| 12997 | |
| 12998 | </tr> |
| 12999 | <tr class="entries_header"> |
| 13000 | <th class="th_details" colspan="5">Details</th> |
| 13001 | </tr> |
| 13002 | <tr class="entry_cont"> |
| 13003 | <td class="entry_details" colspan="5"> |
| 13004 | <p>This control will not be supported on most camera devices.<wbr/></p> |
| 13005 | <p>Lens filters are typically used to lower the amount of light the |
| 13006 | sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV |
| 13007 | step is the standard logarithmic representation,<wbr/> which are |
| 13008 | non-negative,<wbr/> and inversely proportional to the amount of light |
| 13009 | hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result |
| 13010 | in no reduction of the incoming light,<wbr/> and setting this to 2 would |
| 13011 | mean that the filter is set to reduce incoming light by two stops |
| 13012 | (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p> |
| 13013 | <p>It may take several frames before the lens filter density changes |
| 13014 | to the requested value.<wbr/> While the filter density is still changing,<wbr/> |
| 13015 | <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> |
| 13016 | </td> |
| 13017 | </tr> |
| 13018 | |
| 13019 | |
| 13020 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 13021 | <!-- end of entry --> |
| 13022 | |
| 13023 | |
| 13024 | <tr class="entry" id="dynamic_android.lens.focalLength"> |
| 13025 | <td class="entry_name |
| 13026 | " rowspan="3"> |
| 13027 | android.<wbr/>lens.<wbr/>focal<wbr/>Length |
| 13028 | </td> |
| 13029 | <td class="entry_type"> |
| 13030 | <span class="entry_type_name">float</span> |
| 13031 | |
| 13032 | <span class="entry_type_visibility"> [public]</span> |
| 13033 | |
| 13034 | |
| 13035 | <span class="entry_type_hwlevel">[legacy] </span> |
| 13036 | |
| 13037 | |
| 13038 | |
| 13039 | |
| 13040 | </td> <!-- entry_type --> |
| 13041 | |
| 13042 | <td class="entry_description"> |
| 13043 | <p>The desired lens focal length; used for optical zoom.<wbr/></p> |
| 13044 | </td> |
| 13045 | |
| 13046 | <td class="entry_units"> |
| 13047 | Millimeters |
| 13048 | </td> |
| 13049 | |
| 13050 | <td class="entry_range"> |
| 13051 | <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p> |
| 13052 | </td> |
| 13053 | |
| 13054 | <td class="entry_tags"> |
| 13055 | <ul class="entry_tags"> |
| 13056 | <li><a href="#tag_BC">BC</a></li> |
| 13057 | </ul> |
| 13058 | </td> |
| 13059 | |
| 13060 | </tr> |
| 13061 | <tr class="entries_header"> |
| 13062 | <th class="th_details" colspan="5">Details</th> |
| 13063 | </tr> |
| 13064 | <tr class="entry_cont"> |
| 13065 | <td class="entry_details" colspan="5"> |
| 13066 | <p>This setting controls the physical focal length of the camera |
| 13067 | device's lens.<wbr/> Changing the focal length changes the field of |
| 13068 | view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p> |
| 13069 | <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 |
| 13070 | setting won't be applied instantaneously,<wbr/> and it may take several |
| 13071 | frames before the lens can change to the requested focal length.<wbr/> |
| 13072 | While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will |
| 13073 | be set to MOVING.<wbr/></p> |
| 13074 | <p>Optical zoom will not be supported on most devices.<wbr/></p> |
| 13075 | </td> |
| 13076 | </tr> |
| 13077 | |
| 13078 | |
| 13079 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 13080 | <!-- end of entry --> |
| 13081 | |
| 13082 | |
| 13083 | <tr class="entry" id="dynamic_android.lens.focusDistance"> |
| 13084 | <td class="entry_name |
| 13085 | " rowspan="3"> |
| 13086 | android.<wbr/>lens.<wbr/>focus<wbr/>Distance |
| 13087 | </td> |
| 13088 | <td class="entry_type"> |
| 13089 | <span class="entry_type_name">float</span> |
| 13090 | |
| 13091 | <span class="entry_type_visibility"> [public]</span> |
| 13092 | |
| 13093 | |
| 13094 | <span class="entry_type_hwlevel">[full] </span> |
| 13095 | |
| 13096 | |
| 13097 | |
| 13098 | |
| 13099 | </td> <!-- entry_type --> |
| 13100 | |
| 13101 | <td class="entry_description"> |
| 13102 | <p>Desired distance to plane of sharpest focus,<wbr/> |
| 13103 | measured from frontmost surface of the lens.<wbr/></p> |
| 13104 | </td> |
| 13105 | |
| 13106 | <td class="entry_units"> |
| 13107 | See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details |
| 13108 | </td> |
| 13109 | |
| 13110 | <td class="entry_range"> |
| 13111 | <p>>= 0</p> |
| 13112 | </td> |
| 13113 | |
| 13114 | <td class="entry_tags"> |
| 13115 | <ul class="entry_tags"> |
| 13116 | <li><a href="#tag_BC">BC</a></li> |
| 13117 | </ul> |
| 13118 | </td> |
| 13119 | |
| 13120 | </tr> |
| 13121 | <tr class="entries_header"> |
| 13122 | <th class="th_details" colspan="5">Details</th> |
| 13123 | </tr> |
| 13124 | <tr class="entry_cont"> |
| 13125 | <td class="entry_details" colspan="5"> |
| 13126 | <p>Should be zero for fixed-focus cameras</p> |
| 13127 | </td> |
| 13128 | </tr> |
| 13129 | |
| 13130 | |
| 13131 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 13132 | <!-- end of entry --> |
| 13133 | |
| 13134 | |
| 13135 | <tr class="entry" id="dynamic_android.lens.focusRange"> |
| 13136 | <td class="entry_name |
| 13137 | " rowspan="3"> |
| 13138 | android.<wbr/>lens.<wbr/>focus<wbr/>Range |
| 13139 | </td> |
| 13140 | <td class="entry_type"> |
| 13141 | <span class="entry_type_name">float</span> |
| 13142 | <span class="entry_type_container">x</span> |
| 13143 | |
| 13144 | <span class="entry_type_array"> |
| 13145 | 2 |
| 13146 | </span> |
| 13147 | <span class="entry_type_visibility"> [public as pairFloatFloat]</span> |
| 13148 | |
| 13149 | |
| 13150 | <span class="entry_type_hwlevel">[limited] </span> |
| 13151 | |
| 13152 | |
| 13153 | <div class="entry_type_notes">Range of scene distances that are in focus</div> |
| 13154 | |
| 13155 | |
| 13156 | </td> <!-- entry_type --> |
| 13157 | |
| 13158 | <td class="entry_description"> |
| 13159 | <p>The range of scene distances that are in |
| 13160 | sharp focus (depth of field).<wbr/></p> |
| 13161 | </td> |
| 13162 | |
| 13163 | <td class="entry_units"> |
| 13164 | A pair of focus distances in diopters: (near,<wbr/> |
| 13165 | far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/> |
| 13166 | </td> |
| 13167 | |
| 13168 | <td class="entry_range"> |
| 13169 | <p>>=0</p> |
| 13170 | </td> |
| 13171 | |
| 13172 | <td class="entry_tags"> |
| 13173 | <ul class="entry_tags"> |
| 13174 | <li><a href="#tag_BC">BC</a></li> |
| 13175 | </ul> |
| 13176 | </td> |
| 13177 | |
| 13178 | </tr> |
| 13179 | <tr class="entries_header"> |
| 13180 | <th class="th_details" colspan="5">Details</th> |
| 13181 | </tr> |
| 13182 | <tr class="entry_cont"> |
| 13183 | <td class="entry_details" colspan="5"> |
| 13184 | <p>If variable focus not supported,<wbr/> can still report |
| 13185 | fixed depth of field range</p> |
| 13186 | </td> |
| 13187 | </tr> |
| 13188 | |
| 13189 | |
| 13190 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 13191 | <!-- end of entry --> |
| 13192 | |
| 13193 | |
| 13194 | <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode"> |
| 13195 | <td class="entry_name |
| 13196 | " rowspan="3"> |
| 13197 | android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode |
| 13198 | </td> |
| 13199 | <td class="entry_type"> |
| 13200 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 13201 | |
| 13202 | <span class="entry_type_visibility"> [public]</span> |
| 13203 | |
| 13204 | |
| 13205 | <span class="entry_type_hwlevel">[limited] </span> |
| 13206 | |
| 13207 | |
| 13208 | |
| 13209 | <ul class="entry_type_enum"> |
| 13210 | <li> |
| 13211 | <span class="entry_type_enum_name">OFF</span> |
| 13212 | <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span> |
| 13213 | </li> |
| 13214 | <li> |
| 13215 | <span class="entry_type_enum_name">ON</span> |
| 13216 | <span class="entry_type_enum_optional">[optional]</span> |
| 13217 | <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span> |
| 13218 | </li> |
| 13219 | </ul> |
| 13220 | |
| 13221 | </td> <!-- entry_type --> |
| 13222 | |
| 13223 | <td class="entry_description"> |
| 13224 | <p>Sets whether the camera device uses optical image stabilization (OIS) |
| 13225 | when capturing images.<wbr/></p> |
| 13226 | </td> |
| 13227 | |
| 13228 | <td class="entry_units"> |
| 13229 | </td> |
| 13230 | |
| 13231 | <td class="entry_range"> |
| 13232 | <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p> |
| 13233 | </td> |
| 13234 | |
| 13235 | <td class="entry_tags"> |
| 13236 | <ul class="entry_tags"> |
| 13237 | <li><a href="#tag_V1">V1</a></li> |
| 13238 | </ul> |
| 13239 | </td> |
| 13240 | |
| 13241 | </tr> |
| 13242 | <tr class="entries_header"> |
| 13243 | <th class="th_details" colspan="5">Details</th> |
| 13244 | </tr> |
| 13245 | <tr class="entry_cont"> |
| 13246 | <td class="entry_details" colspan="5"> |
| 13247 | <p>OIS is used to compensate for motion blur due to small |
| 13248 | movements of the camera during capture.<wbr/> Unlike digital image |
| 13249 | stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS |
| 13250 | makes use of mechanical elements to stabilize the camera |
| 13251 | sensor,<wbr/> and thus allows for longer exposure times before |
| 13252 | camera shake becomes apparent.<wbr/></p> |
| 13253 | <p>Switching between different optical stabilization modes may take several |
| 13254 | frames to initialize,<wbr/> the camera device will report the current mode in |
| 13255 | capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the |
| 13256 | optical stabilization modes in the first several capture results may still |
| 13257 | be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p> |
| 13258 | <p>If a camera device supports both OIS and digital image stabilization |
| 13259 | (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable |
| 13260 | interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p> |
| 13261 | <p>Not all devices will support OIS; see |
| 13262 | <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for |
| 13263 | available controls.<wbr/></p> |
| 13264 | </td> |
| 13265 | </tr> |
| 13266 | |
| 13267 | |
| 13268 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 13269 | <!-- end of entry --> |
| 13270 | |
| 13271 | |
| 13272 | <tr class="entry" id="dynamic_android.lens.state"> |
| 13273 | <td class="entry_name |
| 13274 | " rowspan="3"> |
| 13275 | android.<wbr/>lens.<wbr/>state |
| 13276 | </td> |
| 13277 | <td class="entry_type"> |
| 13278 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 13279 | |
| 13280 | <span class="entry_type_visibility"> [public]</span> |
| 13281 | |
| 13282 | |
| 13283 | <span class="entry_type_hwlevel">[limited] </span> |
| 13284 | |
| 13285 | |
| 13286 | |
| 13287 | <ul class="entry_type_enum"> |
| 13288 | <li> |
| 13289 | <span class="entry_type_enum_name">STATIONARY</span> |
| 13290 | <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/> |
| 13291 | <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> |
| 13292 | </li> |
| 13293 | <li> |
| 13294 | <span class="entry_type_enum_name">MOVING</span> |
| 13295 | <span class="entry_type_enum_notes"><p>One or several of the lens parameters |
| 13296 | (<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/> |
| 13297 | <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 |
| 13298 | currently changing.<wbr/></p></span> |
| 13299 | </li> |
| 13300 | </ul> |
| 13301 | |
| 13302 | </td> <!-- entry_type --> |
| 13303 | |
| 13304 | <td class="entry_description"> |
| 13305 | <p>Current lens status.<wbr/></p> |
| 13306 | </td> |
| 13307 | |
| 13308 | <td class="entry_units"> |
| 13309 | </td> |
| 13310 | |
| 13311 | <td class="entry_range"> |
| 13312 | </td> |
| 13313 | |
| 13314 | <td class="entry_tags"> |
| 13315 | <ul class="entry_tags"> |
| 13316 | <li><a href="#tag_V1">V1</a></li> |
| 13317 | </ul> |
| 13318 | </td> |
| 13319 | |
| 13320 | </tr> |
| 13321 | <tr class="entries_header"> |
| 13322 | <th class="th_details" colspan="5">Details</th> |
| 13323 | </tr> |
| 13324 | <tr class="entry_cont"> |
| 13325 | <td class="entry_details" colspan="5"> |
| 13326 | <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/> |
| 13327 | <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/> |
| 13328 | they may take several frames to reach the requested values.<wbr/> This state indicates |
| 13329 | the current status of the lens parameters.<wbr/></p> |
| 13330 | <p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be |
| 13331 | either because the parameters are all fixed,<wbr/> or because the lens has had enough |
| 13332 | time to reach the most recently-requested values.<wbr/> |
| 13333 | If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p> |
| 13334 | <ul> |
| 13335 | <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 |
| 13336 | <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li> |
| 13337 | <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/> |
| 13338 | which means the optical zoom is not supported.<wbr/></li> |
| 13339 | <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> |
| 13340 | <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> |
| 13341 | </ul> |
| 13342 | <p>Then this state will always be STATIONARY.<wbr/></p> |
| 13343 | <p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters |
| 13344 | is changing.<wbr/></p> |
| 13345 | </td> |
| 13346 | </tr> |
| 13347 | |
| 13348 | |
| 13349 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 13350 | <!-- end of entry --> |
| 13351 | |
| 13352 | |
| 13353 | <tr class="entry" id="dynamic_android.lens.poseRotation"> |
| 13354 | <td class="entry_name |
| 13355 | " rowspan="3"> |
| 13356 | android.<wbr/>lens.<wbr/>pose<wbr/>Rotation |
| 13357 | </td> |
| 13358 | <td class="entry_type"> |
| 13359 | <span class="entry_type_name">float</span> |
| 13360 | <span class="entry_type_container">x</span> |
| 13361 | |
| 13362 | <span class="entry_type_array"> |
| 13363 | 4 |
| 13364 | </span> |
| 13365 | <span class="entry_type_visibility"> [public]</span> |
| 13366 | |
| 13367 | |
| 13368 | |
| 13369 | |
| 13370 | |
| 13371 | |
| 13372 | </td> <!-- entry_type --> |
| 13373 | |
| 13374 | <td class="entry_description"> |
| 13375 | <p>The orientation of the camera relative to the sensor |
| 13376 | coordinate system.<wbr/></p> |
| 13377 | </td> |
| 13378 | |
| 13379 | <td class="entry_units"> |
| 13380 | |
| 13381 | Quaternion coefficients |
| 13382 | |
| 13383 | </td> |
| 13384 | |
| 13385 | <td class="entry_range"> |
| 13386 | </td> |
| 13387 | |
| 13388 | <td class="entry_tags"> |
| 13389 | <ul class="entry_tags"> |
| 13390 | <li><a href="#tag_DEPTH">DEPTH</a></li> |
| 13391 | </ul> |
| 13392 | </td> |
| 13393 | |
| 13394 | </tr> |
| 13395 | <tr class="entries_header"> |
| 13396 | <th class="th_details" colspan="5">Details</th> |
| 13397 | </tr> |
| 13398 | <tr class="entry_cont"> |
| 13399 | <td class="entry_details" colspan="5"> |
| 13400 | <p>The four coefficients that describe the quaternion |
| 13401 | rotation from the Android sensor coordinate system to a |
| 13402 | camera-aligned coordinate system where the X-axis is |
| 13403 | aligned with the long side of the image sensor,<wbr/> the Y-axis |
| 13404 | is aligned with the short side of the image sensor,<wbr/> and |
| 13405 | the Z-axis is aligned with the optical axis of the sensor.<wbr/></p> |
| 13406 | <p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code> |
| 13407 | to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation |
| 13408 | amount <code>theta</code>,<wbr/> the following formulas can be used:</p> |
| 13409 | <pre><code> theta = 2 * acos(w) |
| 13410 | a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2) |
| 13411 | a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2) |
| 13412 | a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2) |
| 13413 | </code></pre> |
| 13414 | <p>To create a 3x3 rotation matrix that applies the rotation |
| 13415 | defined by this quaternion,<wbr/> the following matrix can be |
| 13416 | used:</p> |
| 13417 | <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/> |
| 13418 | 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/> |
| 13419 | 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ] |
| 13420 | </code></pre> |
| 13421 | <p>This matrix can then be used to apply the rotation to a |
| 13422 | column vector point with</p> |
| 13423 | <p><code>p' = Rp</code></p> |
| 13424 | <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and |
| 13425 | <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p> |
| 13426 | </td> |
| 13427 | </tr> |
| 13428 | |
| 13429 | |
| 13430 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 13431 | <!-- end of entry --> |
| 13432 | |
| 13433 | |
| 13434 | <tr class="entry" id="dynamic_android.lens.poseTranslation"> |
| 13435 | <td class="entry_name |
| 13436 | " rowspan="3"> |
| 13437 | android.<wbr/>lens.<wbr/>pose<wbr/>Translation |
| 13438 | </td> |
| 13439 | <td class="entry_type"> |
| 13440 | <span class="entry_type_name">float</span> |
| 13441 | <span class="entry_type_container">x</span> |
| 13442 | |
| 13443 | <span class="entry_type_array"> |
| 13444 | 3 |
| 13445 | </span> |
| 13446 | <span class="entry_type_visibility"> [public]</span> |
| 13447 | |
| 13448 | |
| 13449 | |
| 13450 | |
| 13451 | |
| 13452 | |
| 13453 | </td> <!-- entry_type --> |
| 13454 | |
| 13455 | <td class="entry_description"> |
| 13456 | <p>Position of the camera optical center.<wbr/></p> |
| 13457 | </td> |
| 13458 | |
| 13459 | <td class="entry_units"> |
| 13460 | Meters |
| 13461 | </td> |
| 13462 | |
| 13463 | <td class="entry_range"> |
| 13464 | </td> |
| 13465 | |
| 13466 | <td class="entry_tags"> |
| 13467 | <ul class="entry_tags"> |
| 13468 | <li><a href="#tag_DEPTH">DEPTH</a></li> |
| 13469 | </ul> |
| 13470 | </td> |
| 13471 | |
| 13472 | </tr> |
| 13473 | <tr class="entries_header"> |
| 13474 | <th class="th_details" colspan="5">Details</th> |
| 13475 | </tr> |
| 13476 | <tr class="entry_cont"> |
| 13477 | <td class="entry_details" colspan="5"> |
| 13478 | <p>The position of the camera device's lens optical center,<wbr/> |
| 13479 | as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the |
| 13480 | optical center of the largest camera device facing in the |
| 13481 | same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate |
| 13482 | axes</a>.<wbr/> Note that only the axis definitions are shared with |
| 13483 | the sensor coordinate system,<wbr/> but not the origin.<wbr/></p> |
| 13484 | <p>If this device is the largest or only camera device with a |
| 13485 | given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a |
| 13486 | camera device with a lens optical center located 3 cm from |
| 13487 | the main sensor along the +X axis (to the right from the |
| 13488 | user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p> |
| 13489 | <p>To transform a pixel coordinates between two cameras |
| 13490 | facing the same direction,<wbr/> first the source camera |
| 13491 | <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/> Then |
| 13492 | the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs |
| 13493 | to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> |
| 13494 | of the source camera,<wbr/> the translation of the source camera |
| 13495 | relative to the destination camera,<wbr/> the |
| 13496 | <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and |
| 13497 | finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> |
| 13498 | of the destination camera.<wbr/> This obtains a |
| 13499 | radial-distortion-free coordinate in the destination |
| 13500 | camera pixel coordinates.<wbr/></p> |
| 13501 | <p>To compare this against a real image from the destination |
| 13502 | camera,<wbr/> the destination camera image then needs to be |
| 13503 | corrected for radial distortion before comparison or |
| 13504 | sampling.<wbr/></p> |
| 13505 | </td> |
| 13506 | </tr> |
| 13507 | |
| 13508 | |
| 13509 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 13510 | <!-- end of entry --> |
| 13511 | |
| 13512 | |
| 13513 | <tr class="entry" id="dynamic_android.lens.intrinsicCalibration"> |
| 13514 | <td class="entry_name |
| 13515 | " rowspan="3"> |
| 13516 | android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration |
| 13517 | </td> |
| 13518 | <td class="entry_type"> |
| 13519 | <span class="entry_type_name">float</span> |
| 13520 | <span class="entry_type_container">x</span> |
| 13521 | |
| 13522 | <span class="entry_type_array"> |
| 13523 | 5 |
| 13524 | </span> |
| 13525 | <span class="entry_type_visibility"> [public]</span> |
| 13526 | |
| 13527 | |
| 13528 | |
| 13529 | |
| 13530 | |
| 13531 | |
| 13532 | </td> <!-- entry_type --> |
| 13533 | |
| 13534 | <td class="entry_description"> |
| 13535 | <p>The parameters for this camera device's intrinsic |
| 13536 | calibration.<wbr/></p> |
| 13537 | </td> |
| 13538 | |
| 13539 | <td class="entry_units"> |
| 13540 | |
| 13541 | Pixels in the |
| 13542 | android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size |
| 13543 | coordinate system.<wbr/> |
| 13544 | |
| 13545 | </td> |
| 13546 | |
| 13547 | <td class="entry_range"> |
| 13548 | </td> |
| 13549 | |
| 13550 | <td class="entry_tags"> |
| 13551 | <ul class="entry_tags"> |
| 13552 | <li><a href="#tag_DEPTH">DEPTH</a></li> |
| 13553 | </ul> |
| 13554 | </td> |
| 13555 | |
| 13556 | </tr> |
| 13557 | <tr class="entries_header"> |
| 13558 | <th class="th_details" colspan="5">Details</th> |
| 13559 | </tr> |
| 13560 | <tr class="entry_cont"> |
| 13561 | <td class="entry_details" colspan="5"> |
| 13562 | <p>The five calibration parameters that describe the |
| 13563 | transform from camera-centric 3D coordinates to sensor |
| 13564 | pixel coordinates:</p> |
| 13565 | <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s] |
| 13566 | </code></pre> |
| 13567 | <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical |
| 13568 | focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical |
| 13569 | axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not |
| 13570 | being aligned with the lens plane.<wbr/></p> |
| 13571 | <p>These are typically used within a transformation matrix K:</p> |
| 13572 | <pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/> |
| 13573 | 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/> |
| 13574 | 0 0,<wbr/> 1 ] |
| 13575 | </code></pre> |
| 13576 | <p>which can then be combined with the camera pose rotation |
| 13577 | <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and |
| 13578 | <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the |
| 13579 | complete transform from world coordinates to pixel |
| 13580 | coordinates:</p> |
| 13581 | <pre><code>P = [ K 0 * [ R t |
| 13582 | 0 1 ] 0 1 ] |
| 13583 | </code></pre> |
| 13584 | <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system |
| 13585 | and <code>p_<wbr/>s</code> being a point in the camera active pixel array |
| 13586 | coordinate system,<wbr/> and with the mapping including the |
| 13587 | homogeneous division by z:</p> |
| 13588 | <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w |
| 13589 | p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h |
| 13590 | </code></pre> |
| 13591 | <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world |
| 13592 | point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity |
| 13593 | (depth) in pixel coordinates.<wbr/></p> |
| 13594 | <p>Note that the coordinate system for this transform is the |
| 13595 | <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/> |
| 13596 | where <code>(0,<wbr/>0)</code> is the top-left of the |
| 13597 | preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and |
| 13598 | intrinsic calibration transforms have been applied to a |
| 13599 | world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> |
| 13600 | transform needs to be applied,<wbr/> and the result adjusted to |
| 13601 | be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate |
| 13602 | system (where <code>(0,<wbr/> 0)</code> is the top-left of the |
| 13603 | activeArraySize rectangle),<wbr/> to determine the final pixel |
| 13604 | coordinate of the world point for processed (non-RAW) |
| 13605 | output buffers.<wbr/></p> |
| 13606 | </td> |
| 13607 | </tr> |
| 13608 | |
| 13609 | |
| 13610 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 13611 | <!-- end of entry --> |
| 13612 | |
| 13613 | |
| 13614 | <tr class="entry" id="dynamic_android.lens.radialDistortion"> |
| 13615 | <td class="entry_name |
| 13616 | " rowspan="3"> |
| 13617 | android.<wbr/>lens.<wbr/>radial<wbr/>Distortion |
| 13618 | </td> |
| 13619 | <td class="entry_type"> |
| 13620 | <span class="entry_type_name">float</span> |
| 13621 | <span class="entry_type_container">x</span> |
| 13622 | |
| 13623 | <span class="entry_type_array"> |
| 13624 | 6 |
| 13625 | </span> |
| 13626 | <span class="entry_type_visibility"> [public]</span> |
| 13627 | |
| 13628 | |
| 13629 | |
| 13630 | |
| 13631 | |
| 13632 | |
| 13633 | </td> <!-- entry_type --> |
| 13634 | |
| 13635 | <td class="entry_description"> |
| 13636 | <p>The correction coefficients to correct for this camera device's |
| 13637 | radial and tangential lens distortion.<wbr/></p> |
| 13638 | </td> |
| 13639 | |
| 13640 | <td class="entry_units"> |
| 13641 | |
| 13642 | Unitless coefficients.<wbr/> |
| 13643 | |
| 13644 | </td> |
| 13645 | |
| 13646 | <td class="entry_range"> |
| 13647 | </td> |
| 13648 | |
| 13649 | <td class="entry_tags"> |
| 13650 | <ul class="entry_tags"> |
| 13651 | <li><a href="#tag_DEPTH">DEPTH</a></li> |
| 13652 | </ul> |
| 13653 | </td> |
| 13654 | |
| 13655 | </tr> |
| 13656 | <tr class="entries_header"> |
| 13657 | <th class="th_details" colspan="5">Details</th> |
| 13658 | </tr> |
| 13659 | <tr class="entry_cont"> |
| 13660 | <td class="entry_details" colspan="5"> |
| 13661 | <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/> |
| 13662 | kappa_<wbr/>3]</code> and two tangential distortion coefficients |
| 13663 | <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the |
| 13664 | lens's geometric distortion with the mapping equations:</p> |
| 13665 | <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 ) + |
| 13666 | kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 ) |
| 13667 | y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + |
| 13668 | kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 ) |
| 13669 | </code></pre> |
| 13670 | <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the |
| 13671 | input image that correspond to the pixel values in the |
| 13672 | corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p> |
| 13673 | <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage) |
| 13674 | </code></pre> |
| 13675 | <p>The pixel coordinates are defined in a normalized |
| 13676 | coordinate system related to the |
| 13677 | <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/> |
| 13678 | 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 |
| 13679 | lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes |
| 13680 | of both x and y coordinates are normalized to be 1 at the |
| 13681 | edge further from the optical center,<wbr/> so the range |
| 13682 | for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p> |
| 13683 | <p>Finally,<wbr/> <code>r</code> represents the radial distance from the |
| 13684 | optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude |
| 13685 | is therefore no larger than <code>|<wbr/>r|<wbr/> <= sqrt(2)</code>.<wbr/></p> |
| 13686 | <p>The distortion model used is the Brown-Conrady model.<wbr/></p> |
| 13687 | </td> |
| 13688 | </tr> |
| 13689 | |
| 13690 | |
| 13691 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 13692 | <!-- end of entry --> |
| 13693 | |
| 13694 | |
| 13695 | |
| 13696 | <!-- end of kind --> |
| 13697 | </tbody> |
| 13698 | |
| 13699 | <!-- end of section --> |
| 13700 | <tr><td colspan="6" id="section_noiseReduction" class="section">noiseReduction</td></tr> |
| 13701 | |
| 13702 | |
| 13703 | <tr><td colspan="6" class="kind">controls</td></tr> |
| 13704 | |
| 13705 | <thead class="entries_header"> |
| 13706 | <tr> |
| 13707 | <th class="th_name">Property Name</th> |
| 13708 | <th class="th_type">Type</th> |
| 13709 | <th class="th_description">Description</th> |
| 13710 | <th class="th_units">Units</th> |
| 13711 | <th class="th_range">Range</th> |
| 13712 | <th class="th_tags">Tags</th> |
| 13713 | </tr> |
| 13714 | </thead> |
| 13715 | |
| 13716 | <tbody> |
| 13717 | |
| 13718 | |
| 13719 | |
| 13720 | |
| 13721 | |
| 13722 | |
| 13723 | |
| 13724 | |
| 13725 | |
| 13726 | |
| 13727 | <tr class="entry" id="controls_android.noiseReduction.mode"> |
| 13728 | <td class="entry_name |
| 13729 | " rowspan="5"> |
| 13730 | android.<wbr/>noise<wbr/>Reduction.<wbr/>mode |
| 13731 | </td> |
| 13732 | <td class="entry_type"> |
| 13733 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 13734 | |
| 13735 | <span class="entry_type_visibility"> [public]</span> |
| 13736 | |
| 13737 | |
| 13738 | <span class="entry_type_hwlevel">[full] </span> |
| 13739 | |
| 13740 | |
| 13741 | |
| 13742 | <ul class="entry_type_enum"> |
| 13743 | <li> |
| 13744 | <span class="entry_type_enum_name">OFF</span> |
| 13745 | <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span> |
| 13746 | </li> |
| 13747 | <li> |
| 13748 | <span class="entry_type_enum_name">FAST</span> |
| 13749 | <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor |
| 13750 | output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate |
| 13751 | relative to sensor.<wbr/></p></span> |
| 13752 | </li> |
| 13753 | <li> |
| 13754 | <span class="entry_type_enum_name">HIGH_QUALITY</span> |
| 13755 | <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame |
| 13756 | rate relative to sensor output.<wbr/></p></span> |
| 13757 | </li> |
| 13758 | <li> |
| 13759 | <span class="entry_type_enum_name">MINIMAL</span> |
| 13760 | <span class="entry_type_enum_optional">[optional]</span> |
| 13761 | <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to |
| 13762 | sensor output.<wbr/> </p></span> |
| 13763 | </li> |
| 13764 | <li> |
| 13765 | <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> |
| 13766 | <span class="entry_type_enum_optional">[optional]</span> |
| 13767 | <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/> |
| 13768 | 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 |
| 13769 | reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if supported) or no |
| 13770 | noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of noise reduction |
| 13771 | for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> and the quality |
| 13772 | is equal to or better than FAST (since it is only applied to lower-resolution outputs,<wbr/> |
| 13773 | quality may improve from FAST).<wbr/></p> |
| 13774 | <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode |
| 13775 | with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures |
| 13776 | high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is |
| 13777 | produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the |
| 13778 | high-resolution buffers must not have noise reduction applied to maximize efficiency of |
| 13779 | preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while |
| 13780 | low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction |
| 13781 | applied for reasonable preview quality.<wbr/></p> |
| 13782 | <p>This mode is guaranteed to be supported by devices that support either the |
| 13783 | YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities |
| 13784 | (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will |
| 13785 | be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> |
| 13786 | </li> |
| 13787 | </ul> |
| 13788 | |
| 13789 | </td> <!-- entry_type --> |
| 13790 | |
| 13791 | <td class="entry_description"> |
| 13792 | <p>Mode of operation for the noise reduction algorithm.<wbr/></p> |
| 13793 | </td> |
| 13794 | |
| 13795 | <td class="entry_units"> |
| 13796 | </td> |
| 13797 | |
| 13798 | <td class="entry_range"> |
| 13799 | <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p> |
| 13800 | </td> |
| 13801 | |
| 13802 | <td class="entry_tags"> |
| 13803 | <ul class="entry_tags"> |
| 13804 | <li><a href="#tag_V1">V1</a></li> |
| 13805 | <li><a href="#tag_REPROC">REPROC</a></li> |
| 13806 | </ul> |
| 13807 | </td> |
| 13808 | |
| 13809 | </tr> |
| 13810 | <tr class="entries_header"> |
| 13811 | <th class="th_details" colspan="5">Details</th> |
| 13812 | </tr> |
| 13813 | <tr class="entry_cont"> |
| 13814 | <td class="entry_details" colspan="5"> |
| 13815 | <p>The noise reduction algorithm attempts to improve image quality by removing |
| 13816 | excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p> |
| 13817 | <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and |
| 13818 | YUV domain.<wbr/></p> |
| 13819 | <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove |
| 13820 | demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/> |
| 13821 | This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check |
| 13822 | <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> |
| 13823 | <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering |
| 13824 | will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device |
| 13825 | will use the highest-quality noise filtering algorithms,<wbr/> |
| 13826 | even if it slows down capture rate.<wbr/> FAST means the camera device will not |
| 13827 | slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if |
| 13828 | MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/> |
| 13829 | Every output stream will have a similar amount of enhancement applied.<wbr/></p> |
| 13830 | <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular |
| 13831 | buffer of high-resolution images during preview and reprocess image(s) from that buffer |
| 13832 | into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies |
| 13833 | noise reduction to low-resolution streams (below maximum recording resolution) to maximize |
| 13834 | preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since |
| 13835 | those will be reprocessed later if necessary.<wbr/></p> |
| 13836 | <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device |
| 13837 | will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device |
| 13838 | may adjust the noise reduction parameters for best image quality based on the |
| 13839 | <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p> |
| 13840 | </td> |
| 13841 | </tr> |
| 13842 | |
| 13843 | <tr class="entries_header"> |
| 13844 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 13845 | </tr> |
| 13846 | <tr class="entry_cont"> |
| 13847 | <td class="entry_details" colspan="5"> |
| 13848 | <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 |
| 13849 | adjust the internal noise reduction parameters appropriately to get the best quality |
| 13850 | images.<wbr/></p> |
| 13851 | </td> |
| 13852 | </tr> |
| 13853 | |
| 13854 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 13855 | <!-- end of entry --> |
| 13856 | |
| 13857 | |
| 13858 | <tr class="entry" id="controls_android.noiseReduction.strength"> |
| 13859 | <td class="entry_name |
| 13860 | " rowspan="1"> |
| 13861 | android.<wbr/>noise<wbr/>Reduction.<wbr/>strength |
| 13862 | </td> |
| 13863 | <td class="entry_type"> |
| 13864 | <span class="entry_type_name">byte</span> |
| 13865 | |
| 13866 | <span class="entry_type_visibility"> [system]</span> |
| 13867 | |
| 13868 | |
| 13869 | |
| 13870 | |
| 13871 | |
| 13872 | |
| 13873 | </td> <!-- entry_type --> |
| 13874 | |
| 13875 | <td class="entry_description"> |
| 13876 | <p>Control the amount of noise reduction |
| 13877 | applied to the images</p> |
| 13878 | </td> |
| 13879 | |
| 13880 | <td class="entry_units"> |
| 13881 | 1-10; 10 is max noise reduction |
| 13882 | </td> |
| 13883 | |
| 13884 | <td class="entry_range"> |
| 13885 | <p>1 - 10</p> |
| 13886 | </td> |
| 13887 | |
| 13888 | <td class="entry_tags"> |
| 13889 | <ul class="entry_tags"> |
| 13890 | <li><a href="#tag_FUTURE">FUTURE</a></li> |
| 13891 | </ul> |
| 13892 | </td> |
| 13893 | |
| 13894 | </tr> |
| 13895 | |
| 13896 | |
| 13897 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 13898 | <!-- end of entry --> |
| 13899 | |
| 13900 | |
| 13901 | |
| 13902 | <!-- end of kind --> |
| 13903 | </tbody> |
| 13904 | <tr><td colspan="6" class="kind">static</td></tr> |
| 13905 | |
| 13906 | <thead class="entries_header"> |
| 13907 | <tr> |
| 13908 | <th class="th_name">Property Name</th> |
| 13909 | <th class="th_type">Type</th> |
| 13910 | <th class="th_description">Description</th> |
| 13911 | <th class="th_units">Units</th> |
| 13912 | <th class="th_range">Range</th> |
| 13913 | <th class="th_tags">Tags</th> |
| 13914 | </tr> |
| 13915 | </thead> |
| 13916 | |
| 13917 | <tbody> |
| 13918 | |
| 13919 | |
| 13920 | |
| 13921 | |
| 13922 | |
| 13923 | |
| 13924 | |
| 13925 | |
| 13926 | |
| 13927 | |
| 13928 | <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes"> |
| 13929 | <td class="entry_name |
| 13930 | " rowspan="5"> |
| 13931 | android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes |
| 13932 | </td> |
| 13933 | <td class="entry_type"> |
| 13934 | <span class="entry_type_name">byte</span> |
| 13935 | <span class="entry_type_container">x</span> |
| 13936 | |
| 13937 | <span class="entry_type_array"> |
| 13938 | n |
| 13939 | </span> |
| 13940 | <span class="entry_type_visibility"> [public as enumList]</span> |
| 13941 | |
| 13942 | |
| 13943 | <span class="entry_type_hwlevel">[limited] </span> |
| 13944 | |
| 13945 | |
| 13946 | <div class="entry_type_notes">list of enums</div> |
| 13947 | |
| 13948 | |
| 13949 | </td> <!-- entry_type --> |
| 13950 | |
| 13951 | <td class="entry_description"> |
| 13952 | <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported |
| 13953 | by this camera device.<wbr/></p> |
| 13954 | </td> |
| 13955 | |
| 13956 | <td class="entry_units"> |
| 13957 | </td> |
| 13958 | |
| 13959 | <td class="entry_range"> |
| 13960 | <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p> |
| 13961 | </td> |
| 13962 | |
| 13963 | <td class="entry_tags"> |
| 13964 | <ul class="entry_tags"> |
| 13965 | <li><a href="#tag_V1">V1</a></li> |
| 13966 | <li><a href="#tag_REPROC">REPROC</a></li> |
| 13967 | </ul> |
| 13968 | </td> |
| 13969 | |
| 13970 | </tr> |
| 13971 | <tr class="entries_header"> |
| 13972 | <th class="th_details" colspan="5">Details</th> |
| 13973 | </tr> |
| 13974 | <tr class="entry_cont"> |
| 13975 | <td class="entry_details" colspan="5"> |
| 13976 | <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p> |
| 13977 | <p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support |
| 13978 | ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p> |
| 13979 | <p>Legacy-capability camera devices will only support FAST mode.<wbr/></p> |
| 13980 | </td> |
| 13981 | </tr> |
| 13982 | |
| 13983 | <tr class="entries_header"> |
| 13984 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 13985 | </tr> |
| 13986 | <tr class="entry_cont"> |
| 13987 | <td class="entry_details" colspan="5"> |
| 13988 | <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available |
| 13989 | on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> |
| 13990 | That is,<wbr/> if the highest quality implementation on the camera device does not slow down |
| 13991 | capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> |
| 13992 | </td> |
| 13993 | </tr> |
| 13994 | |
| 13995 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 13996 | <!-- end of entry --> |
| 13997 | |
| 13998 | |
| 13999 | |
| 14000 | <!-- end of kind --> |
| 14001 | </tbody> |
| 14002 | <tr><td colspan="6" class="kind">dynamic</td></tr> |
| 14003 | |
| 14004 | <thead class="entries_header"> |
| 14005 | <tr> |
| 14006 | <th class="th_name">Property Name</th> |
| 14007 | <th class="th_type">Type</th> |
| 14008 | <th class="th_description">Description</th> |
| 14009 | <th class="th_units">Units</th> |
| 14010 | <th class="th_range">Range</th> |
| 14011 | <th class="th_tags">Tags</th> |
| 14012 | </tr> |
| 14013 | </thead> |
| 14014 | |
| 14015 | <tbody> |
| 14016 | |
| 14017 | |
| 14018 | |
| 14019 | |
| 14020 | |
| 14021 | |
| 14022 | |
| 14023 | |
| 14024 | |
| 14025 | |
| 14026 | <tr class="entry" id="dynamic_android.noiseReduction.mode"> |
| 14027 | <td class="entry_name |
| 14028 | " rowspan="5"> |
| 14029 | android.<wbr/>noise<wbr/>Reduction.<wbr/>mode |
| 14030 | </td> |
| 14031 | <td class="entry_type"> |
| 14032 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 14033 | |
| 14034 | <span class="entry_type_visibility"> [public]</span> |
| 14035 | |
| 14036 | |
| 14037 | <span class="entry_type_hwlevel">[full] </span> |
| 14038 | |
| 14039 | |
| 14040 | |
| 14041 | <ul class="entry_type_enum"> |
| 14042 | <li> |
| 14043 | <span class="entry_type_enum_name">OFF</span> |
| 14044 | <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span> |
| 14045 | </li> |
| 14046 | <li> |
| 14047 | <span class="entry_type_enum_name">FAST</span> |
| 14048 | <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor |
| 14049 | output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate |
| 14050 | relative to sensor.<wbr/></p></span> |
| 14051 | </li> |
| 14052 | <li> |
| 14053 | <span class="entry_type_enum_name">HIGH_QUALITY</span> |
| 14054 | <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame |
| 14055 | rate relative to sensor output.<wbr/></p></span> |
| 14056 | </li> |
| 14057 | <li> |
| 14058 | <span class="entry_type_enum_name">MINIMAL</span> |
| 14059 | <span class="entry_type_enum_optional">[optional]</span> |
| 14060 | <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to |
| 14061 | sensor output.<wbr/> </p></span> |
| 14062 | </li> |
| 14063 | <li> |
| 14064 | <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> |
| 14065 | <span class="entry_type_enum_optional">[optional]</span> |
| 14066 | <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/> |
| 14067 | 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 |
| 14068 | reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if supported) or no |
| 14069 | noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of noise reduction |
| 14070 | for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> and the quality |
| 14071 | is equal to or better than FAST (since it is only applied to lower-resolution outputs,<wbr/> |
| 14072 | quality may improve from FAST).<wbr/></p> |
| 14073 | <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode |
| 14074 | with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures |
| 14075 | high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is |
| 14076 | produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the |
| 14077 | high-resolution buffers must not have noise reduction applied to maximize efficiency of |
| 14078 | preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while |
| 14079 | low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction |
| 14080 | applied for reasonable preview quality.<wbr/></p> |
| 14081 | <p>This mode is guaranteed to be supported by devices that support either the |
| 14082 | YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities |
| 14083 | (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will |
| 14084 | be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> |
| 14085 | </li> |
| 14086 | </ul> |
| 14087 | |
| 14088 | </td> <!-- entry_type --> |
| 14089 | |
| 14090 | <td class="entry_description"> |
| 14091 | <p>Mode of operation for the noise reduction algorithm.<wbr/></p> |
| 14092 | </td> |
| 14093 | |
| 14094 | <td class="entry_units"> |
| 14095 | </td> |
| 14096 | |
| 14097 | <td class="entry_range"> |
| 14098 | <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p> |
| 14099 | </td> |
| 14100 | |
| 14101 | <td class="entry_tags"> |
| 14102 | <ul class="entry_tags"> |
| 14103 | <li><a href="#tag_V1">V1</a></li> |
| 14104 | <li><a href="#tag_REPROC">REPROC</a></li> |
| 14105 | </ul> |
| 14106 | </td> |
| 14107 | |
| 14108 | </tr> |
| 14109 | <tr class="entries_header"> |
| 14110 | <th class="th_details" colspan="5">Details</th> |
| 14111 | </tr> |
| 14112 | <tr class="entry_cont"> |
| 14113 | <td class="entry_details" colspan="5"> |
| 14114 | <p>The noise reduction algorithm attempts to improve image quality by removing |
| 14115 | excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p> |
| 14116 | <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and |
| 14117 | YUV domain.<wbr/></p> |
| 14118 | <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove |
| 14119 | demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/> |
| 14120 | This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check |
| 14121 | <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> |
| 14122 | <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering |
| 14123 | will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device |
| 14124 | will use the highest-quality noise filtering algorithms,<wbr/> |
| 14125 | even if it slows down capture rate.<wbr/> FAST means the camera device will not |
| 14126 | slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if |
| 14127 | MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/> |
| 14128 | Every output stream will have a similar amount of enhancement applied.<wbr/></p> |
| 14129 | <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular |
| 14130 | buffer of high-resolution images during preview and reprocess image(s) from that buffer |
| 14131 | into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies |
| 14132 | noise reduction to low-resolution streams (below maximum recording resolution) to maximize |
| 14133 | preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since |
| 14134 | those will be reprocessed later if necessary.<wbr/></p> |
| 14135 | <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device |
| 14136 | will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device |
| 14137 | may adjust the noise reduction parameters for best image quality based on the |
| 14138 | <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p> |
| 14139 | </td> |
| 14140 | </tr> |
| 14141 | |
| 14142 | <tr class="entries_header"> |
| 14143 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 14144 | </tr> |
| 14145 | <tr class="entry_cont"> |
| 14146 | <td class="entry_details" colspan="5"> |
| 14147 | <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 |
| 14148 | adjust the internal noise reduction parameters appropriately to get the best quality |
| 14149 | images.<wbr/></p> |
| 14150 | </td> |
| 14151 | </tr> |
| 14152 | |
| 14153 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 14154 | <!-- end of entry --> |
| 14155 | |
| 14156 | |
| 14157 | |
| 14158 | <!-- end of kind --> |
| 14159 | </tbody> |
| 14160 | |
| 14161 | <!-- end of section --> |
| 14162 | <tr><td colspan="6" id="section_quirks" class="section">quirks</td></tr> |
| 14163 | |
| 14164 | |
| 14165 | <tr><td colspan="6" class="kind">static</td></tr> |
| 14166 | |
| 14167 | <thead class="entries_header"> |
| 14168 | <tr> |
| 14169 | <th class="th_name">Property Name</th> |
| 14170 | <th class="th_type">Type</th> |
| 14171 | <th class="th_description">Description</th> |
| 14172 | <th class="th_units">Units</th> |
| 14173 | <th class="th_range">Range</th> |
| 14174 | <th class="th_tags">Tags</th> |
| 14175 | </tr> |
| 14176 | </thead> |
| 14177 | |
| 14178 | <tbody> |
| 14179 | |
| 14180 | |
| 14181 | |
| 14182 | |
| 14183 | |
| 14184 | |
| 14185 | |
| 14186 | |
| 14187 | |
| 14188 | |
| 14189 | <tr class="entry" id="static_android.quirks.meteringCropRegion"> |
| 14190 | <td class="entry_name |
| 14191 | entry_name_deprecated |
| 14192 | " rowspan="3"> |
| 14193 | android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region |
| 14194 | </td> |
| 14195 | <td class="entry_type"> |
| 14196 | <span class="entry_type_name">byte</span> |
| 14197 | |
| 14198 | <span class="entry_type_visibility"> [system]</span> |
| 14199 | |
| 14200 | |
| 14201 | |
| 14202 | <span class="entry_type_deprecated">[deprecated] </span> |
| 14203 | |
| 14204 | |
| 14205 | |
| 14206 | </td> <!-- entry_type --> |
| 14207 | |
| 14208 | <td class="entry_description"> |
| 14209 | <p>If set to 1,<wbr/> the camera service does not |
| 14210 | scale 'normalized' coordinates with respect to the crop |
| 14211 | region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region |
| 14212 | and output (face rectangles).<wbr/></p> |
| 14213 | </td> |
| 14214 | |
| 14215 | <td class="entry_units"> |
| 14216 | </td> |
| 14217 | |
| 14218 | <td class="entry_range"> |
| 14219 | <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> |
| 14220 | </td> |
| 14221 | |
| 14222 | <td class="entry_tags"> |
| 14223 | </td> |
| 14224 | |
| 14225 | </tr> |
| 14226 | <tr class="entries_header"> |
| 14227 | <th class="th_details" colspan="5">Details</th> |
| 14228 | </tr> |
| 14229 | <tr class="entry_cont"> |
| 14230 | <td class="entry_details" colspan="5"> |
| 14231 | <p>Normalized coordinates refer to those in the |
| 14232 | (-1000,<wbr/>1000) range mentioned in the |
| 14233 | android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p> |
| 14234 | <p>HAL implementations should instead always use and emit |
| 14235 | sensor array-relative coordinates for all region data.<wbr/> Does |
| 14236 | not need to be listed in static metadata.<wbr/> Support will be |
| 14237 | removed in future versions of camera service.<wbr/></p> |
| 14238 | </td> |
| 14239 | </tr> |
| 14240 | |
| 14241 | |
| 14242 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 14243 | <!-- end of entry --> |
| 14244 | |
| 14245 | |
| 14246 | <tr class="entry" id="static_android.quirks.triggerAfWithAuto"> |
| 14247 | <td class="entry_name |
| 14248 | entry_name_deprecated |
| 14249 | " rowspan="3"> |
| 14250 | android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto |
| 14251 | </td> |
| 14252 | <td class="entry_type"> |
| 14253 | <span class="entry_type_name">byte</span> |
| 14254 | |
| 14255 | <span class="entry_type_visibility"> [system]</span> |
| 14256 | |
| 14257 | |
| 14258 | |
| 14259 | <span class="entry_type_deprecated">[deprecated] </span> |
| 14260 | |
| 14261 | |
| 14262 | |
| 14263 | </td> <!-- entry_type --> |
| 14264 | |
| 14265 | <td class="entry_description"> |
| 14266 | <p>If set to 1,<wbr/> then the camera service always |
| 14267 | switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF |
| 14268 | trigger.<wbr/></p> |
| 14269 | </td> |
| 14270 | |
| 14271 | <td class="entry_units"> |
| 14272 | </td> |
| 14273 | |
| 14274 | <td class="entry_range"> |
| 14275 | <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> |
| 14276 | </td> |
| 14277 | |
| 14278 | <td class="entry_tags"> |
| 14279 | </td> |
| 14280 | |
| 14281 | </tr> |
| 14282 | <tr class="entries_header"> |
| 14283 | <th class="th_details" colspan="5">Details</th> |
| 14284 | </tr> |
| 14285 | <tr class="entry_cont"> |
| 14286 | <td class="entry_details" colspan="5"> |
| 14287 | <p>HAL implementations should implement AF trigger |
| 14288 | modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and |
| 14289 | CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does |
| 14290 | not need to be listed in static metadata.<wbr/> Support will be |
| 14291 | removed in future versions of camera service</p> |
| 14292 | </td> |
| 14293 | </tr> |
| 14294 | |
| 14295 | |
| 14296 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 14297 | <!-- end of entry --> |
| 14298 | |
| 14299 | |
| 14300 | <tr class="entry" id="static_android.quirks.useZslFormat"> |
| 14301 | <td class="entry_name |
| 14302 | entry_name_deprecated |
| 14303 | " rowspan="3"> |
| 14304 | android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format |
| 14305 | </td> |
| 14306 | <td class="entry_type"> |
| 14307 | <span class="entry_type_name">byte</span> |
| 14308 | |
| 14309 | <span class="entry_type_visibility"> [system]</span> |
| 14310 | |
| 14311 | |
| 14312 | |
| 14313 | <span class="entry_type_deprecated">[deprecated] </span> |
| 14314 | |
| 14315 | |
| 14316 | |
| 14317 | </td> <!-- entry_type --> |
| 14318 | |
| 14319 | <td class="entry_description"> |
| 14320 | <p>If set to 1,<wbr/> the camera service uses |
| 14321 | CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of |
| 14322 | HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero |
| 14323 | shutter lag stream</p> |
| 14324 | </td> |
| 14325 | |
| 14326 | <td class="entry_units"> |
| 14327 | </td> |
| 14328 | |
| 14329 | <td class="entry_range"> |
| 14330 | <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> |
| 14331 | </td> |
| 14332 | |
| 14333 | <td class="entry_tags"> |
| 14334 | </td> |
| 14335 | |
| 14336 | </tr> |
| 14337 | <tr class="entries_header"> |
| 14338 | <th class="th_details" colspan="5">Details</th> |
| 14339 | </tr> |
| 14340 | <tr class="entry_cont"> |
| 14341 | <td class="entry_details" colspan="5"> |
| 14342 | <p>HAL implementations should use gralloc usage flags |
| 14343 | to determine that a stream will be used for |
| 14344 | zero-shutter-lag,<wbr/> instead of relying on an explicit |
| 14345 | format setting.<wbr/> Does not need to be listed in static |
| 14346 | metadata.<wbr/> Support will be removed in future versions of |
| 14347 | camera service.<wbr/></p> |
| 14348 | </td> |
| 14349 | </tr> |
| 14350 | |
| 14351 | |
| 14352 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 14353 | <!-- end of entry --> |
| 14354 | |
| 14355 | |
| 14356 | <tr class="entry" id="static_android.quirks.usePartialResult"> |
| 14357 | <td class="entry_name |
| 14358 | entry_name_deprecated |
| 14359 | " rowspan="5"> |
| 14360 | android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result |
| 14361 | </td> |
| 14362 | <td class="entry_type"> |
| 14363 | <span class="entry_type_name">byte</span> |
| 14364 | |
| 14365 | <span class="entry_type_visibility"> [hidden]</span> |
| 14366 | |
| 14367 | |
| 14368 | |
| 14369 | <span class="entry_type_deprecated">[deprecated] </span> |
| 14370 | |
| 14371 | |
| 14372 | |
| 14373 | </td> <!-- entry_type --> |
| 14374 | |
| 14375 | <td class="entry_description"> |
| 14376 | <p>If set to 1,<wbr/> the HAL will always split result |
| 14377 | metadata for a single capture into multiple buffers,<wbr/> |
| 14378 | returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p> |
| 14379 | </td> |
| 14380 | |
| 14381 | <td class="entry_units"> |
| 14382 | </td> |
| 14383 | |
| 14384 | <td class="entry_range"> |
| 14385 | <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> |
| 14386 | </td> |
| 14387 | |
| 14388 | <td class="entry_tags"> |
| 14389 | </td> |
| 14390 | |
| 14391 | </tr> |
| 14392 | <tr class="entries_header"> |
| 14393 | <th class="th_details" colspan="5">Details</th> |
| 14394 | </tr> |
| 14395 | <tr class="entry_cont"> |
| 14396 | <td class="entry_details" colspan="5"> |
| 14397 | <p>Does not need to be listed in static |
| 14398 | metadata.<wbr/> Support for partial results will be reworked in |
| 14399 | future versions of camera service.<wbr/> This quirk will stop |
| 14400 | working at that point; DO NOT USE without careful |
| 14401 | consideration of future support.<wbr/></p> |
| 14402 | </td> |
| 14403 | </tr> |
| 14404 | |
| 14405 | <tr class="entries_header"> |
| 14406 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 14407 | </tr> |
| 14408 | <tr class="entry_cont"> |
| 14409 | <td class="entry_details" colspan="5"> |
| 14410 | <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code> |
| 14411 | for information on how to implement partial results.<wbr/></p> |
| 14412 | </td> |
| 14413 | </tr> |
| 14414 | |
| 14415 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 14416 | <!-- end of entry --> |
| 14417 | |
| 14418 | |
| 14419 | |
| 14420 | <!-- end of kind --> |
| 14421 | </tbody> |
| 14422 | <tr><td colspan="6" class="kind">dynamic</td></tr> |
| 14423 | |
| 14424 | <thead class="entries_header"> |
| 14425 | <tr> |
| 14426 | <th class="th_name">Property Name</th> |
| 14427 | <th class="th_type">Type</th> |
| 14428 | <th class="th_description">Description</th> |
| 14429 | <th class="th_units">Units</th> |
| 14430 | <th class="th_range">Range</th> |
| 14431 | <th class="th_tags">Tags</th> |
| 14432 | </tr> |
| 14433 | </thead> |
| 14434 | |
| 14435 | <tbody> |
| 14436 | |
| 14437 | |
| 14438 | |
| 14439 | |
| 14440 | |
| 14441 | |
| 14442 | |
| 14443 | |
| 14444 | |
| 14445 | |
| 14446 | <tr class="entry" id="dynamic_android.quirks.partialResult"> |
| 14447 | <td class="entry_name |
| 14448 | entry_name_deprecated |
| 14449 | " rowspan="5"> |
| 14450 | android.<wbr/>quirks.<wbr/>partial<wbr/>Result |
| 14451 | </td> |
| 14452 | <td class="entry_type"> |
| 14453 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 14454 | |
| 14455 | <span class="entry_type_visibility"> [hidden as boolean]</span> |
| 14456 | |
| 14457 | |
| 14458 | |
| 14459 | <span class="entry_type_deprecated">[deprecated] </span> |
| 14460 | |
| 14461 | |
| 14462 | <ul class="entry_type_enum"> |
| 14463 | <li> |
| 14464 | <span class="entry_type_enum_name">FINAL</span> |
| 14465 | <span class="entry_type_enum_notes"><p>The last or only metadata result buffer |
| 14466 | for this capture.<wbr/></p></span> |
| 14467 | </li> |
| 14468 | <li> |
| 14469 | <span class="entry_type_enum_name">PARTIAL</span> |
| 14470 | <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this |
| 14471 | capture.<wbr/> More result buffers for this capture will be sent |
| 14472 | by the camera device,<wbr/> the last of which will be marked |
| 14473 | FINAL.<wbr/></p></span> |
| 14474 | </li> |
| 14475 | </ul> |
| 14476 | |
| 14477 | </td> <!-- entry_type --> |
| 14478 | |
| 14479 | <td class="entry_description"> |
| 14480 | <p>Whether a result given to the framework is the |
| 14481 | final one for the capture,<wbr/> or only a partial that contains a |
| 14482 | subset of the full set of dynamic metadata |
| 14483 | values.<wbr/></p> |
| 14484 | </td> |
| 14485 | |
| 14486 | <td class="entry_units"> |
| 14487 | </td> |
| 14488 | |
| 14489 | <td class="entry_range"> |
| 14490 | <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> |
| 14491 | <p>Optional.<wbr/> Default value is FINAL.<wbr/></p> |
| 14492 | </td> |
| 14493 | |
| 14494 | <td class="entry_tags"> |
| 14495 | </td> |
| 14496 | |
| 14497 | </tr> |
| 14498 | <tr class="entries_header"> |
| 14499 | <th class="th_details" colspan="5">Details</th> |
| 14500 | </tr> |
| 14501 | <tr class="entry_cont"> |
| 14502 | <td class="entry_details" colspan="5"> |
| 14503 | <p>The entries in the result metadata buffers for a |
| 14504 | single capture may not overlap,<wbr/> except for this entry.<wbr/> The |
| 14505 | FINAL buffers must retain FIFO ordering relative to the |
| 14506 | requests that generate them,<wbr/> so the FINAL buffer for frame 3 must |
| 14507 | always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and |
| 14508 | before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned |
| 14509 | in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given |
| 14510 | capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may |
| 14511 | only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p> |
| 14512 | </td> |
| 14513 | </tr> |
| 14514 | |
| 14515 | <tr class="entries_header"> |
| 14516 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 14517 | </tr> |
| 14518 | <tr class="entry_cont"> |
| 14519 | <td class="entry_details" colspan="5"> |
| 14520 | <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code> |
| 14521 | for information on how to implement partial results.<wbr/></p> |
| 14522 | </td> |
| 14523 | </tr> |
| 14524 | |
| 14525 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 14526 | <!-- end of entry --> |
| 14527 | |
| 14528 | |
| 14529 | |
| 14530 | <!-- end of kind --> |
| 14531 | </tbody> |
| 14532 | |
| 14533 | <!-- end of section --> |
| 14534 | <tr><td colspan="6" id="section_request" class="section">request</td></tr> |
| 14535 | |
| 14536 | |
| 14537 | <tr><td colspan="6" class="kind">controls</td></tr> |
| 14538 | |
| 14539 | <thead class="entries_header"> |
| 14540 | <tr> |
| 14541 | <th class="th_name">Property Name</th> |
| 14542 | <th class="th_type">Type</th> |
| 14543 | <th class="th_description">Description</th> |
| 14544 | <th class="th_units">Units</th> |
| 14545 | <th class="th_range">Range</th> |
| 14546 | <th class="th_tags">Tags</th> |
| 14547 | </tr> |
| 14548 | </thead> |
| 14549 | |
| 14550 | <tbody> |
| 14551 | |
| 14552 | |
| 14553 | |
| 14554 | |
| 14555 | |
| 14556 | |
| 14557 | |
| 14558 | |
| 14559 | |
| 14560 | |
| 14561 | <tr class="entry" id="controls_android.request.frameCount"> |
| 14562 | <td class="entry_name |
| 14563 | entry_name_deprecated |
| 14564 | " rowspan="1"> |
| 14565 | android.<wbr/>request.<wbr/>frame<wbr/>Count |
| 14566 | </td> |
| 14567 | <td class="entry_type"> |
| 14568 | <span class="entry_type_name">int32</span> |
| 14569 | |
| 14570 | <span class="entry_type_visibility"> [system]</span> |
| 14571 | |
| 14572 | |
| 14573 | |
| 14574 | <span class="entry_type_deprecated">[deprecated] </span> |
| 14575 | |
| 14576 | |
| 14577 | |
| 14578 | </td> <!-- entry_type --> |
| 14579 | |
| 14580 | <td class="entry_description"> |
| 14581 | <p>A frame counter set by the framework.<wbr/> Must |
| 14582 | be maintained unchanged in output frame.<wbr/> This value monotonically |
| 14583 | increases with every new result (that is,<wbr/> each new result has a unique |
| 14584 | frameCount value).<wbr/></p> |
| 14585 | </td> |
| 14586 | |
| 14587 | <td class="entry_units"> |
| 14588 | incrementing integer |
| 14589 | </td> |
| 14590 | |
| 14591 | <td class="entry_range"> |
| 14592 | <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> |
| 14593 | <p>Any int.<wbr/></p> |
| 14594 | </td> |
| 14595 | |
| 14596 | <td class="entry_tags"> |
| 14597 | </td> |
| 14598 | |
| 14599 | </tr> |
| 14600 | |
| 14601 | |
| 14602 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 14603 | <!-- end of entry --> |
| 14604 | |
| 14605 | |
| 14606 | <tr class="entry" id="controls_android.request.id"> |
| 14607 | <td class="entry_name |
| 14608 | " rowspan="1"> |
| 14609 | android.<wbr/>request.<wbr/>id |
| 14610 | </td> |
| 14611 | <td class="entry_type"> |
| 14612 | <span class="entry_type_name">int32</span> |
| 14613 | |
| 14614 | <span class="entry_type_visibility"> [hidden]</span> |
| 14615 | |
| 14616 | |
| 14617 | |
| 14618 | |
| 14619 | |
| 14620 | |
| 14621 | </td> <!-- entry_type --> |
| 14622 | |
| 14623 | <td class="entry_description"> |
| 14624 | <p>An application-specified ID for the current |
| 14625 | request.<wbr/> Must be maintained unchanged in output |
| 14626 | frame</p> |
| 14627 | </td> |
| 14628 | |
| 14629 | <td class="entry_units"> |
| 14630 | arbitrary integer assigned by application |
| 14631 | </td> |
| 14632 | |
| 14633 | <td class="entry_range"> |
| 14634 | <p>Any int</p> |
| 14635 | </td> |
| 14636 | |
| 14637 | <td class="entry_tags"> |
| 14638 | <ul class="entry_tags"> |
| 14639 | <li><a href="#tag_V1">V1</a></li> |
| 14640 | </ul> |
| 14641 | </td> |
| 14642 | |
| 14643 | </tr> |
| 14644 | |
| 14645 | |
| 14646 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 14647 | <!-- end of entry --> |
| 14648 | |
| 14649 | |
| 14650 | <tr class="entry" id="controls_android.request.inputStreams"> |
| 14651 | <td class="entry_name |
| 14652 | entry_name_deprecated |
| 14653 | " rowspan="3"> |
| 14654 | android.<wbr/>request.<wbr/>input<wbr/>Streams |
| 14655 | </td> |
| 14656 | <td class="entry_type"> |
| 14657 | <span class="entry_type_name">int32</span> |
| 14658 | <span class="entry_type_container">x</span> |
| 14659 | |
| 14660 | <span class="entry_type_array"> |
| 14661 | n |
| 14662 | </span> |
| 14663 | <span class="entry_type_visibility"> [system]</span> |
| 14664 | |
| 14665 | |
| 14666 | |
| 14667 | <span class="entry_type_deprecated">[deprecated] </span> |
| 14668 | |
| 14669 | |
| 14670 | |
| 14671 | </td> <!-- entry_type --> |
| 14672 | |
| 14673 | <td class="entry_description"> |
| 14674 | <p>List which camera reprocess stream is used |
| 14675 | for the source of reprocessing data.<wbr/></p> |
| 14676 | </td> |
| 14677 | |
| 14678 | <td class="entry_units"> |
| 14679 | List of camera reprocess stream IDs |
| 14680 | </td> |
| 14681 | |
| 14682 | <td class="entry_range"> |
| 14683 | <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> |
| 14684 | <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p> |
| 14685 | </td> |
| 14686 | |
| 14687 | <td class="entry_tags"> |
| 14688 | <ul class="entry_tags"> |
| 14689 | <li><a href="#tag_HAL2">HAL2</a></li> |
| 14690 | </ul> |
| 14691 | </td> |
| 14692 | |
| 14693 | </tr> |
| 14694 | <tr class="entries_header"> |
| 14695 | <th class="th_details" colspan="5">Details</th> |
| 14696 | </tr> |
| 14697 | <tr class="entry_cont"> |
| 14698 | <td class="entry_details" colspan="5"> |
| 14699 | <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> == |
| 14700 | REPROCESS.<wbr/> Ignored otherwise</p> |
| 14701 | </td> |
| 14702 | </tr> |
| 14703 | |
| 14704 | |
| 14705 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 14706 | <!-- end of entry --> |
| 14707 | |
| 14708 | |
| 14709 | <tr class="entry" id="controls_android.request.metadataMode"> |
| 14710 | <td class="entry_name |
| 14711 | " rowspan="1"> |
| 14712 | android.<wbr/>request.<wbr/>metadata<wbr/>Mode |
| 14713 | </td> |
| 14714 | <td class="entry_type"> |
| 14715 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 14716 | |
| 14717 | <span class="entry_type_visibility"> [system]</span> |
| 14718 | |
| 14719 | |
| 14720 | |
| 14721 | |
| 14722 | |
| 14723 | <ul class="entry_type_enum"> |
| 14724 | <li> |
| 14725 | <span class="entry_type_enum_name">NONE</span> |
| 14726 | <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except |
| 14727 | for application-bound buffer data.<wbr/> If no |
| 14728 | application-bound streams exist,<wbr/> no frame should be |
| 14729 | placed in the output frame queue.<wbr/> If such streams |
| 14730 | exist,<wbr/> a frame should be placed on the output queue |
| 14731 | with null metadata but with the necessary output buffer |
| 14732 | information.<wbr/> Timestamp information should still be |
| 14733 | included with any output stream buffers</p></span> |
| 14734 | </li> |
| 14735 | <li> |
| 14736 | <span class="entry_type_enum_name">FULL</span> |
| 14737 | <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will |
| 14738 | only be produced if they are separately |
| 14739 | enabled</p></span> |
| 14740 | </li> |
| 14741 | </ul> |
| 14742 | |
| 14743 | </td> <!-- entry_type --> |
| 14744 | |
| 14745 | <td class="entry_description"> |
| 14746 | <p>How much metadata to produce on |
| 14747 | output</p> |
| 14748 | </td> |
| 14749 | |
| 14750 | <td class="entry_units"> |
| 14751 | </td> |
| 14752 | |
| 14753 | <td class="entry_range"> |
| 14754 | </td> |
| 14755 | |
| 14756 | <td class="entry_tags"> |
| 14757 | <ul class="entry_tags"> |
| 14758 | <li><a href="#tag_FUTURE">FUTURE</a></li> |
| 14759 | </ul> |
| 14760 | </td> |
| 14761 | |
| 14762 | </tr> |
| 14763 | |
| 14764 | |
| 14765 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 14766 | <!-- end of entry --> |
| 14767 | |
| 14768 | |
| 14769 | <tr class="entry" id="controls_android.request.outputStreams"> |
| 14770 | <td class="entry_name |
| 14771 | entry_name_deprecated |
| 14772 | " rowspan="3"> |
| 14773 | android.<wbr/>request.<wbr/>output<wbr/>Streams |
| 14774 | </td> |
| 14775 | <td class="entry_type"> |
| 14776 | <span class="entry_type_name">int32</span> |
| 14777 | <span class="entry_type_container">x</span> |
| 14778 | |
| 14779 | <span class="entry_type_array"> |
| 14780 | n |
| 14781 | </span> |
| 14782 | <span class="entry_type_visibility"> [system]</span> |
| 14783 | |
| 14784 | |
| 14785 | |
| 14786 | <span class="entry_type_deprecated">[deprecated] </span> |
| 14787 | |
| 14788 | |
| 14789 | |
| 14790 | </td> <!-- entry_type --> |
| 14791 | |
| 14792 | <td class="entry_description"> |
| 14793 | <p>Lists which camera output streams image data |
| 14794 | from this capture must be sent to</p> |
| 14795 | </td> |
| 14796 | |
| 14797 | <td class="entry_units"> |
| 14798 | List of camera stream IDs |
| 14799 | </td> |
| 14800 | |
| 14801 | <td class="entry_range"> |
| 14802 | <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> |
| 14803 | <p>List must only include streams that have been |
| 14804 | created</p> |
| 14805 | </td> |
| 14806 | |
| 14807 | <td class="entry_tags"> |
| 14808 | <ul class="entry_tags"> |
| 14809 | <li><a href="#tag_HAL2">HAL2</a></li> |
| 14810 | </ul> |
| 14811 | </td> |
| 14812 | |
| 14813 | </tr> |
| 14814 | <tr class="entries_header"> |
| 14815 | <th class="th_details" colspan="5">Details</th> |
| 14816 | </tr> |
| 14817 | <tr class="entry_cont"> |
| 14818 | <td class="entry_details" colspan="5"> |
| 14819 | <p>If no output streams are listed,<wbr/> then the image |
| 14820 | data should simply be discarded.<wbr/> The image data must |
| 14821 | still be captured for metadata and statistics production,<wbr/> |
| 14822 | and the lens and flash must operate as requested.<wbr/></p> |
| 14823 | </td> |
| 14824 | </tr> |
| 14825 | |
| 14826 | |
| 14827 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 14828 | <!-- end of entry --> |
| 14829 | |
| 14830 | |
| 14831 | <tr class="entry" id="controls_android.request.type"> |
| 14832 | <td class="entry_name |
| 14833 | entry_name_deprecated |
| 14834 | " rowspan="1"> |
| 14835 | android.<wbr/>request.<wbr/>type |
| 14836 | </td> |
| 14837 | <td class="entry_type"> |
| 14838 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 14839 | |
| 14840 | <span class="entry_type_visibility"> [system]</span> |
| 14841 | |
| 14842 | |
| 14843 | |
| 14844 | <span class="entry_type_deprecated">[deprecated] </span> |
| 14845 | |
| 14846 | |
| 14847 | <ul class="entry_type_enum"> |
| 14848 | <li> |
| 14849 | <span class="entry_type_enum_name">CAPTURE</span> |
| 14850 | <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/> |
| 14851 | and process it according to the |
| 14852 | settings</p></span> |
| 14853 | </li> |
| 14854 | <li> |
| 14855 | <span class="entry_type_enum_name">REPROCESS</span> |
| 14856 | <span class="entry_type_enum_notes"><p>Process previously captured data; the |
| 14857 | <a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the |
| 14858 | source reprocessing stream.<wbr/> TODO: Mark dynamic metadata |
| 14859 | needed for reprocessing with [RP]</p></span> |
| 14860 | </li> |
| 14861 | </ul> |
| 14862 | |
| 14863 | </td> <!-- entry_type --> |
| 14864 | |
| 14865 | <td class="entry_description"> |
| 14866 | <p>The type of the request; either CAPTURE or |
| 14867 | REPROCESS.<wbr/> For HAL3,<wbr/> this tag is redundant.<wbr/></p> |
| 14868 | </td> |
| 14869 | |
| 14870 | <td class="entry_units"> |
| 14871 | </td> |
| 14872 | |
| 14873 | <td class="entry_range"> |
| 14874 | <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> |
| 14875 | </td> |
| 14876 | |
| 14877 | <td class="entry_tags"> |
| 14878 | <ul class="entry_tags"> |
| 14879 | <li><a href="#tag_HAL2">HAL2</a></li> |
| 14880 | </ul> |
| 14881 | </td> |
| 14882 | |
| 14883 | </tr> |
| 14884 | |
| 14885 | |
| 14886 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 14887 | <!-- end of entry --> |
| 14888 | |
| 14889 | |
| 14890 | |
| 14891 | <!-- end of kind --> |
| 14892 | </tbody> |
| 14893 | <tr><td colspan="6" class="kind">static</td></tr> |
| 14894 | |
| 14895 | <thead class="entries_header"> |
| 14896 | <tr> |
| 14897 | <th class="th_name">Property Name</th> |
| 14898 | <th class="th_type">Type</th> |
| 14899 | <th class="th_description">Description</th> |
| 14900 | <th class="th_units">Units</th> |
| 14901 | <th class="th_range">Range</th> |
| 14902 | <th class="th_tags">Tags</th> |
| 14903 | </tr> |
| 14904 | </thead> |
| 14905 | |
| 14906 | <tbody> |
| 14907 | |
| 14908 | |
| 14909 | |
| 14910 | |
| 14911 | |
| 14912 | |
| 14913 | |
| 14914 | |
| 14915 | |
| 14916 | |
| 14917 | <tr class="entry" id="static_android.request.maxNumOutputStreams"> |
| 14918 | <td class="entry_name |
| 14919 | " rowspan="3"> |
| 14920 | android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams |
| 14921 | </td> |
| 14922 | <td class="entry_type"> |
| 14923 | <span class="entry_type_name">int32</span> |
| 14924 | <span class="entry_type_container">x</span> |
| 14925 | |
| 14926 | <span class="entry_type_array"> |
| 14927 | 3 |
| 14928 | </span> |
| 14929 | <span class="entry_type_visibility"> [ndk_public]</span> |
| 14930 | |
| 14931 | |
| 14932 | <span class="entry_type_hwlevel">[legacy] </span> |
| 14933 | |
| 14934 | |
| 14935 | |
| 14936 | |
| 14937 | </td> <!-- entry_type --> |
| 14938 | |
| 14939 | <td class="entry_description"> |
| 14940 | <p>The maximum numbers of different types of output streams |
| 14941 | that can be configured and used simultaneously by a camera device.<wbr/></p> |
| 14942 | </td> |
| 14943 | |
| 14944 | <td class="entry_units"> |
| 14945 | </td> |
| 14946 | |
| 14947 | <td class="entry_range"> |
| 14948 | <p>For processed (and stalling) format streams,<wbr/> >= 1.<wbr/></p> |
| 14949 | <p>For Raw format (either stalling or non-stalling) streams,<wbr/> >= 0.<wbr/></p> |
| 14950 | <p>For processed (but not stalling) format streams,<wbr/> >= 3 |
| 14951 | for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>); |
| 14952 | >= 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> |
| 14953 | </td> |
| 14954 | |
| 14955 | <td class="entry_tags"> |
| 14956 | <ul class="entry_tags"> |
| 14957 | <li><a href="#tag_BC">BC</a></li> |
| 14958 | </ul> |
| 14959 | </td> |
| 14960 | |
| 14961 | </tr> |
| 14962 | <tr class="entries_header"> |
| 14963 | <th class="th_details" colspan="5">Details</th> |
| 14964 | </tr> |
| 14965 | <tr class="entry_cont"> |
| 14966 | <td class="entry_details" colspan="5"> |
| 14967 | <p>This is a 3 element tuple that contains the max number of output simultaneous |
| 14968 | streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling) |
| 14969 | formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and |
| 14970 | stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams |
| 14971 | 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> |
| 14972 | <p>This lists the upper bound of the number of output streams supported by |
| 14973 | the camera device.<wbr/> Using more streams simultaneously may require more hardware and |
| 14974 | CPU resources that will consume more power.<wbr/> The image format for an output stream can |
| 14975 | be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/> |
| 14976 | The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized |
| 14977 | into the 3 stream types as below:</p> |
| 14978 | <ul> |
| 14979 | <li>Processed (but stalling): any non-RAW format with a stallDurations > 0.<wbr/> |
| 14980 | Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li> |
| 14981 | <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> |
| 14982 | <li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/> |
| 14983 | Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/> |
| 14984 | <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a>,<wbr/> or |
| 14985 | <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a>.<wbr/></li> |
| 14986 | </ul> |
| 14987 | </td> |
| 14988 | </tr> |
| 14989 | |
| 14990 | |
| 14991 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 14992 | <!-- end of entry --> |
| 14993 | |
| 14994 | |
| 14995 | <tr class="entry" id="static_android.request.maxNumOutputRaw"> |
| 14996 | <td class="entry_name |
| 14997 | " rowspan="3"> |
| 14998 | android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw |
| 14999 | </td> |
| 15000 | <td class="entry_type"> |
| 15001 | <span class="entry_type_name">int32</span> |
| 15002 | |
| 15003 | <span class="entry_type_visibility"> [java_public]</span> |
| 15004 | |
| 15005 | <span class="entry_type_synthetic">[synthetic] </span> |
| 15006 | |
| 15007 | <span class="entry_type_hwlevel">[legacy] </span> |
| 15008 | |
| 15009 | |
| 15010 | |
| 15011 | |
| 15012 | </td> <!-- entry_type --> |
| 15013 | |
| 15014 | <td class="entry_description"> |
| 15015 | <p>The maximum numbers of different types of output streams |
| 15016 | that can be configured and used simultaneously by a camera device |
| 15017 | for any <code>RAW</code> formats.<wbr/></p> |
| 15018 | </td> |
| 15019 | |
| 15020 | <td class="entry_units"> |
| 15021 | </td> |
| 15022 | |
| 15023 | <td class="entry_range"> |
| 15024 | <p>>= 0</p> |
| 15025 | </td> |
| 15026 | |
| 15027 | <td class="entry_tags"> |
| 15028 | </td> |
| 15029 | |
| 15030 | </tr> |
| 15031 | <tr class="entries_header"> |
| 15032 | <th class="th_details" colspan="5">Details</th> |
| 15033 | </tr> |
| 15034 | <tr class="entry_cont"> |
| 15035 | <td class="entry_details" colspan="5"> |
| 15036 | <p>This value contains the max number of output simultaneous |
| 15037 | streams from the raw sensor.<wbr/></p> |
| 15038 | <p>This lists the upper bound of the number of output streams supported by |
| 15039 | the camera device.<wbr/> Using more streams simultaneously may require more hardware and |
| 15040 | CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can |
| 15041 | 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> |
| 15042 | <p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p> |
| 15043 | <ul> |
| 15044 | <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li> |
| 15045 | <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li> |
| 15046 | <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li> |
| 15047 | </ul> |
| 15048 | <p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY) |
| 15049 | never support raw streams.<wbr/></p> |
| 15050 | </td> |
| 15051 | </tr> |
| 15052 | |
| 15053 | |
| 15054 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 15055 | <!-- end of entry --> |
| 15056 | |
| 15057 | |
| 15058 | <tr class="entry" id="static_android.request.maxNumOutputProc"> |
| 15059 | <td class="entry_name |
| 15060 | " rowspan="3"> |
| 15061 | android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc |
| 15062 | </td> |
| 15063 | <td class="entry_type"> |
| 15064 | <span class="entry_type_name">int32</span> |
| 15065 | |
| 15066 | <span class="entry_type_visibility"> [java_public]</span> |
| 15067 | |
| 15068 | <span class="entry_type_synthetic">[synthetic] </span> |
| 15069 | |
| 15070 | <span class="entry_type_hwlevel">[legacy] </span> |
| 15071 | |
| 15072 | |
| 15073 | |
| 15074 | |
| 15075 | </td> <!-- entry_type --> |
| 15076 | |
| 15077 | <td class="entry_description"> |
| 15078 | <p>The maximum numbers of different types of output streams |
| 15079 | that can be configured and used simultaneously by a camera device |
| 15080 | for any processed (but not-stalling) formats.<wbr/></p> |
| 15081 | </td> |
| 15082 | |
| 15083 | <td class="entry_units"> |
| 15084 | </td> |
| 15085 | |
| 15086 | <td class="entry_range"> |
| 15087 | <p>>= 3 |
| 15088 | for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>); |
| 15089 | >= 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> |
| 15090 | </td> |
| 15091 | |
| 15092 | <td class="entry_tags"> |
| 15093 | </td> |
| 15094 | |
| 15095 | </tr> |
| 15096 | <tr class="entries_header"> |
| 15097 | <th class="th_details" colspan="5">Details</th> |
| 15098 | </tr> |
| 15099 | <tr class="entry_cont"> |
| 15100 | <td class="entry_details" colspan="5"> |
| 15101 | <p>This value contains the max number of output simultaneous |
| 15102 | streams for any processed (but not-stalling) formats.<wbr/></p> |
| 15103 | <p>This lists the upper bound of the number of output streams supported by |
| 15104 | the camera device.<wbr/> Using more streams simultaneously may require more hardware and |
| 15105 | CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can |
| 15106 | 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> |
| 15107 | <p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/> |
| 15108 | Typically:</p> |
| 15109 | <ul> |
| 15110 | <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li> |
| 15111 | <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li> |
| 15112 | <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li> |
| 15113 | <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> |
| 15114 | </ul> |
| 15115 | <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 |
| 15116 | processed format -- it will return 0 for a non-stalling stream.<wbr/></p> |
| 15117 | <p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p> |
| 15118 | </td> |
| 15119 | </tr> |
| 15120 | |
| 15121 | |
| 15122 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 15123 | <!-- end of entry --> |
| 15124 | |
| 15125 | |
| 15126 | <tr class="entry" id="static_android.request.maxNumOutputProcStalling"> |
| 15127 | <td class="entry_name |
| 15128 | " rowspan="3"> |
| 15129 | android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling |
| 15130 | </td> |
| 15131 | <td class="entry_type"> |
| 15132 | <span class="entry_type_name">int32</span> |
| 15133 | |
| 15134 | <span class="entry_type_visibility"> [java_public]</span> |
| 15135 | |
| 15136 | <span class="entry_type_synthetic">[synthetic] </span> |
| 15137 | |
| 15138 | <span class="entry_type_hwlevel">[legacy] </span> |
| 15139 | |
| 15140 | |
| 15141 | |
| 15142 | |
| 15143 | </td> <!-- entry_type --> |
| 15144 | |
| 15145 | <td class="entry_description"> |
| 15146 | <p>The maximum numbers of different types of output streams |
| 15147 | that can be configured and used simultaneously by a camera device |
| 15148 | for any processed (and stalling) formats.<wbr/></p> |
| 15149 | </td> |
| 15150 | |
| 15151 | <td class="entry_units"> |
| 15152 | </td> |
| 15153 | |
| 15154 | <td class="entry_range"> |
| 15155 | <p>>= 1</p> |
| 15156 | </td> |
| 15157 | |
| 15158 | <td class="entry_tags"> |
| 15159 | </td> |
| 15160 | |
| 15161 | </tr> |
| 15162 | <tr class="entries_header"> |
| 15163 | <th class="th_details" colspan="5">Details</th> |
| 15164 | </tr> |
| 15165 | <tr class="entry_cont"> |
| 15166 | <td class="entry_details" colspan="5"> |
| 15167 | <p>This value contains the max number of output simultaneous |
| 15168 | streams for any processed (but not-stalling) formats.<wbr/></p> |
| 15169 | <p>This lists the upper bound of the number of output streams supported by |
| 15170 | the camera device.<wbr/> Using more streams simultaneously may require more hardware and |
| 15171 | CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can |
| 15172 | 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> |
| 15173 | <p>A processed and stalling format is defined as any non-RAW format with a stallDurations |
| 15174 | > 0.<wbr/> Typically only the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a> is a |
| 15175 | stalling format.<wbr/></p> |
| 15176 | <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 |
| 15177 | processed format -- it will return a non-0 value for a stalling stream.<wbr/></p> |
| 15178 | <p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p> |
| 15179 | </td> |
| 15180 | </tr> |
| 15181 | |
| 15182 | |
| 15183 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 15184 | <!-- end of entry --> |
| 15185 | |
| 15186 | |
| 15187 | <tr class="entry" id="static_android.request.maxNumReprocessStreams"> |
| 15188 | <td class="entry_name |
| 15189 | entry_name_deprecated |
| 15190 | " rowspan="3"> |
| 15191 | android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams |
| 15192 | </td> |
| 15193 | <td class="entry_type"> |
| 15194 | <span class="entry_type_name">int32</span> |
| 15195 | <span class="entry_type_container">x</span> |
| 15196 | |
| 15197 | <span class="entry_type_array"> |
| 15198 | 1 |
| 15199 | </span> |
| 15200 | <span class="entry_type_visibility"> [system]</span> |
| 15201 | |
| 15202 | |
| 15203 | |
| 15204 | <span class="entry_type_deprecated">[deprecated] </span> |
| 15205 | |
| 15206 | |
| 15207 | |
| 15208 | </td> <!-- entry_type --> |
| 15209 | |
| 15210 | <td class="entry_description"> |
| 15211 | <p>How many reprocessing streams of any type |
| 15212 | can be allocated at the same time.<wbr/></p> |
| 15213 | </td> |
| 15214 | |
| 15215 | <td class="entry_units"> |
| 15216 | </td> |
| 15217 | |
| 15218 | <td class="entry_range"> |
| 15219 | <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> |
| 15220 | <p>>= 0</p> |
| 15221 | </td> |
| 15222 | |
| 15223 | <td class="entry_tags"> |
| 15224 | <ul class="entry_tags"> |
| 15225 | <li><a href="#tag_HAL2">HAL2</a></li> |
| 15226 | </ul> |
| 15227 | </td> |
| 15228 | |
| 15229 | </tr> |
| 15230 | <tr class="entries_header"> |
| 15231 | <th class="th_details" colspan="5">Details</th> |
| 15232 | </tr> |
| 15233 | <tr class="entry_cont"> |
| 15234 | <td class="entry_details" colspan="5"> |
| 15235 | <p>Only used by HAL2.<wbr/>x.<wbr/></p> |
| 15236 | <p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p> |
| 15237 | </td> |
| 15238 | </tr> |
| 15239 | |
| 15240 | |
| 15241 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 15242 | <!-- end of entry --> |
| 15243 | |
| 15244 | |
| 15245 | <tr class="entry" id="static_android.request.maxNumInputStreams"> |
| 15246 | <td class="entry_name |
| 15247 | " rowspan="5"> |
| 15248 | android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams |
| 15249 | </td> |
| 15250 | <td class="entry_type"> |
| 15251 | <span class="entry_type_name">int32</span> |
| 15252 | |
| 15253 | <span class="entry_type_visibility"> [public]</span> |
| 15254 | |
| 15255 | |
| 15256 | <span class="entry_type_hwlevel">[full] </span> |
| 15257 | |
| 15258 | |
| 15259 | |
| 15260 | |
| 15261 | </td> <!-- entry_type --> |
| 15262 | |
| 15263 | <td class="entry_description"> |
| 15264 | <p>The maximum numbers of any type of input streams |
| 15265 | that can be configured and used simultaneously by a camera device.<wbr/></p> |
| 15266 | </td> |
| 15267 | |
| 15268 | <td class="entry_units"> |
| 15269 | </td> |
| 15270 | |
| 15271 | <td class="entry_range"> |
| 15272 | <p>0 or 1.<wbr/></p> |
| 15273 | </td> |
| 15274 | |
| 15275 | <td class="entry_tags"> |
| 15276 | <ul class="entry_tags"> |
| 15277 | <li><a href="#tag_REPROC">REPROC</a></li> |
| 15278 | </ul> |
| 15279 | </td> |
| 15280 | |
| 15281 | </tr> |
| 15282 | <tr class="entries_header"> |
| 15283 | <th class="th_details" colspan="5">Details</th> |
| 15284 | </tr> |
| 15285 | <tr class="entry_cont"> |
| 15286 | <td class="entry_details" colspan="5"> |
| 15287 | <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p> |
| 15288 | <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 |
| 15289 | input stream,<wbr/> there must be at least one output stream configured to to receive the |
| 15290 | reprocessed images.<wbr/></p> |
| 15291 | <p>When an input stream and some output streams are used in a reprocessing request,<wbr/> |
| 15292 | only the input buffer will be used to produce these output stream buffers,<wbr/> and a |
| 15293 | new sensor image will not be captured.<wbr/></p> |
| 15294 | <p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input |
| 15295 | stream image format will be PRIVATE,<wbr/> the associated output stream image format |
| 15296 | should be JPEG.<wbr/></p> |
| 15297 | </td> |
| 15298 | </tr> |
| 15299 | |
| 15300 | <tr class="entries_header"> |
| 15301 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 15302 | </tr> |
| 15303 | <tr class="entry_cont"> |
| 15304 | <td class="entry_details" colspan="5"> |
| 15305 | <p>For the reprocessing flow and controls,<wbr/> see |
| 15306 | hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p> |
| 15307 | </td> |
| 15308 | </tr> |
| 15309 | |
| 15310 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 15311 | <!-- end of entry --> |
| 15312 | |
| 15313 | |
| 15314 | <tr class="entry" id="static_android.request.pipelineMaxDepth"> |
| 15315 | <td class="entry_name |
| 15316 | " rowspan="5"> |
| 15317 | android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth |
| 15318 | </td> |
| 15319 | <td class="entry_type"> |
| 15320 | <span class="entry_type_name">byte</span> |
| 15321 | |
| 15322 | <span class="entry_type_visibility"> [public]</span> |
| 15323 | |
| 15324 | |
| 15325 | <span class="entry_type_hwlevel">[legacy] </span> |
| 15326 | |
| 15327 | |
| 15328 | |
| 15329 | |
| 15330 | </td> <!-- entry_type --> |
| 15331 | |
| 15332 | <td class="entry_description"> |
| 15333 | <p>Specifies the number of maximum pipeline stages a frame |
| 15334 | has to go through from when it's exposed to when it's available |
| 15335 | to the framework.<wbr/></p> |
| 15336 | </td> |
| 15337 | |
| 15338 | <td class="entry_units"> |
| 15339 | </td> |
| 15340 | |
| 15341 | <td class="entry_range"> |
| 15342 | </td> |
| 15343 | |
| 15344 | <td class="entry_tags"> |
| 15345 | </td> |
| 15346 | |
| 15347 | </tr> |
| 15348 | <tr class="entries_header"> |
| 15349 | <th class="th_details" colspan="5">Details</th> |
| 15350 | </tr> |
| 15351 | <tr class="entry_cont"> |
| 15352 | <td class="entry_details" colspan="5"> |
| 15353 | <p>A typical minimum value for this is 2 (one stage to expose,<wbr/> |
| 15354 | one stage to readout) from the sensor.<wbr/> The ISP then usually adds |
| 15355 | its own stages to do custom HW processing.<wbr/> Further stages may be |
| 15356 | added by SW processing.<wbr/></p> |
| 15357 | <p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what |
| 15358 | processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline |
| 15359 | depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than |
| 15360 | the max pipeline depth.<wbr/></p> |
| 15361 | <p>A pipeline depth of X stages is equivalent to a pipeline latency of |
| 15362 | X frame intervals.<wbr/></p> |
| 15363 | <p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/> |
| 15364 | the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p> |
| 15365 | </td> |
| 15366 | </tr> |
| 15367 | |
| 15368 | <tr class="entries_header"> |
| 15369 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 15370 | </tr> |
| 15371 | <tr class="entry_cont"> |
| 15372 | <td class="entry_details" colspan="5"> |
| 15373 | <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the |
| 15374 | max batch sizes may be larger than 1.<wbr/></p> |
| 15375 | </td> |
| 15376 | </tr> |
| 15377 | |
| 15378 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 15379 | <!-- end of entry --> |
| 15380 | |
| 15381 | |
| 15382 | <tr class="entry" id="static_android.request.partialResultCount"> |
| 15383 | <td class="entry_name |
| 15384 | " rowspan="3"> |
| 15385 | android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count |
| 15386 | </td> |
| 15387 | <td class="entry_type"> |
| 15388 | <span class="entry_type_name">int32</span> |
| 15389 | |
| 15390 | <span class="entry_type_visibility"> [public]</span> |
| 15391 | |
| 15392 | |
| 15393 | |
| 15394 | |
| 15395 | |
| 15396 | |
| 15397 | </td> <!-- entry_type --> |
| 15398 | |
| 15399 | <td class="entry_description"> |
| 15400 | <p>Defines how many sub-components |
| 15401 | a result will be composed of.<wbr/></p> |
| 15402 | </td> |
| 15403 | |
| 15404 | <td class="entry_units"> |
| 15405 | </td> |
| 15406 | |
| 15407 | <td class="entry_range"> |
| 15408 | <p>>= 1</p> |
| 15409 | </td> |
| 15410 | |
| 15411 | <td class="entry_tags"> |
| 15412 | </td> |
| 15413 | |
| 15414 | </tr> |
| 15415 | <tr class="entries_header"> |
| 15416 | <th class="th_details" colspan="5">Details</th> |
| 15417 | </tr> |
| 15418 | <tr class="entry_cont"> |
| 15419 | <td class="entry_details" colspan="5"> |
| 15420 | <p>In order to combat the pipeline latency,<wbr/> partial results |
| 15421 | may be delivered to the application layer from the camera device as |
| 15422 | soon as they are available.<wbr/></p> |
| 15423 | <p>Optional; defaults to 1.<wbr/> A value of 1 means that partial |
| 15424 | results are not supported,<wbr/> and only the final TotalCaptureResult will |
| 15425 | be produced by the camera device.<wbr/></p> |
| 15426 | <p>A typical use case for this might be: after requesting an |
| 15427 | auto-focus (AF) lock the new AF state might be available 50% |
| 15428 | of the way through the pipeline.<wbr/> The camera device could |
| 15429 | then immediately dispatch this state via a partial result to |
| 15430 | the application,<wbr/> and the rest of the metadata via later |
| 15431 | partial results.<wbr/></p> |
| 15432 | </td> |
| 15433 | </tr> |
| 15434 | |
| 15435 | |
| 15436 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 15437 | <!-- end of entry --> |
| 15438 | |
| 15439 | |
| 15440 | <tr class="entry" id="static_android.request.availableCapabilities"> |
| 15441 | <td class="entry_name |
| 15442 | " rowspan="5"> |
| 15443 | android.<wbr/>request.<wbr/>available<wbr/>Capabilities |
| 15444 | </td> |
| 15445 | <td class="entry_type"> |
| 15446 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 15447 | <span class="entry_type_container">x</span> |
| 15448 | |
| 15449 | <span class="entry_type_array"> |
| 15450 | n |
| 15451 | </span> |
| 15452 | <span class="entry_type_visibility"> [public]</span> |
| 15453 | |
| 15454 | |
| 15455 | <span class="entry_type_hwlevel">[legacy] </span> |
| 15456 | |
| 15457 | |
| 15458 | |
| 15459 | <ul class="entry_type_enum"> |
| 15460 | <li> |
| 15461 | <span class="entry_type_enum_name">BACKWARD_COMPATIBLE</span> |
| 15462 | <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera |
| 15463 | device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>) |
| 15464 | supports.<wbr/></p> |
| 15465 | <p>This capability is listed by all normal devices,<wbr/> and |
| 15466 | indicates that the camera device has a feature set |
| 15467 | that's comparable to the baseline requirements for the |
| 15468 | older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p> |
| 15469 | <p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this |
| 15470 | capability,<wbr/> indicating that they support only depth measurement,<wbr/> |
| 15471 | not standard color output.<wbr/></p></span> |
| 15472 | </li> |
| 15473 | <li> |
| 15474 | <span class="entry_type_enum_name">MANUAL_SENSOR</span> |
| 15475 | <span class="entry_type_enum_optional">[optional]</span> |
| 15476 | <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such |
| 15477 | as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/> |
| 15478 | The camera device supports basic manual control of the sensor image |
| 15479 | acquisition related stages.<wbr/> This means the following controls are |
| 15480 | guaranteed to be supported:</p> |
| 15481 | <ul> |
| 15482 | <li>Manual frame duration control<ul> |
| 15483 | <li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li> |
| 15484 | <li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li> |
| 15485 | </ul> |
| 15486 | </li> |
| 15487 | <li>Manual exposure control<ul> |
| 15488 | <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li> |
| 15489 | <li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li> |
| 15490 | </ul> |
| 15491 | </li> |
| 15492 | <li>Manual sensitivity control<ul> |
| 15493 | <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li> |
| 15494 | <li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li> |
| 15495 | </ul> |
| 15496 | </li> |
| 15497 | <li>Manual lens control (if the lens is adjustable)<ul> |
| 15498 | <li>android.<wbr/>lens.<wbr/>*</li> |
| 15499 | </ul> |
| 15500 | </li> |
| 15501 | <li>Manual flash control (if a flash unit is present)<ul> |
| 15502 | <li>android.<wbr/>flash.<wbr/>*</li> |
| 15503 | </ul> |
| 15504 | </li> |
| 15505 | <li>Manual black level locking<ul> |
| 15506 | <li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li> |
| 15507 | </ul> |
| 15508 | </li> |
| 15509 | <li>Auto exposure lock<ul> |
| 15510 | <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> |
| 15511 | </ul> |
| 15512 | </li> |
| 15513 | </ul> |
| 15514 | <p>If any of the above 3A algorithms are enabled,<wbr/> then the camera |
| 15515 | device will accurately report the values applied by 3A in the |
| 15516 | result.<wbr/></p> |
| 15517 | <p>A given camera device may also support additional manual sensor controls,<wbr/> |
| 15518 | but this capability only covers the above list of controls.<wbr/></p> |
| 15519 | <p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will |
| 15520 | additionally return a min frame duration that is greater than |
| 15521 | zero for each supported size-format combination.<wbr/></p></span> |
| 15522 | </li> |
| 15523 | <li> |
| 15524 | <span class="entry_type_enum_name">MANUAL_POST_PROCESSING</span> |
| 15525 | <span class="entry_type_enum_optional">[optional]</span> |
| 15526 | <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/> |
| 15527 | The camera device supports basic manual control of the image post-processing |
| 15528 | stages.<wbr/> This means the following controls are guaranteed to be supported:</p> |
| 15529 | <ul> |
| 15530 | <li> |
| 15531 | <p>Manual tonemap control</p> |
| 15532 | <ul> |
| 15533 | <li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li> |
| 15534 | <li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li> |
| 15535 | <li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li> |
| 15536 | <li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li> |
| 15537 | <li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li> |
| 15538 | </ul> |
| 15539 | </li> |
| 15540 | <li> |
| 15541 | <p>Manual white balance control</p> |
| 15542 | <ul> |
| 15543 | <li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li> |
| 15544 | <li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li> |
| 15545 | </ul> |
| 15546 | </li> |
| 15547 | <li>Manual lens shading map control<ul> |
| 15548 | <li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li> |
| 15549 | <li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li> |
| 15550 | <li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li> |
| 15551 | <li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li> |
| 15552 | </ul> |
| 15553 | </li> |
| 15554 | <li>Manual aberration correction control (if aberration correction is supported)<ul> |
| 15555 | <li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li> |
| 15556 | <li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li> |
| 15557 | </ul> |
| 15558 | </li> |
| 15559 | <li>Auto white balance lock<ul> |
| 15560 | <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> |
| 15561 | </ul> |
| 15562 | </li> |
| 15563 | </ul> |
| 15564 | <p>If auto white balance is enabled,<wbr/> then the camera device |
| 15565 | will accurately report the values applied by AWB in the result.<wbr/></p> |
| 15566 | <p>A given camera device may also support additional post-processing |
| 15567 | controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span> |
| 15568 | </li> |
| 15569 | <li> |
| 15570 | <span class="entry_type_enum_name">RAW</span> |
| 15571 | <span class="entry_type_enum_optional">[optional]</span> |
| 15572 | <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and |
| 15573 | metadata for interpreting them.<wbr/></p> |
| 15574 | <p>Devices supporting the RAW capability allow both for |
| 15575 | saving DNG files,<wbr/> and for direct application processing of |
| 15576 | raw sensor images.<wbr/></p> |
| 15577 | <ul> |
| 15578 | <li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li> |
| 15579 | <li>The maximum available resolution for RAW_<wbr/>SENSOR streams |
| 15580 | will match either the value in |
| 15581 | <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or |
| 15582 | <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/></li> |
| 15583 | <li>All DNG-related optional metadata entries are provided |
| 15584 | by the camera device.<wbr/></li> |
| 15585 | </ul></span> |
| 15586 | </li> |
| 15587 | <li> |
| 15588 | <span class="entry_type_enum_name">PRIVATE_REPROCESSING</span> |
| 15589 | <span class="entry_type_enum_optional">[optional]</span> |
| 15590 | <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p> |
| 15591 | <ul> |
| 15592 | <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> |
| 15593 | <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/> |
| 15594 | that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of |
| 15595 | 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> |
| 15596 | <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a> |
| 15597 | 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> |
| 15598 | <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> |
| 15599 | <li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop |
| 15600 | relative to the sensor's maximum capture rate (at that resolution).<wbr/></li> |
| 15601 | <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both |
| 15602 | <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and |
| 15603 | <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li> |
| 15604 | <li>The maximum available resolution for PRIVATE streams |
| 15605 | (both input/<wbr/>output) will match the maximum available |
| 15606 | resolution of JPEG streams.<wbr/></li> |
| 15607 | <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li> |
| 15608 | <li>Only below controls are effective for reprocessing requests and |
| 15609 | will be present in capture results,<wbr/> other controls in reprocess |
| 15610 | requests will be ignored by the camera device.<wbr/><ul> |
| 15611 | <li>android.<wbr/>jpeg.<wbr/>*</li> |
| 15612 | <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li> |
| 15613 | <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li> |
| 15614 | </ul> |
| 15615 | </li> |
| 15616 | <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and |
| 15617 | <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> |
| 15618 | </ul></span> |
| 15619 | </li> |
| 15620 | <li> |
| 15621 | <span class="entry_type_enum_name">READ_SENSOR_SETTINGS</span> |
| 15622 | <span class="entry_type_enum_optional">[optional]</span> |
| 15623 | <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of |
| 15624 | the sensor controls while the built-in 3A algorithm is running.<wbr/> This allows |
| 15625 | reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p> |
| 15626 | <p>The values reported for the following controls are guaranteed to be available |
| 15627 | in the CaptureResult,<wbr/> including when 3A is enabled:</p> |
| 15628 | <ul> |
| 15629 | <li>Exposure control<ul> |
| 15630 | <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li> |
| 15631 | </ul> |
| 15632 | </li> |
| 15633 | <li>Sensitivity control<ul> |
| 15634 | <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li> |
| 15635 | </ul> |
| 15636 | </li> |
| 15637 | <li>Lens controls (if the lens is adjustable)<ul> |
| 15638 | <li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li> |
| 15639 | <li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li> |
| 15640 | </ul> |
| 15641 | </li> |
| 15642 | </ul> |
| 15643 | <p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will |
| 15644 | always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span> |
| 15645 | </li> |
| 15646 | <li> |
| 15647 | <span class="entry_type_enum_name">BURST_CAPTURE</span> |
| 15648 | <span class="entry_type_enum_optional">[optional]</span> |
| 15649 | <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at >= 20 frames per |
| 15650 | second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are set |
| 15651 | to FAST.<wbr/> Additionally,<wbr/> maximum-resolution images can be captured at >= 10 frames |
| 15652 | per second.<wbr/> Here,<wbr/> 'high resolution' means at least 8 megapixels,<wbr/> or the maximum |
| 15653 | resolution of the device,<wbr/> whichever is smaller.<wbr/></p> |
| 15654 | <p>More specifically,<wbr/> this means that a size matching the camera device's active array |
| 15655 | 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/> |
| 15656 | with a minimum frame duration for that format and size of either <= 1/<wbr/>20 s,<wbr/> or |
| 15657 | <= 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 |
| 15658 | lists at least one FPS range where the minimum FPS is >= 1 /<wbr/> minimumFrameDuration |
| 15659 | 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/> |
| 15660 | 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 |
| 15661 | least one resolution >= 8 megapixels,<wbr/> with a minimum frame duration of <= 1/<wbr/>20 |
| 15662 | s.<wbr/></p> |
| 15663 | <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 |
| 15664 | as the maximum-size YUV_<wbr/>420_<wbr/>888 resolution is.<wbr/></p> |
| 15665 | <p>If the device supports the PRIVATE_<wbr/>REPROCESSING capability,<wbr/> then the same guarantees |
| 15666 | 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> |
| 15667 | <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 |
| 15668 | 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> |
| 15669 | are also guaranteed to be <code>true</code> so burst capture with these two locks ON yields |
| 15670 | consistent image output.<wbr/></p></span> |
| 15671 | </li> |
| 15672 | <li> |
| 15673 | <span class="entry_type_enum_name">YUV_REPROCESSING</span> |
| 15674 | <span class="entry_type_enum_optional">[optional]</span> |
| 15675 | <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as |
| 15676 | PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the |
| 15677 | following:</p> |
| 15678 | <ul> |
| 15679 | <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> |
| 15680 | <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/> |
| 15681 | YUV_<wbr/>420_<wbr/>888 is included in the lists of formats returned by |
| 15682 | <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a> and |
| 15683 | <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputFormats">StreamConfigurationMap#getOutputFormats</a>.<wbr/></li> |
| 15684 | <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a> |
| 15685 | 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> |
| 15686 | <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> |
| 15687 | <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 |
| 15688 | relative to the sensor's maximum capture rate (at that resolution).<wbr/></li> |
| 15689 | <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 |
| 15690 | <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> |
| 15691 | <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 |
| 15692 | maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li> |
| 15693 | <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li> |
| 15694 | <li>Only the below controls are effective for reprocessing requests and will be present |
| 15695 | in capture results.<wbr/> The reprocess requests are from the original capture results that |
| 15696 | 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> |
| 15697 | output buffers.<wbr/> All other controls in the reprocess requests will be ignored by the |
| 15698 | camera device.<wbr/><ul> |
| 15699 | <li>android.<wbr/>jpeg.<wbr/>*</li> |
| 15700 | <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li> |
| 15701 | <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li> |
| 15702 | <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li> |
| 15703 | </ul> |
| 15704 | </li> |
| 15705 | <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and |
| 15706 | <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> |
| 15707 | </ul></span> |
| 15708 | </li> |
| 15709 | <li> |
| 15710 | <span class="entry_type_enum_name">DEPTH_OUTPUT</span> |
| 15711 | <span class="entry_type_enum_optional">[optional]</span> |
| 15712 | <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p> |
| 15713 | <p>This capability requires the camera device to support the following:</p> |
| 15714 | <ul> |
| 15715 | <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as an output format.<wbr/></li> |
| 15716 | <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 |
| 15717 | output format.<wbr/></li> |
| 15718 | <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/> |
| 15719 | will list the following calibration entries in both |
| 15720 | <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a> and |
| 15721 | <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul> |
| 15722 | <li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li> |
| 15723 | <li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li> |
| 15724 | <li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li> |
| 15725 | <li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a></li> |
| 15726 | </ul> |
| 15727 | </li> |
| 15728 | <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> |
| 15729 | <li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support |
| 15730 | normal YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the DEPTH16 |
| 15731 | format.<wbr/></li> |
| 15732 | </ul> |
| 15733 | <p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/> |
| 15734 | so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that |
| 15735 | should be accounted for (see |
| 15736 | <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/> |
| 15737 | On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/> |
| 15738 | using a repeating burst is recommended,<wbr/> where a depth-output target is only included |
| 15739 | once every N frames,<wbr/> where N is the ratio between preview output rate and depth output |
| 15740 | rate,<wbr/> including depth stall time.<wbr/></p></span> |
| 15741 | </li> |
| 15742 | <li> |
| 15743 | <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO</span> |
| 15744 | <span class="entry_type_enum_optional">[optional]</span> |
| 15745 | <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate >=120fps) |
| 15746 | use case.<wbr/> The camera device will support high speed capture session created by |
| 15747 | <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>,<wbr/> which |
| 15748 | only accepts high speed request lists created by |
| 15749 | <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/></p> |
| 15750 | <p>A camera device can still support high speed video streaming by advertising the high speed |
| 15751 | 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 |
| 15752 | capture request per frame control and synchronization requirements will apply to |
| 15753 | the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability describes |
| 15754 | the capability of a specialized operating mode with many limitations (see below),<wbr/> which |
| 15755 | is only targeted at high speed video recording.<wbr/></p> |
| 15756 | <p>The supported high speed video sizes and fps ranges are specified in |
| 15757 | <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/> |
| 15758 | To get desired output frame rates,<wbr/> the application is only allowed to select video size |
| 15759 | and FPS range combinations provided by |
| 15760 | <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/> |
| 15761 | 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> |
| 15762 | <p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to |
| 15763 | ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode |
| 15764 | controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture |
| 15765 | and post-processing parameters is possible.<wbr/> All other controls operate the |
| 15766 | same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other |
| 15767 | android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> |
| 15768 | <ul> |
| 15769 | <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> |
| 15770 | <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> |
| 15771 | <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> |
| 15772 | <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> |
| 15773 | <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> |
| 15774 | <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> |
| 15775 | <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> |
| 15776 | <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> |
| 15777 | <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> |
| 15778 | <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> |
| 15779 | </ul> |
| 15780 | <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> |
| 15781 | <ul> |
| 15782 | <li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not |
| 15783 | work since aeMode is ON)</li> |
| 15784 | <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> |
| 15785 | <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> |
| 15786 | <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li> |
| 15787 | </ul> |
| 15788 | <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may |
| 15789 | be lower than what camera can output,<wbr/> depending on the destination Surfaces for |
| 15790 | the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> |
| 15791 | the application need check if the video encoder is capable of supporting the |
| 15792 | high frame rate for a given video size,<wbr/> or it will end up with lower recording |
| 15793 | frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame |
| 15794 | rate will be bounded by the screen refresh rate.<wbr/></p> |
| 15795 | <p>The camera device will only support up to 2 high speed simultaneous output surfaces |
| 15796 | (preview and recording surfaces) |
| 15797 | in this mode.<wbr/> Above controls will be effective only if all of below conditions are true:</p> |
| 15798 | <ul> |
| 15799 | <li>The application creates a camera capture session with no more than 2 surfaces via |
| 15800 | <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The |
| 15801 | targeted surfaces must be preview surface (either from |
| 15802 | <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 |
| 15803 | recording surface(either from <a href="https://developer.android.com/reference/android/media/MediaRecorder.html#getSurface">MediaRecorder#getSurface</a> or |
| 15804 | <a href="https://developer.android.com/reference/android/media/MediaCodec.html#createInputSurface">MediaCodec#createInputSurface</a>).<wbr/></li> |
| 15805 | <li>The stream sizes are selected from the sizes reported by |
| 15806 | <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li> |
| 15807 | <li>The FPS ranges are selected from |
| 15808 | <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/></li> |
| 15809 | </ul> |
| 15810 | <p>When above conditions are NOT satistied,<wbr/> |
| 15811 | <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a> |
| 15812 | will fail.<wbr/></p> |
| 15813 | <p>Switching to a FPS range that has different maximum FPS may trigger some camera device |
| 15814 | reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that |
| 15815 | the application avoids unnecessary maximum target FPS changes as much as possible |
| 15816 | during high speed streaming.<wbr/></p></span> |
| 15817 | </li> |
| 15818 | </ul> |
| 15819 | |
| 15820 | </td> <!-- entry_type --> |
| 15821 | |
| 15822 | <td class="entry_description"> |
| 15823 | <p>List of capabilities that this camera device |
| 15824 | advertises as fully supporting.<wbr/></p> |
| 15825 | </td> |
| 15826 | |
| 15827 | <td class="entry_units"> |
| 15828 | </td> |
| 15829 | |
| 15830 | <td class="entry_range"> |
| 15831 | </td> |
| 15832 | |
| 15833 | <td class="entry_tags"> |
| 15834 | </td> |
| 15835 | |
| 15836 | </tr> |
| 15837 | <tr class="entries_header"> |
| 15838 | <th class="th_details" colspan="5">Details</th> |
| 15839 | </tr> |
| 15840 | <tr class="entry_cont"> |
| 15841 | <td class="entry_details" colspan="5"> |
| 15842 | <p>A capability is a contract that the camera device makes in order |
| 15843 | to be able to satisfy one or more use cases.<wbr/></p> |
| 15844 | <p>Listing a capability guarantees that the whole set of features |
| 15845 | required to support a common use will all be available.<wbr/></p> |
| 15846 | <p>Using a subset of the functionality provided by an unsupported |
| 15847 | capability may be possible on a specific camera device implementation; |
| 15848 | to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/> |
| 15849 | <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/> |
| 15850 | <a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p> |
| 15851 | <p>The following capabilities are guaranteed to be available on |
| 15852 | <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p> |
| 15853 | <ul> |
| 15854 | <li>MANUAL_<wbr/>SENSOR</li> |
| 15855 | <li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li> |
| 15856 | </ul> |
| 15857 | <p>Other capabilities may be available on either FULL or LIMITED |
| 15858 | devices,<wbr/> but the application should query this key to be sure.<wbr/></p> |
| 15859 | </td> |
| 15860 | </tr> |
| 15861 | |
| 15862 | <tr class="entries_header"> |
| 15863 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 15864 | </tr> |
| 15865 | <tr class="entry_cont"> |
| 15866 | <td class="entry_details" colspan="5"> |
| 15867 | <p>Additional constraint details per-capability will be available |
| 15868 | in the Compatibility Test Suite.<wbr/></p> |
| 15869 | <p>Minimum baseline requirements required for the |
| 15870 | BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/> |
| 15871 | Instead refer to "BC" tags and the camera CTS tests in the |
| 15872 | android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p> |
| 15873 | <p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/> |
| 15874 | <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the |
| 15875 | request and the result in order to be considered to be |
| 15876 | capability-compliant.<wbr/></p> |
| 15877 | <p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/> |
| 15878 | then exposure time must be configurable via the request <em>and</em> |
| 15879 | the actual exposure applied must be available via |
| 15880 | the result.<wbr/></p> |
| 15881 | <p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the |
| 15882 | <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p> |
| 15883 | <p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see |
| 15884 | hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p> |
| 15885 | <p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the |
| 15886 | CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p> |
| 15887 | <p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the |
| 15888 | YUV_<wbr/>REPROCESSING capability must support the |
| 15889 | CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p> |
| 15890 | <p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys |
| 15891 | <a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/> |
| 15892 | <a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/> |
| 15893 | <a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in |
| 15894 | addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT |
| 15895 | enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available |
| 15896 | if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace |
| 15897 | DEPTH).<wbr/></p> |
| 15898 | </td> |
| 15899 | </tr> |
| 15900 | |
| 15901 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 15902 | <!-- end of entry --> |
| 15903 | |
| 15904 | |
| 15905 | <tr class="entry" id="static_android.request.availableRequestKeys"> |
| 15906 | <td class="entry_name |
| 15907 | " rowspan="5"> |
| 15908 | android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys |
| 15909 | </td> |
| 15910 | <td class="entry_type"> |
| 15911 | <span class="entry_type_name">int32</span> |
| 15912 | <span class="entry_type_container">x</span> |
| 15913 | |
| 15914 | <span class="entry_type_array"> |
| 15915 | n |
| 15916 | </span> |
| 15917 | <span class="entry_type_visibility"> [ndk_public]</span> |
| 15918 | |
| 15919 | |
| 15920 | <span class="entry_type_hwlevel">[legacy] </span> |
| 15921 | |
| 15922 | |
| 15923 | |
| 15924 | |
| 15925 | </td> <!-- entry_type --> |
| 15926 | |
| 15927 | <td class="entry_description"> |
| 15928 | <p>A list of all keys that the camera device has available |
| 15929 | to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p> |
| 15930 | </td> |
| 15931 | |
| 15932 | <td class="entry_units"> |
| 15933 | </td> |
| 15934 | |
| 15935 | <td class="entry_range"> |
| 15936 | </td> |
| 15937 | |
| 15938 | <td class="entry_tags"> |
| 15939 | </td> |
| 15940 | |
| 15941 | </tr> |
| 15942 | <tr class="entries_header"> |
| 15943 | <th class="th_details" colspan="5">Details</th> |
| 15944 | </tr> |
| 15945 | <tr class="entry_cont"> |
| 15946 | <td class="entry_details" colspan="5"> |
| 15947 | <p>Attempting to set a key into a CaptureRequest that is not |
| 15948 | listed here will result in an invalid request and will be rejected |
| 15949 | by the camera device.<wbr/></p> |
| 15950 | <p>This field can be used to query the feature set of a camera device |
| 15951 | at a more granular level than capabilities.<wbr/> This is especially |
| 15952 | important for optional keys that are not listed under any capability |
| 15953 | in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> |
| 15954 | </td> |
| 15955 | </tr> |
| 15956 | |
| 15957 | <tr class="entries_header"> |
| 15958 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 15959 | </tr> |
| 15960 | <tr class="entry_cont"> |
| 15961 | <td class="entry_details" colspan="5"> |
| 15962 | <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata |
| 15963 | extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p> |
| 15964 | <p>Setting/<wbr/>getting vendor tags will be checked against the metadata |
| 15965 | vendor extensions API and not against this field.<wbr/></p> |
| 15966 | <p>The HAL must not consume any request tags that are not listed either |
| 15967 | here or in the vendor tag list.<wbr/></p> |
| 15968 | <p>The public camera2 API will always make the vendor tags visible |
| 15969 | via |
| 15970 | <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p> |
| 15971 | </td> |
| 15972 | </tr> |
| 15973 | |
| 15974 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 15975 | <!-- end of entry --> |
| 15976 | |
| 15977 | |
| 15978 | <tr class="entry" id="static_android.request.availableResultKeys"> |
| 15979 | <td class="entry_name |
| 15980 | " rowspan="5"> |
| 15981 | android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys |
| 15982 | </td> |
| 15983 | <td class="entry_type"> |
| 15984 | <span class="entry_type_name">int32</span> |
| 15985 | <span class="entry_type_container">x</span> |
| 15986 | |
| 15987 | <span class="entry_type_array"> |
| 15988 | n |
| 15989 | </span> |
| 15990 | <span class="entry_type_visibility"> [ndk_public]</span> |
| 15991 | |
| 15992 | |
| 15993 | <span class="entry_type_hwlevel">[legacy] </span> |
| 15994 | |
| 15995 | |
| 15996 | |
| 15997 | |
| 15998 | </td> <!-- entry_type --> |
| 15999 | |
| 16000 | <td class="entry_description"> |
| 16001 | <p>A list of all keys that the camera device has available |
| 16002 | to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>.<wbr/></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 | </td> |
| 16013 | |
| 16014 | </tr> |
| 16015 | <tr class="entries_header"> |
| 16016 | <th class="th_details" colspan="5">Details</th> |
| 16017 | </tr> |
| 16018 | <tr class="entry_cont"> |
| 16019 | <td class="entry_details" colspan="5"> |
| 16020 | <p>Attempting to get a key from a CaptureResult that is not |
| 16021 | listed here will always return a <code>null</code> value.<wbr/> Getting a key from |
| 16022 | a CaptureResult that is listed here will generally never return a <code>null</code> |
| 16023 | value.<wbr/></p> |
| 16024 | <p>The following keys may return <code>null</code> unless they are enabled:</p> |
| 16025 | <ul> |
| 16026 | <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> |
| 16027 | </ul> |
| 16028 | <p>(Those sometimes-null keys will nevertheless be listed here |
| 16029 | if they are available.<wbr/>)</p> |
| 16030 | <p>This field can be used to query the feature set of a camera device |
| 16031 | at a more granular level than capabilities.<wbr/> This is especially |
| 16032 | important for optional keys that are not listed under any capability |
| 16033 | in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> |
| 16034 | </td> |
| 16035 | </tr> |
| 16036 | |
| 16037 | <tr class="entries_header"> |
| 16038 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 16039 | </tr> |
| 16040 | <tr class="entry_cont"> |
| 16041 | <td class="entry_details" colspan="5"> |
| 16042 | <p>Tags listed here must always have an entry in the result metadata,<wbr/> |
| 16043 | even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/> |
| 16044 | matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p> |
| 16045 | <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata |
| 16046 | extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p> |
| 16047 | <p>Setting/<wbr/>getting vendor tags will be checked against the metadata |
| 16048 | vendor extensions API and not against this field.<wbr/></p> |
| 16049 | <p>The HAL must not produce any result tags that are not listed either |
| 16050 | here or in the vendor tag list.<wbr/></p> |
| 16051 | <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> |
| 16052 | </td> |
| 16053 | </tr> |
| 16054 | |
| 16055 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 16056 | <!-- end of entry --> |
| 16057 | |
| 16058 | |
| 16059 | <tr class="entry" id="static_android.request.availableCharacteristicsKeys"> |
| 16060 | <td class="entry_name |
| 16061 | " rowspan="5"> |
| 16062 | android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys |
| 16063 | </td> |
| 16064 | <td class="entry_type"> |
| 16065 | <span class="entry_type_name">int32</span> |
| 16066 | <span class="entry_type_container">x</span> |
| 16067 | |
| 16068 | <span class="entry_type_array"> |
| 16069 | n |
| 16070 | </span> |
| 16071 | <span class="entry_type_visibility"> [ndk_public]</span> |
| 16072 | |
| 16073 | |
| 16074 | <span class="entry_type_hwlevel">[legacy] </span> |
| 16075 | |
| 16076 | |
| 16077 | |
| 16078 | |
| 16079 | </td> <!-- entry_type --> |
| 16080 | |
| 16081 | <td class="entry_description"> |
| 16082 | <p>A list of all keys that the camera device has available |
| 16083 | to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p> |
| 16084 | </td> |
| 16085 | |
| 16086 | <td class="entry_units"> |
| 16087 | </td> |
| 16088 | |
| 16089 | <td class="entry_range"> |
| 16090 | </td> |
| 16091 | |
| 16092 | <td class="entry_tags"> |
| 16093 | </td> |
| 16094 | |
| 16095 | </tr> |
| 16096 | <tr class="entries_header"> |
| 16097 | <th class="th_details" colspan="5">Details</th> |
| 16098 | </tr> |
| 16099 | <tr class="entry_cont"> |
| 16100 | <td class="entry_details" colspan="5"> |
| 16101 | <p>This entry follows the same rules as |
| 16102 | <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for |
| 16103 | CameraCharacteristics instead of CaptureResult).<wbr/> See above for more |
| 16104 | details.<wbr/></p> |
| 16105 | </td> |
| 16106 | </tr> |
| 16107 | |
| 16108 | <tr class="entries_header"> |
| 16109 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 16110 | </tr> |
| 16111 | <tr class="entry_cont"> |
| 16112 | <td class="entry_details" colspan="5"> |
| 16113 | <p>Keys listed here must always have an entry in the static info metadata,<wbr/> |
| 16114 | even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/> |
| 16115 | matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p> |
| 16116 | <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata |
| 16117 | extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p> |
| 16118 | <p>Setting/<wbr/>getting vendor tags will be checked against the metadata |
| 16119 | vendor extensions API and not against this field.<wbr/></p> |
| 16120 | <p>The HAL must not have any tags in its static info that are not listed |
| 16121 | either here or in the vendor tag list.<wbr/></p> |
| 16122 | <p>The public camera2 API will always make the vendor tags visible |
| 16123 | via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p> |
| 16124 | </td> |
| 16125 | </tr> |
| 16126 | |
| 16127 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 16128 | <!-- end of entry --> |
| 16129 | |
| 16130 | |
| 16131 | |
| 16132 | <!-- end of kind --> |
| 16133 | </tbody> |
| 16134 | <tr><td colspan="6" class="kind">dynamic</td></tr> |
| 16135 | |
| 16136 | <thead class="entries_header"> |
| 16137 | <tr> |
| 16138 | <th class="th_name">Property Name</th> |
| 16139 | <th class="th_type">Type</th> |
| 16140 | <th class="th_description">Description</th> |
| 16141 | <th class="th_units">Units</th> |
| 16142 | <th class="th_range">Range</th> |
| 16143 | <th class="th_tags">Tags</th> |
| 16144 | </tr> |
| 16145 | </thead> |
| 16146 | |
| 16147 | <tbody> |
| 16148 | |
| 16149 | |
| 16150 | |
| 16151 | |
| 16152 | |
| 16153 | |
| 16154 | |
| 16155 | |
| 16156 | |
| 16157 | |
| 16158 | <tr class="entry" id="dynamic_android.request.frameCount"> |
| 16159 | <td class="entry_name |
| 16160 | entry_name_deprecated |
| 16161 | " rowspan="3"> |
| 16162 | android.<wbr/>request.<wbr/>frame<wbr/>Count |
| 16163 | </td> |
| 16164 | <td class="entry_type"> |
| 16165 | <span class="entry_type_name">int32</span> |
| 16166 | |
| 16167 | <span class="entry_type_visibility"> [hidden]</span> |
| 16168 | |
| 16169 | |
| 16170 | |
| 16171 | <span class="entry_type_deprecated">[deprecated] </span> |
| 16172 | |
| 16173 | |
| 16174 | |
| 16175 | </td> <!-- entry_type --> |
| 16176 | |
| 16177 | <td class="entry_description"> |
| 16178 | <p>A frame counter set by the framework.<wbr/> This value monotonically |
| 16179 | increases with every new result (that is,<wbr/> each new result has a unique |
| 16180 | frameCount value).<wbr/></p> |
| 16181 | </td> |
| 16182 | |
| 16183 | <td class="entry_units"> |
| 16184 | count of frames |
| 16185 | </td> |
| 16186 | |
| 16187 | <td class="entry_range"> |
| 16188 | <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> |
| 16189 | <p>> 0</p> |
| 16190 | </td> |
| 16191 | |
| 16192 | <td class="entry_tags"> |
| 16193 | </td> |
| 16194 | |
| 16195 | </tr> |
| 16196 | <tr class="entries_header"> |
| 16197 | <th class="th_details" colspan="5">Details</th> |
| 16198 | </tr> |
| 16199 | <tr class="entry_cont"> |
| 16200 | <td class="entry_details" colspan="5"> |
| 16201 | <p>Reset on release()</p> |
| 16202 | </td> |
| 16203 | </tr> |
| 16204 | |
| 16205 | |
| 16206 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 16207 | <!-- end of entry --> |
| 16208 | |
| 16209 | |
| 16210 | <tr class="entry" id="dynamic_android.request.id"> |
| 16211 | <td class="entry_name |
| 16212 | " rowspan="1"> |
| 16213 | android.<wbr/>request.<wbr/>id |
| 16214 | </td> |
| 16215 | <td class="entry_type"> |
| 16216 | <span class="entry_type_name">int32</span> |
| 16217 | |
| 16218 | <span class="entry_type_visibility"> [hidden]</span> |
| 16219 | |
| 16220 | |
| 16221 | |
| 16222 | |
| 16223 | |
| 16224 | |
| 16225 | </td> <!-- entry_type --> |
| 16226 | |
| 16227 | <td class="entry_description"> |
| 16228 | <p>An application-specified ID for the current |
| 16229 | request.<wbr/> Must be maintained unchanged in output |
| 16230 | frame</p> |
| 16231 | </td> |
| 16232 | |
| 16233 | <td class="entry_units"> |
| 16234 | arbitrary integer assigned by application |
| 16235 | </td> |
| 16236 | |
| 16237 | <td class="entry_range"> |
| 16238 | <p>Any int</p> |
| 16239 | </td> |
| 16240 | |
| 16241 | <td class="entry_tags"> |
| 16242 | <ul class="entry_tags"> |
| 16243 | <li><a href="#tag_V1">V1</a></li> |
| 16244 | </ul> |
| 16245 | </td> |
| 16246 | |
| 16247 | </tr> |
| 16248 | |
| 16249 | |
| 16250 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 16251 | <!-- end of entry --> |
| 16252 | |
| 16253 | |
| 16254 | <tr class="entry" id="dynamic_android.request.metadataMode"> |
| 16255 | <td class="entry_name |
| 16256 | " rowspan="1"> |
| 16257 | android.<wbr/>request.<wbr/>metadata<wbr/>Mode |
| 16258 | </td> |
| 16259 | <td class="entry_type"> |
| 16260 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 16261 | |
| 16262 | <span class="entry_type_visibility"> [system]</span> |
| 16263 | |
| 16264 | |
| 16265 | |
| 16266 | |
| 16267 | |
| 16268 | <ul class="entry_type_enum"> |
| 16269 | <li> |
| 16270 | <span class="entry_type_enum_name">NONE</span> |
| 16271 | <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except |
| 16272 | for application-bound buffer data.<wbr/> If no |
| 16273 | application-bound streams exist,<wbr/> no frame should be |
| 16274 | placed in the output frame queue.<wbr/> If such streams |
| 16275 | exist,<wbr/> a frame should be placed on the output queue |
| 16276 | with null metadata but with the necessary output buffer |
| 16277 | information.<wbr/> Timestamp information should still be |
| 16278 | included with any output stream buffers</p></span> |
| 16279 | </li> |
| 16280 | <li> |
| 16281 | <span class="entry_type_enum_name">FULL</span> |
| 16282 | <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will |
| 16283 | only be produced if they are separately |
| 16284 | enabled</p></span> |
| 16285 | </li> |
| 16286 | </ul> |
| 16287 | |
| 16288 | </td> <!-- entry_type --> |
| 16289 | |
| 16290 | <td class="entry_description"> |
| 16291 | <p>How much metadata to produce on |
| 16292 | output</p> |
| 16293 | </td> |
| 16294 | |
| 16295 | <td class="entry_units"> |
| 16296 | </td> |
| 16297 | |
| 16298 | <td class="entry_range"> |
| 16299 | </td> |
| 16300 | |
| 16301 | <td class="entry_tags"> |
| 16302 | <ul class="entry_tags"> |
| 16303 | <li><a href="#tag_FUTURE">FUTURE</a></li> |
| 16304 | </ul> |
| 16305 | </td> |
| 16306 | |
| 16307 | </tr> |
| 16308 | |
| 16309 | |
| 16310 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 16311 | <!-- end of entry --> |
| 16312 | |
| 16313 | |
| 16314 | <tr class="entry" id="dynamic_android.request.outputStreams"> |
| 16315 | <td class="entry_name |
| 16316 | entry_name_deprecated |
| 16317 | " rowspan="3"> |
| 16318 | android.<wbr/>request.<wbr/>output<wbr/>Streams |
| 16319 | </td> |
| 16320 | <td class="entry_type"> |
| 16321 | <span class="entry_type_name">int32</span> |
| 16322 | <span class="entry_type_container">x</span> |
| 16323 | |
| 16324 | <span class="entry_type_array"> |
| 16325 | n |
| 16326 | </span> |
| 16327 | <span class="entry_type_visibility"> [system]</span> |
| 16328 | |
| 16329 | |
| 16330 | |
| 16331 | <span class="entry_type_deprecated">[deprecated] </span> |
| 16332 | |
| 16333 | |
| 16334 | |
| 16335 | </td> <!-- entry_type --> |
| 16336 | |
| 16337 | <td class="entry_description"> |
| 16338 | <p>Lists which camera output streams image data |
| 16339 | from this capture must be sent to</p> |
| 16340 | </td> |
| 16341 | |
| 16342 | <td class="entry_units"> |
| 16343 | List of camera stream IDs |
| 16344 | </td> |
| 16345 | |
| 16346 | <td class="entry_range"> |
| 16347 | <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> |
| 16348 | <p>List must only include streams that have been |
| 16349 | created</p> |
| 16350 | </td> |
| 16351 | |
| 16352 | <td class="entry_tags"> |
| 16353 | <ul class="entry_tags"> |
| 16354 | <li><a href="#tag_HAL2">HAL2</a></li> |
| 16355 | </ul> |
| 16356 | </td> |
| 16357 | |
| 16358 | </tr> |
| 16359 | <tr class="entries_header"> |
| 16360 | <th class="th_details" colspan="5">Details</th> |
| 16361 | </tr> |
| 16362 | <tr class="entry_cont"> |
| 16363 | <td class="entry_details" colspan="5"> |
| 16364 | <p>If no output streams are listed,<wbr/> then the image |
| 16365 | data should simply be discarded.<wbr/> The image data must |
| 16366 | still be captured for metadata and statistics production,<wbr/> |
| 16367 | and the lens and flash must operate as requested.<wbr/></p> |
| 16368 | </td> |
| 16369 | </tr> |
| 16370 | |
| 16371 | |
| 16372 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 16373 | <!-- end of entry --> |
| 16374 | |
| 16375 | |
| 16376 | <tr class="entry" id="dynamic_android.request.pipelineDepth"> |
| 16377 | <td class="entry_name |
| 16378 | " rowspan="5"> |
| 16379 | android.<wbr/>request.<wbr/>pipeline<wbr/>Depth |
| 16380 | </td> |
| 16381 | <td class="entry_type"> |
| 16382 | <span class="entry_type_name">byte</span> |
| 16383 | |
| 16384 | <span class="entry_type_visibility"> [public]</span> |
| 16385 | |
| 16386 | |
| 16387 | <span class="entry_type_hwlevel">[legacy] </span> |
| 16388 | |
| 16389 | |
| 16390 | |
| 16391 | |
| 16392 | </td> <!-- entry_type --> |
| 16393 | |
| 16394 | <td class="entry_description"> |
| 16395 | <p>Specifies the number of pipeline stages the frame went |
| 16396 | through from when it was exposed to when the final completed result |
| 16397 | was available to the framework.<wbr/></p> |
| 16398 | </td> |
| 16399 | |
| 16400 | <td class="entry_units"> |
| 16401 | </td> |
| 16402 | |
| 16403 | <td class="entry_range"> |
| 16404 | <p><= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p> |
| 16405 | </td> |
| 16406 | |
| 16407 | <td class="entry_tags"> |
| 16408 | </td> |
| 16409 | |
| 16410 | </tr> |
| 16411 | <tr class="entries_header"> |
| 16412 | <th class="th_details" colspan="5">Details</th> |
| 16413 | </tr> |
| 16414 | <tr class="entry_cont"> |
| 16415 | <td class="entry_details" colspan="5"> |
| 16416 | <p>Depending on what settings are used in the request,<wbr/> and |
| 16417 | what streams are configured,<wbr/> the data may undergo less processing,<wbr/> |
| 16418 | and some pipeline stages skipped.<wbr/></p> |
| 16419 | <p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p> |
| 16420 | </td> |
| 16421 | </tr> |
| 16422 | |
| 16423 | <tr class="entries_header"> |
| 16424 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 16425 | </tr> |
| 16426 | <tr class="entry_cont"> |
| 16427 | <td class="entry_details" colspan="5"> |
| 16428 | <p>This value must always represent the accurate count of how many |
| 16429 | pipeline stages were actually used.<wbr/></p> |
| 16430 | </td> |
| 16431 | </tr> |
| 16432 | |
| 16433 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 16434 | <!-- end of entry --> |
| 16435 | |
| 16436 | |
| 16437 | |
| 16438 | <!-- end of kind --> |
| 16439 | </tbody> |
| 16440 | |
| 16441 | <!-- end of section --> |
| 16442 | <tr><td colspan="6" id="section_scaler" class="section">scaler</td></tr> |
| 16443 | |
| 16444 | |
| 16445 | <tr><td colspan="6" class="kind">controls</td></tr> |
| 16446 | |
| 16447 | <thead class="entries_header"> |
| 16448 | <tr> |
| 16449 | <th class="th_name">Property Name</th> |
| 16450 | <th class="th_type">Type</th> |
| 16451 | <th class="th_description">Description</th> |
| 16452 | <th class="th_units">Units</th> |
| 16453 | <th class="th_range">Range</th> |
| 16454 | <th class="th_tags">Tags</th> |
| 16455 | </tr> |
| 16456 | </thead> |
| 16457 | |
| 16458 | <tbody> |
| 16459 | |
| 16460 | |
| 16461 | |
| 16462 | |
| 16463 | |
| 16464 | |
| 16465 | |
| 16466 | |
| 16467 | |
| 16468 | |
| 16469 | <tr class="entry" id="controls_android.scaler.cropRegion"> |
| 16470 | <td class="entry_name |
| 16471 | " rowspan="5"> |
| 16472 | android.<wbr/>scaler.<wbr/>crop<wbr/>Region |
| 16473 | </td> |
| 16474 | <td class="entry_type"> |
| 16475 | <span class="entry_type_name">int32</span> |
| 16476 | <span class="entry_type_container">x</span> |
| 16477 | |
| 16478 | <span class="entry_type_array"> |
| 16479 | 4 |
| 16480 | </span> |
| 16481 | <span class="entry_type_visibility"> [public as rectangle]</span> |
| 16482 | |
| 16483 | |
| 16484 | <span class="entry_type_hwlevel">[legacy] </span> |
| 16485 | |
| 16486 | |
| 16487 | |
| 16488 | |
| 16489 | </td> <!-- entry_type --> |
| 16490 | |
| 16491 | <td class="entry_description"> |
| 16492 | <p>The desired region of the sensor to read out for this capture.<wbr/></p> |
| 16493 | </td> |
| 16494 | |
| 16495 | <td class="entry_units"> |
| 16496 | Pixel coordinates relative to |
| 16497 | android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size |
| 16498 | </td> |
| 16499 | |
| 16500 | <td class="entry_range"> |
| 16501 | </td> |
| 16502 | |
| 16503 | <td class="entry_tags"> |
| 16504 | <ul class="entry_tags"> |
| 16505 | <li><a href="#tag_BC">BC</a></li> |
| 16506 | </ul> |
| 16507 | </td> |
| 16508 | |
| 16509 | </tr> |
| 16510 | <tr class="entries_header"> |
| 16511 | <th class="th_details" colspan="5">Details</th> |
| 16512 | </tr> |
| 16513 | <tr class="entry_cont"> |
| 16514 | <td class="entry_details" colspan="5"> |
| 16515 | <p>This control can be used to implement digital zoom.<wbr/></p> |
| 16516 | <p>The crop region coordinate system is based off |
| 16517 | <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 |
| 16518 | top-left corner of the sensor active array.<wbr/></p> |
| 16519 | <p>Output streams use this rectangle to produce their output,<wbr/> |
| 16520 | cropping to a smaller region if necessary to maintain the |
| 16521 | stream's aspect ratio,<wbr/> then scaling the sensor input to |
| 16522 | match the output's configured resolution.<wbr/></p> |
| 16523 | <p>The crop region is applied after the RAW to other color |
| 16524 | space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams |
| 16525 | (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not |
| 16526 | croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p> |
| 16527 | <p>For non-raw streams,<wbr/> any additional per-stream cropping will |
| 16528 | be done to maximize the final pixel area of the stream.<wbr/></p> |
| 16529 | <p>For example,<wbr/> if the crop region is set to a 4:3 aspect |
| 16530 | ratio,<wbr/> then 4:3 streams will use the exact crop |
| 16531 | region.<wbr/> 16:9 streams will further crop vertically |
| 16532 | (letterbox).<wbr/></p> |
| 16533 | <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 |
| 16534 | outputs will crop horizontally (pillarbox),<wbr/> and 16:9 |
| 16535 | streams will match exactly.<wbr/> These additional crops will |
| 16536 | be centered within the crop region.<wbr/></p> |
| 16537 | <p>The width and height of the crop region cannot |
| 16538 | be set to be smaller than |
| 16539 | <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 |
| 16540 | <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> |
| 16541 | <p>The camera device may adjust the crop region to account |
| 16542 | for rounding and other hardware requirements; the final |
| 16543 | crop region used will be included in the output capture |
| 16544 | result.<wbr/></p> |
| 16545 | </td> |
| 16546 | </tr> |
| 16547 | |
| 16548 | <tr class="entries_header"> |
| 16549 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 16550 | </tr> |
| 16551 | <tr class="entry_cont"> |
| 16552 | <td class="entry_details" colspan="5"> |
| 16553 | <p>The output streams must maintain square pixels at all |
| 16554 | times,<wbr/> no matter what the relative aspect ratios of the |
| 16555 | crop region and the stream are.<wbr/> Negative values for |
| 16556 | corner are allowed for raw output if full pixel array is |
| 16557 | larger than active pixel array.<wbr/> Width and height may be |
| 16558 | rounded to nearest larger supportable width,<wbr/> especially |
| 16559 | for raw output,<wbr/> where only a few fixed scales may be |
| 16560 | possible.<wbr/></p> |
| 16561 | <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller |
| 16562 | size than active array size,<wbr/> the HAL need follow below cropping rules:</p> |
| 16563 | <ul> |
| 16564 | <li> |
| 16565 | <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active |
| 16566 | array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from |
| 16567 | <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> |
| 16568 | <ol> |
| 16569 | <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor |
| 16570 | cropped pixel area by (tx,<wbr/> ty),<wbr/> |
| 16571 | where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code> |
| 16572 | and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The |
| 16573 | (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the |
| 16574 | <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li> |
| 16575 | <li>Scale the width and height of requested cropRegion with scaling factor of |
| 16576 | 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 |
| 16577 | respectively.<wbr/> |
| 16578 | Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image |
| 16579 | with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need |
| 16580 | follow the general cropping rule for this new cropRegion and effective active |
| 16581 | array size.<wbr/></li> |
| 16582 | </ol> |
| 16583 | </li> |
| 16584 | <li> |
| 16585 | <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/> |
| 16586 | The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/> |
| 16587 | The reported cropRegion may be slightly different with the requested cropRegion since |
| 16588 | the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other |
| 16589 | hardware limitations.<wbr/></p> |
| 16590 | </li> |
| 16591 | </ul> |
| 16592 | <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p> |
| 16593 | </td> |
| 16594 | </tr> |
| 16595 | |
| 16596 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 16597 | <!-- end of entry --> |
| 16598 | |
| 16599 | |
| 16600 | |
| 16601 | <!-- end of kind --> |
| 16602 | </tbody> |
| 16603 | <tr><td colspan="6" class="kind">static</td></tr> |
| 16604 | |
| 16605 | <thead class="entries_header"> |
| 16606 | <tr> |
| 16607 | <th class="th_name">Property Name</th> |
| 16608 | <th class="th_type">Type</th> |
| 16609 | <th class="th_description">Description</th> |
| 16610 | <th class="th_units">Units</th> |
| 16611 | <th class="th_range">Range</th> |
| 16612 | <th class="th_tags">Tags</th> |
| 16613 | </tr> |
| 16614 | </thead> |
| 16615 | |
| 16616 | <tbody> |
| 16617 | |
| 16618 | |
| 16619 | |
| 16620 | |
| 16621 | |
| 16622 | |
| 16623 | |
| 16624 | |
| 16625 | |
| 16626 | |
| 16627 | <tr class="entry" id="static_android.scaler.availableFormats"> |
| 16628 | <td class="entry_name |
| 16629 | entry_name_deprecated |
| 16630 | " rowspan="5"> |
| 16631 | android.<wbr/>scaler.<wbr/>available<wbr/>Formats |
| 16632 | </td> |
| 16633 | <td class="entry_type"> |
| 16634 | <span class="entry_type_name entry_type_name_enum">int32</span> |
| 16635 | <span class="entry_type_container">x</span> |
| 16636 | |
| 16637 | <span class="entry_type_array"> |
| 16638 | n |
| 16639 | </span> |
| 16640 | <span class="entry_type_visibility"> [hidden as imageFormat]</span> |
| 16641 | |
| 16642 | |
| 16643 | |
| 16644 | <span class="entry_type_deprecated">[deprecated] </span> |
| 16645 | |
| 16646 | |
| 16647 | <ul class="entry_type_enum"> |
| 16648 | <li> |
| 16649 | <span class="entry_type_enum_name">RAW16</span> |
| 16650 | <span class="entry_type_enum_optional">[optional]</span> |
| 16651 | <span class="entry_type_enum_value">0x20</span> |
| 16652 | <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image |
| 16653 | buffers with 16-bit pixels.<wbr/></p> |
| 16654 | <p>Buffers of this format are typically expected to have a |
| 16655 | Bayer Color Filter Array (CFA) layout,<wbr/> which is given in |
| 16656 | <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with |
| 16657 | CFAs that are not representable by a format in |
| 16658 | <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not |
| 16659 | use this format.<wbr/></p> |
| 16660 | <p>Buffers of this format will also follow the constraints given for |
| 16661 | RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p> |
| 16662 | <p>This format is intended to give users access to the full contents |
| 16663 | of the buffers coming directly from the image sensor prior to any |
| 16664 | cropping or scaling operations,<wbr/> and all coordinate systems for |
| 16665 | metadata used for this format are relative to the size of the |
| 16666 | active region of the image sensor before any geometric distortion |
| 16667 | correction has been applied (i.<wbr/>e.<wbr/> |
| 16668 | <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 |
| 16669 | dimensions for this format are limited to the full dimensions of |
| 16670 | 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 |
| 16671 | <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 |
| 16672 | only supported output size).<wbr/></p> |
| 16673 | <p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for |
| 16674 | the full set of performance guarantees.<wbr/></p></span> |
| 16675 | </li> |
| 16676 | <li> |
| 16677 | <span class="entry_type_enum_name">RAW_OPAQUE</span> |
| 16678 | <span class="entry_type_enum_optional">[optional]</span> |
| 16679 | <span class="entry_type_enum_value">0x24</span> |
| 16680 | <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE (or |
| 16681 | <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_PRIVATE">RAW_<wbr/>PRIVATE</a> |
| 16682 | as referred in public API) is a format for raw image buffers |
| 16683 | coming from an image sensor.<wbr/></p> |
| 16684 | <p>The actual structure of buffers of this format is |
| 16685 | platform-specific,<wbr/> but must follow several constraints:</p> |
| 16686 | <ol> |
| 16687 | <li>No image post-processing operations may have been applied to |
| 16688 | buffers of this type.<wbr/> These buffers contain raw image data coming |
| 16689 | directly from the image sensor.<wbr/></li> |
| 16690 | <li>If a buffer of this format is passed to the camera device for |
| 16691 | reprocessing,<wbr/> the resulting images will be identical to the images |
| 16692 | produced if the buffer had come directly from the sensor and was |
| 16693 | processed with the same settings.<wbr/></li> |
| 16694 | </ol> |
| 16695 | <p>The intended use for this format is to allow access to the native |
| 16696 | raw format buffers coming directly from the camera sensor without |
| 16697 | any additional conversions or decrease in framerate.<wbr/></p> |
| 16698 | <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 |
| 16699 | performance guarantees.<wbr/></p></span> |
| 16700 | </li> |
| 16701 | <li> |
| 16702 | <span class="entry_type_enum_name">YV12</span> |
| 16703 | <span class="entry_type_enum_optional">[optional]</span> |
| 16704 | <span class="entry_type_enum_value">0x32315659</span> |
| 16705 | <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span> |
| 16706 | </li> |
| 16707 | <li> |
| 16708 | <span class="entry_type_enum_name">YCrCb_420_SP</span> |
| 16709 | <span class="entry_type_enum_optional">[optional]</span> |
| 16710 | <span class="entry_type_enum_value">0x11</span> |
| 16711 | <span class="entry_type_enum_notes"><p>NV21</p></span> |
| 16712 | </li> |
| 16713 | <li> |
| 16714 | <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED</span> |
| 16715 | <span class="entry_type_enum_value">0x22</span> |
| 16716 | <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span> |
| 16717 | </li> |
| 16718 | <li> |
| 16719 | <span class="entry_type_enum_name">YCbCr_420_888</span> |
| 16720 | <span class="entry_type_enum_value">0x23</span> |
| 16721 | <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span> |
| 16722 | </li> |
| 16723 | <li> |
| 16724 | <span class="entry_type_enum_name">BLOB</span> |
| 16725 | <span class="entry_type_enum_value">0x21</span> |
| 16726 | <span class="entry_type_enum_notes"><p>JPEG format</p></span> |
| 16727 | </li> |
| 16728 | </ul> |
| 16729 | |
| 16730 | </td> <!-- entry_type --> |
| 16731 | |
| 16732 | <td class="entry_description"> |
| 16733 | <p>The list of image formats that are supported by this |
| 16734 | camera device for output streams.<wbr/></p> |
| 16735 | </td> |
| 16736 | |
| 16737 | <td class="entry_units"> |
| 16738 | </td> |
| 16739 | |
| 16740 | <td class="entry_range"> |
| 16741 | <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> |
| 16742 | </td> |
| 16743 | |
| 16744 | <td class="entry_tags"> |
| 16745 | <ul class="entry_tags"> |
| 16746 | <li><a href="#tag_BC">BC</a></li> |
| 16747 | </ul> |
| 16748 | </td> |
| 16749 | |
| 16750 | </tr> |
| 16751 | <tr class="entries_header"> |
| 16752 | <th class="th_details" colspan="5">Details</th> |
| 16753 | </tr> |
| 16754 | <tr class="entry_cont"> |
| 16755 | <td class="entry_details" colspan="5"> |
| 16756 | <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p> |
| 16757 | <p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p> |
| 16758 | </td> |
| 16759 | </tr> |
| 16760 | |
| 16761 | <tr class="entries_header"> |
| 16762 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 16763 | </tr> |
| 16764 | <tr class="entry_cont"> |
| 16765 | <td class="entry_details" colspan="5"> |
| 16766 | <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in |
| 16767 | system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p> |
| 16768 | <p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform |
| 16769 | gralloc module will select a format based on the usage flags provided |
| 16770 | by the camera HAL device and the other endpoint of the stream.<wbr/> It is |
| 16771 | usually used by preview and recording streams,<wbr/> where the application doesn't |
| 16772 | need access the image data.<wbr/></p> |
| 16773 | <p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream |
| 16774 | needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p> |
| 16775 | <p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p> |
| 16776 | <p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly |
| 16777 | recommended that any information used by the camera device when |
| 16778 | processing images is fully expressed by the result metadata |
| 16779 | for that image buffer.<wbr/></p> |
| 16780 | </td> |
| 16781 | </tr> |
| 16782 | |
| 16783 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 16784 | <!-- end of entry --> |
| 16785 | |
| 16786 | |
| 16787 | <tr class="entry" id="static_android.scaler.availableJpegMinDurations"> |
| 16788 | <td class="entry_name |
| 16789 | entry_name_deprecated |
| 16790 | " rowspan="3"> |
| 16791 | android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations |
| 16792 | </td> |
| 16793 | <td class="entry_type"> |
| 16794 | <span class="entry_type_name">int64</span> |
| 16795 | <span class="entry_type_container">x</span> |
| 16796 | |
| 16797 | <span class="entry_type_array"> |
| 16798 | n |
| 16799 | </span> |
| 16800 | <span class="entry_type_visibility"> [hidden]</span> |
| 16801 | |
| 16802 | |
| 16803 | |
| 16804 | <span class="entry_type_deprecated">[deprecated] </span> |
| 16805 | |
| 16806 | |
| 16807 | |
| 16808 | </td> <!-- entry_type --> |
| 16809 | |
| 16810 | <td class="entry_description"> |
| 16811 | <p>The minimum frame duration that is supported |
| 16812 | for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p> |
| 16813 | </td> |
| 16814 | |
| 16815 | <td class="entry_units"> |
| 16816 | Nanoseconds |
| 16817 | </td> |
| 16818 | |
| 16819 | <td class="entry_range"> |
| 16820 | <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> |
| 16821 | <p>TODO: Remove property.<wbr/></p> |
| 16822 | </td> |
| 16823 | |
| 16824 | <td class="entry_tags"> |
| 16825 | <ul class="entry_tags"> |
| 16826 | <li><a href="#tag_BC">BC</a></li> |
| 16827 | </ul> |
| 16828 | </td> |
| 16829 | |
| 16830 | </tr> |
| 16831 | <tr class="entries_header"> |
| 16832 | <th class="th_details" colspan="5">Details</th> |
| 16833 | </tr> |
| 16834 | <tr class="entry_cont"> |
| 16835 | <td class="entry_details" colspan="5"> |
| 16836 | <p>This corresponds to the minimum steady-state frame duration when only |
| 16837 | that JPEG stream is active and captured in a burst,<wbr/> with all |
| 16838 | processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p> |
| 16839 | <p>When multiple streams are configured,<wbr/> the minimum |
| 16840 | frame duration will be >= max(individual stream min |
| 16841 | durations)</p> |
| 16842 | </td> |
| 16843 | </tr> |
| 16844 | |
| 16845 | |
| 16846 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 16847 | <!-- end of entry --> |
| 16848 | |
| 16849 | |
| 16850 | <tr class="entry" id="static_android.scaler.availableJpegSizes"> |
| 16851 | <td class="entry_name |
| 16852 | entry_name_deprecated |
| 16853 | " rowspan="5"> |
| 16854 | android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes |
| 16855 | </td> |
| 16856 | <td class="entry_type"> |
| 16857 | <span class="entry_type_name">int32</span> |
| 16858 | <span class="entry_type_container">x</span> |
| 16859 | |
| 16860 | <span class="entry_type_array"> |
| 16861 | n x 2 |
| 16862 | </span> |
| 16863 | <span class="entry_type_visibility"> [hidden as size]</span> |
| 16864 | |
| 16865 | |
| 16866 | |
| 16867 | <span class="entry_type_deprecated">[deprecated] </span> |
| 16868 | |
| 16869 | |
| 16870 | |
| 16871 | </td> <!-- entry_type --> |
| 16872 | |
| 16873 | <td class="entry_description"> |
| 16874 | <p>The JPEG resolutions that are supported by this camera device.<wbr/></p> |
| 16875 | </td> |
| 16876 | |
| 16877 | <td class="entry_units"> |
| 16878 | </td> |
| 16879 | |
| 16880 | <td class="entry_range"> |
| 16881 | <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> |
| 16882 | <p>TODO: Remove property.<wbr/></p> |
| 16883 | </td> |
| 16884 | |
| 16885 | <td class="entry_tags"> |
| 16886 | <ul class="entry_tags"> |
| 16887 | <li><a href="#tag_BC">BC</a></li> |
| 16888 | </ul> |
| 16889 | </td> |
| 16890 | |
| 16891 | </tr> |
| 16892 | <tr class="entries_header"> |
| 16893 | <th class="th_details" colspan="5">Details</th> |
| 16894 | </tr> |
| 16895 | <tr class="entry_cont"> |
| 16896 | <td class="entry_details" colspan="5"> |
| 16897 | <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support |
| 16898 | 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> |
| 16899 | </td> |
| 16900 | </tr> |
| 16901 | |
| 16902 | <tr class="entries_header"> |
| 16903 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 16904 | </tr> |
| 16905 | <tr class="entry_cont"> |
| 16906 | <td class="entry_details" colspan="5"> |
| 16907 | <p>The HAL must include sensor maximum resolution |
| 16908 | (defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/> |
| 16909 | and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p> |
| 16910 | </td> |
| 16911 | </tr> |
| 16912 | |
| 16913 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 16914 | <!-- end of entry --> |
| 16915 | |
| 16916 | |
| 16917 | <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom"> |
| 16918 | <td class="entry_name |
| 16919 | " rowspan="3"> |
| 16920 | android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom |
| 16921 | </td> |
| 16922 | <td class="entry_type"> |
| 16923 | <span class="entry_type_name">float</span> |
| 16924 | |
| 16925 | <span class="entry_type_visibility"> [public]</span> |
| 16926 | |
| 16927 | |
| 16928 | <span class="entry_type_hwlevel">[legacy] </span> |
| 16929 | |
| 16930 | |
| 16931 | |
| 16932 | |
| 16933 | </td> <!-- entry_type --> |
| 16934 | |
| 16935 | <td class="entry_description"> |
| 16936 | <p>The maximum ratio between both active area width |
| 16937 | and crop region width,<wbr/> and active area height and |
| 16938 | crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p> |
| 16939 | </td> |
| 16940 | |
| 16941 | <td class="entry_units"> |
| 16942 | Zoom scale factor |
| 16943 | </td> |
| 16944 | |
| 16945 | <td class="entry_range"> |
| 16946 | <p>>=1</p> |
| 16947 | </td> |
| 16948 | |
| 16949 | <td class="entry_tags"> |
| 16950 | <ul class="entry_tags"> |
| 16951 | <li><a href="#tag_BC">BC</a></li> |
| 16952 | </ul> |
| 16953 | </td> |
| 16954 | |
| 16955 | </tr> |
| 16956 | <tr class="entries_header"> |
| 16957 | <th class="th_details" colspan="5">Details</th> |
| 16958 | </tr> |
| 16959 | <tr class="entry_cont"> |
| 16960 | <td class="entry_details" colspan="5"> |
| 16961 | <p>This represents the maximum amount of zooming possible by |
| 16962 | the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping |
| 16963 | window size.<wbr/></p> |
| 16964 | <p>Crop regions that have a width or height that is smaller |
| 16965 | than this ratio allows will be rounded up to the minimum |
| 16966 | allowed size by the camera device.<wbr/></p> |
| 16967 | </td> |
| 16968 | </tr> |
| 16969 | |
| 16970 | |
| 16971 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 16972 | <!-- end of entry --> |
| 16973 | |
| 16974 | |
| 16975 | <tr class="entry" id="static_android.scaler.availableProcessedMinDurations"> |
| 16976 | <td class="entry_name |
| 16977 | entry_name_deprecated |
| 16978 | " rowspan="3"> |
| 16979 | android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations |
| 16980 | </td> |
| 16981 | <td class="entry_type"> |
| 16982 | <span class="entry_type_name">int64</span> |
| 16983 | <span class="entry_type_container">x</span> |
| 16984 | |
| 16985 | <span class="entry_type_array"> |
| 16986 | n |
| 16987 | </span> |
| 16988 | <span class="entry_type_visibility"> [hidden]</span> |
| 16989 | |
| 16990 | |
| 16991 | |
| 16992 | <span class="entry_type_deprecated">[deprecated] </span> |
| 16993 | |
| 16994 | |
| 16995 | |
| 16996 | </td> <!-- entry_type --> |
| 16997 | |
| 16998 | <td class="entry_description"> |
| 16999 | <p>For each available processed output size (defined in |
| 17000 | <a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the |
| 17001 | minimum supportable frame duration for that size.<wbr/></p> |
| 17002 | </td> |
| 17003 | |
| 17004 | <td class="entry_units"> |
| 17005 | Nanoseconds |
| 17006 | </td> |
| 17007 | |
| 17008 | <td class="entry_range"> |
| 17009 | <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> |
| 17010 | </td> |
| 17011 | |
| 17012 | <td class="entry_tags"> |
| 17013 | <ul class="entry_tags"> |
| 17014 | <li><a href="#tag_BC">BC</a></li> |
| 17015 | </ul> |
| 17016 | </td> |
| 17017 | |
| 17018 | </tr> |
| 17019 | <tr class="entries_header"> |
| 17020 | <th class="th_details" colspan="5">Details</th> |
| 17021 | </tr> |
| 17022 | <tr class="entry_cont"> |
| 17023 | <td class="entry_details" colspan="5"> |
| 17024 | <p>This should correspond to the frame duration when only that processed |
| 17025 | stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) |
| 17026 | set to FAST.<wbr/></p> |
| 17027 | <p>When multiple streams are configured,<wbr/> the minimum frame duration will |
| 17028 | be >= max(individual stream min durations).<wbr/></p> |
| 17029 | </td> |
| 17030 | </tr> |
| 17031 | |
| 17032 | |
| 17033 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 17034 | <!-- end of entry --> |
| 17035 | |
| 17036 | |
| 17037 | <tr class="entry" id="static_android.scaler.availableProcessedSizes"> |
| 17038 | <td class="entry_name |
| 17039 | entry_name_deprecated |
| 17040 | " rowspan="5"> |
| 17041 | android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes |
| 17042 | </td> |
| 17043 | <td class="entry_type"> |
| 17044 | <span class="entry_type_name">int32</span> |
| 17045 | <span class="entry_type_container">x</span> |
| 17046 | |
| 17047 | <span class="entry_type_array"> |
| 17048 | n x 2 |
| 17049 | </span> |
| 17050 | <span class="entry_type_visibility"> [hidden as size]</span> |
| 17051 | |
| 17052 | |
| 17053 | |
| 17054 | <span class="entry_type_deprecated">[deprecated] </span> |
| 17055 | |
| 17056 | |
| 17057 | |
| 17058 | </td> <!-- entry_type --> |
| 17059 | |
| 17060 | <td class="entry_description"> |
| 17061 | <p>The resolutions available for use with |
| 17062 | processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and |
| 17063 | platform opaque YUV/<wbr/>RGB streams to the GPU or video |
| 17064 | encoders.<wbr/></p> |
| 17065 | </td> |
| 17066 | |
| 17067 | <td class="entry_units"> |
| 17068 | </td> |
| 17069 | |
| 17070 | <td class="entry_range"> |
| 17071 | <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> |
| 17072 | </td> |
| 17073 | |
| 17074 | <td class="entry_tags"> |
| 17075 | <ul class="entry_tags"> |
| 17076 | <li><a href="#tag_BC">BC</a></li> |
| 17077 | </ul> |
| 17078 | </td> |
| 17079 | |
| 17080 | </tr> |
| 17081 | <tr class="entries_header"> |
| 17082 | <th class="th_details" colspan="5">Details</th> |
| 17083 | </tr> |
| 17084 | <tr class="entry_cont"> |
| 17085 | <td class="entry_details" colspan="5"> |
| 17086 | <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p> |
| 17087 | <p>For a given use case,<wbr/> the actual maximum supported resolution |
| 17088 | may be lower than what is listed here,<wbr/> depending on the destination |
| 17089 | Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> |
| 17090 | the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) |
| 17091 | smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) |
| 17092 | can provide.<wbr/></p> |
| 17093 | <p>Please reference the documentation for the image data destination to |
| 17094 | check if it limits the maximum size for image data.<wbr/></p> |
| 17095 | </td> |
| 17096 | </tr> |
| 17097 | |
| 17098 | <tr class="entries_header"> |
| 17099 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 17100 | </tr> |
| 17101 | <tr class="entry_cont"> |
| 17102 | <td class="entry_details" colspan="5"> |
| 17103 | <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/> |
| 17104 | 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> |
| 17105 | and each below resolution if it is smaller than or equal to the sensor |
| 17106 | maximum resolution (if they are not listed in JPEG sizes already):</p> |
| 17107 | <ul> |
| 17108 | <li>240p (320 x 240)</li> |
| 17109 | <li>480p (640 x 480)</li> |
| 17110 | <li>720p (1280 x 720)</li> |
| 17111 | <li>1080p (1920 x 1080)</li> |
| 17112 | </ul> |
| 17113 | <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/> |
| 17114 | the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p> |
| 17115 | </td> |
| 17116 | </tr> |
| 17117 | |
| 17118 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 17119 | <!-- end of entry --> |
| 17120 | |
| 17121 | |
| 17122 | <tr class="entry" id="static_android.scaler.availableRawMinDurations"> |
| 17123 | <td class="entry_name |
| 17124 | entry_name_deprecated |
| 17125 | " rowspan="3"> |
| 17126 | android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations |
| 17127 | </td> |
| 17128 | <td class="entry_type"> |
| 17129 | <span class="entry_type_name">int64</span> |
| 17130 | <span class="entry_type_container">x</span> |
| 17131 | |
| 17132 | <span class="entry_type_array"> |
| 17133 | n |
| 17134 | </span> |
| 17135 | <span class="entry_type_visibility"> [system]</span> |
| 17136 | |
| 17137 | |
| 17138 | |
| 17139 | <span class="entry_type_deprecated">[deprecated] </span> |
| 17140 | |
| 17141 | |
| 17142 | |
| 17143 | </td> <!-- entry_type --> |
| 17144 | |
| 17145 | <td class="entry_description"> |
| 17146 | <p>For each available raw output size (defined in |
| 17147 | <a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum |
| 17148 | supportable frame duration for that size.<wbr/></p> |
| 17149 | </td> |
| 17150 | |
| 17151 | <td class="entry_units"> |
| 17152 | Nanoseconds |
| 17153 | </td> |
| 17154 | |
| 17155 | <td class="entry_range"> |
| 17156 | <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> |
| 17157 | </td> |
| 17158 | |
| 17159 | <td class="entry_tags"> |
| 17160 | <ul class="entry_tags"> |
| 17161 | <li><a href="#tag_BC">BC</a></li> |
| 17162 | </ul> |
| 17163 | </td> |
| 17164 | |
| 17165 | </tr> |
| 17166 | <tr class="entries_header"> |
| 17167 | <th class="th_details" colspan="5">Details</th> |
| 17168 | </tr> |
| 17169 | <tr class="entry_cont"> |
| 17170 | <td class="entry_details" colspan="5"> |
| 17171 | <p>Should correspond to the frame duration when only the raw stream is |
| 17172 | active.<wbr/></p> |
| 17173 | <p>When multiple streams are configured,<wbr/> the minimum |
| 17174 | frame duration will be >= max(individual stream min |
| 17175 | durations)</p> |
| 17176 | </td> |
| 17177 | </tr> |
| 17178 | |
| 17179 | |
| 17180 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 17181 | <!-- end of entry --> |
| 17182 | |
| 17183 | |
| 17184 | <tr class="entry" id="static_android.scaler.availableRawSizes"> |
| 17185 | <td class="entry_name |
| 17186 | entry_name_deprecated |
| 17187 | " rowspan="1"> |
| 17188 | android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes |
| 17189 | </td> |
| 17190 | <td class="entry_type"> |
| 17191 | <span class="entry_type_name">int32</span> |
| 17192 | <span class="entry_type_container">x</span> |
| 17193 | |
| 17194 | <span class="entry_type_array"> |
| 17195 | n x 2 |
| 17196 | </span> |
| 17197 | <span class="entry_type_visibility"> [system as size]</span> |
| 17198 | |
| 17199 | |
| 17200 | |
| 17201 | <span class="entry_type_deprecated">[deprecated] </span> |
| 17202 | |
| 17203 | |
| 17204 | |
| 17205 | </td> <!-- entry_type --> |
| 17206 | |
| 17207 | <td class="entry_description"> |
| 17208 | <p>The resolutions available for use with raw |
| 17209 | sensor output streams,<wbr/> listed as width,<wbr/> |
| 17210 | height</p> |
| 17211 | </td> |
| 17212 | |
| 17213 | <td class="entry_units"> |
| 17214 | </td> |
| 17215 | |
| 17216 | <td class="entry_range"> |
| 17217 | <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> |
| 17218 | </td> |
| 17219 | |
| 17220 | <td class="entry_tags"> |
| 17221 | </td> |
| 17222 | |
| 17223 | </tr> |
| 17224 | |
| 17225 | |
| 17226 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 17227 | <!-- end of entry --> |
| 17228 | |
| 17229 | |
| 17230 | <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap"> |
| 17231 | <td class="entry_name |
| 17232 | " rowspan="5"> |
| 17233 | android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map |
| 17234 | </td> |
| 17235 | <td class="entry_type"> |
| 17236 | <span class="entry_type_name">int32</span> |
| 17237 | |
| 17238 | <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span> |
| 17239 | |
| 17240 | |
| 17241 | |
| 17242 | |
| 17243 | |
| 17244 | |
| 17245 | </td> <!-- entry_type --> |
| 17246 | |
| 17247 | <td class="entry_description"> |
| 17248 | <p>The mapping of image formats that are supported by this |
| 17249 | camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p> |
| 17250 | </td> |
| 17251 | |
| 17252 | <td class="entry_units"> |
| 17253 | </td> |
| 17254 | |
| 17255 | <td class="entry_range"> |
| 17256 | </td> |
| 17257 | |
| 17258 | <td class="entry_tags"> |
| 17259 | <ul class="entry_tags"> |
| 17260 | <li><a href="#tag_REPROC">REPROC</a></li> |
| 17261 | </ul> |
| 17262 | </td> |
| 17263 | |
| 17264 | </tr> |
| 17265 | <tr class="entries_header"> |
| 17266 | <th class="th_details" colspan="5">Details</th> |
| 17267 | </tr> |
| 17268 | <tr class="entry_cont"> |
| 17269 | <td class="entry_details" colspan="5"> |
| 17270 | <p>All camera devices with at least 1 |
| 17271 | <a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one |
| 17272 | available input format.<wbr/></p> |
| 17273 | <p>The camera device will support the following map of formats,<wbr/> |
| 17274 | if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p> |
| 17275 | <table> |
| 17276 | <thead> |
| 17277 | <tr> |
| 17278 | <th align="left">Input Format</th> |
| 17279 | <th align="left">Output Format</th> |
| 17280 | <th align="left">Capability</th> |
| 17281 | </tr> |
| 17282 | </thead> |
| 17283 | <tbody> |
| 17284 | <tr> |
| 17285 | <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td> |
| 17286 | <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> |
| 17287 | <td align="left">PRIVATE_<wbr/>REPROCESSING</td> |
| 17288 | </tr> |
| 17289 | <tr> |
| 17290 | <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td> |
| 17291 | <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> |
| 17292 | <td align="left">PRIVATE_<wbr/>REPROCESSING</td> |
| 17293 | </tr> |
| 17294 | <tr> |
| 17295 | <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> |
| 17296 | <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> |
| 17297 | <td align="left">YUV_<wbr/>REPROCESSING</td> |
| 17298 | </tr> |
| 17299 | <tr> |
| 17300 | <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> |
| 17301 | <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> |
| 17302 | <td align="left">YUV_<wbr/>REPROCESSING</td> |
| 17303 | </tr> |
| 17304 | </tbody> |
| 17305 | </table> |
| 17306 | <p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/> A |
| 17307 | PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a> |
| 17308 | with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p> |
| 17309 | <p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input |
| 17310 | 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> |
| 17311 | <p>Attempting to configure an input stream with output streams not |
| 17312 | listed as available in this map is not valid.<wbr/></p> |
| 17313 | </td> |
| 17314 | </tr> |
| 17315 | |
| 17316 | <tr class="entries_header"> |
| 17317 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 17318 | </tr> |
| 17319 | <tr class="entry_cont"> |
| 17320 | <td class="entry_details" colspan="5"> |
| 17321 | <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition |
| 17322 | of the image format enumerations.<wbr/> The PRIVATE format refers to the |
| 17323 | HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine |
| 17324 | the actual format by using the gralloc usage flags.<wbr/> |
| 17325 | For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially |
| 17326 | processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/> |
| 17327 | See camera3.<wbr/>h for more details.<wbr/></p> |
| 17328 | <p>This value is encoded as a variable-size array-of-arrays.<wbr/> |
| 17329 | The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where |
| 17330 | <code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another |
| 17331 | inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p> |
| 17332 | <p>A code sample to read/<wbr/>write this encoding (with a device that |
| 17333 | supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/> |
| 17334 | and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p> |
| 17335 | <pre><code>//<wbr/> reading |
| 17336 | int32_<wbr/>t* contents = &entry.<wbr/>i32[0]; |
| 17337 | for (size_<wbr/>t i = 0; i < entry.<wbr/>count; ) { |
| 17338 | int32_<wbr/>t format = contents[i++]; |
| 17339 | int32_<wbr/>t length = contents[i++]; |
| 17340 | int32_<wbr/>t output_<wbr/>formats[length]; |
| 17341 | memcpy(&output_<wbr/>formats[0],<wbr/> &contents[i],<wbr/> |
| 17342 | length * sizeof(int32_<wbr/>t)); |
| 17343 | i += length; |
| 17344 | } |
| 17345 | |
| 17346 | //<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING) |
| 17347 | int32_<wbr/>t[] contents = { |
| 17348 | IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/> |
| 17349 | YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/> |
| 17350 | }; |
| 17351 | update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &contents[0],<wbr/> |
| 17352 | sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &updated_<wbr/>entry); |
| 17353 | </code></pre> |
| 17354 | <p>If the HAL claims to support any of the capabilities listed in the |
| 17355 | above details,<wbr/> then it must also support all the input-output |
| 17356 | combinations listed for that capability.<wbr/> It can optionally support |
| 17357 | additional formats if it so chooses.<wbr/></p> |
| 17358 | </td> |
| 17359 | </tr> |
| 17360 | |
| 17361 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 17362 | <!-- end of entry --> |
| 17363 | |
| 17364 | |
| 17365 | <tr class="entry" id="static_android.scaler.availableStreamConfigurations"> |
| 17366 | <td class="entry_name |
| 17367 | " rowspan="5"> |
| 17368 | android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations |
| 17369 | </td> |
| 17370 | <td class="entry_type"> |
| 17371 | <span class="entry_type_name entry_type_name_enum">int32</span> |
| 17372 | <span class="entry_type_container">x</span> |
| 17373 | |
| 17374 | <span class="entry_type_array"> |
| 17375 | n x 4 |
| 17376 | </span> |
| 17377 | <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span> |
| 17378 | |
| 17379 | |
| 17380 | <span class="entry_type_hwlevel">[legacy] </span> |
| 17381 | |
| 17382 | |
| 17383 | |
| 17384 | <ul class="entry_type_enum"> |
| 17385 | <li> |
| 17386 | <span class="entry_type_enum_name">OUTPUT</span> |
| 17387 | </li> |
| 17388 | <li> |
| 17389 | <span class="entry_type_enum_name">INPUT</span> |
| 17390 | </li> |
| 17391 | </ul> |
| 17392 | |
| 17393 | </td> <!-- entry_type --> |
| 17394 | |
| 17395 | <td class="entry_description"> |
| 17396 | <p>The available stream configurations that this |
| 17397 | camera device supports |
| 17398 | (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> |
| 17399 | </td> |
| 17400 | |
| 17401 | <td class="entry_units"> |
| 17402 | </td> |
| 17403 | |
| 17404 | <td class="entry_range"> |
| 17405 | </td> |
| 17406 | |
| 17407 | <td class="entry_tags"> |
| 17408 | </td> |
| 17409 | |
| 17410 | </tr> |
| 17411 | <tr class="entries_header"> |
| 17412 | <th class="th_details" colspan="5">Details</th> |
| 17413 | </tr> |
| 17414 | <tr class="entry_cont"> |
| 17415 | <td class="entry_details" colspan="5"> |
| 17416 | <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> |
| 17417 | tuples.<wbr/></p> |
| 17418 | <p>For a given use case,<wbr/> the actual maximum supported resolution |
| 17419 | may be lower than what is listed here,<wbr/> depending on the destination |
| 17420 | Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> |
| 17421 | the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) |
| 17422 | smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) |
| 17423 | can provide.<wbr/></p> |
| 17424 | <p>Please reference the documentation for the image data destination to |
| 17425 | check if it limits the maximum size for image data.<wbr/></p> |
| 17426 | <p>Not all output formats may be supported in a configuration with |
| 17427 | an input stream of a particular format.<wbr/> For more details,<wbr/> see |
| 17428 | <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p> |
| 17429 | <p>The following table describes the minimum required output stream |
| 17430 | configurations based on the hardware level |
| 17431 | (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p> |
| 17432 | <table> |
| 17433 | <thead> |
| 17434 | <tr> |
| 17435 | <th align="center">Format</th> |
| 17436 | <th align="center">Size</th> |
| 17437 | <th align="center">Hardware Level</th> |
| 17438 | <th align="center">Notes</th> |
| 17439 | </tr> |
| 17440 | </thead> |
| 17441 | <tbody> |
| 17442 | <tr> |
| 17443 | <td align="center">JPEG</td> |
| 17444 | <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td> |
| 17445 | <td align="center">Any</td> |
| 17446 | <td align="center"></td> |
| 17447 | </tr> |
| 17448 | <tr> |
| 17449 | <td align="center">JPEG</td> |
| 17450 | <td align="center">1920x1080 (1080p)</td> |
| 17451 | <td align="center">Any</td> |
| 17452 | <td align="center">if 1080p <= activeArraySize</td> |
| 17453 | </tr> |
| 17454 | <tr> |
| 17455 | <td align="center">JPEG</td> |
| 17456 | <td align="center">1280x720 (720)</td> |
| 17457 | <td align="center">Any</td> |
| 17458 | <td align="center">if 720p <= activeArraySize</td> |
| 17459 | </tr> |
| 17460 | <tr> |
| 17461 | <td align="center">JPEG</td> |
| 17462 | <td align="center">640x480 (480p)</td> |
| 17463 | <td align="center">Any</td> |
| 17464 | <td align="center">if 480p <= activeArraySize</td> |
| 17465 | </tr> |
| 17466 | <tr> |
| 17467 | <td align="center">JPEG</td> |
| 17468 | <td align="center">320x240 (240p)</td> |
| 17469 | <td align="center">Any</td> |
| 17470 | <td align="center">if 240p <= activeArraySize</td> |
| 17471 | </tr> |
| 17472 | <tr> |
| 17473 | <td align="center">YUV_<wbr/>420_<wbr/>888</td> |
| 17474 | <td align="center">all output sizes available for JPEG</td> |
| 17475 | <td align="center">FULL</td> |
| 17476 | <td align="center"></td> |
| 17477 | </tr> |
| 17478 | <tr> |
| 17479 | <td align="center">YUV_<wbr/>420_<wbr/>888</td> |
| 17480 | <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td> |
| 17481 | <td align="center">LIMITED</td> |
| 17482 | <td align="center"></td> |
| 17483 | </tr> |
| 17484 | <tr> |
| 17485 | <td align="center">IMPLEMENTATION_<wbr/>DEFINED</td> |
| 17486 | <td align="center">same as YUV_<wbr/>420_<wbr/>888</td> |
| 17487 | <td align="center">Any</td> |
| 17488 | <td align="center"></td> |
| 17489 | </tr> |
| 17490 | </tbody> |
| 17491 | </table> |
| 17492 | <p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional |
| 17493 | mandatory stream configurations on a per-capability basis.<wbr/></p> |
| 17494 | </td> |
| 17495 | </tr> |
| 17496 | |
| 17497 | <tr class="entries_header"> |
| 17498 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 17499 | </tr> |
| 17500 | <tr class="entry_cont"> |
| 17501 | <td class="entry_details" colspan="5"> |
| 17502 | <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter |
| 17503 | of sensor maximum resolution for JPEG formats (regardless of hardware |
| 17504 | level).<wbr/></p> |
| 17505 | <p>(The following is a rewording of the above required table):</p> |
| 17506 | <p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p> |
| 17507 | <ul> |
| 17508 | <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones |
| 17509 | (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution |
| 17510 | (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/> |
| 17511 | it does not have to be included in the supported JPEG sizes.<wbr/></li> |
| 17512 | <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as |
| 17513 | the dimensions being a multiple of 16.<wbr/></li> |
| 17514 | </ul> |
| 17515 | <p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/> |
| 17516 | However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum |
| 17517 | resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/> |
| 17518 | additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/> |
| 17519 | if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect |
| 17520 | ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be |
| 17521 | 3264x2448.<wbr/></p> |
| 17522 | <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/> |
| 17523 | the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed |
| 17524 | here as output streams.<wbr/></p> |
| 17525 | <p>It must also include each below resolution if it is smaller than or |
| 17526 | equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG |
| 17527 | formats),<wbr/> as output streams:</p> |
| 17528 | <ul> |
| 17529 | <li>240p (320 x 240)</li> |
| 17530 | <li>480p (640 x 480)</li> |
| 17531 | <li>720p (1280 x 720)</li> |
| 17532 | <li>1080p (1920 x 1080)</li> |
| 17533 | </ul> |
| 17534 | <p>For LIMITED capability devices |
| 17535 | (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/> |
| 17536 | the HAL only has to list up to the maximum video size |
| 17537 | supported by the device.<wbr/></p> |
| 17538 | <p>Regardless of hardware level,<wbr/> every output resolution available for |
| 17539 | YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p> |
| 17540 | <p>This supercedes the following fields,<wbr/> which are now deprecated:</p> |
| 17541 | <ul> |
| 17542 | <li>availableFormats</li> |
| 17543 | <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li> |
| 17544 | </ul> |
| 17545 | </td> |
| 17546 | </tr> |
| 17547 | |
| 17548 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 17549 | <!-- end of entry --> |
| 17550 | |
| 17551 | |
| 17552 | <tr class="entry" id="static_android.scaler.availableMinFrameDurations"> |
| 17553 | <td class="entry_name |
| 17554 | " rowspan="3"> |
| 17555 | android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations |
| 17556 | </td> |
| 17557 | <td class="entry_type"> |
| 17558 | <span class="entry_type_name">int64</span> |
| 17559 | <span class="entry_type_container">x</span> |
| 17560 | |
| 17561 | <span class="entry_type_array"> |
| 17562 | 4 x n |
| 17563 | </span> |
| 17564 | <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> |
| 17565 | |
| 17566 | |
| 17567 | <span class="entry_type_hwlevel">[legacy] </span> |
| 17568 | |
| 17569 | |
| 17570 | |
| 17571 | |
| 17572 | </td> <!-- entry_type --> |
| 17573 | |
| 17574 | <td class="entry_description"> |
| 17575 | <p>This lists the minimum frame duration for each |
| 17576 | format/<wbr/>size combination.<wbr/></p> |
| 17577 | </td> |
| 17578 | |
| 17579 | <td class="entry_units"> |
| 17580 | (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n |
| 17581 | </td> |
| 17582 | |
| 17583 | <td class="entry_range"> |
| 17584 | </td> |
| 17585 | |
| 17586 | <td class="entry_tags"> |
| 17587 | <ul class="entry_tags"> |
| 17588 | <li><a href="#tag_V1">V1</a></li> |
| 17589 | </ul> |
| 17590 | </td> |
| 17591 | |
| 17592 | </tr> |
| 17593 | <tr class="entries_header"> |
| 17594 | <th class="th_details" colspan="5">Details</th> |
| 17595 | </tr> |
| 17596 | <tr class="entry_cont"> |
| 17597 | <td class="entry_details" colspan="5"> |
| 17598 | <p>This should correspond to the frame duration when only that |
| 17599 | stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) |
| 17600 | set to either OFF or FAST.<wbr/></p> |
| 17601 | <p>When multiple streams are used in a request,<wbr/> the minimum frame |
| 17602 | duration will be max(individual stream min durations).<wbr/></p> |
| 17603 | <p>The minimum frame duration of a stream (of a particular format,<wbr/> size) |
| 17604 | is the same regardless of whether the stream is input or output.<wbr/></p> |
| 17605 | <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and |
| 17606 | <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about |
| 17607 | calculating the max frame rate.<wbr/></p> |
| 17608 | <p>(Keep in sync with |
| 17609 | <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>)</p> |
| 17610 | </td> |
| 17611 | </tr> |
| 17612 | |
| 17613 | |
| 17614 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 17615 | <!-- end of entry --> |
| 17616 | |
| 17617 | |
| 17618 | <tr class="entry" id="static_android.scaler.availableStallDurations"> |
| 17619 | <td class="entry_name |
| 17620 | " rowspan="5"> |
| 17621 | android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations |
| 17622 | </td> |
| 17623 | <td class="entry_type"> |
| 17624 | <span class="entry_type_name">int64</span> |
| 17625 | <span class="entry_type_container">x</span> |
| 17626 | |
| 17627 | <span class="entry_type_array"> |
| 17628 | 4 x n |
| 17629 | </span> |
| 17630 | <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> |
| 17631 | |
| 17632 | |
| 17633 | <span class="entry_type_hwlevel">[legacy] </span> |
| 17634 | |
| 17635 | |
| 17636 | |
| 17637 | |
| 17638 | </td> <!-- entry_type --> |
| 17639 | |
| 17640 | <td class="entry_description"> |
| 17641 | <p>This lists the maximum stall duration for each |
| 17642 | output format/<wbr/>size combination.<wbr/></p> |
| 17643 | </td> |
| 17644 | |
| 17645 | <td class="entry_units"> |
| 17646 | (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n |
| 17647 | </td> |
| 17648 | |
| 17649 | <td class="entry_range"> |
| 17650 | </td> |
| 17651 | |
| 17652 | <td class="entry_tags"> |
| 17653 | <ul class="entry_tags"> |
| 17654 | <li><a href="#tag_V1">V1</a></li> |
| 17655 | </ul> |
| 17656 | </td> |
| 17657 | |
| 17658 | </tr> |
| 17659 | <tr class="entries_header"> |
| 17660 | <th class="th_details" colspan="5">Details</th> |
| 17661 | </tr> |
| 17662 | <tr class="entry_cont"> |
| 17663 | <td class="entry_details" colspan="5"> |
| 17664 | <p>A stall duration is how much extra time would get added |
| 17665 | to the normal minimum frame duration for a repeating request |
| 17666 | that has streams with non-zero stall.<wbr/></p> |
| 17667 | <p>For example,<wbr/> consider JPEG captures which have the following |
| 17668 | characteristics:</p> |
| 17669 | <ul> |
| 17670 | <li>JPEG streams act like processed YUV streams in requests for which |
| 17671 | they are not included; in requests in which they are directly |
| 17672 | referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a |
| 17673 | JPEG stream requires the underlying YUV data to always be ready for |
| 17674 | use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact |
| 17675 | frame duration) on requests that actually reference a JPEG stream.<wbr/></li> |
| 17676 | <li>The JPEG processor can run concurrently to the rest of the camera |
| 17677 | pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li> |
| 17678 | </ul> |
| 17679 | <p>In other words,<wbr/> using a repeating YUV request would result |
| 17680 | in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single |
| 17681 | JPEG request is submitted periodically,<wbr/> the frame rate will stay |
| 17682 | at 30 FPS (as long as we wait for the previous JPEG to return each |
| 17683 | time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then |
| 17684 | the frame rate will drop from 30 FPS.<wbr/></p> |
| 17685 | <p>In general,<wbr/> submitting a new request with a non-0 stall time |
| 17686 | stream will <em>not</em> cause a frame rate drop unless there are still |
| 17687 | outstanding buffers for that stream from previous requests.<wbr/></p> |
| 17688 | <p>Submitting a repeating request with streams (call this <code>S</code>) |
| 17689 | is the same as setting the minimum frame duration from |
| 17690 | the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with |
| 17691 | the maximum stall duration for <code>S</code>.<wbr/></p> |
| 17692 | <p>If interleaving requests with and without a stall duration,<wbr/> |
| 17693 | a request will stall by the maximum of the remaining times |
| 17694 | for each can-stall stream with outstanding buffers.<wbr/></p> |
| 17695 | <p>This means that a stalling request will not have an exposure start |
| 17696 | until the stall has completed.<wbr/></p> |
| 17697 | <p>This should correspond to the stall duration when only that stream is |
| 17698 | active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST |
| 17699 | or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY |
| 17700 | effectively results in an indeterminate stall duration for all |
| 17701 | streams in a request (the regular stall calculation rules are |
| 17702 | ignored).<wbr/></p> |
| 17703 | <p>The following formats may always have a stall duration:</p> |
| 17704 | <ul> |
| 17705 | <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li> |
| 17706 | <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li> |
| 17707 | </ul> |
| 17708 | <p>The following formats will never have a stall duration:</p> |
| 17709 | <ul> |
| 17710 | <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> |
| 17711 | <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li> |
| 17712 | </ul> |
| 17713 | <p>All other formats may or may not have an allowed stall duration on |
| 17714 | a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> |
| 17715 | for more details.<wbr/></p> |
| 17716 | <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about |
| 17717 | calculating the max frame rate (absent stalls).<wbr/></p> |
| 17718 | <p>(Keep up to date with |
| 17719 | <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> )</p> |
| 17720 | </td> |
| 17721 | </tr> |
| 17722 | |
| 17723 | <tr class="entries_header"> |
| 17724 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 17725 | </tr> |
| 17726 | <tr class="entry_cont"> |
| 17727 | <td class="entry_details" colspan="5"> |
| 17728 | <p>If possible,<wbr/> it is recommended that all non-JPEG formats |
| 17729 | (such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE |
| 17730 | and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p> |
| 17731 | </td> |
| 17732 | </tr> |
| 17733 | |
| 17734 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 17735 | <!-- end of entry --> |
| 17736 | |
| 17737 | |
| 17738 | <tr class="entry" id="static_android.scaler.streamConfigurationMap"> |
| 17739 | <td class="entry_name |
| 17740 | " rowspan="5"> |
| 17741 | android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map |
| 17742 | </td> |
| 17743 | <td class="entry_type"> |
| 17744 | <span class="entry_type_name">int32</span> |
| 17745 | |
| 17746 | <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span> |
| 17747 | |
| 17748 | <span class="entry_type_synthetic">[synthetic] </span> |
| 17749 | |
| 17750 | <span class="entry_type_hwlevel">[legacy] </span> |
| 17751 | |
| 17752 | |
| 17753 | |
| 17754 | |
| 17755 | </td> <!-- entry_type --> |
| 17756 | |
| 17757 | <td class="entry_description"> |
| 17758 | <p>The available stream configurations that this |
| 17759 | camera device supports; also includes the minimum frame durations |
| 17760 | and the stall durations for each format/<wbr/>size combination.<wbr/></p> |
| 17761 | </td> |
| 17762 | |
| 17763 | <td class="entry_units"> |
| 17764 | </td> |
| 17765 | |
| 17766 | <td class="entry_range"> |
| 17767 | </td> |
| 17768 | |
| 17769 | <td class="entry_tags"> |
| 17770 | </td> |
| 17771 | |
| 17772 | </tr> |
| 17773 | <tr class="entries_header"> |
| 17774 | <th class="th_details" colspan="5">Details</th> |
| 17775 | </tr> |
| 17776 | <tr class="entry_cont"> |
| 17777 | <td class="entry_details" colspan="5"> |
| 17778 | <p>All camera devices will support sensor maximum resolution (defined by |
| 17779 | <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> |
| 17780 | <p>For a given use case,<wbr/> the actual maximum supported resolution |
| 17781 | may be lower than what is listed here,<wbr/> depending on the destination |
| 17782 | Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> |
| 17783 | the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) |
| 17784 | smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) |
| 17785 | can provide.<wbr/></p> |
| 17786 | <p>Please reference the documentation for the image data destination to |
| 17787 | check if it limits the maximum size for image data.<wbr/></p> |
| 17788 | <p>The following table describes the minimum required output stream |
| 17789 | configurations based on the hardware level |
| 17790 | (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p> |
| 17791 | <table> |
| 17792 | <thead> |
| 17793 | <tr> |
| 17794 | <th align="center">Format</th> |
| 17795 | <th align="center">Size</th> |
| 17796 | <th align="center">Hardware Level</th> |
| 17797 | <th align="center">Notes</th> |
| 17798 | </tr> |
| 17799 | </thead> |
| 17800 | <tbody> |
| 17801 | <tr> |
| 17802 | <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> |
| 17803 | <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td> |
| 17804 | <td align="center">Any</td> |
| 17805 | <td align="center"></td> |
| 17806 | </tr> |
| 17807 | <tr> |
| 17808 | <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> |
| 17809 | <td align="center">1920x1080 (1080p)</td> |
| 17810 | <td align="center">Any</td> |
| 17811 | <td align="center">if 1080p <= activeArraySize</td> |
| 17812 | </tr> |
| 17813 | <tr> |
| 17814 | <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> |
| 17815 | <td align="center">1280x720 (720p)</td> |
| 17816 | <td align="center">Any</td> |
| 17817 | <td align="center">if 720p <= activeArraySize</td> |
| 17818 | </tr> |
| 17819 | <tr> |
| 17820 | <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> |
| 17821 | <td align="center">640x480 (480p)</td> |
| 17822 | <td align="center">Any</td> |
| 17823 | <td align="center">if 480p <= activeArraySize</td> |
| 17824 | </tr> |
| 17825 | <tr> |
| 17826 | <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> |
| 17827 | <td align="center">320x240 (240p)</td> |
| 17828 | <td align="center">Any</td> |
| 17829 | <td align="center">if 240p <= activeArraySize</td> |
| 17830 | </tr> |
| 17831 | <tr> |
| 17832 | <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> |
| 17833 | <td align="center">all output sizes available for JPEG</td> |
| 17834 | <td align="center">FULL</td> |
| 17835 | <td align="center"></td> |
| 17836 | </tr> |
| 17837 | <tr> |
| 17838 | <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> |
| 17839 | <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td> |
| 17840 | <td align="center">LIMITED</td> |
| 17841 | <td align="center"></td> |
| 17842 | </tr> |
| 17843 | <tr> |
| 17844 | <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td> |
| 17845 | <td align="center">same as YUV_<wbr/>420_<wbr/>888</td> |
| 17846 | <td align="center">Any</td> |
| 17847 | <td align="center"></td> |
| 17848 | </tr> |
| 17849 | </tbody> |
| 17850 | </table> |
| 17851 | <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 |
| 17852 | stream configurations on a per-capability basis.<wbr/></p> |
| 17853 | <p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p> |
| 17854 | <ul> |
| 17855 | <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones |
| 17856 | (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution |
| 17857 | (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/> |
| 17858 | it does not have to be included in the supported JPEG sizes.<wbr/></li> |
| 17859 | <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as |
| 17860 | the dimensions being a multiple of 16.<wbr/> |
| 17861 | Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/> |
| 17862 | However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum |
| 17863 | resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/> |
| 17864 | additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/> |
| 17865 | if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect |
| 17866 | ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be |
| 17867 | 3264x2448.<wbr/></li> |
| 17868 | </ul> |
| 17869 | </td> |
| 17870 | </tr> |
| 17871 | |
| 17872 | <tr class="entries_header"> |
| 17873 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 17874 | </tr> |
| 17875 | <tr class="entry_cont"> |
| 17876 | <td class="entry_details" colspan="5"> |
| 17877 | <p>Do not set this property directly |
| 17878 | (it is synthetic and will not be available at the HAL layer); |
| 17879 | set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p> |
| 17880 | <p>Not all output formats may be supported in a configuration with |
| 17881 | an input stream of a particular format.<wbr/> For more details,<wbr/> see |
| 17882 | <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p> |
| 17883 | <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter |
| 17884 | of sensor maximum resolution for JPEG formats (regardless of hardware |
| 17885 | level).<wbr/></p> |
| 17886 | <p>(The following is a rewording of the above required table):</p> |
| 17887 | <p>The HAL must include sensor maximum resolution (defined by |
| 17888 | <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p> |
| 17889 | <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/> |
| 17890 | the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed |
| 17891 | here as output streams.<wbr/></p> |
| 17892 | <p>It must also include each below resolution if it is smaller than or |
| 17893 | equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG |
| 17894 | formats),<wbr/> as output streams:</p> |
| 17895 | <ul> |
| 17896 | <li>240p (320 x 240)</li> |
| 17897 | <li>480p (640 x 480)</li> |
| 17898 | <li>720p (1280 x 720)</li> |
| 17899 | <li>1080p (1920 x 1080)</li> |
| 17900 | </ul> |
| 17901 | <p>For LIMITED capability devices |
| 17902 | (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/> |
| 17903 | the HAL only has to list up to the maximum video size |
| 17904 | supported by the device.<wbr/></p> |
| 17905 | <p>Regardless of hardware level,<wbr/> every output resolution available for |
| 17906 | YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p> |
| 17907 | <p>This supercedes the following fields,<wbr/> which are now deprecated:</p> |
| 17908 | <ul> |
| 17909 | <li>availableFormats</li> |
| 17910 | <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li> |
| 17911 | </ul> |
| 17912 | </td> |
| 17913 | </tr> |
| 17914 | |
| 17915 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 17916 | <!-- end of entry --> |
| 17917 | |
| 17918 | |
| 17919 | <tr class="entry" id="static_android.scaler.croppingType"> |
| 17920 | <td class="entry_name |
| 17921 | " rowspan="3"> |
| 17922 | android.<wbr/>scaler.<wbr/>cropping<wbr/>Type |
| 17923 | </td> |
| 17924 | <td class="entry_type"> |
| 17925 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 17926 | |
| 17927 | <span class="entry_type_visibility"> [public]</span> |
| 17928 | |
| 17929 | |
| 17930 | <span class="entry_type_hwlevel">[legacy] </span> |
| 17931 | |
| 17932 | |
| 17933 | |
| 17934 | <ul class="entry_type_enum"> |
| 17935 | <li> |
| 17936 | <span class="entry_type_enum_name">CENTER_ONLY</span> |
| 17937 | <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span> |
| 17938 | </li> |
| 17939 | <li> |
| 17940 | <span class="entry_type_enum_name">FREEFORM</span> |
| 17941 | <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span> |
| 17942 | </li> |
| 17943 | </ul> |
| 17944 | |
| 17945 | </td> <!-- entry_type --> |
| 17946 | |
| 17947 | <td class="entry_description"> |
| 17948 | <p>The crop type that this camera device supports.<wbr/></p> |
| 17949 | </td> |
| 17950 | |
| 17951 | <td class="entry_units"> |
| 17952 | </td> |
| 17953 | |
| 17954 | <td class="entry_range"> |
| 17955 | </td> |
| 17956 | |
| 17957 | <td class="entry_tags"> |
| 17958 | </td> |
| 17959 | |
| 17960 | </tr> |
| 17961 | <tr class="entries_header"> |
| 17962 | <th class="th_details" colspan="5">Details</th> |
| 17963 | </tr> |
| 17964 | <tr class="entry_cont"> |
| 17965 | <td class="entry_details" colspan="5"> |
| 17966 | <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 |
| 17967 | device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the |
| 17968 | 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>) |
| 17969 | and keep the crop region width and height unchanged.<wbr/> The camera device will return the |
| 17970 | final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p> |
| 17971 | <p>Camera devices that support FREEFORM cropping will support any crop region that |
| 17972 | is inside of the active array.<wbr/> The camera device will apply the same crop region and |
| 17973 | 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> |
| 17974 | <p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p> |
| 17975 | </td> |
| 17976 | </tr> |
| 17977 | |
| 17978 | |
| 17979 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 17980 | <!-- end of entry --> |
| 17981 | |
| 17982 | |
| 17983 | |
| 17984 | <!-- end of kind --> |
| 17985 | </tbody> |
| 17986 | <tr><td colspan="6" class="kind">dynamic</td></tr> |
| 17987 | |
| 17988 | <thead class="entries_header"> |
| 17989 | <tr> |
| 17990 | <th class="th_name">Property Name</th> |
| 17991 | <th class="th_type">Type</th> |
| 17992 | <th class="th_description">Description</th> |
| 17993 | <th class="th_units">Units</th> |
| 17994 | <th class="th_range">Range</th> |
| 17995 | <th class="th_tags">Tags</th> |
| 17996 | </tr> |
| 17997 | </thead> |
| 17998 | |
| 17999 | <tbody> |
| 18000 | |
| 18001 | |
| 18002 | |
| 18003 | |
| 18004 | |
| 18005 | |
| 18006 | |
| 18007 | |
| 18008 | |
| 18009 | |
| 18010 | <tr class="entry" id="dynamic_android.scaler.cropRegion"> |
| 18011 | <td class="entry_name |
| 18012 | " rowspan="5"> |
| 18013 | android.<wbr/>scaler.<wbr/>crop<wbr/>Region |
| 18014 | </td> |
| 18015 | <td class="entry_type"> |
| 18016 | <span class="entry_type_name">int32</span> |
| 18017 | <span class="entry_type_container">x</span> |
| 18018 | |
| 18019 | <span class="entry_type_array"> |
| 18020 | 4 |
| 18021 | </span> |
| 18022 | <span class="entry_type_visibility"> [public as rectangle]</span> |
| 18023 | |
| 18024 | |
| 18025 | <span class="entry_type_hwlevel">[legacy] </span> |
| 18026 | |
| 18027 | |
| 18028 | |
| 18029 | |
| 18030 | </td> <!-- entry_type --> |
| 18031 | |
| 18032 | <td class="entry_description"> |
| 18033 | <p>The desired region of the sensor to read out for this capture.<wbr/></p> |
| 18034 | </td> |
| 18035 | |
| 18036 | <td class="entry_units"> |
| 18037 | Pixel coordinates relative to |
| 18038 | android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size |
| 18039 | </td> |
| 18040 | |
| 18041 | <td class="entry_range"> |
| 18042 | </td> |
| 18043 | |
| 18044 | <td class="entry_tags"> |
| 18045 | <ul class="entry_tags"> |
| 18046 | <li><a href="#tag_BC">BC</a></li> |
| 18047 | </ul> |
| 18048 | </td> |
| 18049 | |
| 18050 | </tr> |
| 18051 | <tr class="entries_header"> |
| 18052 | <th class="th_details" colspan="5">Details</th> |
| 18053 | </tr> |
| 18054 | <tr class="entry_cont"> |
| 18055 | <td class="entry_details" colspan="5"> |
| 18056 | <p>This control can be used to implement digital zoom.<wbr/></p> |
| 18057 | <p>The crop region coordinate system is based off |
| 18058 | <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 |
| 18059 | top-left corner of the sensor active array.<wbr/></p> |
| 18060 | <p>Output streams use this rectangle to produce their output,<wbr/> |
| 18061 | cropping to a smaller region if necessary to maintain the |
| 18062 | stream's aspect ratio,<wbr/> then scaling the sensor input to |
| 18063 | match the output's configured resolution.<wbr/></p> |
| 18064 | <p>The crop region is applied after the RAW to other color |
| 18065 | space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams |
| 18066 | (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not |
| 18067 | croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p> |
| 18068 | <p>For non-raw streams,<wbr/> any additional per-stream cropping will |
| 18069 | be done to maximize the final pixel area of the stream.<wbr/></p> |
| 18070 | <p>For example,<wbr/> if the crop region is set to a 4:3 aspect |
| 18071 | ratio,<wbr/> then 4:3 streams will use the exact crop |
| 18072 | region.<wbr/> 16:9 streams will further crop vertically |
| 18073 | (letterbox).<wbr/></p> |
| 18074 | <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 |
| 18075 | outputs will crop horizontally (pillarbox),<wbr/> and 16:9 |
| 18076 | streams will match exactly.<wbr/> These additional crops will |
| 18077 | be centered within the crop region.<wbr/></p> |
| 18078 | <p>The width and height of the crop region cannot |
| 18079 | be set to be smaller than |
| 18080 | <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 |
| 18081 | <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> |
| 18082 | <p>The camera device may adjust the crop region to account |
| 18083 | for rounding and other hardware requirements; the final |
| 18084 | crop region used will be included in the output capture |
| 18085 | result.<wbr/></p> |
| 18086 | </td> |
| 18087 | </tr> |
| 18088 | |
| 18089 | <tr class="entries_header"> |
| 18090 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 18091 | </tr> |
| 18092 | <tr class="entry_cont"> |
| 18093 | <td class="entry_details" colspan="5"> |
| 18094 | <p>The output streams must maintain square pixels at all |
| 18095 | times,<wbr/> no matter what the relative aspect ratios of the |
| 18096 | crop region and the stream are.<wbr/> Negative values for |
| 18097 | corner are allowed for raw output if full pixel array is |
| 18098 | larger than active pixel array.<wbr/> Width and height may be |
| 18099 | rounded to nearest larger supportable width,<wbr/> especially |
| 18100 | for raw output,<wbr/> where only a few fixed scales may be |
| 18101 | possible.<wbr/></p> |
| 18102 | <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller |
| 18103 | size than active array size,<wbr/> the HAL need follow below cropping rules:</p> |
| 18104 | <ul> |
| 18105 | <li> |
| 18106 | <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active |
| 18107 | array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from |
| 18108 | <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> |
| 18109 | <ol> |
| 18110 | <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor |
| 18111 | cropped pixel area by (tx,<wbr/> ty),<wbr/> |
| 18112 | where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code> |
| 18113 | and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The |
| 18114 | (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the |
| 18115 | <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li> |
| 18116 | <li>Scale the width and height of requested cropRegion with scaling factor of |
| 18117 | 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 |
| 18118 | respectively.<wbr/> |
| 18119 | Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image |
| 18120 | with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need |
| 18121 | follow the general cropping rule for this new cropRegion and effective active |
| 18122 | array size.<wbr/></li> |
| 18123 | </ol> |
| 18124 | </li> |
| 18125 | <li> |
| 18126 | <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/> |
| 18127 | The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/> |
| 18128 | The reported cropRegion may be slightly different with the requested cropRegion since |
| 18129 | the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other |
| 18130 | hardware limitations.<wbr/></p> |
| 18131 | </li> |
| 18132 | </ul> |
| 18133 | <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p> |
| 18134 | </td> |
| 18135 | </tr> |
| 18136 | |
| 18137 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 18138 | <!-- end of entry --> |
| 18139 | |
| 18140 | |
| 18141 | |
| 18142 | <!-- end of kind --> |
| 18143 | </tbody> |
| 18144 | |
| 18145 | <!-- end of section --> |
| 18146 | <tr><td colspan="6" id="section_sensor" class="section">sensor</td></tr> |
| 18147 | |
| 18148 | |
| 18149 | <tr><td colspan="6" class="kind">controls</td></tr> |
| 18150 | |
| 18151 | <thead class="entries_header"> |
| 18152 | <tr> |
| 18153 | <th class="th_name">Property Name</th> |
| 18154 | <th class="th_type">Type</th> |
| 18155 | <th class="th_description">Description</th> |
| 18156 | <th class="th_units">Units</th> |
| 18157 | <th class="th_range">Range</th> |
| 18158 | <th class="th_tags">Tags</th> |
| 18159 | </tr> |
| 18160 | </thead> |
| 18161 | |
| 18162 | <tbody> |
| 18163 | |
| 18164 | |
| 18165 | |
| 18166 | |
| 18167 | |
| 18168 | |
| 18169 | |
| 18170 | |
| 18171 | |
| 18172 | |
| 18173 | <tr class="entry" id="controls_android.sensor.exposureTime"> |
| 18174 | <td class="entry_name |
| 18175 | " rowspan="3"> |
| 18176 | android.<wbr/>sensor.<wbr/>exposure<wbr/>Time |
| 18177 | </td> |
| 18178 | <td class="entry_type"> |
| 18179 | <span class="entry_type_name">int64</span> |
| 18180 | |
| 18181 | <span class="entry_type_visibility"> [public]</span> |
| 18182 | |
| 18183 | |
| 18184 | <span class="entry_type_hwlevel">[full] </span> |
| 18185 | |
| 18186 | |
| 18187 | |
| 18188 | |
| 18189 | </td> <!-- entry_type --> |
| 18190 | |
| 18191 | <td class="entry_description"> |
| 18192 | <p>Duration each pixel is exposed to |
| 18193 | light.<wbr/></p> |
| 18194 | </td> |
| 18195 | |
| 18196 | <td class="entry_units"> |
| 18197 | Nanoseconds |
| 18198 | </td> |
| 18199 | |
| 18200 | <td class="entry_range"> |
| 18201 | <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p> |
| 18202 | </td> |
| 18203 | |
| 18204 | <td class="entry_tags"> |
| 18205 | <ul class="entry_tags"> |
| 18206 | <li><a href="#tag_V1">V1</a></li> |
| 18207 | </ul> |
| 18208 | </td> |
| 18209 | |
| 18210 | </tr> |
| 18211 | <tr class="entries_header"> |
| 18212 | <th class="th_details" colspan="5">Details</th> |
| 18213 | </tr> |
| 18214 | <tr class="entry_cont"> |
| 18215 | <td class="entry_details" colspan="5"> |
| 18216 | <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the |
| 18217 | duration exposed to the nearest possible value (rather than expose longer).<wbr/> |
| 18218 | The final exposure time used will be available in the output capture result.<wbr/></p> |
| 18219 | <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 |
| 18220 | OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> |
| 18221 | </td> |
| 18222 | </tr> |
| 18223 | |
| 18224 | |
| 18225 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 18226 | <!-- end of entry --> |
| 18227 | |
| 18228 | |
| 18229 | <tr class="entry" id="controls_android.sensor.frameDuration"> |
| 18230 | <td class="entry_name |
| 18231 | " rowspan="5"> |
| 18232 | android.<wbr/>sensor.<wbr/>frame<wbr/>Duration |
| 18233 | </td> |
| 18234 | <td class="entry_type"> |
| 18235 | <span class="entry_type_name">int64</span> |
| 18236 | |
| 18237 | <span class="entry_type_visibility"> [public]</span> |
| 18238 | |
| 18239 | |
| 18240 | <span class="entry_type_hwlevel">[full] </span> |
| 18241 | |
| 18242 | |
| 18243 | |
| 18244 | |
| 18245 | </td> <!-- entry_type --> |
| 18246 | |
| 18247 | <td class="entry_description"> |
| 18248 | <p>Duration from start of frame exposure to |
| 18249 | start of next frame exposure.<wbr/></p> |
| 18250 | </td> |
| 18251 | |
| 18252 | <td class="entry_units"> |
| 18253 | Nanoseconds |
| 18254 | </td> |
| 18255 | |
| 18256 | <td class="entry_range"> |
| 18257 | <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/> |
| 18258 | <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration |
| 18259 | is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p> |
| 18260 | </td> |
| 18261 | |
| 18262 | <td class="entry_tags"> |
| 18263 | <ul class="entry_tags"> |
| 18264 | <li><a href="#tag_V1">V1</a></li> |
| 18265 | </ul> |
| 18266 | </td> |
| 18267 | |
| 18268 | </tr> |
| 18269 | <tr class="entries_header"> |
| 18270 | <th class="th_details" colspan="5">Details</th> |
| 18271 | </tr> |
| 18272 | <tr class="entry_cont"> |
| 18273 | <td class="entry_details" colspan="5"> |
| 18274 | <p>The maximum frame rate that can be supported by a camera subsystem is |
| 18275 | a function of many factors:</p> |
| 18276 | <ul> |
| 18277 | <li>Requested resolutions of output image streams</li> |
| 18278 | <li>Availability of binning /<wbr/> skipping modes on the imager</li> |
| 18279 | <li>The bandwidth of the imager interface</li> |
| 18280 | <li>The bandwidth of the various ISP processing blocks</li> |
| 18281 | </ul> |
| 18282 | <p>Since these factors can vary greatly between different ISPs and |
| 18283 | sensors,<wbr/> the camera abstraction tries to represent the bandwidth |
| 18284 | restrictions with as simple a model as possible.<wbr/></p> |
| 18285 | <p>The model presented has the following characteristics:</p> |
| 18286 | <ul> |
| 18287 | <li>The image sensor is always configured to output the smallest |
| 18288 | resolution possible given the application's requested output stream |
| 18289 | sizes.<wbr/> The smallest resolution is defined as being at least as large |
| 18290 | as the largest requested output stream size; the camera pipeline must |
| 18291 | never digitally upsample sensor data when the crop region covers the |
| 18292 | whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream |
| 18293 | resolutions are configured,<wbr/> the sensor can provide a higher frame |
| 18294 | rate.<wbr/></li> |
| 18295 | <li>Since any request may use any or all the currently configured |
| 18296 | output streams,<wbr/> the sensor and ISP must be configured to support |
| 18297 | scaling a single capture to all the streams at the same time.<wbr/> This |
| 18298 | means the camera pipeline must be ready to produce the largest |
| 18299 | requested output size without any delay.<wbr/> Therefore,<wbr/> the overall |
| 18300 | frame rate of a given configured stream set is governed only by the |
| 18301 | largest requested stream resolution.<wbr/></li> |
| 18302 | <li>Using more than one output stream in a request does not affect the |
| 18303 | frame duration.<wbr/></li> |
| 18304 | <li>Certain format-streams may need to do additional background processing |
| 18305 | before data is consumed/<wbr/>produced by that stream.<wbr/> These processors |
| 18306 | can run concurrently to the rest of the camera pipeline,<wbr/> but |
| 18307 | cannot process more than 1 capture at a time.<wbr/></li> |
| 18308 | </ul> |
| 18309 | <p>The necessary information for the application,<wbr/> given the model above,<wbr/> |
| 18310 | is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field using |
| 18311 | <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/> |
| 18312 | These are used to determine the maximum frame rate /<wbr/> minimum frame |
| 18313 | duration that is possible for a given stream configuration.<wbr/></p> |
| 18314 | <p>Specifically,<wbr/> the application can use the following rules to |
| 18315 | determine the minimum frame duration it can request from the camera |
| 18316 | device:</p> |
| 18317 | <ol> |
| 18318 | <li>Let the set of currently configured input/<wbr/>output streams |
| 18319 | be called <code>S</code>.<wbr/></li> |
| 18320 | <li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking |
| 18321 | 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> |
| 18322 | (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be |
| 18323 | called <code>F</code>.<wbr/></li> |
| 18324 | <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed |
| 18325 | for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams |
| 18326 | used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li> |
| 18327 | </ol> |
| 18328 | <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> |
| 18329 | using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> |
| 18330 | determines the steady state frame rate that the application will get |
| 18331 | if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind of |
| 18332 | request be called <code>Rsimple</code>.<wbr/></p> |
| 18333 | <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved |
| 18334 | by a single capture of a new request <code>Rstall</code> (which has at least |
| 18335 | one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the |
| 18336 | same minimum frame duration this will not cause a frame rate loss |
| 18337 | if all buffers from the previous <code>Rstall</code> have already been |
| 18338 | delivered.<wbr/></p> |
| 18339 | <p>For more details about stalling,<wbr/> see |
| 18340 | <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p> |
| 18341 | <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 |
| 18342 | OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> |
| 18343 | </td> |
| 18344 | </tr> |
| 18345 | |
| 18346 | <tr class="entries_header"> |
| 18347 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 18348 | </tr> |
| 18349 | <tr class="entry_cont"> |
| 18350 | <td class="entry_details" colspan="5"> |
| 18351 | <p>For more details about stalling,<wbr/> see |
| 18352 | <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p> |
| 18353 | </td> |
| 18354 | </tr> |
| 18355 | |
| 18356 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 18357 | <!-- end of entry --> |
| 18358 | |
| 18359 | |
| 18360 | <tr class="entry" id="controls_android.sensor.sensitivity"> |
| 18361 | <td class="entry_name |
| 18362 | " rowspan="5"> |
| 18363 | android.<wbr/>sensor.<wbr/>sensitivity |
| 18364 | </td> |
| 18365 | <td class="entry_type"> |
| 18366 | <span class="entry_type_name">int32</span> |
| 18367 | |
| 18368 | <span class="entry_type_visibility"> [public]</span> |
| 18369 | |
| 18370 | |
| 18371 | <span class="entry_type_hwlevel">[full] </span> |
| 18372 | |
| 18373 | |
| 18374 | |
| 18375 | |
| 18376 | </td> <!-- entry_type --> |
| 18377 | |
| 18378 | <td class="entry_description"> |
| 18379 | <p>The amount of gain applied to sensor data |
| 18380 | before processing.<wbr/></p> |
| 18381 | </td> |
| 18382 | |
| 18383 | <td class="entry_units"> |
| 18384 | ISO arithmetic units |
| 18385 | </td> |
| 18386 | |
| 18387 | <td class="entry_range"> |
| 18388 | <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p> |
| 18389 | </td> |
| 18390 | |
| 18391 | <td class="entry_tags"> |
| 18392 | <ul class="entry_tags"> |
| 18393 | <li><a href="#tag_V1">V1</a></li> |
| 18394 | </ul> |
| 18395 | </td> |
| 18396 | |
| 18397 | </tr> |
| 18398 | <tr class="entries_header"> |
| 18399 | <th class="th_details" colspan="5">Details</th> |
| 18400 | </tr> |
| 18401 | <tr class="entry_cont"> |
| 18402 | <td class="entry_details" colspan="5"> |
| 18403 | <p>The sensitivity is the standard ISO sensitivity value,<wbr/> |
| 18404 | as defined in ISO 12232:2006.<wbr/></p> |
| 18405 | <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 |
| 18406 | 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 |
| 18407 | is guaranteed to use only analog amplification for applying the gain.<wbr/></p> |
| 18408 | <p>If the camera device cannot apply the exact sensitivity |
| 18409 | requested,<wbr/> it will reduce the gain to the nearest supported |
| 18410 | value.<wbr/> The final sensitivity used will be available in the |
| 18411 | output capture result.<wbr/></p> |
| 18412 | <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 |
| 18413 | OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> |
| 18414 | </td> |
| 18415 | </tr> |
| 18416 | |
| 18417 | <tr class="entries_header"> |
| 18418 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 18419 | </tr> |
| 18420 | <tr class="entry_cont"> |
| 18421 | <td class="entry_details" colspan="5"> |
| 18422 | <p>ISO 12232:2006 REI method is acceptable.<wbr/></p> |
| 18423 | </td> |
| 18424 | </tr> |
| 18425 | |
| 18426 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 18427 | <!-- end of entry --> |
| 18428 | |
| 18429 | |
| 18430 | <tr class="entry" id="controls_android.sensor.testPatternData"> |
| 18431 | <td class="entry_name |
| 18432 | " rowspan="5"> |
| 18433 | android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data |
| 18434 | </td> |
| 18435 | <td class="entry_type"> |
| 18436 | <span class="entry_type_name">int32</span> |
| 18437 | <span class="entry_type_container">x</span> |
| 18438 | |
| 18439 | <span class="entry_type_array"> |
| 18440 | 4 |
| 18441 | </span> |
| 18442 | <span class="entry_type_visibility"> [public]</span> |
| 18443 | |
| 18444 | |
| 18445 | |
| 18446 | |
| 18447 | |
| 18448 | |
| 18449 | </td> <!-- entry_type --> |
| 18450 | |
| 18451 | <td class="entry_description"> |
| 18452 | <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern |
| 18453 | when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p> |
| 18454 | </td> |
| 18455 | |
| 18456 | <td class="entry_units"> |
| 18457 | </td> |
| 18458 | |
| 18459 | <td class="entry_range"> |
| 18460 | </td> |
| 18461 | |
| 18462 | <td class="entry_tags"> |
| 18463 | </td> |
| 18464 | |
| 18465 | </tr> |
| 18466 | <tr class="entries_header"> |
| 18467 | <th class="th_details" colspan="5">Details</th> |
| 18468 | </tr> |
| 18469 | <tr class="entry_cont"> |
| 18470 | <td class="entry_details" colspan="5"> |
| 18471 | <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/> |
| 18472 | The camera device then uses the most significant X bits |
| 18473 | that correspond to how many bits are in its Bayer raw sensor |
| 18474 | output.<wbr/></p> |
| 18475 | <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the |
| 18476 | 10 most significant bits from each color channel.<wbr/></p> |
| 18477 | </td> |
| 18478 | </tr> |
| 18479 | |
| 18480 | <tr class="entries_header"> |
| 18481 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 18482 | </tr> |
| 18483 | <tr class="entry_cont"> |
| 18484 | <td class="entry_details" colspan="5"> |
| 18485 | |
| 18486 | </td> |
| 18487 | </tr> |
| 18488 | |
| 18489 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 18490 | <!-- end of entry --> |
| 18491 | |
| 18492 | |
| 18493 | <tr class="entry" id="controls_android.sensor.testPatternMode"> |
| 18494 | <td class="entry_name |
| 18495 | " rowspan="5"> |
| 18496 | android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode |
| 18497 | </td> |
| 18498 | <td class="entry_type"> |
| 18499 | <span class="entry_type_name entry_type_name_enum">int32</span> |
| 18500 | |
| 18501 | <span class="entry_type_visibility"> [public]</span> |
| 18502 | |
| 18503 | |
| 18504 | |
| 18505 | |
| 18506 | |
| 18507 | <ul class="entry_type_enum"> |
| 18508 | <li> |
| 18509 | <span class="entry_type_enum_name">OFF</span> |
| 18510 | <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera |
| 18511 | device returns captures from the image sensor.<wbr/></p> |
| 18512 | <p>This is the default if the key is not set.<wbr/></p></span> |
| 18513 | </li> |
| 18514 | <li> |
| 18515 | <span class="entry_type_enum_name">SOLID_COLOR</span> |
| 18516 | <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 |
| 18517 | respective color channel provided in |
| 18518 | <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p> |
| 18519 | <p>For example:</p> |
| 18520 | <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0] |
| 18521 | </code></pre> |
| 18522 | <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p> |
| 18523 | <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0] |
| 18524 | </code></pre> |
| 18525 | <p>All red pixels are 100% red.<wbr/> Only the odd green pixels |
| 18526 | are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span> |
| 18527 | </li> |
| 18528 | <li> |
| 18529 | <span class="entry_type_enum_name">COLOR_BARS</span> |
| 18530 | <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p> |
| 18531 | <p>The vertical bars (left-to-right) are as follows:</p> |
| 18532 | <ul> |
| 18533 | <li>100% white</li> |
| 18534 | <li>yellow</li> |
| 18535 | <li>cyan</li> |
| 18536 | <li>green</li> |
| 18537 | <li>magenta</li> |
| 18538 | <li>red</li> |
| 18539 | <li>blue</li> |
| 18540 | <li>black</li> |
| 18541 | </ul> |
| 18542 | <p>In general the image would look like the following:</p> |
| 18543 | <pre><code>W Y C G M R B K |
| 18544 | W Y C G M R B K |
| 18545 | W Y C G M R B K |
| 18546 | W Y C G M R B K |
| 18547 | W Y C G M R B K |
| 18548 | .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> |
| 18549 | .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> |
| 18550 | .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> |
| 18551 | |
| 18552 | (B = Blue,<wbr/> K = Black) |
| 18553 | </code></pre> |
| 18554 | <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/> |
| 18555 | When this is not possible,<wbr/> the bar size should be rounded |
| 18556 | down to the nearest integer and the pattern can repeat |
| 18557 | on the right side.<wbr/></p> |
| 18558 | <p>Each bar's height must always take up the full sensor |
| 18559 | pixel array height.<wbr/></p> |
| 18560 | <p>Each pixel in this test pattern must be set to either |
| 18561 | 0% intensity or 100% intensity.<wbr/></p></span> |
| 18562 | </li> |
| 18563 | <li> |
| 18564 | <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span> |
| 18565 | <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that |
| 18566 | each bar should start at its specified color at the top,<wbr/> |
| 18567 | and fade to gray at the bottom.<wbr/></p> |
| 18568 | <p>Furthermore each bar is further subdivided into a left and |
| 18569 | right half.<wbr/> The left half should have a smooth gradient,<wbr/> |
| 18570 | and the right half should have a quantized gradient.<wbr/></p> |
| 18571 | <p>In particular,<wbr/> the right half's should consist of blocks of the |
| 18572 | same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p> |
| 18573 | <p>The least significant bits in the quantized gradient should |
| 18574 | be copied from the most significant bits of the smooth gradient.<wbr/></p> |
| 18575 | <p>The height of each bar should always be a multiple of 128.<wbr/> |
| 18576 | When this is not the case,<wbr/> the pattern should repeat at the bottom |
| 18577 | of the image.<wbr/></p></span> |
| 18578 | </li> |
| 18579 | <li> |
| 18580 | <span class="entry_type_enum_name">PN9</span> |
| 18581 | <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence |
| 18582 | generated from a PN9 512-bit sequence (typically implemented |
| 18583 | in hardware with a linear feedback shift register).<wbr/></p> |
| 18584 | <p>The generator should be reset at the beginning of each frame,<wbr/> |
| 18585 | and thus each subsequent raw frame with this test pattern should |
| 18586 | be exactly the same as the last.<wbr/></p></span> |
| 18587 | </li> |
| 18588 | <li> |
| 18589 | <span class="entry_type_enum_name">CUSTOM1</span> |
| 18590 | <span class="entry_type_enum_value">256</span> |
| 18591 | <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are |
| 18592 | available only on this camera device are at least this numeric |
| 18593 | value.<wbr/></p> |
| 18594 | <p>All of the custom test patterns will be static |
| 18595 | (that is the raw image must not vary from frame to frame).<wbr/></p></span> |
| 18596 | </li> |
| 18597 | </ul> |
| 18598 | |
| 18599 | </td> <!-- entry_type --> |
| 18600 | |
| 18601 | <td class="entry_description"> |
| 18602 | <p>When enabled,<wbr/> the sensor sends a test pattern instead of |
| 18603 | doing a real exposure from the camera.<wbr/></p> |
| 18604 | </td> |
| 18605 | |
| 18606 | <td class="entry_units"> |
| 18607 | </td> |
| 18608 | |
| 18609 | <td class="entry_range"> |
| 18610 | <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p> |
| 18611 | </td> |
| 18612 | |
| 18613 | <td class="entry_tags"> |
| 18614 | </td> |
| 18615 | |
| 18616 | </tr> |
| 18617 | <tr class="entries_header"> |
| 18618 | <th class="th_details" colspan="5">Details</th> |
| 18619 | </tr> |
| 18620 | <tr class="entry_cont"> |
| 18621 | <td class="entry_details" colspan="5"> |
| 18622 | <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified |
| 18623 | by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should |
| 18624 | work as normal.<wbr/></p> |
| 18625 | <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still |
| 18626 | occur (and that the test pattern remain unmodified,<wbr/> since the flash |
| 18627 | would not actually affect it).<wbr/></p> |
| 18628 | <p>Defaults to OFF.<wbr/></p> |
| 18629 | </td> |
| 18630 | </tr> |
| 18631 | |
| 18632 | <tr class="entries_header"> |
| 18633 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 18634 | </tr> |
| 18635 | <tr class="entry_cont"> |
| 18636 | <td class="entry_details" colspan="5"> |
| 18637 | <p>All test patterns are specified in the Bayer domain.<wbr/></p> |
| 18638 | <p>The HAL may choose to substitute test patterns from the sensor |
| 18639 | with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be |
| 18640 | indistinguishable to the ISP whether the data came from the |
| 18641 | sensor interconnect bus (such as CSI2) or memory.<wbr/></p> |
| 18642 | </td> |
| 18643 | </tr> |
| 18644 | |
| 18645 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 18646 | <!-- end of entry --> |
| 18647 | |
| 18648 | |
| 18649 | |
| 18650 | <!-- end of kind --> |
| 18651 | </tbody> |
| 18652 | <tr><td colspan="6" class="kind">static</td></tr> |
| 18653 | |
| 18654 | <thead class="entries_header"> |
| 18655 | <tr> |
| 18656 | <th class="th_name">Property Name</th> |
| 18657 | <th class="th_type">Type</th> |
| 18658 | <th class="th_description">Description</th> |
| 18659 | <th class="th_units">Units</th> |
| 18660 | <th class="th_range">Range</th> |
| 18661 | <th class="th_tags">Tags</th> |
| 18662 | </tr> |
| 18663 | </thead> |
| 18664 | |
| 18665 | <tbody> |
| 18666 | |
| 18667 | |
| 18668 | |
| 18669 | |
| 18670 | |
| 18671 | |
| 18672 | |
| 18673 | |
| 18674 | |
| 18675 | |
| 18676 | |
| 18677 | |
| 18678 | <tr class="entry" id="static_android.sensor.info.activeArraySize"> |
| 18679 | <td class="entry_name |
| 18680 | " rowspan="5"> |
| 18681 | android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size |
| 18682 | </td> |
| 18683 | <td class="entry_type"> |
| 18684 | <span class="entry_type_name">int32</span> |
| 18685 | <span class="entry_type_container">x</span> |
| 18686 | |
| 18687 | <span class="entry_type_array"> |
| 18688 | 4 |
| 18689 | </span> |
| 18690 | <span class="entry_type_visibility"> [public as rectangle]</span> |
| 18691 | |
| 18692 | |
| 18693 | <span class="entry_type_hwlevel">[legacy] </span> |
| 18694 | |
| 18695 | |
| 18696 | <div class="entry_type_notes">Four ints defining the active pixel rectangle</div> |
| 18697 | |
| 18698 | |
| 18699 | </td> <!-- entry_type --> |
| 18700 | |
| 18701 | <td class="entry_description"> |
| 18702 | <p>The area of the image sensor which corresponds to active pixels after any geometric |
| 18703 | distortion correction has been applied.<wbr/></p> |
| 18704 | </td> |
| 18705 | |
| 18706 | <td class="entry_units"> |
| 18707 | Pixel coordinates on the image sensor |
| 18708 | </td> |
| 18709 | |
| 18710 | <td class="entry_range"> |
| 18711 | </td> |
| 18712 | |
| 18713 | <td class="entry_tags"> |
| 18714 | <ul class="entry_tags"> |
| 18715 | <li><a href="#tag_RAW">RAW</a></li> |
| 18716 | </ul> |
| 18717 | </td> |
| 18718 | |
| 18719 | </tr> |
| 18720 | <tr class="entries_header"> |
| 18721 | <th class="th_details" colspan="5">Details</th> |
| 18722 | </tr> |
| 18723 | <tr class="entry_cont"> |
| 18724 | <td class="entry_details" colspan="5"> |
| 18725 | <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/> |
| 18726 | the region that actually receives light from the scene) after any geometric correction |
| 18727 | has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the |
| 18728 | image output formats aside from the raw formats.<wbr/></p> |
| 18729 | <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of |
| 18730 | the full pixel array,<wbr/> and the size of the full pixel array is given by |
| 18731 | <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> |
| 18732 | <p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including |
| 18733 | <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 |
| 18734 | this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p> |
| 18735 | <p>The active array may be smaller than the full pixel array,<wbr/> since the full array may |
| 18736 | include black calibration pixels or other inactive regions,<wbr/> and geometric correction |
| 18737 | resulting in scaling or cropping may have been applied.<wbr/></p> |
| 18738 | </td> |
| 18739 | </tr> |
| 18740 | |
| 18741 | <tr class="entries_header"> |
| 18742 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 18743 | </tr> |
| 18744 | <tr class="entry_cont"> |
| 18745 | <td class="entry_details" colspan="5"> |
| 18746 | <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be |
| 18747 | >= <code>(0,<wbr/>0)</code>.<wbr/> |
| 18748 | The <code>(width,<wbr/> height)</code> must be <= <code><a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a></code>.<wbr/></p> |
| 18749 | </td> |
| 18750 | </tr> |
| 18751 | |
| 18752 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 18753 | <!-- end of entry --> |
| 18754 | |
| 18755 | |
| 18756 | <tr class="entry" id="static_android.sensor.info.sensitivityRange"> |
| 18757 | <td class="entry_name |
| 18758 | " rowspan="3"> |
| 18759 | android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range |
| 18760 | </td> |
| 18761 | <td class="entry_type"> |
| 18762 | <span class="entry_type_name">int32</span> |
| 18763 | <span class="entry_type_container">x</span> |
| 18764 | |
| 18765 | <span class="entry_type_array"> |
| 18766 | 2 |
| 18767 | </span> |
| 18768 | <span class="entry_type_visibility"> [public as rangeInt]</span> |
| 18769 | |
| 18770 | |
| 18771 | <span class="entry_type_hwlevel">[full] </span> |
| 18772 | |
| 18773 | |
| 18774 | <div class="entry_type_notes">Range of supported sensitivities</div> |
| 18775 | |
| 18776 | |
| 18777 | </td> <!-- entry_type --> |
| 18778 | |
| 18779 | <td class="entry_description"> |
| 18780 | <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this |
| 18781 | camera device.<wbr/></p> |
| 18782 | </td> |
| 18783 | |
| 18784 | <td class="entry_units"> |
| 18785 | </td> |
| 18786 | |
| 18787 | <td class="entry_range"> |
| 18788 | <p>Min <= 100,<wbr/> Max >= 800</p> |
| 18789 | </td> |
| 18790 | |
| 18791 | <td class="entry_tags"> |
| 18792 | <ul class="entry_tags"> |
| 18793 | <li><a href="#tag_BC">BC</a></li> |
| 18794 | <li><a href="#tag_V1">V1</a></li> |
| 18795 | </ul> |
| 18796 | </td> |
| 18797 | |
| 18798 | </tr> |
| 18799 | <tr class="entries_header"> |
| 18800 | <th class="th_details" colspan="5">Details</th> |
| 18801 | </tr> |
| 18802 | <tr class="entry_cont"> |
| 18803 | <td class="entry_details" colspan="5"> |
| 18804 | <p>The values are the standard ISO sensitivity values,<wbr/> |
| 18805 | as defined in ISO 12232:2006.<wbr/></p> |
| 18806 | </td> |
| 18807 | </tr> |
| 18808 | |
| 18809 | |
| 18810 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 18811 | <!-- end of entry --> |
| 18812 | |
| 18813 | |
| 18814 | <tr class="entry" id="static_android.sensor.info.colorFilterArrangement"> |
| 18815 | <td class="entry_name |
| 18816 | " rowspan="1"> |
| 18817 | android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement |
| 18818 | </td> |
| 18819 | <td class="entry_type"> |
| 18820 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 18821 | |
| 18822 | <span class="entry_type_visibility"> [public]</span> |
| 18823 | |
| 18824 | |
| 18825 | <span class="entry_type_hwlevel">[full] </span> |
| 18826 | |
| 18827 | |
| 18828 | |
| 18829 | <ul class="entry_type_enum"> |
| 18830 | <li> |
| 18831 | <span class="entry_type_enum_name">RGGB</span> |
| 18832 | </li> |
| 18833 | <li> |
| 18834 | <span class="entry_type_enum_name">GRBG</span> |
| 18835 | </li> |
| 18836 | <li> |
| 18837 | <span class="entry_type_enum_name">GBRG</span> |
| 18838 | </li> |
| 18839 | <li> |
| 18840 | <span class="entry_type_enum_name">BGGR</span> |
| 18841 | </li> |
| 18842 | <li> |
| 18843 | <span class="entry_type_enum_name">RGB</span> |
| 18844 | <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit |
| 18845 | values for each pixel,<wbr/> instead of just 1 16-bit value |
| 18846 | per pixel.<wbr/></p></span> |
| 18847 | </li> |
| 18848 | </ul> |
| 18849 | |
| 18850 | </td> <!-- entry_type --> |
| 18851 | |
| 18852 | <td class="entry_description"> |
| 18853 | <p>The arrangement of color filters on sensor; |
| 18854 | represents the colors in the top-left 2x2 section of |
| 18855 | the sensor,<wbr/> in reading order.<wbr/></p> |
| 18856 | </td> |
| 18857 | |
| 18858 | <td class="entry_units"> |
| 18859 | </td> |
| 18860 | |
| 18861 | <td class="entry_range"> |
| 18862 | </td> |
| 18863 | |
| 18864 | <td class="entry_tags"> |
| 18865 | <ul class="entry_tags"> |
| 18866 | <li><a href="#tag_RAW">RAW</a></li> |
| 18867 | </ul> |
| 18868 | </td> |
| 18869 | |
| 18870 | </tr> |
| 18871 | |
| 18872 | |
| 18873 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 18874 | <!-- end of entry --> |
| 18875 | |
| 18876 | |
| 18877 | <tr class="entry" id="static_android.sensor.info.exposureTimeRange"> |
| 18878 | <td class="entry_name |
| 18879 | " rowspan="3"> |
| 18880 | android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range |
| 18881 | </td> |
| 18882 | <td class="entry_type"> |
| 18883 | <span class="entry_type_name">int64</span> |
| 18884 | <span class="entry_type_container">x</span> |
| 18885 | |
| 18886 | <span class="entry_type_array"> |
| 18887 | 2 |
| 18888 | </span> |
| 18889 | <span class="entry_type_visibility"> [public as rangeLong]</span> |
| 18890 | |
| 18891 | |
| 18892 | <span class="entry_type_hwlevel">[full] </span> |
| 18893 | |
| 18894 | |
| 18895 | <div class="entry_type_notes">nanoseconds</div> |
| 18896 | |
| 18897 | |
| 18898 | </td> <!-- entry_type --> |
| 18899 | |
| 18900 | <td class="entry_description"> |
| 18901 | <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported |
| 18902 | by this camera device.<wbr/></p> |
| 18903 | </td> |
| 18904 | |
| 18905 | <td class="entry_units"> |
| 18906 | Nanoseconds |
| 18907 | </td> |
| 18908 | |
| 18909 | <td class="entry_range"> |
| 18910 | <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL |
| 18911 | capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> |
| 18912 | the maximum exposure time will be greater than 100ms.<wbr/></p> |
| 18913 | </td> |
| 18914 | |
| 18915 | <td class="entry_tags"> |
| 18916 | <ul class="entry_tags"> |
| 18917 | <li><a href="#tag_V1">V1</a></li> |
| 18918 | </ul> |
| 18919 | </td> |
| 18920 | |
| 18921 | </tr> |
| 18922 | |
| 18923 | <tr class="entries_header"> |
| 18924 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 18925 | </tr> |
| 18926 | <tr class="entry_cont"> |
| 18927 | <td class="entry_details" colspan="5"> |
| 18928 | <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> |
| 18929 | The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least |
| 18930 | 100ms.<wbr/></p> |
| 18931 | </td> |
| 18932 | </tr> |
| 18933 | |
| 18934 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 18935 | <!-- end of entry --> |
| 18936 | |
| 18937 | |
| 18938 | <tr class="entry" id="static_android.sensor.info.maxFrameDuration"> |
| 18939 | <td class="entry_name |
| 18940 | " rowspan="5"> |
| 18941 | android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration |
| 18942 | </td> |
| 18943 | <td class="entry_type"> |
| 18944 | <span class="entry_type_name">int64</span> |
| 18945 | |
| 18946 | <span class="entry_type_visibility"> [public]</span> |
| 18947 | |
| 18948 | |
| 18949 | <span class="entry_type_hwlevel">[full] </span> |
| 18950 | |
| 18951 | |
| 18952 | |
| 18953 | |
| 18954 | </td> <!-- entry_type --> |
| 18955 | |
| 18956 | <td class="entry_description"> |
| 18957 | <p>The maximum possible frame duration (minimum frame rate) for |
| 18958 | <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p> |
| 18959 | </td> |
| 18960 | |
| 18961 | <td class="entry_units"> |
| 18962 | Nanoseconds |
| 18963 | </td> |
| 18964 | |
| 18965 | <td class="entry_range"> |
| 18966 | <p>For FULL capability devices |
| 18967 | (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p> |
| 18968 | </td> |
| 18969 | |
| 18970 | <td class="entry_tags"> |
| 18971 | <ul class="entry_tags"> |
| 18972 | <li><a href="#tag_V1">V1</a></li> |
| 18973 | </ul> |
| 18974 | </td> |
| 18975 | |
| 18976 | </tr> |
| 18977 | <tr class="entries_header"> |
| 18978 | <th class="th_details" colspan="5">Details</th> |
| 18979 | </tr> |
| 18980 | <tr class="entry_cont"> |
| 18981 | <td class="entry_details" colspan="5"> |
| 18982 | <p>Attempting to use frame durations beyond the maximum will result in the frame |
| 18983 | duration being clipped to the maximum.<wbr/> See that control for a full definition of frame |
| 18984 | durations.<wbr/></p> |
| 18985 | <p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a> |
| 18986 | for the minimum frame duration values.<wbr/></p> |
| 18987 | </td> |
| 18988 | </tr> |
| 18989 | |
| 18990 | <tr class="entries_header"> |
| 18991 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 18992 | </tr> |
| 18993 | <tr class="entry_cont"> |
| 18994 | <td class="entry_details" colspan="5"> |
| 18995 | <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> |
| 18996 | The maximum of the range SHOULD be at least |
| 18997 | 1 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p> |
| 18998 | <p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or |
| 18999 | equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max |
| 19000 | value (since exposure time overrides frame duration).<wbr/></p> |
| 19001 | <p>Available minimum frame durations for JPEG must be no greater |
| 19002 | than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED |
| 19003 | minimum frame durations (for that respective size).<wbr/></p> |
| 19004 | <p>Since JPEG processing is considered offline and can take longer than |
| 19005 | a single uncompressed capture,<wbr/> refer to |
| 19006 | <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> |
| 19007 | for details about encoding this scenario.<wbr/></p> |
| 19008 | </td> |
| 19009 | </tr> |
| 19010 | |
| 19011 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 19012 | <!-- end of entry --> |
| 19013 | |
| 19014 | |
| 19015 | <tr class="entry" id="static_android.sensor.info.physicalSize"> |
| 19016 | <td class="entry_name |
| 19017 | " rowspan="5"> |
| 19018 | android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size |
| 19019 | </td> |
| 19020 | <td class="entry_type"> |
| 19021 | <span class="entry_type_name">float</span> |
| 19022 | <span class="entry_type_container">x</span> |
| 19023 | |
| 19024 | <span class="entry_type_array"> |
| 19025 | 2 |
| 19026 | </span> |
| 19027 | <span class="entry_type_visibility"> [public as sizeF]</span> |
| 19028 | |
| 19029 | |
| 19030 | <span class="entry_type_hwlevel">[legacy] </span> |
| 19031 | |
| 19032 | |
| 19033 | <div class="entry_type_notes">width x height</div> |
| 19034 | |
| 19035 | |
| 19036 | </td> <!-- entry_type --> |
| 19037 | |
| 19038 | <td class="entry_description"> |
| 19039 | <p>The physical dimensions of the full pixel |
| 19040 | array.<wbr/></p> |
| 19041 | </td> |
| 19042 | |
| 19043 | <td class="entry_units"> |
| 19044 | Millimeters |
| 19045 | </td> |
| 19046 | |
| 19047 | <td class="entry_range"> |
| 19048 | </td> |
| 19049 | |
| 19050 | <td class="entry_tags"> |
| 19051 | <ul class="entry_tags"> |
| 19052 | <li><a href="#tag_V1">V1</a></li> |
| 19053 | <li><a href="#tag_BC">BC</a></li> |
| 19054 | </ul> |
| 19055 | </td> |
| 19056 | |
| 19057 | </tr> |
| 19058 | <tr class="entries_header"> |
| 19059 | <th class="th_details" colspan="5">Details</th> |
| 19060 | </tr> |
| 19061 | <tr class="entry_cont"> |
| 19062 | <td class="entry_details" colspan="5"> |
| 19063 | <p>This is the physical size of the sensor pixel |
| 19064 | array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> |
| 19065 | </td> |
| 19066 | </tr> |
| 19067 | |
| 19068 | <tr class="entries_header"> |
| 19069 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 19070 | </tr> |
| 19071 | <tr class="entry_cont"> |
| 19072 | <td class="entry_details" colspan="5"> |
| 19073 | <p>Needed for FOV calculation for old API</p> |
| 19074 | </td> |
| 19075 | </tr> |
| 19076 | |
| 19077 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 19078 | <!-- end of entry --> |
| 19079 | |
| 19080 | |
| 19081 | <tr class="entry" id="static_android.sensor.info.pixelArraySize"> |
| 19082 | <td class="entry_name |
| 19083 | " rowspan="3"> |
| 19084 | android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size |
| 19085 | </td> |
| 19086 | <td class="entry_type"> |
| 19087 | <span class="entry_type_name">int32</span> |
| 19088 | <span class="entry_type_container">x</span> |
| 19089 | |
| 19090 | <span class="entry_type_array"> |
| 19091 | 2 |
| 19092 | </span> |
| 19093 | <span class="entry_type_visibility"> [public as size]</span> |
| 19094 | |
| 19095 | |
| 19096 | <span class="entry_type_hwlevel">[legacy] </span> |
| 19097 | |
| 19098 | |
| 19099 | |
| 19100 | |
| 19101 | </td> <!-- entry_type --> |
| 19102 | |
| 19103 | <td class="entry_description"> |
| 19104 | <p>Dimensions of the full pixel array,<wbr/> possibly |
| 19105 | including black calibration pixels.<wbr/></p> |
| 19106 | </td> |
| 19107 | |
| 19108 | <td class="entry_units"> |
| 19109 | Pixels |
| 19110 | </td> |
| 19111 | |
| 19112 | <td class="entry_range"> |
| 19113 | </td> |
| 19114 | |
| 19115 | <td class="entry_tags"> |
| 19116 | <ul class="entry_tags"> |
| 19117 | <li><a href="#tag_RAW">RAW</a></li> |
| 19118 | <li><a href="#tag_BC">BC</a></li> |
| 19119 | </ul> |
| 19120 | </td> |
| 19121 | |
| 19122 | </tr> |
| 19123 | <tr class="entries_header"> |
| 19124 | <th class="th_details" colspan="5">Details</th> |
| 19125 | </tr> |
| 19126 | <tr class="entry_cont"> |
| 19127 | <td class="entry_details" colspan="5"> |
| 19128 | <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers |
| 19129 | <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 |
| 19130 | the raw buffers produced by this sensor.<wbr/></p> |
| 19131 | <p>If a camera device supports raw sensor formats,<wbr/> either this or |
| 19132 | <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 |
| 19133 | output formats listed in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> (this depends on |
| 19134 | whether or not the image sensor returns buffers containing pixels that are not |
| 19135 | part of the active array region for blacklevel calibration or other purposes).<wbr/></p> |
| 19136 | <p>Some parts of the full pixel array may not receive light from the scene,<wbr/> |
| 19137 | 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 |
| 19138 | defines the rectangle of active pixels that will be included in processed image |
| 19139 | formats.<wbr/></p> |
| 19140 | </td> |
| 19141 | </tr> |
| 19142 | |
| 19143 | |
| 19144 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 19145 | <!-- end of entry --> |
| 19146 | |
| 19147 | |
| 19148 | <tr class="entry" id="static_android.sensor.info.whiteLevel"> |
| 19149 | <td class="entry_name |
| 19150 | " rowspan="5"> |
| 19151 | android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level |
| 19152 | </td> |
| 19153 | <td class="entry_type"> |
| 19154 | <span class="entry_type_name">int32</span> |
| 19155 | |
| 19156 | <span class="entry_type_visibility"> [public]</span> |
| 19157 | |
| 19158 | |
| 19159 | |
| 19160 | |
| 19161 | |
| 19162 | |
| 19163 | </td> <!-- entry_type --> |
| 19164 | |
| 19165 | <td class="entry_description"> |
| 19166 | <p>Maximum raw value output by sensor.<wbr/></p> |
| 19167 | </td> |
| 19168 | |
| 19169 | <td class="entry_units"> |
| 19170 | </td> |
| 19171 | |
| 19172 | <td class="entry_range"> |
| 19173 | <p>> 255 (8-bit output)</p> |
| 19174 | </td> |
| 19175 | |
| 19176 | <td class="entry_tags"> |
| 19177 | <ul class="entry_tags"> |
| 19178 | <li><a href="#tag_RAW">RAW</a></li> |
| 19179 | </ul> |
| 19180 | </td> |
| 19181 | |
| 19182 | </tr> |
| 19183 | <tr class="entries_header"> |
| 19184 | <th class="th_details" colspan="5">Details</th> |
| 19185 | </tr> |
| 19186 | <tr class="entry_cont"> |
| 19187 | <td class="entry_details" colspan="5"> |
| 19188 | <p>This specifies the fully-saturated encoding level for the raw |
| 19189 | sample values from the sensor.<wbr/> This is typically caused by the |
| 19190 | sensor becoming highly non-linear or clipping.<wbr/> The minimum for |
| 19191 | each channel is specified by the offset in the |
| 19192 | <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p> |
| 19193 | <p>The white level is typically determined either by sensor bit depth |
| 19194 | (8-14 bits is expected),<wbr/> or by the point where the sensor response |
| 19195 | becomes too non-linear to be useful.<wbr/> The default value for this is |
| 19196 | maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p> |
| 19197 | <p>The white level values of captured images may vary for different |
| 19198 | capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key |
| 19199 | represents a coarse approximation for such case.<wbr/> It is recommended |
| 19200 | to use <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> for captures when supported |
| 19201 | by the camera device,<wbr/> which provides more accurate white level values.<wbr/></p> |
| 19202 | </td> |
| 19203 | </tr> |
| 19204 | |
| 19205 | <tr class="entries_header"> |
| 19206 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 19207 | </tr> |
| 19208 | <tr class="entry_cont"> |
| 19209 | <td class="entry_details" colspan="5"> |
| 19210 | <p>The full bit depth of the sensor must be available in the raw data,<wbr/> |
| 19211 | so the value for linear sensors should not be significantly lower |
| 19212 | than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p> |
| 19213 | </td> |
| 19214 | </tr> |
| 19215 | |
| 19216 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 19217 | <!-- end of entry --> |
| 19218 | |
| 19219 | |
| 19220 | <tr class="entry" id="static_android.sensor.info.timestampSource"> |
| 19221 | <td class="entry_name |
| 19222 | " rowspan="5"> |
| 19223 | android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source |
| 19224 | </td> |
| 19225 | <td class="entry_type"> |
| 19226 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 19227 | |
| 19228 | <span class="entry_type_visibility"> [public]</span> |
| 19229 | |
| 19230 | |
| 19231 | <span class="entry_type_hwlevel">[legacy] </span> |
| 19232 | |
| 19233 | |
| 19234 | |
| 19235 | <ul class="entry_type_enum"> |
| 19236 | <li> |
| 19237 | <span class="entry_type_enum_name">UNKNOWN</span> |
| 19238 | <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/> |
| 19239 | but can not be compared to timestamps from other subsystems |
| 19240 | (e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different |
| 19241 | camera devices in the same system.<wbr/> Timestamps between streams and results for |
| 19242 | a single camera instance are comparable,<wbr/> and the timestamps for all buffers |
| 19243 | and the result metadata generated by a single capture are identical.<wbr/></p></span> |
| 19244 | </li> |
| 19245 | <li> |
| 19246 | <span class="entry_type_enum_name">REALTIME</span> |
| 19247 | <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 |
| 19248 | <a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/> |
| 19249 | and they can be compared to other timestamps using that base.<wbr/></p></span> |
| 19250 | </li> |
| 19251 | </ul> |
| 19252 | |
| 19253 | </td> <!-- entry_type --> |
| 19254 | |
| 19255 | <td class="entry_description"> |
| 19256 | <p>The time base source for sensor capture start timestamps.<wbr/></p> |
| 19257 | </td> |
| 19258 | |
| 19259 | <td class="entry_units"> |
| 19260 | </td> |
| 19261 | |
| 19262 | <td class="entry_range"> |
| 19263 | </td> |
| 19264 | |
| 19265 | <td class="entry_tags"> |
| 19266 | <ul class="entry_tags"> |
| 19267 | <li><a href="#tag_V1">V1</a></li> |
| 19268 | </ul> |
| 19269 | </td> |
| 19270 | |
| 19271 | </tr> |
| 19272 | <tr class="entries_header"> |
| 19273 | <th class="th_details" colspan="5">Details</th> |
| 19274 | </tr> |
| 19275 | <tr class="entry_cont"> |
| 19276 | <td class="entry_details" colspan="5"> |
| 19277 | <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but |
| 19278 | may not based on a time source that can be compared to other system time sources.<wbr/></p> |
| 19279 | <p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they |
| 19280 | can be compared against other system time sources/<wbr/>timestamps.<wbr/></p> |
| 19281 | </td> |
| 19282 | </tr> |
| 19283 | |
| 19284 | <tr class="entries_header"> |
| 19285 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 19286 | </tr> |
| 19287 | <tr class="entry_cont"> |
| 19288 | <td class="entry_details" colspan="5"> |
| 19289 | <p>For camera devices implement UNKNOWN,<wbr/> the camera framework expects that the timestamp |
| 19290 | source to be SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC.<wbr/> For camera devices implement REALTIME,<wbr/> the camera |
| 19291 | framework expects that the timestamp source to be SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> See |
| 19292 | system/<wbr/>core/<wbr/>include/<wbr/>utils/<wbr/>Timers.<wbr/>h for the definition of SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC and |
| 19293 | SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> Note that HAL must follow above expectation; otherwise video |
| 19294 | recording might suffer unexpected behavior.<wbr/></p> |
| 19295 | <p>Also,<wbr/> camera devices implements REALTIME must pass the ITS sensor fusion test which |
| 19296 | tests the alignment between camera timestamps and gyro sensor timestamps.<wbr/></p> |
| 19297 | </td> |
| 19298 | </tr> |
| 19299 | |
| 19300 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 19301 | <!-- end of entry --> |
| 19302 | |
| 19303 | |
| 19304 | <tr class="entry" id="static_android.sensor.info.lensShadingApplied"> |
| 19305 | <td class="entry_name |
| 19306 | " rowspan="3"> |
| 19307 | android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied |
| 19308 | </td> |
| 19309 | <td class="entry_type"> |
| 19310 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 19311 | |
| 19312 | <span class="entry_type_visibility"> [public as boolean]</span> |
| 19313 | |
| 19314 | |
| 19315 | |
| 19316 | |
| 19317 | |
| 19318 | <ul class="entry_type_enum"> |
| 19319 | <li> |
| 19320 | <span class="entry_type_enum_name">FALSE</span> |
| 19321 | </li> |
| 19322 | <li> |
| 19323 | <span class="entry_type_enum_name">TRUE</span> |
| 19324 | </li> |
| 19325 | </ul> |
| 19326 | |
| 19327 | </td> <!-- entry_type --> |
| 19328 | |
| 19329 | <td class="entry_description"> |
| 19330 | <p>Whether the RAW images output from this camera device are subject to |
| 19331 | lens shading correction.<wbr/></p> |
| 19332 | </td> |
| 19333 | |
| 19334 | <td class="entry_units"> |
| 19335 | </td> |
| 19336 | |
| 19337 | <td class="entry_range"> |
| 19338 | </td> |
| 19339 | |
| 19340 | <td class="entry_tags"> |
| 19341 | </td> |
| 19342 | |
| 19343 | </tr> |
| 19344 | <tr class="entries_header"> |
| 19345 | <th class="th_details" colspan="5">Details</th> |
| 19346 | </tr> |
| 19347 | <tr class="entry_cont"> |
| 19348 | <td class="entry_details" colspan="5"> |
| 19349 | <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will |
| 19350 | have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will |
| 19351 | not be adjusted for lens shading correction.<wbr/> |
| 19352 | 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> |
| 19353 | <p>This key will be <code>null</code> for all devices do not report this information.<wbr/> |
| 19354 | Devices with RAW capability will always report this information in this key.<wbr/></p> |
| 19355 | </td> |
| 19356 | </tr> |
| 19357 | |
| 19358 | |
| 19359 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 19360 | <!-- end of entry --> |
| 19361 | |
| 19362 | |
| 19363 | <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize"> |
| 19364 | <td class="entry_name |
| 19365 | " rowspan="5"> |
| 19366 | android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size |
| 19367 | </td> |
| 19368 | <td class="entry_type"> |
| 19369 | <span class="entry_type_name">int32</span> |
| 19370 | <span class="entry_type_container">x</span> |
| 19371 | |
| 19372 | <span class="entry_type_array"> |
| 19373 | 4 |
| 19374 | </span> |
| 19375 | <span class="entry_type_visibility"> [public as rectangle]</span> |
| 19376 | |
| 19377 | |
| 19378 | <span class="entry_type_hwlevel">[legacy] </span> |
| 19379 | |
| 19380 | |
| 19381 | <div class="entry_type_notes">Four ints defining the active pixel rectangle</div> |
| 19382 | |
| 19383 | |
| 19384 | </td> <!-- entry_type --> |
| 19385 | |
| 19386 | <td class="entry_description"> |
| 19387 | <p>The area of the image sensor which corresponds to active pixels prior to the |
| 19388 | application of any geometric distortion correction.<wbr/></p> |
| 19389 | </td> |
| 19390 | |
| 19391 | <td class="entry_units"> |
| 19392 | Pixel coordinates on the image sensor |
| 19393 | </td> |
| 19394 | |
| 19395 | <td class="entry_range"> |
| 19396 | </td> |
| 19397 | |
| 19398 | <td class="entry_tags"> |
| 19399 | <ul class="entry_tags"> |
| 19400 | <li><a href="#tag_RAW">RAW</a></li> |
| 19401 | </ul> |
| 19402 | </td> |
| 19403 | |
| 19404 | </tr> |
| 19405 | <tr class="entries_header"> |
| 19406 | <th class="th_details" colspan="5">Details</th> |
| 19407 | </tr> |
| 19408 | <tr class="entry_cont"> |
| 19409 | <td class="entry_details" colspan="5"> |
| 19410 | <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/> |
| 19411 | the region that actually receives light from the scene) before any geometric correction |
| 19412 | has been applied,<wbr/> and should be treated as the active region rectangle for any of the |
| 19413 | raw formats.<wbr/> All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading |
| 19414 | correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as |
| 19415 | the origin,<wbr/> (0,<wbr/>0).<wbr/></p> |
| 19416 | <p>The size of this region determines the maximum field of view and the maximum number of |
| 19417 | pixels that an image from this sensor can contain,<wbr/> prior to the application of |
| 19418 | geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a |
| 19419 | 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> |
| 19420 | field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image |
| 19421 | can be calculated by applying the geometric distortion correction fields to this |
| 19422 | 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> |
| 19423 | <p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the |
| 19424 | 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/> |
| 19425 | (x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions give in |
| 19426 | <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p> |
| 19427 | <ol> |
| 19428 | <li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in |
| 19429 | <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 |
| 19430 | to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li> |
| 19431 | <li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/> |
| 19432 | (x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw |
| 19433 | buffers is defined relative to the top,<wbr/> left of the |
| 19434 | <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> |
| 19435 | <li>If the resulting corrected pixel coordinate is within the region given in |
| 19436 | <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 |
| 19437 | processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/> |
| 19438 | when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li> |
| 19439 | </ol> |
| 19440 | <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> |
| 19441 | 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/> |
| 19442 | <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 |
| 19443 | correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in |
| 19444 | pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer |
| 19445 | 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) |
| 19446 | relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in |
| 19447 | <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> |
| 19448 | <p>The currently supported fields that correct for geometric distortion are:</p> |
| 19449 | <ol> |
| 19450 | <li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>.<wbr/></li> |
| 19451 | </ol> |
| 19452 | <p>If all of the geometric distortion fields are no-ops,<wbr/> this rectangle will be the same |
| 19453 | as the post-distortion-corrected rectangle given in |
| 19454 | <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> |
| 19455 | <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of |
| 19456 | the full pixel array,<wbr/> and the size of the full pixel array is given by |
| 19457 | <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> |
| 19458 | <p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the |
| 19459 | full array may include black calibration pixels or other inactive regions.<wbr/></p> |
| 19460 | </td> |
| 19461 | </tr> |
| 19462 | |
| 19463 | <tr class="entries_header"> |
| 19464 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 19465 | </tr> |
| 19466 | <tr class="entry_cont"> |
| 19467 | <td class="entry_details" colspan="5"> |
| 19468 | <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be |
| 19469 | >= <code>(0,<wbr/>0)</code>.<wbr/> |
| 19470 | The <code>(width,<wbr/> height)</code> must be <= <code><a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a></code>.<wbr/></p> |
| 19471 | <p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is |
| 19472 | the same as the post-correction active array region given in |
| 19473 | <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> |
| 19474 | </td> |
| 19475 | </tr> |
| 19476 | |
| 19477 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 19478 | <!-- end of entry --> |
| 19479 | |
| 19480 | |
| 19481 | |
| 19482 | |
| 19483 | |
| 19484 | <tr class="entry" id="static_android.sensor.referenceIlluminant1"> |
| 19485 | <td class="entry_name |
| 19486 | " rowspan="5"> |
| 19487 | android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1 |
| 19488 | </td> |
| 19489 | <td class="entry_type"> |
| 19490 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 19491 | |
| 19492 | <span class="entry_type_visibility"> [public]</span> |
| 19493 | |
| 19494 | |
| 19495 | |
| 19496 | |
| 19497 | |
| 19498 | <ul class="entry_type_enum"> |
| 19499 | <li> |
| 19500 | <span class="entry_type_enum_name">DAYLIGHT</span> |
| 19501 | <span class="entry_type_enum_value">1</span> |
| 19502 | </li> |
| 19503 | <li> |
| 19504 | <span class="entry_type_enum_name">FLUORESCENT</span> |
| 19505 | <span class="entry_type_enum_value">2</span> |
| 19506 | </li> |
| 19507 | <li> |
| 19508 | <span class="entry_type_enum_name">TUNGSTEN</span> |
| 19509 | <span class="entry_type_enum_value">3</span> |
| 19510 | <span class="entry_type_enum_notes"><p>Incandescent light</p></span> |
| 19511 | </li> |
| 19512 | <li> |
| 19513 | <span class="entry_type_enum_name">FLASH</span> |
| 19514 | <span class="entry_type_enum_value">4</span> |
| 19515 | </li> |
| 19516 | <li> |
| 19517 | <span class="entry_type_enum_name">FINE_WEATHER</span> |
| 19518 | <span class="entry_type_enum_value">9</span> |
| 19519 | </li> |
| 19520 | <li> |
| 19521 | <span class="entry_type_enum_name">CLOUDY_WEATHER</span> |
| 19522 | <span class="entry_type_enum_value">10</span> |
| 19523 | </li> |
| 19524 | <li> |
| 19525 | <span class="entry_type_enum_name">SHADE</span> |
| 19526 | <span class="entry_type_enum_value">11</span> |
| 19527 | </li> |
| 19528 | <li> |
| 19529 | <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT</span> |
| 19530 | <span class="entry_type_enum_value">12</span> |
| 19531 | <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span> |
| 19532 | </li> |
| 19533 | <li> |
| 19534 | <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT</span> |
| 19535 | <span class="entry_type_enum_value">13</span> |
| 19536 | <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span> |
| 19537 | </li> |
| 19538 | <li> |
| 19539 | <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT</span> |
| 19540 | <span class="entry_type_enum_value">14</span> |
| 19541 | <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span> |
| 19542 | </li> |
| 19543 | <li> |
| 19544 | <span class="entry_type_enum_name">WHITE_FLUORESCENT</span> |
| 19545 | <span class="entry_type_enum_value">15</span> |
| 19546 | <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span> |
| 19547 | </li> |
| 19548 | <li> |
| 19549 | <span class="entry_type_enum_name">STANDARD_A</span> |
| 19550 | <span class="entry_type_enum_value">17</span> |
| 19551 | </li> |
| 19552 | <li> |
| 19553 | <span class="entry_type_enum_name">STANDARD_B</span> |
| 19554 | <span class="entry_type_enum_value">18</span> |
| 19555 | </li> |
| 19556 | <li> |
| 19557 | <span class="entry_type_enum_name">STANDARD_C</span> |
| 19558 | <span class="entry_type_enum_value">19</span> |
| 19559 | </li> |
| 19560 | <li> |
| 19561 | <span class="entry_type_enum_name">D55</span> |
| 19562 | <span class="entry_type_enum_value">20</span> |
| 19563 | </li> |
| 19564 | <li> |
| 19565 | <span class="entry_type_enum_name">D65</span> |
| 19566 | <span class="entry_type_enum_value">21</span> |
| 19567 | </li> |
| 19568 | <li> |
| 19569 | <span class="entry_type_enum_name">D75</span> |
| 19570 | <span class="entry_type_enum_value">22</span> |
| 19571 | </li> |
| 19572 | <li> |
| 19573 | <span class="entry_type_enum_name">D50</span> |
| 19574 | <span class="entry_type_enum_value">23</span> |
| 19575 | </li> |
| 19576 | <li> |
| 19577 | <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN</span> |
| 19578 | <span class="entry_type_enum_value">24</span> |
| 19579 | </li> |
| 19580 | </ul> |
| 19581 | |
| 19582 | </td> <!-- entry_type --> |
| 19583 | |
| 19584 | <td class="entry_description"> |
| 19585 | <p>The standard reference illuminant used as the scene light source when |
| 19586 | calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/> |
| 19587 | <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and |
| 19588 | <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p> |
| 19589 | </td> |
| 19590 | |
| 19591 | <td class="entry_units"> |
| 19592 | </td> |
| 19593 | |
| 19594 | <td class="entry_range"> |
| 19595 | </td> |
| 19596 | |
| 19597 | <td class="entry_tags"> |
| 19598 | <ul class="entry_tags"> |
| 19599 | <li><a href="#tag_RAW">RAW</a></li> |
| 19600 | </ul> |
| 19601 | </td> |
| 19602 | |
| 19603 | </tr> |
| 19604 | <tr class="entries_header"> |
| 19605 | <th class="th_details" colspan="5">Details</th> |
| 19606 | </tr> |
| 19607 | <tr class="entry_cont"> |
| 19608 | <td class="entry_details" colspan="5"> |
| 19609 | <p>The values in this key correspond to the values defined for the |
| 19610 | EXIF LightSource tag.<wbr/> These illuminants are standard light sources |
| 19611 | that are often used calibrating camera devices.<wbr/></p> |
| 19612 | <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/> |
| 19613 | <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and |
| 19614 | <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p> |
| 19615 | <p>Some devices may choose to provide a second set of calibration |
| 19616 | information for improved quality,<wbr/> including |
| 19617 | <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p> |
| 19618 | </td> |
| 19619 | </tr> |
| 19620 | |
| 19621 | <tr class="entries_header"> |
| 19622 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 19623 | </tr> |
| 19624 | <tr class="entry_cont"> |
| 19625 | <td class="entry_details" colspan="5"> |
| 19626 | <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>) |
| 19627 | and corresponding matrices must be present to support the RAW capability |
| 19628 | and DNG output.<wbr/></p> |
| 19629 | <p>When producing raw images with a color profile that has only been |
| 19630 | calibrated against a single light source,<wbr/> it is valid to omit |
| 19631 | <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the |
| 19632 | <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/> |
| 19633 | and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p> |
| 19634 | <p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be |
| 19635 | chosen so that it is representative of typical scene lighting.<wbr/> In |
| 19636 | general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p> |
| 19637 | <p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and |
| 19638 | <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be |
| 19639 | chosen to represent the typical range of scene lighting conditions.<wbr/> |
| 19640 | In general,<wbr/> low color temperature illuminant such as Standard-A will |
| 19641 | be chosen for the first reference illuminant and a higher color |
| 19642 | temperature illuminant such as D65 will be chosen for the second |
| 19643 | reference illuminant.<wbr/></p> |
| 19644 | </td> |
| 19645 | </tr> |
| 19646 | |
| 19647 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 19648 | <!-- end of entry --> |
| 19649 | |
| 19650 | |
| 19651 | <tr class="entry" id="static_android.sensor.referenceIlluminant2"> |
| 19652 | <td class="entry_name |
| 19653 | " rowspan="3"> |
| 19654 | android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2 |
| 19655 | </td> |
| 19656 | <td class="entry_type"> |
| 19657 | <span class="entry_type_name">byte</span> |
| 19658 | |
| 19659 | <span class="entry_type_visibility"> [public]</span> |
| 19660 | |
| 19661 | |
| 19662 | |
| 19663 | |
| 19664 | |
| 19665 | |
| 19666 | </td> <!-- entry_type --> |
| 19667 | |
| 19668 | <td class="entry_description"> |
| 19669 | <p>The standard reference illuminant used as the scene light source when |
| 19670 | calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/> |
| 19671 | <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and |
| 19672 | <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p> |
| 19673 | </td> |
| 19674 | |
| 19675 | <td class="entry_units"> |
| 19676 | </td> |
| 19677 | |
| 19678 | <td class="entry_range"> |
| 19679 | <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p> |
| 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>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p> |
| 19695 | <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/> |
| 19696 | <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and |
| 19697 | <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p> |
| 19698 | </td> |
| 19699 | </tr> |
| 19700 | |
| 19701 | |
| 19702 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 19703 | <!-- end of entry --> |
| 19704 | |
| 19705 | |
| 19706 | <tr class="entry" id="static_android.sensor.calibrationTransform1"> |
| 19707 | <td class="entry_name |
| 19708 | " rowspan="3"> |
| 19709 | android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1 |
| 19710 | </td> |
| 19711 | <td class="entry_type"> |
| 19712 | <span class="entry_type_name">rational</span> |
| 19713 | <span class="entry_type_container">x</span> |
| 19714 | |
| 19715 | <span class="entry_type_array"> |
| 19716 | 3 x 3 |
| 19717 | </span> |
| 19718 | <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> |
| 19719 | |
| 19720 | |
| 19721 | |
| 19722 | |
| 19723 | <div class="entry_type_notes">3x3 matrix in row-major-order</div> |
| 19724 | |
| 19725 | |
| 19726 | </td> <!-- entry_type --> |
| 19727 | |
| 19728 | <td class="entry_description"> |
| 19729 | <p>A per-device calibration transform matrix that maps from the |
| 19730 | reference sensor colorspace to the actual device sensor colorspace.<wbr/></p> |
| 19731 | </td> |
| 19732 | |
| 19733 | <td class="entry_units"> |
| 19734 | </td> |
| 19735 | |
| 19736 | <td class="entry_range"> |
| 19737 | </td> |
| 19738 | |
| 19739 | <td class="entry_tags"> |
| 19740 | <ul class="entry_tags"> |
| 19741 | <li><a href="#tag_RAW">RAW</a></li> |
| 19742 | </ul> |
| 19743 | </td> |
| 19744 | |
| 19745 | </tr> |
| 19746 | <tr class="entries_header"> |
| 19747 | <th class="th_details" colspan="5">Details</th> |
| 19748 | </tr> |
| 19749 | <tr class="entry_cont"> |
| 19750 | <td class="entry_details" colspan="5"> |
| 19751 | <p>This matrix is used to correct for per-device variations in the |
| 19752 | sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p> |
| 19753 | <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and |
| 19754 | contains a per-device calibration transform that maps colors |
| 19755 | from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module" |
| 19756 | colorspace) into this camera device's native sensor color |
| 19757 | space under the first reference illuminant |
| 19758 | (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p> |
| 19759 | </td> |
| 19760 | </tr> |
| 19761 | |
| 19762 | |
| 19763 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 19764 | <!-- end of entry --> |
| 19765 | |
| 19766 | |
| 19767 | <tr class="entry" id="static_android.sensor.calibrationTransform2"> |
| 19768 | <td class="entry_name |
| 19769 | " rowspan="3"> |
| 19770 | android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2 |
| 19771 | </td> |
| 19772 | <td class="entry_type"> |
| 19773 | <span class="entry_type_name">rational</span> |
| 19774 | <span class="entry_type_container">x</span> |
| 19775 | |
| 19776 | <span class="entry_type_array"> |
| 19777 | 3 x 3 |
| 19778 | </span> |
| 19779 | <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> |
| 19780 | |
| 19781 | |
| 19782 | |
| 19783 | |
| 19784 | <div class="entry_type_notes">3x3 matrix in row-major-order</div> |
| 19785 | |
| 19786 | |
| 19787 | </td> <!-- entry_type --> |
| 19788 | |
| 19789 | <td class="entry_description"> |
| 19790 | <p>A per-device calibration transform matrix that maps from the |
| 19791 | reference sensor colorspace to the actual device sensor colorspace |
| 19792 | (this is the colorspace of the raw buffer data).<wbr/></p> |
| 19793 | </td> |
| 19794 | |
| 19795 | <td class="entry_units"> |
| 19796 | </td> |
| 19797 | |
| 19798 | <td class="entry_range"> |
| 19799 | </td> |
| 19800 | |
| 19801 | <td class="entry_tags"> |
| 19802 | <ul class="entry_tags"> |
| 19803 | <li><a href="#tag_RAW">RAW</a></li> |
| 19804 | </ul> |
| 19805 | </td> |
| 19806 | |
| 19807 | </tr> |
| 19808 | <tr class="entries_header"> |
| 19809 | <th class="th_details" colspan="5">Details</th> |
| 19810 | </tr> |
| 19811 | <tr class="entry_cont"> |
| 19812 | <td class="entry_details" colspan="5"> |
| 19813 | <p>This matrix is used to correct for per-device variations in the |
| 19814 | sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p> |
| 19815 | <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and |
| 19816 | contains a per-device calibration transform that maps colors |
| 19817 | from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module" |
| 19818 | colorspace) into this camera device's native sensor color |
| 19819 | space under the second reference illuminant |
| 19820 | (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p> |
| 19821 | <p>This matrix will only be present if the second reference |
| 19822 | illuminant is present.<wbr/></p> |
| 19823 | </td> |
| 19824 | </tr> |
| 19825 | |
| 19826 | |
| 19827 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 19828 | <!-- end of entry --> |
| 19829 | |
| 19830 | |
| 19831 | <tr class="entry" id="static_android.sensor.colorTransform1"> |
| 19832 | <td class="entry_name |
| 19833 | " rowspan="3"> |
| 19834 | android.<wbr/>sensor.<wbr/>color<wbr/>Transform1 |
| 19835 | </td> |
| 19836 | <td class="entry_type"> |
| 19837 | <span class="entry_type_name">rational</span> |
| 19838 | <span class="entry_type_container">x</span> |
| 19839 | |
| 19840 | <span class="entry_type_array"> |
| 19841 | 3 x 3 |
| 19842 | </span> |
| 19843 | <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> |
| 19844 | |
| 19845 | |
| 19846 | |
| 19847 | |
| 19848 | <div class="entry_type_notes">3x3 matrix in row-major-order</div> |
| 19849 | |
| 19850 | |
| 19851 | </td> <!-- entry_type --> |
| 19852 | |
| 19853 | <td class="entry_description"> |
| 19854 | <p>A matrix that transforms color values from CIE XYZ color space to |
| 19855 | reference sensor color space.<wbr/></p> |
| 19856 | </td> |
| 19857 | |
| 19858 | <td class="entry_units"> |
| 19859 | </td> |
| 19860 | |
| 19861 | <td class="entry_range"> |
| 19862 | </td> |
| 19863 | |
| 19864 | <td class="entry_tags"> |
| 19865 | <ul class="entry_tags"> |
| 19866 | <li><a href="#tag_RAW">RAW</a></li> |
| 19867 | </ul> |
| 19868 | </td> |
| 19869 | |
| 19870 | </tr> |
| 19871 | <tr class="entries_header"> |
| 19872 | <th class="th_details" colspan="5">Details</th> |
| 19873 | </tr> |
| 19874 | <tr class="entry_cont"> |
| 19875 | <td class="entry_details" colspan="5"> |
| 19876 | <p>This matrix is used to convert from the standard CIE XYZ color |
| 19877 | space to the reference sensor colorspace,<wbr/> and is used when processing |
| 19878 | raw buffer data.<wbr/></p> |
| 19879 | <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and |
| 19880 | contains a color transform matrix that maps colors from the CIE |
| 19881 | XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the |
| 19882 | "golden module" colorspace) under the first reference illuminant |
| 19883 | (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p> |
| 19884 | <p>The white points chosen in both the reference sensor color space |
| 19885 | and the CIE XYZ colorspace when calculating this transform will |
| 19886 | match the standard white point for the first reference illuminant |
| 19887 | (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p> |
| 19888 | </td> |
| 19889 | </tr> |
| 19890 | |
| 19891 | |
| 19892 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 19893 | <!-- end of entry --> |
| 19894 | |
| 19895 | |
| 19896 | <tr class="entry" id="static_android.sensor.colorTransform2"> |
| 19897 | <td class="entry_name |
| 19898 | " rowspan="3"> |
| 19899 | android.<wbr/>sensor.<wbr/>color<wbr/>Transform2 |
| 19900 | </td> |
| 19901 | <td class="entry_type"> |
| 19902 | <span class="entry_type_name">rational</span> |
| 19903 | <span class="entry_type_container">x</span> |
| 19904 | |
| 19905 | <span class="entry_type_array"> |
| 19906 | 3 x 3 |
| 19907 | </span> |
| 19908 | <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> |
| 19909 | |
| 19910 | |
| 19911 | |
| 19912 | |
| 19913 | <div class="entry_type_notes">3x3 matrix in row-major-order</div> |
| 19914 | |
| 19915 | |
| 19916 | </td> <!-- entry_type --> |
| 19917 | |
| 19918 | <td class="entry_description"> |
| 19919 | <p>A matrix that transforms color values from CIE XYZ color space to |
| 19920 | reference sensor color space.<wbr/></p> |
| 19921 | </td> |
| 19922 | |
| 19923 | <td class="entry_units"> |
| 19924 | </td> |
| 19925 | |
| 19926 | <td class="entry_range"> |
| 19927 | </td> |
| 19928 | |
| 19929 | <td class="entry_tags"> |
| 19930 | <ul class="entry_tags"> |
| 19931 | <li><a href="#tag_RAW">RAW</a></li> |
| 19932 | </ul> |
| 19933 | </td> |
| 19934 | |
| 19935 | </tr> |
| 19936 | <tr class="entries_header"> |
| 19937 | <th class="th_details" colspan="5">Details</th> |
| 19938 | </tr> |
| 19939 | <tr class="entry_cont"> |
| 19940 | <td class="entry_details" colspan="5"> |
| 19941 | <p>This matrix is used to convert from the standard CIE XYZ color |
| 19942 | space to the reference sensor colorspace,<wbr/> and is used when processing |
| 19943 | raw buffer data.<wbr/></p> |
| 19944 | <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and |
| 19945 | contains a color transform matrix that maps colors from the CIE |
| 19946 | XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the |
| 19947 | "golden module" colorspace) under the second reference illuminant |
| 19948 | (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p> |
| 19949 | <p>The white points chosen in both the reference sensor color space |
| 19950 | and the CIE XYZ colorspace when calculating this transform will |
| 19951 | match the standard white point for the second reference illuminant |
| 19952 | (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p> |
| 19953 | <p>This matrix will only be present if the second reference |
| 19954 | illuminant is present.<wbr/></p> |
| 19955 | </td> |
| 19956 | </tr> |
| 19957 | |
| 19958 | |
| 19959 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 19960 | <!-- end of entry --> |
| 19961 | |
| 19962 | |
| 19963 | <tr class="entry" id="static_android.sensor.forwardMatrix1"> |
| 19964 | <td class="entry_name |
| 19965 | " rowspan="3"> |
| 19966 | android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1 |
| 19967 | </td> |
| 19968 | <td class="entry_type"> |
| 19969 | <span class="entry_type_name">rational</span> |
| 19970 | <span class="entry_type_container">x</span> |
| 19971 | |
| 19972 | <span class="entry_type_array"> |
| 19973 | 3 x 3 |
| 19974 | </span> |
| 19975 | <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> |
| 19976 | |
| 19977 | |
| 19978 | |
| 19979 | |
| 19980 | <div class="entry_type_notes">3x3 matrix in row-major-order</div> |
| 19981 | |
| 19982 | |
| 19983 | </td> <!-- entry_type --> |
| 19984 | |
| 19985 | <td class="entry_description"> |
| 19986 | <p>A matrix that transforms white balanced camera colors from the reference |
| 19987 | sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p> |
| 19988 | </td> |
| 19989 | |
| 19990 | <td class="entry_units"> |
| 19991 | </td> |
| 19992 | |
| 19993 | <td class="entry_range"> |
| 19994 | </td> |
| 19995 | |
| 19996 | <td class="entry_tags"> |
| 19997 | <ul class="entry_tags"> |
| 19998 | <li><a href="#tag_RAW">RAW</a></li> |
| 19999 | </ul> |
| 20000 | </td> |
| 20001 | |
| 20002 | </tr> |
| 20003 | <tr class="entries_header"> |
| 20004 | <th class="th_details" colspan="5">Details</th> |
| 20005 | </tr> |
| 20006 | <tr class="entry_cont"> |
| 20007 | <td class="entry_details" colspan="5"> |
| 20008 | <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and |
| 20009 | is used when processing raw buffer data.<wbr/></p> |
| 20010 | <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains |
| 20011 | a color transform matrix that maps white balanced colors from the |
| 20012 | reference sensor color space to the CIE XYZ color space with a D50 white |
| 20013 | point.<wbr/></p> |
| 20014 | <p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>) |
| 20015 | this matrix is chosen so that the standard white point for this reference |
| 20016 | illuminant in the reference sensor colorspace is mapped to D50 in the |
| 20017 | CIE XYZ colorspace.<wbr/></p> |
| 20018 | </td> |
| 20019 | </tr> |
| 20020 | |
| 20021 | |
| 20022 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 20023 | <!-- end of entry --> |
| 20024 | |
| 20025 | |
| 20026 | <tr class="entry" id="static_android.sensor.forwardMatrix2"> |
| 20027 | <td class="entry_name |
| 20028 | " rowspan="3"> |
| 20029 | android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2 |
| 20030 | </td> |
| 20031 | <td class="entry_type"> |
| 20032 | <span class="entry_type_name">rational</span> |
| 20033 | <span class="entry_type_container">x</span> |
| 20034 | |
| 20035 | <span class="entry_type_array"> |
| 20036 | 3 x 3 |
| 20037 | </span> |
| 20038 | <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> |
| 20039 | |
| 20040 | |
| 20041 | |
| 20042 | |
| 20043 | <div class="entry_type_notes">3x3 matrix in row-major-order</div> |
| 20044 | |
| 20045 | |
| 20046 | </td> <!-- entry_type --> |
| 20047 | |
| 20048 | <td class="entry_description"> |
| 20049 | <p>A matrix that transforms white balanced camera colors from the reference |
| 20050 | sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p> |
| 20051 | </td> |
| 20052 | |
| 20053 | <td class="entry_units"> |
| 20054 | </td> |
| 20055 | |
| 20056 | <td class="entry_range"> |
| 20057 | </td> |
| 20058 | |
| 20059 | <td class="entry_tags"> |
| 20060 | <ul class="entry_tags"> |
| 20061 | <li><a href="#tag_RAW">RAW</a></li> |
| 20062 | </ul> |
| 20063 | </td> |
| 20064 | |
| 20065 | </tr> |
| 20066 | <tr class="entries_header"> |
| 20067 | <th class="th_details" colspan="5">Details</th> |
| 20068 | </tr> |
| 20069 | <tr class="entry_cont"> |
| 20070 | <td class="entry_details" colspan="5"> |
| 20071 | <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and |
| 20072 | is used when processing raw buffer data.<wbr/></p> |
| 20073 | <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains |
| 20074 | a color transform matrix that maps white balanced colors from the |
| 20075 | reference sensor color space to the CIE XYZ color space with a D50 white |
| 20076 | point.<wbr/></p> |
| 20077 | <p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>) |
| 20078 | this matrix is chosen so that the standard white point for this reference |
| 20079 | illuminant in the reference sensor colorspace is mapped to D50 in the |
| 20080 | CIE XYZ colorspace.<wbr/></p> |
| 20081 | <p>This matrix will only be present if the second reference |
| 20082 | illuminant is present.<wbr/></p> |
| 20083 | </td> |
| 20084 | </tr> |
| 20085 | |
| 20086 | |
| 20087 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 20088 | <!-- end of entry --> |
| 20089 | |
| 20090 | |
| 20091 | <tr class="entry" id="static_android.sensor.baseGainFactor"> |
| 20092 | <td class="entry_name |
| 20093 | " rowspan="1"> |
| 20094 | android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor |
| 20095 | </td> |
| 20096 | <td class="entry_type"> |
| 20097 | <span class="entry_type_name">rational</span> |
| 20098 | |
| 20099 | <span class="entry_type_visibility"> [system]</span> |
| 20100 | |
| 20101 | |
| 20102 | |
| 20103 | |
| 20104 | |
| 20105 | |
| 20106 | </td> <!-- entry_type --> |
| 20107 | |
| 20108 | <td class="entry_description"> |
| 20109 | <p>Gain factor from electrons to raw units when |
| 20110 | ISO=100</p> |
| 20111 | </td> |
| 20112 | |
| 20113 | <td class="entry_units"> |
| 20114 | </td> |
| 20115 | |
| 20116 | <td class="entry_range"> |
| 20117 | </td> |
| 20118 | |
| 20119 | <td class="entry_tags"> |
| 20120 | <ul class="entry_tags"> |
| 20121 | <li><a href="#tag_FUTURE">FUTURE</a></li> |
| 20122 | </ul> |
| 20123 | </td> |
| 20124 | |
| 20125 | </tr> |
| 20126 | |
| 20127 | |
| 20128 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 20129 | <!-- end of entry --> |
| 20130 | |
| 20131 | |
| 20132 | <tr class="entry" id="static_android.sensor.blackLevelPattern"> |
| 20133 | <td class="entry_name |
| 20134 | " rowspan="5"> |
| 20135 | android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern |
| 20136 | </td> |
| 20137 | <td class="entry_type"> |
| 20138 | <span class="entry_type_name">int32</span> |
| 20139 | <span class="entry_type_container">x</span> |
| 20140 | |
| 20141 | <span class="entry_type_array"> |
| 20142 | 4 |
| 20143 | </span> |
| 20144 | <span class="entry_type_visibility"> [public as blackLevelPattern]</span> |
| 20145 | |
| 20146 | |
| 20147 | |
| 20148 | |
| 20149 | <div class="entry_type_notes">2x2 raw count block</div> |
| 20150 | |
| 20151 | |
| 20152 | </td> <!-- entry_type --> |
| 20153 | |
| 20154 | <td class="entry_description"> |
| 20155 | <p>A fixed black level offset for each of the color filter arrangement |
| 20156 | (CFA) mosaic channels.<wbr/></p> |
| 20157 | </td> |
| 20158 | |
| 20159 | <td class="entry_units"> |
| 20160 | </td> |
| 20161 | |
| 20162 | <td class="entry_range"> |
| 20163 | <p>>= 0 for each.<wbr/></p> |
| 20164 | </td> |
| 20165 | |
| 20166 | <td class="entry_tags"> |
| 20167 | <ul class="entry_tags"> |
| 20168 | <li><a href="#tag_RAW">RAW</a></li> |
| 20169 | </ul> |
| 20170 | </td> |
| 20171 | |
| 20172 | </tr> |
| 20173 | <tr class="entries_header"> |
| 20174 | <th class="th_details" colspan="5">Details</th> |
| 20175 | </tr> |
| 20176 | <tr class="entry_cont"> |
| 20177 | <td class="entry_details" colspan="5"> |
| 20178 | <p>This key specifies the zero light value for each of the CFA mosaic |
| 20179 | channels in the camera sensor.<wbr/> The maximal value output by the |
| 20180 | 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> |
| 20181 | <p>The values are given in the same order as channels listed for the CFA |
| 20182 | 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 |
| 20183 | nth value given corresponds to the black level offset for the nth |
| 20184 | color channel listed in the CFA.<wbr/></p> |
| 20185 | <p>The black level values of captured images may vary for different |
| 20186 | capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key |
| 20187 | represents a coarse approximation for such case.<wbr/> It is recommended to |
| 20188 | use <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> or use pixels from |
| 20189 | <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> directly for captures when |
| 20190 | supported by the camera device,<wbr/> which provides more accurate black |
| 20191 | level values.<wbr/> For raw capture in particular,<wbr/> it is recommended to use |
| 20192 | pixels from <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> to calculate black |
| 20193 | level values for each frame.<wbr/></p> |
| 20194 | </td> |
| 20195 | </tr> |
| 20196 | |
| 20197 | <tr class="entries_header"> |
| 20198 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 20199 | </tr> |
| 20200 | <tr class="entry_cont"> |
| 20201 | <td class="entry_details" colspan="5"> |
| 20202 | <p>The values are given in row-column scan order,<wbr/> with the first value |
| 20203 | corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p> |
| 20204 | </td> |
| 20205 | </tr> |
| 20206 | |
| 20207 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 20208 | <!-- end of entry --> |
| 20209 | |
| 20210 | |
| 20211 | <tr class="entry" id="static_android.sensor.maxAnalogSensitivity"> |
| 20212 | <td class="entry_name |
| 20213 | " rowspan="3"> |
| 20214 | android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity |
| 20215 | </td> |
| 20216 | <td class="entry_type"> |
| 20217 | <span class="entry_type_name">int32</span> |
| 20218 | |
| 20219 | <span class="entry_type_visibility"> [public]</span> |
| 20220 | |
| 20221 | |
| 20222 | <span class="entry_type_hwlevel">[full] </span> |
| 20223 | |
| 20224 | |
| 20225 | |
| 20226 | |
| 20227 | </td> <!-- entry_type --> |
| 20228 | |
| 20229 | <td class="entry_description"> |
| 20230 | <p>Maximum sensitivity that is implemented |
| 20231 | purely through analog gain.<wbr/></p> |
| 20232 | </td> |
| 20233 | |
| 20234 | <td class="entry_units"> |
| 20235 | </td> |
| 20236 | |
| 20237 | <td class="entry_range"> |
| 20238 | </td> |
| 20239 | |
| 20240 | <td class="entry_tags"> |
| 20241 | <ul class="entry_tags"> |
| 20242 | <li><a href="#tag_V1">V1</a></li> |
| 20243 | <li><a href="#tag_FULL">FULL</a></li> |
| 20244 | </ul> |
| 20245 | </td> |
| 20246 | |
| 20247 | </tr> |
| 20248 | <tr class="entries_header"> |
| 20249 | <th class="th_details" colspan="5">Details</th> |
| 20250 | </tr> |
| 20251 | <tr class="entry_cont"> |
| 20252 | <td class="entry_details" colspan="5"> |
| 20253 | <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or |
| 20254 | equal to this,<wbr/> all applied gain must be analog.<wbr/> For |
| 20255 | values above this,<wbr/> the gain applied can be a mix of analog and |
| 20256 | digital.<wbr/></p> |
| 20257 | </td> |
| 20258 | </tr> |
| 20259 | |
| 20260 | |
| 20261 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 20262 | <!-- end of entry --> |
| 20263 | |
| 20264 | |
| 20265 | <tr class="entry" id="static_android.sensor.orientation"> |
| 20266 | <td class="entry_name |
| 20267 | " rowspan="3"> |
| 20268 | android.<wbr/>sensor.<wbr/>orientation |
| 20269 | </td> |
| 20270 | <td class="entry_type"> |
| 20271 | <span class="entry_type_name">int32</span> |
| 20272 | |
| 20273 | <span class="entry_type_visibility"> [public]</span> |
| 20274 | |
| 20275 | |
| 20276 | <span class="entry_type_hwlevel">[legacy] </span> |
| 20277 | |
| 20278 | |
| 20279 | |
| 20280 | |
| 20281 | </td> <!-- entry_type --> |
| 20282 | |
| 20283 | <td class="entry_description"> |
| 20284 | <p>Clockwise angle through which the output image needs to be rotated to be |
| 20285 | upright on the device screen in its native orientation.<wbr/></p> |
| 20286 | </td> |
| 20287 | |
| 20288 | <td class="entry_units"> |
| 20289 | Degrees of clockwise rotation; always a multiple of |
| 20290 | 90 |
| 20291 | </td> |
| 20292 | |
| 20293 | <td class="entry_range"> |
| 20294 | <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> |
| 20295 | </td> |
| 20296 | |
| 20297 | <td class="entry_tags"> |
| 20298 | <ul class="entry_tags"> |
| 20299 | <li><a href="#tag_BC">BC</a></li> |
| 20300 | </ul> |
| 20301 | </td> |
| 20302 | |
| 20303 | </tr> |
| 20304 | <tr class="entries_header"> |
| 20305 | <th class="th_details" colspan="5">Details</th> |
| 20306 | </tr> |
| 20307 | <tr class="entry_cont"> |
| 20308 | <td class="entry_details" colspan="5"> |
| 20309 | <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in |
| 20310 | the sensor's coordinate system.<wbr/></p> |
| 20311 | </td> |
| 20312 | </tr> |
| 20313 | |
| 20314 | |
| 20315 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 20316 | <!-- end of entry --> |
| 20317 | |
| 20318 | |
| 20319 | <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions"> |
| 20320 | <td class="entry_name |
| 20321 | " rowspan="3"> |
| 20322 | android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions |
| 20323 | </td> |
| 20324 | <td class="entry_type"> |
| 20325 | <span class="entry_type_name">int32</span> |
| 20326 | <span class="entry_type_container">x</span> |
| 20327 | |
| 20328 | <span class="entry_type_array"> |
| 20329 | 3 |
| 20330 | </span> |
| 20331 | <span class="entry_type_visibility"> [system]</span> |
| 20332 | |
| 20333 | |
| 20334 | |
| 20335 | |
| 20336 | <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div> |
| 20337 | |
| 20338 | |
| 20339 | </td> <!-- entry_type --> |
| 20340 | |
| 20341 | <td class="entry_description"> |
| 20342 | <p>The number of input samples for each dimension of |
| 20343 | <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p> |
| 20344 | </td> |
| 20345 | |
| 20346 | <td class="entry_units"> |
| 20347 | </td> |
| 20348 | |
| 20349 | <td class="entry_range"> |
| 20350 | <p>Hue >= 1,<wbr/> |
| 20351 | Saturation >= 2,<wbr/> |
| 20352 | Value >= 1</p> |
| 20353 | </td> |
| 20354 | |
| 20355 | <td class="entry_tags"> |
| 20356 | <ul class="entry_tags"> |
| 20357 | <li><a href="#tag_RAW">RAW</a></li> |
| 20358 | </ul> |
| 20359 | </td> |
| 20360 | |
| 20361 | </tr> |
| 20362 | <tr class="entries_header"> |
| 20363 | <th class="th_details" colspan="5">Details</th> |
| 20364 | </tr> |
| 20365 | <tr class="entry_cont"> |
| 20366 | <td class="entry_details" colspan="5"> |
| 20367 | <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value |
| 20368 | 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 |
| 20369 | dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th |
| 20370 | element.<wbr/></p> |
| 20371 | </td> |
| 20372 | </tr> |
| 20373 | |
| 20374 | |
| 20375 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 20376 | <!-- end of entry --> |
| 20377 | |
| 20378 | |
| 20379 | <tr class="entry" id="static_android.sensor.availableTestPatternModes"> |
| 20380 | <td class="entry_name |
| 20381 | " rowspan="5"> |
| 20382 | android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes |
| 20383 | </td> |
| 20384 | <td class="entry_type"> |
| 20385 | <span class="entry_type_name">int32</span> |
| 20386 | <span class="entry_type_container">x</span> |
| 20387 | |
| 20388 | <span class="entry_type_array"> |
| 20389 | n |
| 20390 | </span> |
| 20391 | <span class="entry_type_visibility"> [public]</span> |
| 20392 | |
| 20393 | |
| 20394 | |
| 20395 | |
| 20396 | <div class="entry_type_notes">list of enums</div> |
| 20397 | |
| 20398 | |
| 20399 | </td> <!-- entry_type --> |
| 20400 | |
| 20401 | <td class="entry_description"> |
| 20402 | <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> |
| 20403 | supported by this camera device.<wbr/></p> |
| 20404 | </td> |
| 20405 | |
| 20406 | <td class="entry_units"> |
| 20407 | </td> |
| 20408 | |
| 20409 | <td class="entry_range"> |
| 20410 | <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p> |
| 20411 | </td> |
| 20412 | |
| 20413 | <td class="entry_tags"> |
| 20414 | </td> |
| 20415 | |
| 20416 | </tr> |
| 20417 | <tr class="entries_header"> |
| 20418 | <th class="th_details" colspan="5">Details</th> |
| 20419 | </tr> |
| 20420 | <tr class="entry_cont"> |
| 20421 | <td class="entry_details" colspan="5"> |
| 20422 | <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p> |
| 20423 | </td> |
| 20424 | </tr> |
| 20425 | |
| 20426 | <tr class="entries_header"> |
| 20427 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 20428 | </tr> |
| 20429 | <tr class="entry_cont"> |
| 20430 | <td class="entry_details" colspan="5"> |
| 20431 | <p>All custom modes must be >= CUSTOM1.<wbr/></p> |
| 20432 | </td> |
| 20433 | </tr> |
| 20434 | |
| 20435 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 20436 | <!-- end of entry --> |
| 20437 | |
| 20438 | |
| 20439 | <tr class="entry" id="static_android.sensor.opticalBlackRegions"> |
| 20440 | <td class="entry_name |
| 20441 | " rowspan="5"> |
| 20442 | android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions |
| 20443 | </td> |
| 20444 | <td class="entry_type"> |
| 20445 | <span class="entry_type_name">int32</span> |
| 20446 | <span class="entry_type_container">x</span> |
| 20447 | |
| 20448 | <span class="entry_type_array"> |
| 20449 | 4 x num_regions |
| 20450 | </span> |
| 20451 | <span class="entry_type_visibility"> [public as rectangle]</span> |
| 20452 | |
| 20453 | |
| 20454 | |
| 20455 | |
| 20456 | |
| 20457 | |
| 20458 | </td> <!-- entry_type --> |
| 20459 | |
| 20460 | <td class="entry_description"> |
| 20461 | <p>List of disjoint rectangles indicating the sensor |
| 20462 | optically shielded black pixel regions.<wbr/></p> |
| 20463 | </td> |
| 20464 | |
| 20465 | <td class="entry_units"> |
| 20466 | </td> |
| 20467 | |
| 20468 | <td class="entry_range"> |
| 20469 | </td> |
| 20470 | |
| 20471 | <td class="entry_tags"> |
| 20472 | </td> |
| 20473 | |
| 20474 | </tr> |
| 20475 | <tr class="entries_header"> |
| 20476 | <th class="th_details" colspan="5">Details</th> |
| 20477 | </tr> |
| 20478 | <tr class="entry_cont"> |
| 20479 | <td class="entry_details" colspan="5"> |
| 20480 | <p>In most camera sensors,<wbr/> the active array is surrounded by some |
| 20481 | optically shielded pixel areas.<wbr/> By blocking light,<wbr/> these pixels |
| 20482 | provides a reliable black reference for black level compensation |
| 20483 | in active array region.<wbr/></p> |
| 20484 | <p>This key provides a list of disjoint rectangles specifying the |
| 20485 | regions of optically shielded (with metal shield) black pixel |
| 20486 | regions if the camera device is capable of reading out these black |
| 20487 | pixels in the output raw images.<wbr/> In comparison to the fixed black |
| 20488 | level values reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a>,<wbr/> this key |
| 20489 | may provide a more accurate way for the application to calculate |
| 20490 | black level of each captured raw images.<wbr/></p> |
| 20491 | <p>When this key is reported,<wbr/> the <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> and |
| 20492 | <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> will also be reported.<wbr/></p> |
| 20493 | </td> |
| 20494 | </tr> |
| 20495 | |
| 20496 | <tr class="entries_header"> |
| 20497 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 20498 | </tr> |
| 20499 | <tr class="entry_cont"> |
| 20500 | <td class="entry_details" colspan="5"> |
| 20501 | <p>This array contains (xmin,<wbr/> ymin,<wbr/> width,<wbr/> height).<wbr/> The (xmin,<wbr/> ymin) |
| 20502 | must be >= (0,<wbr/>0) and <= |
| 20503 | <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> The (width,<wbr/> height) must be |
| 20504 | <= <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> Each region must be |
| 20505 | outside the region reported by |
| 20506 | <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/></p> |
| 20507 | <p>The HAL must report minimal number of disjoint regions for the |
| 20508 | optically shielded back pixel regions.<wbr/> For example,<wbr/> if a region can |
| 20509 | be covered by one rectangle,<wbr/> the HAL must not split this region into |
| 20510 | multiple rectangles.<wbr/></p> |
| 20511 | </td> |
| 20512 | </tr> |
| 20513 | |
| 20514 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 20515 | <!-- end of entry --> |
| 20516 | |
| 20517 | |
| 20518 | <tr class="entry" id="static_android.sensor.opaqueRawSize"> |
| 20519 | <td class="entry_name |
| 20520 | " rowspan="5"> |
| 20521 | android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size |
| 20522 | </td> |
| 20523 | <td class="entry_type"> |
| 20524 | <span class="entry_type_name">int32</span> |
| 20525 | <span class="entry_type_container">x</span> |
| 20526 | |
| 20527 | <span class="entry_type_array"> |
| 20528 | n x 3 |
| 20529 | </span> |
| 20530 | <span class="entry_type_visibility"> [system]</span> |
| 20531 | |
| 20532 | |
| 20533 | |
| 20534 | |
| 20535 | |
| 20536 | |
| 20537 | </td> <!-- entry_type --> |
| 20538 | |
| 20539 | <td class="entry_description"> |
| 20540 | <p>Size in bytes for all the listed opaque RAW buffer sizes</p> |
| 20541 | </td> |
| 20542 | |
| 20543 | <td class="entry_units"> |
| 20544 | </td> |
| 20545 | |
| 20546 | <td class="entry_range"> |
| 20547 | <p>Must be large enough to fit the opaque RAW of corresponding size produced by |
| 20548 | the camera</p> |
| 20549 | </td> |
| 20550 | |
| 20551 | <td class="entry_tags"> |
| 20552 | </td> |
| 20553 | |
| 20554 | </tr> |
| 20555 | <tr class="entries_header"> |
| 20556 | <th class="th_details" colspan="5">Details</th> |
| 20557 | </tr> |
| 20558 | <tr class="entry_cont"> |
| 20559 | <td class="entry_details" colspan="5"> |
| 20560 | <p>This configurations are listed as <code>(width,<wbr/> height,<wbr/> size_<wbr/>in_<wbr/>bytes)</code> tuples.<wbr/> |
| 20561 | This is used for sizing the gralloc buffers for opaque RAW buffers.<wbr/> |
| 20562 | All RAW_<wbr/>OPAQUE output stream configuration listed in |
| 20563 | <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have a corresponding tuple in |
| 20564 | this key.<wbr/></p> |
| 20565 | </td> |
| 20566 | </tr> |
| 20567 | |
| 20568 | <tr class="entries_header"> |
| 20569 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 20570 | </tr> |
| 20571 | <tr class="entry_cont"> |
| 20572 | <td class="entry_details" colspan="5"> |
| 20573 | <p>This key is added in HAL3.<wbr/>4.<wbr/> |
| 20574 | For HAL3.<wbr/>4 or above: devices advertising RAW_<wbr/>OPAQUE format output must list this key.<wbr/> |
| 20575 | For HAL3.<wbr/>3 or earlier devices: if RAW_<wbr/>OPAQUE ouput is advertised,<wbr/> camera framework |
| 20576 | will derive this key by assuming each pixel takes two bytes and no padding bytes |
| 20577 | between rows.<wbr/></p> |
| 20578 | </td> |
| 20579 | </tr> |
| 20580 | |
| 20581 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 20582 | <!-- end of entry --> |
| 20583 | |
| 20584 | |
| 20585 | |
| 20586 | <!-- end of kind --> |
| 20587 | </tbody> |
| 20588 | <tr><td colspan="6" class="kind">dynamic</td></tr> |
| 20589 | |
| 20590 | <thead class="entries_header"> |
| 20591 | <tr> |
| 20592 | <th class="th_name">Property Name</th> |
| 20593 | <th class="th_type">Type</th> |
| 20594 | <th class="th_description">Description</th> |
| 20595 | <th class="th_units">Units</th> |
| 20596 | <th class="th_range">Range</th> |
| 20597 | <th class="th_tags">Tags</th> |
| 20598 | </tr> |
| 20599 | </thead> |
| 20600 | |
| 20601 | <tbody> |
| 20602 | |
| 20603 | |
| 20604 | |
| 20605 | |
| 20606 | |
| 20607 | |
| 20608 | |
| 20609 | |
| 20610 | |
| 20611 | |
| 20612 | <tr class="entry" id="dynamic_android.sensor.exposureTime"> |
| 20613 | <td class="entry_name |
| 20614 | " rowspan="3"> |
| 20615 | android.<wbr/>sensor.<wbr/>exposure<wbr/>Time |
| 20616 | </td> |
| 20617 | <td class="entry_type"> |
| 20618 | <span class="entry_type_name">int64</span> |
| 20619 | |
| 20620 | <span class="entry_type_visibility"> [public]</span> |
| 20621 | |
| 20622 | |
| 20623 | <span class="entry_type_hwlevel">[full] </span> |
| 20624 | |
| 20625 | |
| 20626 | |
| 20627 | |
| 20628 | </td> <!-- entry_type --> |
| 20629 | |
| 20630 | <td class="entry_description"> |
| 20631 | <p>Duration each pixel is exposed to |
| 20632 | light.<wbr/></p> |
| 20633 | </td> |
| 20634 | |
| 20635 | <td class="entry_units"> |
| 20636 | Nanoseconds |
| 20637 | </td> |
| 20638 | |
| 20639 | <td class="entry_range"> |
| 20640 | <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p> |
| 20641 | </td> |
| 20642 | |
| 20643 | <td class="entry_tags"> |
| 20644 | <ul class="entry_tags"> |
| 20645 | <li><a href="#tag_V1">V1</a></li> |
| 20646 | </ul> |
| 20647 | </td> |
| 20648 | |
| 20649 | </tr> |
| 20650 | <tr class="entries_header"> |
| 20651 | <th class="th_details" colspan="5">Details</th> |
| 20652 | </tr> |
| 20653 | <tr class="entry_cont"> |
| 20654 | <td class="entry_details" colspan="5"> |
| 20655 | <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the |
| 20656 | duration exposed to the nearest possible value (rather than expose longer).<wbr/> |
| 20657 | The final exposure time used will be available in the output capture result.<wbr/></p> |
| 20658 | <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 |
| 20659 | OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> |
| 20660 | </td> |
| 20661 | </tr> |
| 20662 | |
| 20663 | |
| 20664 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 20665 | <!-- end of entry --> |
| 20666 | |
| 20667 | |
| 20668 | <tr class="entry" id="dynamic_android.sensor.frameDuration"> |
| 20669 | <td class="entry_name |
| 20670 | " rowspan="5"> |
| 20671 | android.<wbr/>sensor.<wbr/>frame<wbr/>Duration |
| 20672 | </td> |
| 20673 | <td class="entry_type"> |
| 20674 | <span class="entry_type_name">int64</span> |
| 20675 | |
| 20676 | <span class="entry_type_visibility"> [public]</span> |
| 20677 | |
| 20678 | |
| 20679 | <span class="entry_type_hwlevel">[full] </span> |
| 20680 | |
| 20681 | |
| 20682 | |
| 20683 | |
| 20684 | </td> <!-- entry_type --> |
| 20685 | |
| 20686 | <td class="entry_description"> |
| 20687 | <p>Duration from start of frame exposure to |
| 20688 | start of next frame exposure.<wbr/></p> |
| 20689 | </td> |
| 20690 | |
| 20691 | <td class="entry_units"> |
| 20692 | Nanoseconds |
| 20693 | </td> |
| 20694 | |
| 20695 | <td class="entry_range"> |
| 20696 | <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/> |
| 20697 | <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration |
| 20698 | is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p> |
| 20699 | </td> |
| 20700 | |
| 20701 | <td class="entry_tags"> |
| 20702 | <ul class="entry_tags"> |
| 20703 | <li><a href="#tag_V1">V1</a></li> |
| 20704 | </ul> |
| 20705 | </td> |
| 20706 | |
| 20707 | </tr> |
| 20708 | <tr class="entries_header"> |
| 20709 | <th class="th_details" colspan="5">Details</th> |
| 20710 | </tr> |
| 20711 | <tr class="entry_cont"> |
| 20712 | <td class="entry_details" colspan="5"> |
| 20713 | <p>The maximum frame rate that can be supported by a camera subsystem is |
| 20714 | a function of many factors:</p> |
| 20715 | <ul> |
| 20716 | <li>Requested resolutions of output image streams</li> |
| 20717 | <li>Availability of binning /<wbr/> skipping modes on the imager</li> |
| 20718 | <li>The bandwidth of the imager interface</li> |
| 20719 | <li>The bandwidth of the various ISP processing blocks</li> |
| 20720 | </ul> |
| 20721 | <p>Since these factors can vary greatly between different ISPs and |
| 20722 | sensors,<wbr/> the camera abstraction tries to represent the bandwidth |
| 20723 | restrictions with as simple a model as possible.<wbr/></p> |
| 20724 | <p>The model presented has the following characteristics:</p> |
| 20725 | <ul> |
| 20726 | <li>The image sensor is always configured to output the smallest |
| 20727 | resolution possible given the application's requested output stream |
| 20728 | sizes.<wbr/> The smallest resolution is defined as being at least as large |
| 20729 | as the largest requested output stream size; the camera pipeline must |
| 20730 | never digitally upsample sensor data when the crop region covers the |
| 20731 | whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream |
| 20732 | resolutions are configured,<wbr/> the sensor can provide a higher frame |
| 20733 | rate.<wbr/></li> |
| 20734 | <li>Since any request may use any or all the currently configured |
| 20735 | output streams,<wbr/> the sensor and ISP must be configured to support |
| 20736 | scaling a single capture to all the streams at the same time.<wbr/> This |
| 20737 | means the camera pipeline must be ready to produce the largest |
| 20738 | requested output size without any delay.<wbr/> Therefore,<wbr/> the overall |
| 20739 | frame rate of a given configured stream set is governed only by the |
| 20740 | largest requested stream resolution.<wbr/></li> |
| 20741 | <li>Using more than one output stream in a request does not affect the |
| 20742 | frame duration.<wbr/></li> |
| 20743 | <li>Certain format-streams may need to do additional background processing |
| 20744 | before data is consumed/<wbr/>produced by that stream.<wbr/> These processors |
| 20745 | can run concurrently to the rest of the camera pipeline,<wbr/> but |
| 20746 | cannot process more than 1 capture at a time.<wbr/></li> |
| 20747 | </ul> |
| 20748 | <p>The necessary information for the application,<wbr/> given the model above,<wbr/> |
| 20749 | is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field using |
| 20750 | <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/> |
| 20751 | These are used to determine the maximum frame rate /<wbr/> minimum frame |
| 20752 | duration that is possible for a given stream configuration.<wbr/></p> |
| 20753 | <p>Specifically,<wbr/> the application can use the following rules to |
| 20754 | determine the minimum frame duration it can request from the camera |
| 20755 | device:</p> |
| 20756 | <ol> |
| 20757 | <li>Let the set of currently configured input/<wbr/>output streams |
| 20758 | be called <code>S</code>.<wbr/></li> |
| 20759 | <li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking |
| 20760 | 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> |
| 20761 | (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be |
| 20762 | called <code>F</code>.<wbr/></li> |
| 20763 | <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed |
| 20764 | for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams |
| 20765 | used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li> |
| 20766 | </ol> |
| 20767 | <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> |
| 20768 | using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> |
| 20769 | determines the steady state frame rate that the application will get |
| 20770 | if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind of |
| 20771 | request be called <code>Rsimple</code>.<wbr/></p> |
| 20772 | <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved |
| 20773 | by a single capture of a new request <code>Rstall</code> (which has at least |
| 20774 | one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the |
| 20775 | same minimum frame duration this will not cause a frame rate loss |
| 20776 | if all buffers from the previous <code>Rstall</code> have already been |
| 20777 | delivered.<wbr/></p> |
| 20778 | <p>For more details about stalling,<wbr/> see |
| 20779 | <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p> |
| 20780 | <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 |
| 20781 | OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> |
| 20782 | </td> |
| 20783 | </tr> |
| 20784 | |
| 20785 | <tr class="entries_header"> |
| 20786 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 20787 | </tr> |
| 20788 | <tr class="entry_cont"> |
| 20789 | <td class="entry_details" colspan="5"> |
| 20790 | <p>For more details about stalling,<wbr/> see |
| 20791 | <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p> |
| 20792 | </td> |
| 20793 | </tr> |
| 20794 | |
| 20795 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 20796 | <!-- end of entry --> |
| 20797 | |
| 20798 | |
| 20799 | <tr class="entry" id="dynamic_android.sensor.sensitivity"> |
| 20800 | <td class="entry_name |
| 20801 | " rowspan="5"> |
| 20802 | android.<wbr/>sensor.<wbr/>sensitivity |
| 20803 | </td> |
| 20804 | <td class="entry_type"> |
| 20805 | <span class="entry_type_name">int32</span> |
| 20806 | |
| 20807 | <span class="entry_type_visibility"> [public]</span> |
| 20808 | |
| 20809 | |
| 20810 | <span class="entry_type_hwlevel">[full] </span> |
| 20811 | |
| 20812 | |
| 20813 | |
| 20814 | |
| 20815 | </td> <!-- entry_type --> |
| 20816 | |
| 20817 | <td class="entry_description"> |
| 20818 | <p>The amount of gain applied to sensor data |
| 20819 | before processing.<wbr/></p> |
| 20820 | </td> |
| 20821 | |
| 20822 | <td class="entry_units"> |
| 20823 | ISO arithmetic units |
| 20824 | </td> |
| 20825 | |
| 20826 | <td class="entry_range"> |
| 20827 | <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p> |
| 20828 | </td> |
| 20829 | |
| 20830 | <td class="entry_tags"> |
| 20831 | <ul class="entry_tags"> |
| 20832 | <li><a href="#tag_V1">V1</a></li> |
| 20833 | </ul> |
| 20834 | </td> |
| 20835 | |
| 20836 | </tr> |
| 20837 | <tr class="entries_header"> |
| 20838 | <th class="th_details" colspan="5">Details</th> |
| 20839 | </tr> |
| 20840 | <tr class="entry_cont"> |
| 20841 | <td class="entry_details" colspan="5"> |
| 20842 | <p>The sensitivity is the standard ISO sensitivity value,<wbr/> |
| 20843 | as defined in ISO 12232:2006.<wbr/></p> |
| 20844 | <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 |
| 20845 | 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 |
| 20846 | is guaranteed to use only analog amplification for applying the gain.<wbr/></p> |
| 20847 | <p>If the camera device cannot apply the exact sensitivity |
| 20848 | requested,<wbr/> it will reduce the gain to the nearest supported |
| 20849 | value.<wbr/> The final sensitivity used will be available in the |
| 20850 | output capture result.<wbr/></p> |
| 20851 | <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 |
| 20852 | OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> |
| 20853 | </td> |
| 20854 | </tr> |
| 20855 | |
| 20856 | <tr class="entries_header"> |
| 20857 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 20858 | </tr> |
| 20859 | <tr class="entry_cont"> |
| 20860 | <td class="entry_details" colspan="5"> |
| 20861 | <p>ISO 12232:2006 REI method is acceptable.<wbr/></p> |
| 20862 | </td> |
| 20863 | </tr> |
| 20864 | |
| 20865 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 20866 | <!-- end of entry --> |
| 20867 | |
| 20868 | |
| 20869 | <tr class="entry" id="dynamic_android.sensor.timestamp"> |
| 20870 | <td class="entry_name |
| 20871 | " rowspan="5"> |
| 20872 | android.<wbr/>sensor.<wbr/>timestamp |
| 20873 | </td> |
| 20874 | <td class="entry_type"> |
| 20875 | <span class="entry_type_name">int64</span> |
| 20876 | |
| 20877 | <span class="entry_type_visibility"> [public]</span> |
| 20878 | |
| 20879 | |
| 20880 | <span class="entry_type_hwlevel">[legacy] </span> |
| 20881 | |
| 20882 | |
| 20883 | |
| 20884 | |
| 20885 | </td> <!-- entry_type --> |
| 20886 | |
| 20887 | <td class="entry_description"> |
| 20888 | <p>Time at start of exposure of first |
| 20889 | row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p> |
| 20890 | </td> |
| 20891 | |
| 20892 | <td class="entry_units"> |
| 20893 | Nanoseconds |
| 20894 | </td> |
| 20895 | |
| 20896 | <td class="entry_range"> |
| 20897 | <p>> 0</p> |
| 20898 | </td> |
| 20899 | |
| 20900 | <td class="entry_tags"> |
| 20901 | <ul class="entry_tags"> |
| 20902 | <li><a href="#tag_BC">BC</a></li> |
| 20903 | </ul> |
| 20904 | </td> |
| 20905 | |
| 20906 | </tr> |
| 20907 | <tr class="entries_header"> |
| 20908 | <th class="th_details" colspan="5">Details</th> |
| 20909 | </tr> |
| 20910 | <tr class="entry_cont"> |
| 20911 | <td class="entry_details" colspan="5"> |
| 20912 | <p>The timestamps are also included in all image |
| 20913 | buffers produced for the same capture,<wbr/> and will be identical |
| 20914 | on all the outputs.<wbr/></p> |
| 20915 | <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/> |
| 20916 | the timestamps measure time since an unspecified starting point,<wbr/> |
| 20917 | and are monotonically increasing.<wbr/> They can be compared with the |
| 20918 | timestamps for other captures from the same camera device,<wbr/> but are |
| 20919 | not guaranteed to be comparable to any other time source.<wbr/></p> |
| 20920 | <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the |
| 20921 | 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 |
| 20922 | be compared to other timestamps from other subsystems that |
| 20923 | are using that base.<wbr/></p> |
| 20924 | <p>For reprocessing,<wbr/> the timestamp will match the start of exposure of |
| 20925 | the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the |
| 20926 | timestamp</a> in the TotalCaptureResult that was used to create the |
| 20927 | reprocess capture request.<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 | <p>All timestamps must be in reference to the kernel's |
| 20937 | CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for |
| 20938 | time spent asleep.<wbr/> This allows for synchronization with |
| 20939 | sensors that continue to operate while the system is |
| 20940 | otherwise asleep.<wbr/></p> |
| 20941 | <p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> |
| 20942 | The timestamp must be synchronized with the timestamps from other |
| 20943 | sensor subsystems that are using the same timebase.<wbr/></p> |
| 20944 | <p>For reprocessing,<wbr/> the input image's start of exposure can be looked up |
| 20945 | with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the |
| 20946 | capture request.<wbr/></p> |
| 20947 | </td> |
| 20948 | </tr> |
| 20949 | |
| 20950 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 20951 | <!-- end of entry --> |
| 20952 | |
| 20953 | |
| 20954 | <tr class="entry" id="dynamic_android.sensor.temperature"> |
| 20955 | <td class="entry_name |
| 20956 | " rowspan="1"> |
| 20957 | android.<wbr/>sensor.<wbr/>temperature |
| 20958 | </td> |
| 20959 | <td class="entry_type"> |
| 20960 | <span class="entry_type_name">float</span> |
| 20961 | |
| 20962 | <span class="entry_type_visibility"> [system]</span> |
| 20963 | |
| 20964 | |
| 20965 | |
| 20966 | |
| 20967 | |
| 20968 | |
| 20969 | </td> <!-- entry_type --> |
| 20970 | |
| 20971 | <td class="entry_description"> |
| 20972 | <p>The temperature of the sensor,<wbr/> sampled at the time |
| 20973 | exposure began for this frame.<wbr/></p> |
| 20974 | <p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or |
| 20975 | somewhere close to it.<wbr/></p> |
| 20976 | </td> |
| 20977 | |
| 20978 | <td class="entry_units"> |
| 20979 | Celsius |
| 20980 | </td> |
| 20981 | |
| 20982 | <td class="entry_range"> |
| 20983 | <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p> |
| 20984 | </td> |
| 20985 | |
| 20986 | <td class="entry_tags"> |
| 20987 | <ul class="entry_tags"> |
| 20988 | <li><a href="#tag_FUTURE">FUTURE</a></li> |
| 20989 | </ul> |
| 20990 | </td> |
| 20991 | |
| 20992 | </tr> |
| 20993 | |
| 20994 | |
| 20995 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 20996 | <!-- end of entry --> |
| 20997 | |
| 20998 | |
| 20999 | <tr class="entry" id="dynamic_android.sensor.neutralColorPoint"> |
| 21000 | <td class="entry_name |
| 21001 | " rowspan="3"> |
| 21002 | android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point |
| 21003 | </td> |
| 21004 | <td class="entry_type"> |
| 21005 | <span class="entry_type_name">rational</span> |
| 21006 | <span class="entry_type_container">x</span> |
| 21007 | |
| 21008 | <span class="entry_type_array"> |
| 21009 | 3 |
| 21010 | </span> |
| 21011 | <span class="entry_type_visibility"> [public]</span> |
| 21012 | |
| 21013 | |
| 21014 | |
| 21015 | |
| 21016 | |
| 21017 | |
| 21018 | </td> <!-- entry_type --> |
| 21019 | |
| 21020 | <td class="entry_description"> |
| 21021 | <p>The estimated camera neutral color in the native sensor colorspace at |
| 21022 | the time of capture.<wbr/></p> |
| 21023 | </td> |
| 21024 | |
| 21025 | <td class="entry_units"> |
| 21026 | </td> |
| 21027 | |
| 21028 | <td class="entry_range"> |
| 21029 | </td> |
| 21030 | |
| 21031 | <td class="entry_tags"> |
| 21032 | <ul class="entry_tags"> |
| 21033 | <li><a href="#tag_RAW">RAW</a></li> |
| 21034 | </ul> |
| 21035 | </td> |
| 21036 | |
| 21037 | </tr> |
| 21038 | <tr class="entries_header"> |
| 21039 | <th class="th_details" colspan="5">Details</th> |
| 21040 | </tr> |
| 21041 | <tr class="entry_cont"> |
| 21042 | <td class="entry_details" colspan="5"> |
| 21043 | <p>This value gives the neutral color point encoded as an RGB value in the |
| 21044 | native sensor color space.<wbr/> The neutral color point indicates the |
| 21045 | currently estimated white point of the scene illumination.<wbr/> It can be |
| 21046 | used to interpolate between the provided color transforms when |
| 21047 | processing raw sensor data.<wbr/></p> |
| 21048 | <p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p> |
| 21049 | </td> |
| 21050 | </tr> |
| 21051 | |
| 21052 | |
| 21053 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 21054 | <!-- end of entry --> |
| 21055 | |
| 21056 | |
| 21057 | <tr class="entry" id="dynamic_android.sensor.noiseProfile"> |
| 21058 | <td class="entry_name |
| 21059 | " rowspan="5"> |
| 21060 | android.<wbr/>sensor.<wbr/>noise<wbr/>Profile |
| 21061 | </td> |
| 21062 | <td class="entry_type"> |
| 21063 | <span class="entry_type_name">double</span> |
| 21064 | <span class="entry_type_container">x</span> |
| 21065 | |
| 21066 | <span class="entry_type_array"> |
| 21067 | 2 x CFA Channels |
| 21068 | </span> |
| 21069 | <span class="entry_type_visibility"> [public as pairDoubleDouble]</span> |
| 21070 | |
| 21071 | |
| 21072 | |
| 21073 | |
| 21074 | <div class="entry_type_notes">Pairs of noise model coefficients</div> |
| 21075 | |
| 21076 | |
| 21077 | </td> <!-- entry_type --> |
| 21078 | |
| 21079 | <td class="entry_description"> |
| 21080 | <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p> |
| 21081 | </td> |
| 21082 | |
| 21083 | <td class="entry_units"> |
| 21084 | </td> |
| 21085 | |
| 21086 | <td class="entry_range"> |
| 21087 | </td> |
| 21088 | |
| 21089 | <td class="entry_tags"> |
| 21090 | <ul class="entry_tags"> |
| 21091 | <li><a href="#tag_RAW">RAW</a></li> |
| 21092 | </ul> |
| 21093 | </td> |
| 21094 | |
| 21095 | </tr> |
| 21096 | <tr class="entries_header"> |
| 21097 | <th class="th_details" colspan="5">Details</th> |
| 21098 | </tr> |
| 21099 | <tr class="entry_cont"> |
| 21100 | <td class="entry_details" colspan="5"> |
| 21101 | <p>This key contains two noise model coefficients for each CFA channel |
| 21102 | corresponding to the sensor amplification (S) and sensor readout |
| 21103 | noise (O).<wbr/> These are given as pairs of coefficients for each channel |
| 21104 | in the same order as channels listed for the CFA layout key |
| 21105 | (see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/> This is |
| 21106 | represented as an array of Pair<Double,<wbr/> Double>,<wbr/> where |
| 21107 | the first member of the Pair at index n is the S coefficient and the |
| 21108 | second member is the O coefficient for the nth color channel in the CFA.<wbr/></p> |
| 21109 | <p>These coefficients are used in a two parameter noise model to describe |
| 21110 | the amount of noise present in the image for each CFA channel.<wbr/> The |
| 21111 | noise model used here is:</p> |
| 21112 | <p>N(x) = sqrt(Sx + O)</p> |
| 21113 | <p>Where x represents the recorded signal of a CFA channel normalized to |
| 21114 | the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for |
| 21115 | that channel.<wbr/></p> |
| 21116 | <p>A more detailed description of the noise model can be found in the |
| 21117 | Adobe DNG specification for the NoiseProfile tag.<wbr/></p> |
| 21118 | </td> |
| 21119 | </tr> |
| 21120 | |
| 21121 | <tr class="entries_header"> |
| 21122 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 21123 | </tr> |
| 21124 | <tr class="entry_cont"> |
| 21125 | <td class="entry_details" colspan="5"> |
| 21126 | <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as |
| 21127 | an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients |
| 21128 | for the red channel,<wbr/> S1 and O1 are the coefficients for the first green |
| 21129 | channel,<wbr/> etc.<wbr/></p> |
| 21130 | </td> |
| 21131 | </tr> |
| 21132 | |
| 21133 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 21134 | <!-- end of entry --> |
| 21135 | |
| 21136 | |
| 21137 | <tr class="entry" id="dynamic_android.sensor.profileHueSatMap"> |
| 21138 | <td class="entry_name |
| 21139 | " rowspan="3"> |
| 21140 | android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map |
| 21141 | </td> |
| 21142 | <td class="entry_type"> |
| 21143 | <span class="entry_type_name">float</span> |
| 21144 | <span class="entry_type_container">x</span> |
| 21145 | |
| 21146 | <span class="entry_type_array"> |
| 21147 | hue_samples x saturation_samples x value_samples x 3 |
| 21148 | </span> |
| 21149 | <span class="entry_type_visibility"> [system]</span> |
| 21150 | |
| 21151 | |
| 21152 | |
| 21153 | |
| 21154 | <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div> |
| 21155 | |
| 21156 | |
| 21157 | </td> <!-- entry_type --> |
| 21158 | |
| 21159 | <td class="entry_description"> |
| 21160 | <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale |
| 21161 | for each pixel.<wbr/></p> |
| 21162 | </td> |
| 21163 | |
| 21164 | <td class="entry_units"> |
| 21165 | |
| 21166 | The hue shift is given in degrees; saturation and value scale factors are |
| 21167 | unitless and are between 0 and 1 inclusive |
| 21168 | |
| 21169 | </td> |
| 21170 | |
| 21171 | <td class="entry_range"> |
| 21172 | </td> |
| 21173 | |
| 21174 | <td class="entry_tags"> |
| 21175 | <ul class="entry_tags"> |
| 21176 | <li><a href="#tag_RAW">RAW</a></li> |
| 21177 | </ul> |
| 21178 | </td> |
| 21179 | |
| 21180 | </tr> |
| 21181 | <tr class="entries_header"> |
| 21182 | <th class="th_details" colspan="5">Details</th> |
| 21183 | </tr> |
| 21184 | <tr class="entry_cont"> |
| 21185 | <td class="entry_details" colspan="5"> |
| 21186 | <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in |
| 21187 | <a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p> |
| 21188 | <p>Each entry of this map contains three floats corresponding to the |
| 21189 | hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the |
| 21190 | hue shift has the lowest index.<wbr/> The map entries are stored in the key |
| 21191 | in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the |
| 21192 | hue divisions in the middle loop,<wbr/> and the saturation divisions in the |
| 21193 | inner loop.<wbr/> All zero input saturation entries are required to have a |
| 21194 | value scale factor of 1.<wbr/>0.<wbr/></p> |
| 21195 | </td> |
| 21196 | </tr> |
| 21197 | |
| 21198 | |
| 21199 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 21200 | <!-- end of entry --> |
| 21201 | |
| 21202 | |
| 21203 | <tr class="entry" id="dynamic_android.sensor.profileToneCurve"> |
| 21204 | <td class="entry_name |
| 21205 | " rowspan="3"> |
| 21206 | android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve |
| 21207 | </td> |
| 21208 | <td class="entry_type"> |
| 21209 | <span class="entry_type_name">float</span> |
| 21210 | <span class="entry_type_container">x</span> |
| 21211 | |
| 21212 | <span class="entry_type_array"> |
| 21213 | samples x 2 |
| 21214 | </span> |
| 21215 | <span class="entry_type_visibility"> [system]</span> |
| 21216 | |
| 21217 | |
| 21218 | |
| 21219 | |
| 21220 | <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div> |
| 21221 | |
| 21222 | |
| 21223 | </td> <!-- entry_type --> |
| 21224 | |
| 21225 | <td class="entry_description"> |
| 21226 | <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p> |
| 21227 | </td> |
| 21228 | |
| 21229 | <td class="entry_units"> |
| 21230 | </td> |
| 21231 | |
| 21232 | <td class="entry_range"> |
| 21233 | <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of |
| 21234 | <code>[0,<wbr/> 1]</code>.<wbr/> The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last |
| 21235 | sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p> |
| 21236 | </td> |
| 21237 | |
| 21238 | <td class="entry_tags"> |
| 21239 | <ul class="entry_tags"> |
| 21240 | <li><a href="#tag_RAW">RAW</a></li> |
| 21241 | </ul> |
| 21242 | </td> |
| 21243 | |
| 21244 | </tr> |
| 21245 | <tr class="entries_header"> |
| 21246 | <th class="th_details" colspan="5">Details</th> |
| 21247 | </tr> |
| 21248 | <tr class="entry_cont"> |
| 21249 | <td class="entry_details" colspan="5"> |
| 21250 | <p>This key contains a default tone curve that can be applied while |
| 21251 | processing the image as a starting point for user adjustments.<wbr/> |
| 21252 | The curve is specified as a list of value pairs in linear gamma.<wbr/> |
| 21253 | The curve is interpolated using a cubic spline.<wbr/></p> |
| 21254 | </td> |
| 21255 | </tr> |
| 21256 | |
| 21257 | |
| 21258 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 21259 | <!-- end of entry --> |
| 21260 | |
| 21261 | |
| 21262 | <tr class="entry" id="dynamic_android.sensor.greenSplit"> |
| 21263 | <td class="entry_name |
| 21264 | " rowspan="5"> |
| 21265 | android.<wbr/>sensor.<wbr/>green<wbr/>Split |
| 21266 | </td> |
| 21267 | <td class="entry_type"> |
| 21268 | <span class="entry_type_name">float</span> |
| 21269 | |
| 21270 | <span class="entry_type_visibility"> [public]</span> |
| 21271 | |
| 21272 | |
| 21273 | |
| 21274 | |
| 21275 | |
| 21276 | |
| 21277 | </td> <!-- entry_type --> |
| 21278 | |
| 21279 | <td class="entry_description"> |
| 21280 | <p>The worst-case divergence between Bayer green channels.<wbr/></p> |
| 21281 | </td> |
| 21282 | |
| 21283 | <td class="entry_units"> |
| 21284 | </td> |
| 21285 | |
| 21286 | <td class="entry_range"> |
| 21287 | <p>>= 0</p> |
| 21288 | </td> |
| 21289 | |
| 21290 | <td class="entry_tags"> |
| 21291 | <ul class="entry_tags"> |
| 21292 | <li><a href="#tag_RAW">RAW</a></li> |
| 21293 | </ul> |
| 21294 | </td> |
| 21295 | |
| 21296 | </tr> |
| 21297 | <tr class="entries_header"> |
| 21298 | <th class="th_details" colspan="5">Details</th> |
| 21299 | </tr> |
| 21300 | <tr class="entry_cont"> |
| 21301 | <td class="entry_details" colspan="5"> |
| 21302 | <p>This value is an estimate of the worst case split between the |
| 21303 | Bayer green channels in the red and blue rows in the sensor color |
| 21304 | filter array.<wbr/></p> |
| 21305 | <p>The green split is calculated as follows:</p> |
| 21306 | <ol> |
| 21307 | <li>A 5x5 pixel (or larger) window W within the active sensor array is |
| 21308 | chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer |
| 21309 | mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/> The location and size of the window |
| 21310 | chosen is implementation defined,<wbr/> and should be chosen to provide a |
| 21311 | green split estimate that is both representative of the entire image |
| 21312 | for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li> |
| 21313 | <li>The arithmetic mean of the green channels from the red |
| 21314 | rows (mean_<wbr/>Gr) within W is computed.<wbr/></li> |
| 21315 | <li>The arithmetic mean of the green channels from the blue |
| 21316 | rows (mean_<wbr/>Gb) within W is computed.<wbr/></li> |
| 21317 | <li>The maximum ratio R of the two means is computed as follows: |
| 21318 | <code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li> |
| 21319 | </ol> |
| 21320 | <p>The ratio R is the green split divergence reported for this property,<wbr/> |
| 21321 | which represents how much the green channels differ in the mosaic |
| 21322 | pattern.<wbr/> This value is typically used to determine the treatment of |
| 21323 | the green mosaic channels when demosaicing.<wbr/></p> |
| 21324 | <p>The green split value can be roughly interpreted as follows:</p> |
| 21325 | <ul> |
| 21326 | <li>R < 1.<wbr/>03 is a negligible split (<3% divergence).<wbr/></li> |
| 21327 | <li>1.<wbr/>20 <= R >= 1.<wbr/>03 will require some software |
| 21328 | correction to avoid demosaic errors (3-20% divergence).<wbr/></li> |
| 21329 | <li>R > 1.<wbr/>20 will require strong software correction to produce |
| 21330 | a usuable image (>20% divergence).<wbr/></li> |
| 21331 | </ul> |
| 21332 | </td> |
| 21333 | </tr> |
| 21334 | |
| 21335 | <tr class="entries_header"> |
| 21336 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 21337 | </tr> |
| 21338 | <tr class="entry_cont"> |
| 21339 | <td class="entry_details" colspan="5"> |
| 21340 | <p>The green split given may be a static value based on prior |
| 21341 | characterization of the camera sensor using the green split |
| 21342 | calculation method given here over a large,<wbr/> representative,<wbr/> sample |
| 21343 | set of images.<wbr/> Other methods of calculation that produce equivalent |
| 21344 | results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p> |
| 21345 | </td> |
| 21346 | </tr> |
| 21347 | |
| 21348 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 21349 | <!-- end of entry --> |
| 21350 | |
| 21351 | |
| 21352 | <tr class="entry" id="dynamic_android.sensor.testPatternData"> |
| 21353 | <td class="entry_name |
| 21354 | " rowspan="5"> |
| 21355 | android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data |
| 21356 | </td> |
| 21357 | <td class="entry_type"> |
| 21358 | <span class="entry_type_name">int32</span> |
| 21359 | <span class="entry_type_container">x</span> |
| 21360 | |
| 21361 | <span class="entry_type_array"> |
| 21362 | 4 |
| 21363 | </span> |
| 21364 | <span class="entry_type_visibility"> [public]</span> |
| 21365 | |
| 21366 | |
| 21367 | |
| 21368 | |
| 21369 | |
| 21370 | |
| 21371 | </td> <!-- entry_type --> |
| 21372 | |
| 21373 | <td class="entry_description"> |
| 21374 | <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern |
| 21375 | when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p> |
| 21376 | </td> |
| 21377 | |
| 21378 | <td class="entry_units"> |
| 21379 | </td> |
| 21380 | |
| 21381 | <td class="entry_range"> |
| 21382 | </td> |
| 21383 | |
| 21384 | <td class="entry_tags"> |
| 21385 | </td> |
| 21386 | |
| 21387 | </tr> |
| 21388 | <tr class="entries_header"> |
| 21389 | <th class="th_details" colspan="5">Details</th> |
| 21390 | </tr> |
| 21391 | <tr class="entry_cont"> |
| 21392 | <td class="entry_details" colspan="5"> |
| 21393 | <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/> |
| 21394 | The camera device then uses the most significant X bits |
| 21395 | that correspond to how many bits are in its Bayer raw sensor |
| 21396 | output.<wbr/></p> |
| 21397 | <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the |
| 21398 | 10 most significant bits from each color channel.<wbr/></p> |
| 21399 | </td> |
| 21400 | </tr> |
| 21401 | |
| 21402 | <tr class="entries_header"> |
| 21403 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 21404 | </tr> |
| 21405 | <tr class="entry_cont"> |
| 21406 | <td class="entry_details" colspan="5"> |
| 21407 | |
| 21408 | </td> |
| 21409 | </tr> |
| 21410 | |
| 21411 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 21412 | <!-- end of entry --> |
| 21413 | |
| 21414 | |
| 21415 | <tr class="entry" id="dynamic_android.sensor.testPatternMode"> |
| 21416 | <td class="entry_name |
| 21417 | " rowspan="5"> |
| 21418 | android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode |
| 21419 | </td> |
| 21420 | <td class="entry_type"> |
| 21421 | <span class="entry_type_name entry_type_name_enum">int32</span> |
| 21422 | |
| 21423 | <span class="entry_type_visibility"> [public]</span> |
| 21424 | |
| 21425 | |
| 21426 | |
| 21427 | |
| 21428 | |
| 21429 | <ul class="entry_type_enum"> |
| 21430 | <li> |
| 21431 | <span class="entry_type_enum_name">OFF</span> |
| 21432 | <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera |
| 21433 | device returns captures from the image sensor.<wbr/></p> |
| 21434 | <p>This is the default if the key is not set.<wbr/></p></span> |
| 21435 | </li> |
| 21436 | <li> |
| 21437 | <span class="entry_type_enum_name">SOLID_COLOR</span> |
| 21438 | <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 |
| 21439 | respective color channel provided in |
| 21440 | <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p> |
| 21441 | <p>For example:</p> |
| 21442 | <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0] |
| 21443 | </code></pre> |
| 21444 | <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p> |
| 21445 | <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0] |
| 21446 | </code></pre> |
| 21447 | <p>All red pixels are 100% red.<wbr/> Only the odd green pixels |
| 21448 | are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span> |
| 21449 | </li> |
| 21450 | <li> |
| 21451 | <span class="entry_type_enum_name">COLOR_BARS</span> |
| 21452 | <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p> |
| 21453 | <p>The vertical bars (left-to-right) are as follows:</p> |
| 21454 | <ul> |
| 21455 | <li>100% white</li> |
| 21456 | <li>yellow</li> |
| 21457 | <li>cyan</li> |
| 21458 | <li>green</li> |
| 21459 | <li>magenta</li> |
| 21460 | <li>red</li> |
| 21461 | <li>blue</li> |
| 21462 | <li>black</li> |
| 21463 | </ul> |
| 21464 | <p>In general the image would look like the following:</p> |
| 21465 | <pre><code>W Y C G M R B K |
| 21466 | W Y C G M R B K |
| 21467 | W Y C G M R B K |
| 21468 | W Y C G M R B K |
| 21469 | W Y C G M R B K |
| 21470 | .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> |
| 21471 | .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> |
| 21472 | .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> |
| 21473 | |
| 21474 | (B = Blue,<wbr/> K = Black) |
| 21475 | </code></pre> |
| 21476 | <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/> |
| 21477 | When this is not possible,<wbr/> the bar size should be rounded |
| 21478 | down to the nearest integer and the pattern can repeat |
| 21479 | on the right side.<wbr/></p> |
| 21480 | <p>Each bar's height must always take up the full sensor |
| 21481 | pixel array height.<wbr/></p> |
| 21482 | <p>Each pixel in this test pattern must be set to either |
| 21483 | 0% intensity or 100% intensity.<wbr/></p></span> |
| 21484 | </li> |
| 21485 | <li> |
| 21486 | <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span> |
| 21487 | <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that |
| 21488 | each bar should start at its specified color at the top,<wbr/> |
| 21489 | and fade to gray at the bottom.<wbr/></p> |
| 21490 | <p>Furthermore each bar is further subdivided into a left and |
| 21491 | right half.<wbr/> The left half should have a smooth gradient,<wbr/> |
| 21492 | and the right half should have a quantized gradient.<wbr/></p> |
| 21493 | <p>In particular,<wbr/> the right half's should consist of blocks of the |
| 21494 | same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p> |
| 21495 | <p>The least significant bits in the quantized gradient should |
| 21496 | be copied from the most significant bits of the smooth gradient.<wbr/></p> |
| 21497 | <p>The height of each bar should always be a multiple of 128.<wbr/> |
| 21498 | When this is not the case,<wbr/> the pattern should repeat at the bottom |
| 21499 | of the image.<wbr/></p></span> |
| 21500 | </li> |
| 21501 | <li> |
| 21502 | <span class="entry_type_enum_name">PN9</span> |
| 21503 | <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence |
| 21504 | generated from a PN9 512-bit sequence (typically implemented |
| 21505 | in hardware with a linear feedback shift register).<wbr/></p> |
| 21506 | <p>The generator should be reset at the beginning of each frame,<wbr/> |
| 21507 | and thus each subsequent raw frame with this test pattern should |
| 21508 | be exactly the same as the last.<wbr/></p></span> |
| 21509 | </li> |
| 21510 | <li> |
| 21511 | <span class="entry_type_enum_name">CUSTOM1</span> |
| 21512 | <span class="entry_type_enum_value">256</span> |
| 21513 | <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are |
| 21514 | available only on this camera device are at least this numeric |
| 21515 | value.<wbr/></p> |
| 21516 | <p>All of the custom test patterns will be static |
| 21517 | (that is the raw image must not vary from frame to frame).<wbr/></p></span> |
| 21518 | </li> |
| 21519 | </ul> |
| 21520 | |
| 21521 | </td> <!-- entry_type --> |
| 21522 | |
| 21523 | <td class="entry_description"> |
| 21524 | <p>When enabled,<wbr/> the sensor sends a test pattern instead of |
| 21525 | doing a real exposure from the camera.<wbr/></p> |
| 21526 | </td> |
| 21527 | |
| 21528 | <td class="entry_units"> |
| 21529 | </td> |
| 21530 | |
| 21531 | <td class="entry_range"> |
| 21532 | <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p> |
| 21533 | </td> |
| 21534 | |
| 21535 | <td class="entry_tags"> |
| 21536 | </td> |
| 21537 | |
| 21538 | </tr> |
| 21539 | <tr class="entries_header"> |
| 21540 | <th class="th_details" colspan="5">Details</th> |
| 21541 | </tr> |
| 21542 | <tr class="entry_cont"> |
| 21543 | <td class="entry_details" colspan="5"> |
| 21544 | <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified |
| 21545 | by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should |
| 21546 | work as normal.<wbr/></p> |
| 21547 | <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still |
| 21548 | occur (and that the test pattern remain unmodified,<wbr/> since the flash |
| 21549 | would not actually affect it).<wbr/></p> |
| 21550 | <p>Defaults to OFF.<wbr/></p> |
| 21551 | </td> |
| 21552 | </tr> |
| 21553 | |
| 21554 | <tr class="entries_header"> |
| 21555 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 21556 | </tr> |
| 21557 | <tr class="entry_cont"> |
| 21558 | <td class="entry_details" colspan="5"> |
| 21559 | <p>All test patterns are specified in the Bayer domain.<wbr/></p> |
| 21560 | <p>The HAL may choose to substitute test patterns from the sensor |
| 21561 | with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be |
| 21562 | indistinguishable to the ISP whether the data came from the |
| 21563 | sensor interconnect bus (such as CSI2) or memory.<wbr/></p> |
| 21564 | </td> |
| 21565 | </tr> |
| 21566 | |
| 21567 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 21568 | <!-- end of entry --> |
| 21569 | |
| 21570 | |
| 21571 | <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew"> |
| 21572 | <td class="entry_name |
| 21573 | " rowspan="5"> |
| 21574 | android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew |
| 21575 | </td> |
| 21576 | <td class="entry_type"> |
| 21577 | <span class="entry_type_name">int64</span> |
| 21578 | |
| 21579 | <span class="entry_type_visibility"> [public]</span> |
| 21580 | |
| 21581 | |
| 21582 | <span class="entry_type_hwlevel">[limited] </span> |
| 21583 | |
| 21584 | |
| 21585 | |
| 21586 | |
| 21587 | </td> <!-- entry_type --> |
| 21588 | |
| 21589 | <td class="entry_description"> |
| 21590 | <p>Duration between the start of first row exposure |
| 21591 | and the start of last row exposure.<wbr/></p> |
| 21592 | </td> |
| 21593 | |
| 21594 | <td class="entry_units"> |
| 21595 | Nanoseconds |
| 21596 | </td> |
| 21597 | |
| 21598 | <td class="entry_range"> |
| 21599 | <p>>= 0 and < |
| 21600 | <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p> |
| 21601 | </td> |
| 21602 | |
| 21603 | <td class="entry_tags"> |
| 21604 | <ul class="entry_tags"> |
| 21605 | <li><a href="#tag_V1">V1</a></li> |
| 21606 | </ul> |
| 21607 | </td> |
| 21608 | |
| 21609 | </tr> |
| 21610 | <tr class="entries_header"> |
| 21611 | <th class="th_details" colspan="5">Details</th> |
| 21612 | </tr> |
| 21613 | <tr class="entry_cont"> |
| 21614 | <td class="entry_details" colspan="5"> |
| 21615 | <p>This is the exposure time skew between the first and last |
| 21616 | row exposure start times.<wbr/> The first row and the last row are |
| 21617 | the first and last rows inside of the |
| 21618 | <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> |
| 21619 | <p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent |
| 21620 | to the frame readout time.<wbr/></p> |
| 21621 | </td> |
| 21622 | </tr> |
| 21623 | |
| 21624 | <tr class="entries_header"> |
| 21625 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 21626 | </tr> |
| 21627 | <tr class="entry_cont"> |
| 21628 | <td class="entry_details" colspan="5"> |
| 21629 | <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin |
| 21630 | exposure at the same time.<wbr/></p> |
| 21631 | </td> |
| 21632 | </tr> |
| 21633 | |
| 21634 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 21635 | <!-- end of entry --> |
| 21636 | |
| 21637 | |
| 21638 | <tr class="entry" id="dynamic_android.sensor.dynamicBlackLevel"> |
| 21639 | <td class="entry_name |
| 21640 | " rowspan="5"> |
| 21641 | android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level |
| 21642 | </td> |
| 21643 | <td class="entry_type"> |
| 21644 | <span class="entry_type_name">float</span> |
| 21645 | <span class="entry_type_container">x</span> |
| 21646 | |
| 21647 | <span class="entry_type_array"> |
| 21648 | 4 |
| 21649 | </span> |
| 21650 | <span class="entry_type_visibility"> [public]</span> |
| 21651 | |
| 21652 | |
| 21653 | |
| 21654 | |
| 21655 | <div class="entry_type_notes">2x2 raw count block</div> |
| 21656 | |
| 21657 | |
| 21658 | </td> <!-- entry_type --> |
| 21659 | |
| 21660 | <td class="entry_description"> |
| 21661 | <p>A per-frame dynamic black level offset for each of the color filter |
| 21662 | arrangement (CFA) mosaic channels.<wbr/></p> |
| 21663 | </td> |
| 21664 | |
| 21665 | <td class="entry_units"> |
| 21666 | </td> |
| 21667 | |
| 21668 | <td class="entry_range"> |
| 21669 | <p>>= 0 for each.<wbr/></p> |
| 21670 | </td> |
| 21671 | |
| 21672 | <td class="entry_tags"> |
| 21673 | <ul class="entry_tags"> |
| 21674 | <li><a href="#tag_RAW">RAW</a></li> |
| 21675 | </ul> |
| 21676 | </td> |
| 21677 | |
| 21678 | </tr> |
| 21679 | <tr class="entries_header"> |
| 21680 | <th class="th_details" colspan="5">Details</th> |
| 21681 | </tr> |
| 21682 | <tr class="entry_cont"> |
| 21683 | <td class="entry_details" colspan="5"> |
| 21684 | <p>Camera sensor black levels may vary dramatically for different |
| 21685 | capture settings (e.<wbr/>g.<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> The fixed black |
| 21686 | level reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may be too |
| 21687 | inaccurate to represent the actual value on a per-frame basis.<wbr/> The |
| 21688 | camera device internal pipeline relies on reliable black level values |
| 21689 | to process the raw images appropriately.<wbr/> To get the best image |
| 21690 | quality,<wbr/> the camera device may choose to estimate the per frame black |
| 21691 | level values either based on optically shielded black regions |
| 21692 | (<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>) or its internal model.<wbr/></p> |
| 21693 | <p>This key reports the camera device estimated per-frame zero light |
| 21694 | value for each of the CFA mosaic channels in the camera sensor.<wbr/> The |
| 21695 | <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may only represent a coarse |
| 21696 | approximation of the actual black level values.<wbr/> This value is the |
| 21697 | black level used in camera device internal image processing pipeline |
| 21698 | and generally more accurate than the fixed black level values.<wbr/> |
| 21699 | However,<wbr/> since they are estimated values by the camera device,<wbr/> they |
| 21700 | may not be as accurate as the black level values calculated from the |
| 21701 | optical black pixels reported by <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>.<wbr/></p> |
| 21702 | <p>The values are given in the same order as channels listed for the CFA |
| 21703 | 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 |
| 21704 | nth value given corresponds to the black level offset for the nth |
| 21705 | color channel listed in the CFA.<wbr/></p> |
| 21706 | <p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is |
| 21707 | available or the camera device advertises this key via |
| 21708 | <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p> |
| 21709 | </td> |
| 21710 | </tr> |
| 21711 | |
| 21712 | <tr class="entries_header"> |
| 21713 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 21714 | </tr> |
| 21715 | <tr class="entry_cont"> |
| 21716 | <td class="entry_details" colspan="5"> |
| 21717 | <p>The values are given in row-column scan order,<wbr/> with the first value |
| 21718 | corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p> |
| 21719 | </td> |
| 21720 | </tr> |
| 21721 | |
| 21722 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 21723 | <!-- end of entry --> |
| 21724 | |
| 21725 | |
| 21726 | <tr class="entry" id="dynamic_android.sensor.dynamicWhiteLevel"> |
| 21727 | <td class="entry_name |
| 21728 | " rowspan="5"> |
| 21729 | android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level |
| 21730 | </td> |
| 21731 | <td class="entry_type"> |
| 21732 | <span class="entry_type_name">int32</span> |
| 21733 | |
| 21734 | <span class="entry_type_visibility"> [public]</span> |
| 21735 | |
| 21736 | |
| 21737 | |
| 21738 | |
| 21739 | |
| 21740 | |
| 21741 | </td> <!-- entry_type --> |
| 21742 | |
| 21743 | <td class="entry_description"> |
| 21744 | <p>Maximum raw value output by sensor for this frame.<wbr/></p> |
| 21745 | </td> |
| 21746 | |
| 21747 | <td class="entry_units"> |
| 21748 | </td> |
| 21749 | |
| 21750 | <td class="entry_range"> |
| 21751 | <p>>= 0</p> |
| 21752 | </td> |
| 21753 | |
| 21754 | <td class="entry_tags"> |
| 21755 | <ul class="entry_tags"> |
| 21756 | <li><a href="#tag_RAW">RAW</a></li> |
| 21757 | </ul> |
| 21758 | </td> |
| 21759 | |
| 21760 | </tr> |
| 21761 | <tr class="entries_header"> |
| 21762 | <th class="th_details" colspan="5">Details</th> |
| 21763 | </tr> |
| 21764 | <tr class="entry_cont"> |
| 21765 | <td class="entry_details" colspan="5"> |
| 21766 | <p>Since the <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may change for different |
| 21767 | capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>),<wbr/> the white |
| 21768 | level will change accordingly.<wbr/> This key is similar to |
| 21769 | <a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>,<wbr/> but specifies the camera device |
| 21770 | estimated white level for each frame.<wbr/></p> |
| 21771 | <p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is |
| 21772 | available or the camera device advertises this key via |
| 21773 | <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p> |
| 21774 | </td> |
| 21775 | </tr> |
| 21776 | |
| 21777 | <tr class="entries_header"> |
| 21778 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 21779 | </tr> |
| 21780 | <tr class="entry_cont"> |
| 21781 | <td class="entry_details" colspan="5"> |
| 21782 | <p>The full bit depth of the sensor must be available in the raw data,<wbr/> |
| 21783 | so the value for linear sensors should not be significantly lower |
| 21784 | than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p> |
| 21785 | </td> |
| 21786 | </tr> |
| 21787 | |
| 21788 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 21789 | <!-- end of entry --> |
| 21790 | |
| 21791 | |
| 21792 | |
| 21793 | <!-- end of kind --> |
| 21794 | </tbody> |
| 21795 | |
| 21796 | <!-- end of section --> |
| 21797 | <tr><td colspan="6" id="section_shading" class="section">shading</td></tr> |
| 21798 | |
| 21799 | |
| 21800 | <tr><td colspan="6" class="kind">controls</td></tr> |
| 21801 | |
| 21802 | <thead class="entries_header"> |
| 21803 | <tr> |
| 21804 | <th class="th_name">Property Name</th> |
| 21805 | <th class="th_type">Type</th> |
| 21806 | <th class="th_description">Description</th> |
| 21807 | <th class="th_units">Units</th> |
| 21808 | <th class="th_range">Range</th> |
| 21809 | <th class="th_tags">Tags</th> |
| 21810 | </tr> |
| 21811 | </thead> |
| 21812 | |
| 21813 | <tbody> |
| 21814 | |
| 21815 | |
| 21816 | |
| 21817 | |
| 21818 | |
| 21819 | |
| 21820 | |
| 21821 | |
| 21822 | |
| 21823 | |
| 21824 | <tr class="entry" id="controls_android.shading.mode"> |
| 21825 | <td class="entry_name |
| 21826 | " rowspan="3"> |
| 21827 | android.<wbr/>shading.<wbr/>mode |
| 21828 | </td> |
| 21829 | <td class="entry_type"> |
| 21830 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 21831 | |
| 21832 | <span class="entry_type_visibility"> [public]</span> |
| 21833 | |
| 21834 | |
| 21835 | <span class="entry_type_hwlevel">[full] </span> |
| 21836 | |
| 21837 | |
| 21838 | |
| 21839 | <ul class="entry_type_enum"> |
| 21840 | <li> |
| 21841 | <span class="entry_type_enum_name">OFF</span> |
| 21842 | <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span> |
| 21843 | </li> |
| 21844 | <li> |
| 21845 | <span class="entry_type_enum_name">FAST</span> |
| 21846 | <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing |
| 21847 | frame rate relative to sensor raw output</p></span> |
| 21848 | </li> |
| 21849 | <li> |
| 21850 | <span class="entry_type_enum_name">HIGH_QUALITY</span> |
| 21851 | <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the |
| 21852 | cost of possibly reduced frame rate.<wbr/></p></span> |
| 21853 | </li> |
| 21854 | </ul> |
| 21855 | |
| 21856 | </td> <!-- entry_type --> |
| 21857 | |
| 21858 | <td class="entry_description"> |
| 21859 | <p>Quality of lens shading correction applied |
| 21860 | to the image data.<wbr/></p> |
| 21861 | </td> |
| 21862 | |
| 21863 | <td class="entry_units"> |
| 21864 | </td> |
| 21865 | |
| 21866 | <td class="entry_range"> |
| 21867 | <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p> |
| 21868 | </td> |
| 21869 | |
| 21870 | <td class="entry_tags"> |
| 21871 | </td> |
| 21872 | |
| 21873 | </tr> |
| 21874 | <tr class="entries_header"> |
| 21875 | <th class="th_details" colspan="5">Details</th> |
| 21876 | </tr> |
| 21877 | <tr class="entry_cont"> |
| 21878 | <td class="entry_details" colspan="5"> |
| 21879 | <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the |
| 21880 | camera device,<wbr/> and an identity lens shading map data will be provided |
| 21881 | 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 |
| 21882 | shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/> |
| 21883 | 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 |
| 21884 | map shown below:</p> |
| 21885 | <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/> |
| 21886 | 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/> |
| 21887 | 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/> |
| 21888 | 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/> |
| 21889 | 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/> |
| 21890 | 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 ] |
| 21891 | </code></pre> |
| 21892 | <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera |
| 21893 | device.<wbr/> Applications can request lens shading map data by setting |
| 21894 | <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 |
| 21895 | 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 |
| 21896 | data will be the one applied by the camera device for this capture request.<wbr/></p> |
| 21897 | <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore |
| 21898 | the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and |
| 21899 | 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> |
| 21900 | OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB |
| 21901 | to be converged before using the returned shading map data.<wbr/></p> |
| 21902 | </td> |
| 21903 | </tr> |
| 21904 | |
| 21905 | |
| 21906 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 21907 | <!-- end of entry --> |
| 21908 | |
| 21909 | |
| 21910 | <tr class="entry" id="controls_android.shading.strength"> |
| 21911 | <td class="entry_name |
| 21912 | " rowspan="1"> |
| 21913 | android.<wbr/>shading.<wbr/>strength |
| 21914 | </td> |
| 21915 | <td class="entry_type"> |
| 21916 | <span class="entry_type_name">byte</span> |
| 21917 | |
| 21918 | <span class="entry_type_visibility"> [system]</span> |
| 21919 | |
| 21920 | |
| 21921 | |
| 21922 | |
| 21923 | |
| 21924 | |
| 21925 | </td> <!-- entry_type --> |
| 21926 | |
| 21927 | <td class="entry_description"> |
| 21928 | <p>Control the amount of shading correction |
| 21929 | applied to the images</p> |
| 21930 | </td> |
| 21931 | |
| 21932 | <td class="entry_units"> |
| 21933 | unitless: 1-10; 10 is full shading |
| 21934 | compensation |
| 21935 | </td> |
| 21936 | |
| 21937 | <td class="entry_range"> |
| 21938 | </td> |
| 21939 | |
| 21940 | <td class="entry_tags"> |
| 21941 | <ul class="entry_tags"> |
| 21942 | <li><a href="#tag_FUTURE">FUTURE</a></li> |
| 21943 | </ul> |
| 21944 | </td> |
| 21945 | |
| 21946 | </tr> |
| 21947 | |
| 21948 | |
| 21949 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 21950 | <!-- end of entry --> |
| 21951 | |
| 21952 | |
| 21953 | |
| 21954 | <!-- end of kind --> |
| 21955 | </tbody> |
| 21956 | <tr><td colspan="6" class="kind">dynamic</td></tr> |
| 21957 | |
| 21958 | <thead class="entries_header"> |
| 21959 | <tr> |
| 21960 | <th class="th_name">Property Name</th> |
| 21961 | <th class="th_type">Type</th> |
| 21962 | <th class="th_description">Description</th> |
| 21963 | <th class="th_units">Units</th> |
| 21964 | <th class="th_range">Range</th> |
| 21965 | <th class="th_tags">Tags</th> |
| 21966 | </tr> |
| 21967 | </thead> |
| 21968 | |
| 21969 | <tbody> |
| 21970 | |
| 21971 | |
| 21972 | |
| 21973 | |
| 21974 | |
| 21975 | |
| 21976 | |
| 21977 | |
| 21978 | |
| 21979 | |
| 21980 | <tr class="entry" id="dynamic_android.shading.mode"> |
| 21981 | <td class="entry_name |
| 21982 | " rowspan="3"> |
| 21983 | android.<wbr/>shading.<wbr/>mode |
| 21984 | </td> |
| 21985 | <td class="entry_type"> |
| 21986 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 21987 | |
| 21988 | <span class="entry_type_visibility"> [public]</span> |
| 21989 | |
| 21990 | |
| 21991 | <span class="entry_type_hwlevel">[full] </span> |
| 21992 | |
| 21993 | |
| 21994 | |
| 21995 | <ul class="entry_type_enum"> |
| 21996 | <li> |
| 21997 | <span class="entry_type_enum_name">OFF</span> |
| 21998 | <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span> |
| 21999 | </li> |
| 22000 | <li> |
| 22001 | <span class="entry_type_enum_name">FAST</span> |
| 22002 | <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing |
| 22003 | frame rate relative to sensor raw output</p></span> |
| 22004 | </li> |
| 22005 | <li> |
| 22006 | <span class="entry_type_enum_name">HIGH_QUALITY</span> |
| 22007 | <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the |
| 22008 | cost of possibly reduced frame rate.<wbr/></p></span> |
| 22009 | </li> |
| 22010 | </ul> |
| 22011 | |
| 22012 | </td> <!-- entry_type --> |
| 22013 | |
| 22014 | <td class="entry_description"> |
| 22015 | <p>Quality of lens shading correction applied |
| 22016 | to the image data.<wbr/></p> |
| 22017 | </td> |
| 22018 | |
| 22019 | <td class="entry_units"> |
| 22020 | </td> |
| 22021 | |
| 22022 | <td class="entry_range"> |
| 22023 | <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p> |
| 22024 | </td> |
| 22025 | |
| 22026 | <td class="entry_tags"> |
| 22027 | </td> |
| 22028 | |
| 22029 | </tr> |
| 22030 | <tr class="entries_header"> |
| 22031 | <th class="th_details" colspan="5">Details</th> |
| 22032 | </tr> |
| 22033 | <tr class="entry_cont"> |
| 22034 | <td class="entry_details" colspan="5"> |
| 22035 | <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the |
| 22036 | camera device,<wbr/> and an identity lens shading map data will be provided |
| 22037 | 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 |
| 22038 | shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/> |
| 22039 | 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 |
| 22040 | map shown below:</p> |
| 22041 | <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/> |
| 22042 | 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/> |
| 22043 | 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/> |
| 22044 | 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/> |
| 22045 | 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/> |
| 22046 | 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 ] |
| 22047 | </code></pre> |
| 22048 | <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera |
| 22049 | device.<wbr/> Applications can request lens shading map data by setting |
| 22050 | <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 |
| 22051 | 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 |
| 22052 | data will be the one applied by the camera device for this capture request.<wbr/></p> |
| 22053 | <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore |
| 22054 | the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and |
| 22055 | 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> |
| 22056 | OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB |
| 22057 | to be converged before using the returned shading map data.<wbr/></p> |
| 22058 | </td> |
| 22059 | </tr> |
| 22060 | |
| 22061 | |
| 22062 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 22063 | <!-- end of entry --> |
| 22064 | |
| 22065 | |
| 22066 | |
| 22067 | <!-- end of kind --> |
| 22068 | </tbody> |
| 22069 | <tr><td colspan="6" class="kind">static</td></tr> |
| 22070 | |
| 22071 | <thead class="entries_header"> |
| 22072 | <tr> |
| 22073 | <th class="th_name">Property Name</th> |
| 22074 | <th class="th_type">Type</th> |
| 22075 | <th class="th_description">Description</th> |
| 22076 | <th class="th_units">Units</th> |
| 22077 | <th class="th_range">Range</th> |
| 22078 | <th class="th_tags">Tags</th> |
| 22079 | </tr> |
| 22080 | </thead> |
| 22081 | |
| 22082 | <tbody> |
| 22083 | |
| 22084 | |
| 22085 | |
| 22086 | |
| 22087 | |
| 22088 | |
| 22089 | |
| 22090 | |
| 22091 | |
| 22092 | |
| 22093 | <tr class="entry" id="static_android.shading.availableModes"> |
| 22094 | <td class="entry_name |
| 22095 | " rowspan="5"> |
| 22096 | android.<wbr/>shading.<wbr/>available<wbr/>Modes |
| 22097 | </td> |
| 22098 | <td class="entry_type"> |
| 22099 | <span class="entry_type_name">byte</span> |
| 22100 | <span class="entry_type_container">x</span> |
| 22101 | |
| 22102 | <span class="entry_type_array"> |
| 22103 | n |
| 22104 | </span> |
| 22105 | <span class="entry_type_visibility"> [public as enumList]</span> |
| 22106 | |
| 22107 | |
| 22108 | <span class="entry_type_hwlevel">[legacy] </span> |
| 22109 | |
| 22110 | |
| 22111 | <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div> |
| 22112 | |
| 22113 | |
| 22114 | </td> <!-- entry_type --> |
| 22115 | |
| 22116 | <td class="entry_description"> |
| 22117 | <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> |
| 22118 | </td> |
| 22119 | |
| 22120 | <td class="entry_units"> |
| 22121 | </td> |
| 22122 | |
| 22123 | <td class="entry_range"> |
| 22124 | <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p> |
| 22125 | </td> |
| 22126 | |
| 22127 | <td class="entry_tags"> |
| 22128 | </td> |
| 22129 | |
| 22130 | </tr> |
| 22131 | <tr class="entries_header"> |
| 22132 | <th class="th_details" colspan="5">Details</th> |
| 22133 | </tr> |
| 22134 | <tr class="entry_cont"> |
| 22135 | <td class="entry_details" colspan="5"> |
| 22136 | <p>This list contains lens shading modes that can be set for the camera device.<wbr/> |
| 22137 | Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always |
| 22138 | list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/> |
| 22139 | LEGACY devices will always only support FAST mode.<wbr/></p> |
| 22140 | </td> |
| 22141 | </tr> |
| 22142 | |
| 22143 | <tr class="entries_header"> |
| 22144 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 22145 | </tr> |
| 22146 | <tr class="entry_cont"> |
| 22147 | <td class="entry_details" colspan="5"> |
| 22148 | <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is |
| 22149 | available on the camera device,<wbr/> but the underlying implementation can be the same for |
| 22150 | both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not |
| 22151 | slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> |
| 22152 | </td> |
| 22153 | </tr> |
| 22154 | |
| 22155 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 22156 | <!-- end of entry --> |
| 22157 | |
| 22158 | |
| 22159 | |
| 22160 | <!-- end of kind --> |
| 22161 | </tbody> |
| 22162 | |
| 22163 | <!-- end of section --> |
| 22164 | <tr><td colspan="6" id="section_statistics" class="section">statistics</td></tr> |
| 22165 | |
| 22166 | |
| 22167 | <tr><td colspan="6" class="kind">controls</td></tr> |
| 22168 | |
| 22169 | <thead class="entries_header"> |
| 22170 | <tr> |
| 22171 | <th class="th_name">Property Name</th> |
| 22172 | <th class="th_type">Type</th> |
| 22173 | <th class="th_description">Description</th> |
| 22174 | <th class="th_units">Units</th> |
| 22175 | <th class="th_range">Range</th> |
| 22176 | <th class="th_tags">Tags</th> |
| 22177 | </tr> |
| 22178 | </thead> |
| 22179 | |
| 22180 | <tbody> |
| 22181 | |
| 22182 | |
| 22183 | |
| 22184 | |
| 22185 | |
| 22186 | |
| 22187 | |
| 22188 | |
| 22189 | |
| 22190 | |
| 22191 | <tr class="entry" id="controls_android.statistics.faceDetectMode"> |
| 22192 | <td class="entry_name |
| 22193 | " rowspan="5"> |
| 22194 | android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode |
| 22195 | </td> |
| 22196 | <td class="entry_type"> |
| 22197 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 22198 | |
| 22199 | <span class="entry_type_visibility"> [public]</span> |
| 22200 | |
| 22201 | |
| 22202 | <span class="entry_type_hwlevel">[legacy] </span> |
| 22203 | |
| 22204 | |
| 22205 | |
| 22206 | <ul class="entry_type_enum"> |
| 22207 | <li> |
| 22208 | <span class="entry_type_enum_name">OFF</span> |
| 22209 | <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture |
| 22210 | results.<wbr/></p></span> |
| 22211 | </li> |
| 22212 | <li> |
| 22213 | <span class="entry_type_enum_name">SIMPLE</span> |
| 22214 | <span class="entry_type_enum_optional">[optional]</span> |
| 22215 | <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span> |
| 22216 | </li> |
| 22217 | <li> |
| 22218 | <span class="entry_type_enum_name">FULL</span> |
| 22219 | <span class="entry_type_enum_optional">[optional]</span> |
| 22220 | <span class="entry_type_enum_notes"><p>Return all face |
| 22221 | metadata.<wbr/></p> |
| 22222 | <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span> |
| 22223 | </li> |
| 22224 | </ul> |
| 22225 | |
| 22226 | </td> <!-- entry_type --> |
| 22227 | |
| 22228 | <td class="entry_description"> |
| 22229 | <p>Operating mode for the face detector |
| 22230 | unit.<wbr/></p> |
| 22231 | </td> |
| 22232 | |
| 22233 | <td class="entry_units"> |
| 22234 | </td> |
| 22235 | |
| 22236 | <td class="entry_range"> |
| 22237 | <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p> |
| 22238 | </td> |
| 22239 | |
| 22240 | <td class="entry_tags"> |
| 22241 | <ul class="entry_tags"> |
| 22242 | <li><a href="#tag_BC">BC</a></li> |
| 22243 | </ul> |
| 22244 | </td> |
| 22245 | |
| 22246 | </tr> |
| 22247 | <tr class="entries_header"> |
| 22248 | <th class="th_details" colspan="5">Details</th> |
| 22249 | </tr> |
| 22250 | <tr class="entry_cont"> |
| 22251 | <td class="entry_details" colspan="5"> |
| 22252 | <p>Whether face detection is enabled,<wbr/> and whether it |
| 22253 | should output just the basic fields or the full set of |
| 22254 | fields.<wbr/></p> |
| 22255 | </td> |
| 22256 | </tr> |
| 22257 | |
| 22258 | <tr class="entries_header"> |
| 22259 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 22260 | </tr> |
| 22261 | <tr class="entry_cont"> |
| 22262 | <td class="entry_details" colspan="5"> |
| 22263 | <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and |
| 22264 | <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/> |
| 22265 | FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and |
| 22266 | <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p> |
| 22267 | </td> |
| 22268 | </tr> |
| 22269 | |
| 22270 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 22271 | <!-- end of entry --> |
| 22272 | |
| 22273 | |
| 22274 | <tr class="entry" id="controls_android.statistics.histogramMode"> |
| 22275 | <td class="entry_name |
| 22276 | " rowspan="1"> |
| 22277 | android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode |
| 22278 | </td> |
| 22279 | <td class="entry_type"> |
| 22280 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 22281 | |
| 22282 | <span class="entry_type_visibility"> [system as boolean]</span> |
| 22283 | |
| 22284 | |
| 22285 | |
| 22286 | |
| 22287 | |
| 22288 | <ul class="entry_type_enum"> |
| 22289 | <li> |
| 22290 | <span class="entry_type_enum_name">OFF</span> |
| 22291 | </li> |
| 22292 | <li> |
| 22293 | <span class="entry_type_enum_name">ON</span> |
| 22294 | </li> |
| 22295 | </ul> |
| 22296 | |
| 22297 | </td> <!-- entry_type --> |
| 22298 | |
| 22299 | <td class="entry_description"> |
| 22300 | <p>Operating mode for histogram |
| 22301 | generation</p> |
| 22302 | </td> |
| 22303 | |
| 22304 | <td class="entry_units"> |
| 22305 | </td> |
| 22306 | |
| 22307 | <td class="entry_range"> |
| 22308 | </td> |
| 22309 | |
| 22310 | <td class="entry_tags"> |
| 22311 | <ul class="entry_tags"> |
| 22312 | <li><a href="#tag_FUTURE">FUTURE</a></li> |
| 22313 | </ul> |
| 22314 | </td> |
| 22315 | |
| 22316 | </tr> |
| 22317 | |
| 22318 | |
| 22319 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 22320 | <!-- end of entry --> |
| 22321 | |
| 22322 | |
| 22323 | <tr class="entry" id="controls_android.statistics.sharpnessMapMode"> |
| 22324 | <td class="entry_name |
| 22325 | " rowspan="1"> |
| 22326 | android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode |
| 22327 | </td> |
| 22328 | <td class="entry_type"> |
| 22329 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 22330 | |
| 22331 | <span class="entry_type_visibility"> [system as boolean]</span> |
| 22332 | |
| 22333 | |
| 22334 | |
| 22335 | |
| 22336 | |
| 22337 | <ul class="entry_type_enum"> |
| 22338 | <li> |
| 22339 | <span class="entry_type_enum_name">OFF</span> |
| 22340 | </li> |
| 22341 | <li> |
| 22342 | <span class="entry_type_enum_name">ON</span> |
| 22343 | </li> |
| 22344 | </ul> |
| 22345 | |
| 22346 | </td> <!-- entry_type --> |
| 22347 | |
| 22348 | <td class="entry_description"> |
| 22349 | <p>Operating mode for sharpness map |
| 22350 | generation</p> |
| 22351 | </td> |
| 22352 | |
| 22353 | <td class="entry_units"> |
| 22354 | </td> |
| 22355 | |
| 22356 | <td class="entry_range"> |
| 22357 | </td> |
| 22358 | |
| 22359 | <td class="entry_tags"> |
| 22360 | <ul class="entry_tags"> |
| 22361 | <li><a href="#tag_FUTURE">FUTURE</a></li> |
| 22362 | </ul> |
| 22363 | </td> |
| 22364 | |
| 22365 | </tr> |
| 22366 | |
| 22367 | |
| 22368 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 22369 | <!-- end of entry --> |
| 22370 | |
| 22371 | |
| 22372 | <tr class="entry" id="controls_android.statistics.hotPixelMapMode"> |
| 22373 | <td class="entry_name |
| 22374 | " rowspan="3"> |
| 22375 | android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode |
| 22376 | </td> |
| 22377 | <td class="entry_type"> |
| 22378 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 22379 | |
| 22380 | <span class="entry_type_visibility"> [public as boolean]</span> |
| 22381 | |
| 22382 | |
| 22383 | |
| 22384 | |
| 22385 | |
| 22386 | <ul class="entry_type_enum"> |
| 22387 | <li> |
| 22388 | <span class="entry_type_enum_name">OFF</span> |
| 22389 | <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span> |
| 22390 | </li> |
| 22391 | <li> |
| 22392 | <span class="entry_type_enum_name">ON</span> |
| 22393 | <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span> |
| 22394 | </li> |
| 22395 | </ul> |
| 22396 | |
| 22397 | </td> <!-- entry_type --> |
| 22398 | |
| 22399 | <td class="entry_description"> |
| 22400 | <p>Operating mode for hot pixel map generation.<wbr/></p> |
| 22401 | </td> |
| 22402 | |
| 22403 | <td class="entry_units"> |
| 22404 | </td> |
| 22405 | |
| 22406 | <td class="entry_range"> |
| 22407 | <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> |
| 22408 | </td> |
| 22409 | |
| 22410 | <td class="entry_tags"> |
| 22411 | <ul class="entry_tags"> |
| 22412 | <li><a href="#tag_V1">V1</a></li> |
| 22413 | <li><a href="#tag_RAW">RAW</a></li> |
| 22414 | </ul> |
| 22415 | </td> |
| 22416 | |
| 22417 | </tr> |
| 22418 | <tr class="entries_header"> |
| 22419 | <th class="th_details" colspan="5">Details</th> |
| 22420 | </tr> |
| 22421 | <tr class="entry_cont"> |
| 22422 | <td class="entry_details" colspan="5"> |
| 22423 | <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/> |
| 22424 | If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p> |
| 22425 | </td> |
| 22426 | </tr> |
| 22427 | |
| 22428 | |
| 22429 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 22430 | <!-- end of entry --> |
| 22431 | |
| 22432 | |
| 22433 | <tr class="entry" id="controls_android.statistics.lensShadingMapMode"> |
| 22434 | <td class="entry_name |
| 22435 | " rowspan="3"> |
| 22436 | android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode |
| 22437 | </td> |
| 22438 | <td class="entry_type"> |
| 22439 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 22440 | |
| 22441 | <span class="entry_type_visibility"> [public]</span> |
| 22442 | |
| 22443 | |
| 22444 | <span class="entry_type_hwlevel">[full] </span> |
| 22445 | |
| 22446 | |
| 22447 | |
| 22448 | <ul class="entry_type_enum"> |
| 22449 | <li> |
| 22450 | <span class="entry_type_enum_name">OFF</span> |
| 22451 | <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span> |
| 22452 | </li> |
| 22453 | <li> |
| 22454 | <span class="entry_type_enum_name">ON</span> |
| 22455 | <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span> |
| 22456 | </li> |
| 22457 | </ul> |
| 22458 | |
| 22459 | </td> <!-- entry_type --> |
| 22460 | |
| 22461 | <td class="entry_description"> |
| 22462 | <p>Whether the camera device will output the lens |
| 22463 | shading map in output result metadata.<wbr/></p> |
| 22464 | </td> |
| 22465 | |
| 22466 | <td class="entry_units"> |
| 22467 | </td> |
| 22468 | |
| 22469 | <td class="entry_range"> |
| 22470 | <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> |
| 22471 | </td> |
| 22472 | |
| 22473 | <td class="entry_tags"> |
| 22474 | <ul class="entry_tags"> |
| 22475 | <li><a href="#tag_RAW">RAW</a></li> |
| 22476 | </ul> |
| 22477 | </td> |
| 22478 | |
| 22479 | </tr> |
| 22480 | <tr class="entries_header"> |
| 22481 | <th class="th_details" colspan="5">Details</th> |
| 22482 | </tr> |
| 22483 | <tr class="entry_cont"> |
| 22484 | <td class="entry_details" colspan="5"> |
| 22485 | <p>When set to ON,<wbr/> |
| 22486 | <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in |
| 22487 | the output result metadata.<wbr/></p> |
| 22488 | <p>ON is always supported on devices with the RAW capability.<wbr/></p> |
| 22489 | </td> |
| 22490 | </tr> |
| 22491 | |
| 22492 | |
| 22493 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 22494 | <!-- end of entry --> |
| 22495 | |
| 22496 | |
| 22497 | |
| 22498 | <!-- end of kind --> |
| 22499 | </tbody> |
| 22500 | <tr><td colspan="6" class="kind">static</td></tr> |
| 22501 | |
| 22502 | <thead class="entries_header"> |
| 22503 | <tr> |
| 22504 | <th class="th_name">Property Name</th> |
| 22505 | <th class="th_type">Type</th> |
| 22506 | <th class="th_description">Description</th> |
| 22507 | <th class="th_units">Units</th> |
| 22508 | <th class="th_range">Range</th> |
| 22509 | <th class="th_tags">Tags</th> |
| 22510 | </tr> |
| 22511 | </thead> |
| 22512 | |
| 22513 | <tbody> |
| 22514 | |
| 22515 | |
| 22516 | |
| 22517 | |
| 22518 | |
| 22519 | |
| 22520 | |
| 22521 | |
| 22522 | |
| 22523 | |
| 22524 | |
| 22525 | |
| 22526 | <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes"> |
| 22527 | <td class="entry_name |
| 22528 | " rowspan="3"> |
| 22529 | android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes |
| 22530 | </td> |
| 22531 | <td class="entry_type"> |
| 22532 | <span class="entry_type_name">byte</span> |
| 22533 | <span class="entry_type_container">x</span> |
| 22534 | |
| 22535 | <span class="entry_type_array"> |
| 22536 | n |
| 22537 | </span> |
| 22538 | <span class="entry_type_visibility"> [public as enumList]</span> |
| 22539 | |
| 22540 | |
| 22541 | <span class="entry_type_hwlevel">[legacy] </span> |
| 22542 | |
| 22543 | |
| 22544 | <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div> |
| 22545 | |
| 22546 | |
| 22547 | </td> <!-- entry_type --> |
| 22548 | |
| 22549 | <td class="entry_description"> |
| 22550 | <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 |
| 22551 | supported by this camera device.<wbr/></p> |
| 22552 | </td> |
| 22553 | |
| 22554 | <td class="entry_units"> |
| 22555 | </td> |
| 22556 | |
| 22557 | <td class="entry_range"> |
| 22558 | <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p> |
| 22559 | </td> |
| 22560 | |
| 22561 | <td class="entry_tags"> |
| 22562 | </td> |
| 22563 | |
| 22564 | </tr> |
| 22565 | <tr class="entries_header"> |
| 22566 | <th class="th_details" colspan="5">Details</th> |
| 22567 | </tr> |
| 22568 | <tr class="entry_cont"> |
| 22569 | <td class="entry_details" colspan="5"> |
| 22570 | <p>OFF is always supported.<wbr/></p> |
| 22571 | </td> |
| 22572 | </tr> |
| 22573 | |
| 22574 | |
| 22575 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 22576 | <!-- end of entry --> |
| 22577 | |
| 22578 | |
| 22579 | <tr class="entry" id="static_android.statistics.info.histogramBucketCount"> |
| 22580 | <td class="entry_name |
| 22581 | " rowspan="1"> |
| 22582 | android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count |
| 22583 | </td> |
| 22584 | <td class="entry_type"> |
| 22585 | <span class="entry_type_name">int32</span> |
| 22586 | |
| 22587 | <span class="entry_type_visibility"> [system]</span> |
| 22588 | |
| 22589 | |
| 22590 | |
| 22591 | |
| 22592 | |
| 22593 | |
| 22594 | </td> <!-- entry_type --> |
| 22595 | |
| 22596 | <td class="entry_description"> |
| 22597 | <p>Number of histogram buckets |
| 22598 | supported</p> |
| 22599 | </td> |
| 22600 | |
| 22601 | <td class="entry_units"> |
| 22602 | </td> |
| 22603 | |
| 22604 | <td class="entry_range"> |
| 22605 | <p>>= 64</p> |
| 22606 | </td> |
| 22607 | |
| 22608 | <td class="entry_tags"> |
| 22609 | <ul class="entry_tags"> |
| 22610 | <li><a href="#tag_FUTURE">FUTURE</a></li> |
| 22611 | </ul> |
| 22612 | </td> |
| 22613 | |
| 22614 | </tr> |
| 22615 | |
| 22616 | |
| 22617 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 22618 | <!-- end of entry --> |
| 22619 | |
| 22620 | |
| 22621 | <tr class="entry" id="static_android.statistics.info.maxFaceCount"> |
| 22622 | <td class="entry_name |
| 22623 | " rowspan="1"> |
| 22624 | android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count |
| 22625 | </td> |
| 22626 | <td class="entry_type"> |
| 22627 | <span class="entry_type_name">int32</span> |
| 22628 | |
| 22629 | <span class="entry_type_visibility"> [public]</span> |
| 22630 | |
| 22631 | |
| 22632 | <span class="entry_type_hwlevel">[legacy] </span> |
| 22633 | |
| 22634 | |
| 22635 | |
| 22636 | |
| 22637 | </td> <!-- entry_type --> |
| 22638 | |
| 22639 | <td class="entry_description"> |
| 22640 | <p>The maximum number of simultaneously detectable |
| 22641 | faces.<wbr/></p> |
| 22642 | </td> |
| 22643 | |
| 22644 | <td class="entry_units"> |
| 22645 | </td> |
| 22646 | |
| 22647 | <td class="entry_range"> |
| 22648 | <p>0 for cameras without available face detection; otherwise: |
| 22649 | <code>>=4</code> for LIMITED or FULL hwlevel devices or |
| 22650 | <code>>0</code> for LEGACY devices.<wbr/></p> |
| 22651 | </td> |
| 22652 | |
| 22653 | <td class="entry_tags"> |
| 22654 | <ul class="entry_tags"> |
| 22655 | <li><a href="#tag_BC">BC</a></li> |
| 22656 | </ul> |
| 22657 | </td> |
| 22658 | |
| 22659 | </tr> |
| 22660 | |
| 22661 | |
| 22662 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 22663 | <!-- end of entry --> |
| 22664 | |
| 22665 | |
| 22666 | <tr class="entry" id="static_android.statistics.info.maxHistogramCount"> |
| 22667 | <td class="entry_name |
| 22668 | " rowspan="1"> |
| 22669 | android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count |
| 22670 | </td> |
| 22671 | <td class="entry_type"> |
| 22672 | <span class="entry_type_name">int32</span> |
| 22673 | |
| 22674 | <span class="entry_type_visibility"> [system]</span> |
| 22675 | |
| 22676 | |
| 22677 | |
| 22678 | |
| 22679 | |
| 22680 | |
| 22681 | </td> <!-- entry_type --> |
| 22682 | |
| 22683 | <td class="entry_description"> |
| 22684 | <p>Maximum value possible for a histogram |
| 22685 | bucket</p> |
| 22686 | </td> |
| 22687 | |
| 22688 | <td class="entry_units"> |
| 22689 | </td> |
| 22690 | |
| 22691 | <td class="entry_range"> |
| 22692 | </td> |
| 22693 | |
| 22694 | <td class="entry_tags"> |
| 22695 | <ul class="entry_tags"> |
| 22696 | <li><a href="#tag_FUTURE">FUTURE</a></li> |
| 22697 | </ul> |
| 22698 | </td> |
| 22699 | |
| 22700 | </tr> |
| 22701 | |
| 22702 | |
| 22703 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 22704 | <!-- end of entry --> |
| 22705 | |
| 22706 | |
| 22707 | <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue"> |
| 22708 | <td class="entry_name |
| 22709 | " rowspan="1"> |
| 22710 | android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value |
| 22711 | </td> |
| 22712 | <td class="entry_type"> |
| 22713 | <span class="entry_type_name">int32</span> |
| 22714 | |
| 22715 | <span class="entry_type_visibility"> [system]</span> |
| 22716 | |
| 22717 | |
| 22718 | |
| 22719 | |
| 22720 | |
| 22721 | |
| 22722 | </td> <!-- entry_type --> |
| 22723 | |
| 22724 | <td class="entry_description"> |
| 22725 | <p>Maximum value possible for a sharpness map |
| 22726 | region.<wbr/></p> |
| 22727 | </td> |
| 22728 | |
| 22729 | <td class="entry_units"> |
| 22730 | </td> |
| 22731 | |
| 22732 | <td class="entry_range"> |
| 22733 | </td> |
| 22734 | |
| 22735 | <td class="entry_tags"> |
| 22736 | <ul class="entry_tags"> |
| 22737 | <li><a href="#tag_FUTURE">FUTURE</a></li> |
| 22738 | </ul> |
| 22739 | </td> |
| 22740 | |
| 22741 | </tr> |
| 22742 | |
| 22743 | |
| 22744 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 22745 | <!-- end of entry --> |
| 22746 | |
| 22747 | |
| 22748 | <tr class="entry" id="static_android.statistics.info.sharpnessMapSize"> |
| 22749 | <td class="entry_name |
| 22750 | " rowspan="1"> |
| 22751 | android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size |
| 22752 | </td> |
| 22753 | <td class="entry_type"> |
| 22754 | <span class="entry_type_name">int32</span> |
| 22755 | <span class="entry_type_container">x</span> |
| 22756 | |
| 22757 | <span class="entry_type_array"> |
| 22758 | 2 |
| 22759 | </span> |
| 22760 | <span class="entry_type_visibility"> [system as size]</span> |
| 22761 | |
| 22762 | |
| 22763 | |
| 22764 | |
| 22765 | <div class="entry_type_notes">width x height</div> |
| 22766 | |
| 22767 | |
| 22768 | </td> <!-- entry_type --> |
| 22769 | |
| 22770 | <td class="entry_description"> |
| 22771 | <p>Dimensions of the sharpness |
| 22772 | map</p> |
| 22773 | </td> |
| 22774 | |
| 22775 | <td class="entry_units"> |
| 22776 | </td> |
| 22777 | |
| 22778 | <td class="entry_range"> |
| 22779 | <p>Must be at least 32 x 32</p> |
| 22780 | </td> |
| 22781 | |
| 22782 | <td class="entry_tags"> |
| 22783 | <ul class="entry_tags"> |
| 22784 | <li><a href="#tag_FUTURE">FUTURE</a></li> |
| 22785 | </ul> |
| 22786 | </td> |
| 22787 | |
| 22788 | </tr> |
| 22789 | |
| 22790 | |
| 22791 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 22792 | <!-- end of entry --> |
| 22793 | |
| 22794 | |
| 22795 | <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes"> |
| 22796 | <td class="entry_name |
| 22797 | " rowspan="3"> |
| 22798 | android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes |
| 22799 | </td> |
| 22800 | <td class="entry_type"> |
| 22801 | <span class="entry_type_name">byte</span> |
| 22802 | <span class="entry_type_container">x</span> |
| 22803 | |
| 22804 | <span class="entry_type_array"> |
| 22805 | n |
| 22806 | </span> |
| 22807 | <span class="entry_type_visibility"> [public as boolean]</span> |
| 22808 | |
| 22809 | |
| 22810 | |
| 22811 | |
| 22812 | <div class="entry_type_notes">list of enums</div> |
| 22813 | |
| 22814 | |
| 22815 | </td> <!-- entry_type --> |
| 22816 | |
| 22817 | <td class="entry_description"> |
| 22818 | <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 |
| 22819 | supported by this camera device.<wbr/></p> |
| 22820 | </td> |
| 22821 | |
| 22822 | <td class="entry_units"> |
| 22823 | </td> |
| 22824 | |
| 22825 | <td class="entry_range"> |
| 22826 | <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p> |
| 22827 | </td> |
| 22828 | |
| 22829 | <td class="entry_tags"> |
| 22830 | <ul class="entry_tags"> |
| 22831 | <li><a href="#tag_V1">V1</a></li> |
| 22832 | <li><a href="#tag_RAW">RAW</a></li> |
| 22833 | </ul> |
| 22834 | </td> |
| 22835 | |
| 22836 | </tr> |
| 22837 | <tr class="entries_header"> |
| 22838 | <th class="th_details" colspan="5">Details</th> |
| 22839 | </tr> |
| 22840 | <tr class="entry_cont"> |
| 22841 | <td class="entry_details" colspan="5"> |
| 22842 | <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only |
| 22843 | <code>false</code>.<wbr/></p> |
| 22844 | <p>ON is always supported on devices with the RAW capability.<wbr/></p> |
| 22845 | </td> |
| 22846 | </tr> |
| 22847 | |
| 22848 | |
| 22849 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 22850 | <!-- end of entry --> |
| 22851 | |
| 22852 | |
| 22853 | <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes"> |
| 22854 | <td class="entry_name |
| 22855 | " rowspan="3"> |
| 22856 | android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes |
| 22857 | </td> |
| 22858 | <td class="entry_type"> |
| 22859 | <span class="entry_type_name">byte</span> |
| 22860 | <span class="entry_type_container">x</span> |
| 22861 | |
| 22862 | <span class="entry_type_array"> |
| 22863 | n |
| 22864 | </span> |
| 22865 | <span class="entry_type_visibility"> [public as enumList]</span> |
| 22866 | |
| 22867 | |
| 22868 | |
| 22869 | |
| 22870 | <div class="entry_type_notes">list of enums</div> |
| 22871 | |
| 22872 | |
| 22873 | </td> <!-- entry_type --> |
| 22874 | |
| 22875 | <td class="entry_description"> |
| 22876 | <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 |
| 22877 | are supported by this camera device.<wbr/></p> |
| 22878 | </td> |
| 22879 | |
| 22880 | <td class="entry_units"> |
| 22881 | </td> |
| 22882 | |
| 22883 | <td class="entry_range"> |
| 22884 | <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p> |
| 22885 | </td> |
| 22886 | |
| 22887 | <td class="entry_tags"> |
| 22888 | </td> |
| 22889 | |
| 22890 | </tr> |
| 22891 | <tr class="entries_header"> |
| 22892 | <th class="th_details" colspan="5">Details</th> |
| 22893 | </tr> |
| 22894 | <tr class="entry_cont"> |
| 22895 | <td class="entry_details" colspan="5"> |
| 22896 | <p>If no lens shading map output is available for this camera device,<wbr/> this key will |
| 22897 | contain only OFF.<wbr/></p> |
| 22898 | <p>ON is always supported on devices with the RAW capability.<wbr/> |
| 22899 | LEGACY mode devices will always only support OFF.<wbr/></p> |
| 22900 | </td> |
| 22901 | </tr> |
| 22902 | |
| 22903 | |
| 22904 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 22905 | <!-- end of entry --> |
| 22906 | |
| 22907 | |
| 22908 | |
| 22909 | |
| 22910 | |
| 22911 | |
| 22912 | <!-- end of kind --> |
| 22913 | </tbody> |
| 22914 | <tr><td colspan="6" class="kind">dynamic</td></tr> |
| 22915 | |
| 22916 | <thead class="entries_header"> |
| 22917 | <tr> |
| 22918 | <th class="th_name">Property Name</th> |
| 22919 | <th class="th_type">Type</th> |
| 22920 | <th class="th_description">Description</th> |
| 22921 | <th class="th_units">Units</th> |
| 22922 | <th class="th_range">Range</th> |
| 22923 | <th class="th_tags">Tags</th> |
| 22924 | </tr> |
| 22925 | </thead> |
| 22926 | |
| 22927 | <tbody> |
| 22928 | |
| 22929 | |
| 22930 | |
| 22931 | |
| 22932 | |
| 22933 | |
| 22934 | |
| 22935 | |
| 22936 | |
| 22937 | |
| 22938 | <tr class="entry" id="dynamic_android.statistics.faceDetectMode"> |
| 22939 | <td class="entry_name |
| 22940 | " rowspan="5"> |
| 22941 | android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode |
| 22942 | </td> |
| 22943 | <td class="entry_type"> |
| 22944 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 22945 | |
| 22946 | <span class="entry_type_visibility"> [public]</span> |
| 22947 | |
| 22948 | |
| 22949 | <span class="entry_type_hwlevel">[legacy] </span> |
| 22950 | |
| 22951 | |
| 22952 | |
| 22953 | <ul class="entry_type_enum"> |
| 22954 | <li> |
| 22955 | <span class="entry_type_enum_name">OFF</span> |
| 22956 | <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture |
| 22957 | results.<wbr/></p></span> |
| 22958 | </li> |
| 22959 | <li> |
| 22960 | <span class="entry_type_enum_name">SIMPLE</span> |
| 22961 | <span class="entry_type_enum_optional">[optional]</span> |
| 22962 | <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span> |
| 22963 | </li> |
| 22964 | <li> |
| 22965 | <span class="entry_type_enum_name">FULL</span> |
| 22966 | <span class="entry_type_enum_optional">[optional]</span> |
| 22967 | <span class="entry_type_enum_notes"><p>Return all face |
| 22968 | metadata.<wbr/></p> |
| 22969 | <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span> |
| 22970 | </li> |
| 22971 | </ul> |
| 22972 | |
| 22973 | </td> <!-- entry_type --> |
| 22974 | |
| 22975 | <td class="entry_description"> |
| 22976 | <p>Operating mode for the face detector |
| 22977 | unit.<wbr/></p> |
| 22978 | </td> |
| 22979 | |
| 22980 | <td class="entry_units"> |
| 22981 | </td> |
| 22982 | |
| 22983 | <td class="entry_range"> |
| 22984 | <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p> |
| 22985 | </td> |
| 22986 | |
| 22987 | <td class="entry_tags"> |
| 22988 | <ul class="entry_tags"> |
| 22989 | <li><a href="#tag_BC">BC</a></li> |
| 22990 | </ul> |
| 22991 | </td> |
| 22992 | |
| 22993 | </tr> |
| 22994 | <tr class="entries_header"> |
| 22995 | <th class="th_details" colspan="5">Details</th> |
| 22996 | </tr> |
| 22997 | <tr class="entry_cont"> |
| 22998 | <td class="entry_details" colspan="5"> |
| 22999 | <p>Whether face detection is enabled,<wbr/> and whether it |
| 23000 | should output just the basic fields or the full set of |
| 23001 | fields.<wbr/></p> |
| 23002 | </td> |
| 23003 | </tr> |
| 23004 | |
| 23005 | <tr class="entries_header"> |
| 23006 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 23007 | </tr> |
| 23008 | <tr class="entry_cont"> |
| 23009 | <td class="entry_details" colspan="5"> |
| 23010 | <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and |
| 23011 | <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/> |
| 23012 | FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and |
| 23013 | <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p> |
| 23014 | </td> |
| 23015 | </tr> |
| 23016 | |
| 23017 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 23018 | <!-- end of entry --> |
| 23019 | |
| 23020 | |
| 23021 | <tr class="entry" id="dynamic_android.statistics.faceIds"> |
| 23022 | <td class="entry_name |
| 23023 | " rowspan="3"> |
| 23024 | android.<wbr/>statistics.<wbr/>face<wbr/>Ids |
| 23025 | </td> |
| 23026 | <td class="entry_type"> |
| 23027 | <span class="entry_type_name">int32</span> |
| 23028 | <span class="entry_type_container">x</span> |
| 23029 | |
| 23030 | <span class="entry_type_array"> |
| 23031 | n |
| 23032 | </span> |
| 23033 | <span class="entry_type_visibility"> [ndk_public]</span> |
| 23034 | |
| 23035 | |
| 23036 | <span class="entry_type_hwlevel">[legacy] </span> |
| 23037 | |
| 23038 | |
| 23039 | |
| 23040 | |
| 23041 | </td> <!-- entry_type --> |
| 23042 | |
| 23043 | <td class="entry_description"> |
| 23044 | <p>List of unique IDs for detected faces.<wbr/></p> |
| 23045 | </td> |
| 23046 | |
| 23047 | <td class="entry_units"> |
| 23048 | </td> |
| 23049 | |
| 23050 | <td class="entry_range"> |
| 23051 | </td> |
| 23052 | |
| 23053 | <td class="entry_tags"> |
| 23054 | <ul class="entry_tags"> |
| 23055 | <li><a href="#tag_BC">BC</a></li> |
| 23056 | </ul> |
| 23057 | </td> |
| 23058 | |
| 23059 | </tr> |
| 23060 | <tr class="entries_header"> |
| 23061 | <th class="th_details" colspan="5">Details</th> |
| 23062 | </tr> |
| 23063 | <tr class="entry_cont"> |
| 23064 | <td class="entry_details" colspan="5"> |
| 23065 | <p>Each detected face is given a unique ID that is valid for as long as the face is visible |
| 23066 | to the camera device.<wbr/> A face that leaves the field of view and later returns may be |
| 23067 | assigned a new ID.<wbr/></p> |
| 23068 | <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p> |
| 23069 | </td> |
| 23070 | </tr> |
| 23071 | |
| 23072 | |
| 23073 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 23074 | <!-- end of entry --> |
| 23075 | |
| 23076 | |
| 23077 | <tr class="entry" id="dynamic_android.statistics.faceLandmarks"> |
| 23078 | <td class="entry_name |
| 23079 | " rowspan="3"> |
| 23080 | android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks |
| 23081 | </td> |
| 23082 | <td class="entry_type"> |
| 23083 | <span class="entry_type_name">int32</span> |
| 23084 | <span class="entry_type_container">x</span> |
| 23085 | |
| 23086 | <span class="entry_type_array"> |
| 23087 | n x 6 |
| 23088 | </span> |
| 23089 | <span class="entry_type_visibility"> [ndk_public]</span> |
| 23090 | |
| 23091 | |
| 23092 | <span class="entry_type_hwlevel">[legacy] </span> |
| 23093 | |
| 23094 | |
| 23095 | <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div> |
| 23096 | |
| 23097 | |
| 23098 | </td> <!-- entry_type --> |
| 23099 | |
| 23100 | <td class="entry_description"> |
| 23101 | <p>List of landmarks for detected |
| 23102 | faces.<wbr/></p> |
| 23103 | </td> |
| 23104 | |
| 23105 | <td class="entry_units"> |
| 23106 | </td> |
| 23107 | |
| 23108 | <td class="entry_range"> |
| 23109 | </td> |
| 23110 | |
| 23111 | <td class="entry_tags"> |
| 23112 | <ul class="entry_tags"> |
| 23113 | <li><a href="#tag_BC">BC</a></li> |
| 23114 | </ul> |
| 23115 | </td> |
| 23116 | |
| 23117 | </tr> |
| 23118 | <tr class="entries_header"> |
| 23119 | <th class="th_details" colspan="5">Details</th> |
| 23120 | </tr> |
| 23121 | <tr class="entry_cont"> |
| 23122 | <td class="entry_details" colspan="5"> |
| 23123 | <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 |
| 23124 | <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p> |
| 23125 | <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p> |
| 23126 | </td> |
| 23127 | </tr> |
| 23128 | |
| 23129 | |
| 23130 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 23131 | <!-- end of entry --> |
| 23132 | |
| 23133 | |
| 23134 | <tr class="entry" id="dynamic_android.statistics.faceRectangles"> |
| 23135 | <td class="entry_name |
| 23136 | " rowspan="3"> |
| 23137 | android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles |
| 23138 | </td> |
| 23139 | <td class="entry_type"> |
| 23140 | <span class="entry_type_name">int32</span> |
| 23141 | <span class="entry_type_container">x</span> |
| 23142 | |
| 23143 | <span class="entry_type_array"> |
| 23144 | n x 4 |
| 23145 | </span> |
| 23146 | <span class="entry_type_visibility"> [ndk_public as rectangle]</span> |
| 23147 | |
| 23148 | |
| 23149 | <span class="entry_type_hwlevel">[legacy] </span> |
| 23150 | |
| 23151 | |
| 23152 | <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div> |
| 23153 | |
| 23154 | |
| 23155 | </td> <!-- entry_type --> |
| 23156 | |
| 23157 | <td class="entry_description"> |
| 23158 | <p>List of the bounding rectangles for detected |
| 23159 | faces.<wbr/></p> |
| 23160 | </td> |
| 23161 | |
| 23162 | <td class="entry_units"> |
| 23163 | </td> |
| 23164 | |
| 23165 | <td class="entry_range"> |
| 23166 | </td> |
| 23167 | |
| 23168 | <td class="entry_tags"> |
| 23169 | <ul class="entry_tags"> |
| 23170 | <li><a href="#tag_BC">BC</a></li> |
| 23171 | </ul> |
| 23172 | </td> |
| 23173 | |
| 23174 | </tr> |
| 23175 | <tr class="entries_header"> |
| 23176 | <th class="th_details" colspan="5">Details</th> |
| 23177 | </tr> |
| 23178 | <tr class="entry_cont"> |
| 23179 | <td class="entry_details" colspan="5"> |
| 23180 | <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 |
| 23181 | <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p> |
| 23182 | <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p> |
| 23183 | </td> |
| 23184 | </tr> |
| 23185 | |
| 23186 | |
| 23187 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 23188 | <!-- end of entry --> |
| 23189 | |
| 23190 | |
| 23191 | <tr class="entry" id="dynamic_android.statistics.faceScores"> |
| 23192 | <td class="entry_name |
| 23193 | " rowspan="5"> |
| 23194 | android.<wbr/>statistics.<wbr/>face<wbr/>Scores |
| 23195 | </td> |
| 23196 | <td class="entry_type"> |
| 23197 | <span class="entry_type_name">byte</span> |
| 23198 | <span class="entry_type_container">x</span> |
| 23199 | |
| 23200 | <span class="entry_type_array"> |
| 23201 | n |
| 23202 | </span> |
| 23203 | <span class="entry_type_visibility"> [ndk_public]</span> |
| 23204 | |
| 23205 | |
| 23206 | <span class="entry_type_hwlevel">[legacy] </span> |
| 23207 | |
| 23208 | |
| 23209 | |
| 23210 | |
| 23211 | </td> <!-- entry_type --> |
| 23212 | |
| 23213 | <td class="entry_description"> |
| 23214 | <p>List of the face confidence scores for |
| 23215 | detected faces</p> |
| 23216 | </td> |
| 23217 | |
| 23218 | <td class="entry_units"> |
| 23219 | </td> |
| 23220 | |
| 23221 | <td class="entry_range"> |
| 23222 | <p>1-100</p> |
| 23223 | </td> |
| 23224 | |
| 23225 | <td class="entry_tags"> |
| 23226 | <ul class="entry_tags"> |
| 23227 | <li><a href="#tag_BC">BC</a></li> |
| 23228 | </ul> |
| 23229 | </td> |
| 23230 | |
| 23231 | </tr> |
| 23232 | <tr class="entries_header"> |
| 23233 | <th class="th_details" colspan="5">Details</th> |
| 23234 | </tr> |
| 23235 | <tr class="entry_cont"> |
| 23236 | <td class="entry_details" colspan="5"> |
| 23237 | <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p> |
| 23238 | </td> |
| 23239 | </tr> |
| 23240 | |
| 23241 | <tr class="entries_header"> |
| 23242 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 23243 | </tr> |
| 23244 | <tr class="entry_cont"> |
| 23245 | <td class="entry_details" colspan="5"> |
| 23246 | <p>The value should be meaningful (for example,<wbr/> setting 100 at |
| 23247 | all times is illegal).<wbr/></p> |
| 23248 | </td> |
| 23249 | </tr> |
| 23250 | |
| 23251 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 23252 | <!-- end of entry --> |
| 23253 | |
| 23254 | |
| 23255 | <tr class="entry" id="dynamic_android.statistics.faces"> |
| 23256 | <td class="entry_name |
| 23257 | " rowspan="3"> |
| 23258 | android.<wbr/>statistics.<wbr/>faces |
| 23259 | </td> |
| 23260 | <td class="entry_type"> |
| 23261 | <span class="entry_type_name">int32</span> |
| 23262 | <span class="entry_type_container">x</span> |
| 23263 | |
| 23264 | <span class="entry_type_array"> |
| 23265 | n |
| 23266 | </span> |
| 23267 | <span class="entry_type_visibility"> [java_public as face]</span> |
| 23268 | |
| 23269 | <span class="entry_type_synthetic">[synthetic] </span> |
| 23270 | |
| 23271 | <span class="entry_type_hwlevel">[legacy] </span> |
| 23272 | |
| 23273 | |
| 23274 | |
| 23275 | |
| 23276 | </td> <!-- entry_type --> |
| 23277 | |
| 23278 | <td class="entry_description"> |
| 23279 | <p>List of the faces detected through camera face detection |
| 23280 | in this capture.<wbr/></p> |
| 23281 | </td> |
| 23282 | |
| 23283 | <td class="entry_units"> |
| 23284 | </td> |
| 23285 | |
| 23286 | <td class="entry_range"> |
| 23287 | </td> |
| 23288 | |
| 23289 | <td class="entry_tags"> |
| 23290 | </td> |
| 23291 | |
| 23292 | </tr> |
| 23293 | <tr class="entries_header"> |
| 23294 | <th class="th_details" colspan="5">Details</th> |
| 23295 | </tr> |
| 23296 | <tr class="entry_cont"> |
| 23297 | <td class="entry_details" colspan="5"> |
| 23298 | <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> |
| 23299 | </td> |
| 23300 | </tr> |
| 23301 | |
| 23302 | |
| 23303 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 23304 | <!-- end of entry --> |
| 23305 | |
| 23306 | |
| 23307 | <tr class="entry" id="dynamic_android.statistics.histogram"> |
| 23308 | <td class="entry_name |
| 23309 | " rowspan="3"> |
| 23310 | android.<wbr/>statistics.<wbr/>histogram |
| 23311 | </td> |
| 23312 | <td class="entry_type"> |
| 23313 | <span class="entry_type_name">int32</span> |
| 23314 | <span class="entry_type_container">x</span> |
| 23315 | |
| 23316 | <span class="entry_type_array"> |
| 23317 | n x 3 |
| 23318 | </span> |
| 23319 | <span class="entry_type_visibility"> [system]</span> |
| 23320 | |
| 23321 | |
| 23322 | |
| 23323 | |
| 23324 | <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> |
| 23325 | |
| 23326 | |
| 23327 | </td> <!-- entry_type --> |
| 23328 | |
| 23329 | <td class="entry_description"> |
| 23330 | <p>A 3-channel histogram based on the raw |
| 23331 | sensor data</p> |
| 23332 | </td> |
| 23333 | |
| 23334 | <td class="entry_units"> |
| 23335 | </td> |
| 23336 | |
| 23337 | <td class="entry_range"> |
| 23338 | </td> |
| 23339 | |
| 23340 | <td class="entry_tags"> |
| 23341 | <ul class="entry_tags"> |
| 23342 | <li><a href="#tag_FUTURE">FUTURE</a></li> |
| 23343 | </ul> |
| 23344 | </td> |
| 23345 | |
| 23346 | </tr> |
| 23347 | <tr class="entries_header"> |
| 23348 | <th class="th_details" colspan="5">Details</th> |
| 23349 | </tr> |
| 23350 | <tr class="entry_cont"> |
| 23351 | <td class="entry_details" colspan="5"> |
| 23352 | <p>The k'th bucket (0-based) covers the input range |
| 23353 | (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/> |
| 23354 | (k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is |
| 23355 | supported,<wbr/> all channels should have the same data</p> |
| 23356 | </td> |
| 23357 | </tr> |
| 23358 | |
| 23359 | |
| 23360 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 23361 | <!-- end of entry --> |
| 23362 | |
| 23363 | |
| 23364 | <tr class="entry" id="dynamic_android.statistics.histogramMode"> |
| 23365 | <td class="entry_name |
| 23366 | " rowspan="1"> |
| 23367 | android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode |
| 23368 | </td> |
| 23369 | <td class="entry_type"> |
| 23370 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 23371 | |
| 23372 | <span class="entry_type_visibility"> [system as boolean]</span> |
| 23373 | |
| 23374 | |
| 23375 | |
| 23376 | |
| 23377 | |
| 23378 | <ul class="entry_type_enum"> |
| 23379 | <li> |
| 23380 | <span class="entry_type_enum_name">OFF</span> |
| 23381 | </li> |
| 23382 | <li> |
| 23383 | <span class="entry_type_enum_name">ON</span> |
| 23384 | </li> |
| 23385 | </ul> |
| 23386 | |
| 23387 | </td> <!-- entry_type --> |
| 23388 | |
| 23389 | <td class="entry_description"> |
| 23390 | <p>Operating mode for histogram |
| 23391 | generation</p> |
| 23392 | </td> |
| 23393 | |
| 23394 | <td class="entry_units"> |
| 23395 | </td> |
| 23396 | |
| 23397 | <td class="entry_range"> |
| 23398 | </td> |
| 23399 | |
| 23400 | <td class="entry_tags"> |
| 23401 | <ul class="entry_tags"> |
| 23402 | <li><a href="#tag_FUTURE">FUTURE</a></li> |
| 23403 | </ul> |
| 23404 | </td> |
| 23405 | |
| 23406 | </tr> |
| 23407 | |
| 23408 | |
| 23409 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 23410 | <!-- end of entry --> |
| 23411 | |
| 23412 | |
| 23413 | <tr class="entry" id="dynamic_android.statistics.sharpnessMap"> |
| 23414 | <td class="entry_name |
| 23415 | " rowspan="3"> |
| 23416 | android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map |
| 23417 | </td> |
| 23418 | <td class="entry_type"> |
| 23419 | <span class="entry_type_name">int32</span> |
| 23420 | <span class="entry_type_container">x</span> |
| 23421 | |
| 23422 | <span class="entry_type_array"> |
| 23423 | n x m x 3 |
| 23424 | </span> |
| 23425 | <span class="entry_type_visibility"> [system]</span> |
| 23426 | |
| 23427 | |
| 23428 | |
| 23429 | |
| 23430 | <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> |
| 23431 | |
| 23432 | |
| 23433 | </td> <!-- entry_type --> |
| 23434 | |
| 23435 | <td class="entry_description"> |
| 23436 | <p>A 3-channel sharpness map,<wbr/> based on the raw |
| 23437 | sensor data</p> |
| 23438 | </td> |
| 23439 | |
| 23440 | <td class="entry_units"> |
| 23441 | </td> |
| 23442 | |
| 23443 | <td class="entry_range"> |
| 23444 | </td> |
| 23445 | |
| 23446 | <td class="entry_tags"> |
| 23447 | <ul class="entry_tags"> |
| 23448 | <li><a href="#tag_FUTURE">FUTURE</a></li> |
| 23449 | </ul> |
| 23450 | </td> |
| 23451 | |
| 23452 | </tr> |
| 23453 | <tr class="entries_header"> |
| 23454 | <th class="th_details" colspan="5">Details</th> |
| 23455 | </tr> |
| 23456 | <tr class="entry_cont"> |
| 23457 | <td class="entry_details" colspan="5"> |
| 23458 | <p>If only a monochrome sharpness map is supported,<wbr/> |
| 23459 | all channels should have the same data</p> |
| 23460 | </td> |
| 23461 | </tr> |
| 23462 | |
| 23463 | |
| 23464 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 23465 | <!-- end of entry --> |
| 23466 | |
| 23467 | |
| 23468 | <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode"> |
| 23469 | <td class="entry_name |
| 23470 | " rowspan="1"> |
| 23471 | android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode |
| 23472 | </td> |
| 23473 | <td class="entry_type"> |
| 23474 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 23475 | |
| 23476 | <span class="entry_type_visibility"> [system as boolean]</span> |
| 23477 | |
| 23478 | |
| 23479 | |
| 23480 | |
| 23481 | |
| 23482 | <ul class="entry_type_enum"> |
| 23483 | <li> |
| 23484 | <span class="entry_type_enum_name">OFF</span> |
| 23485 | </li> |
| 23486 | <li> |
| 23487 | <span class="entry_type_enum_name">ON</span> |
| 23488 | </li> |
| 23489 | </ul> |
| 23490 | |
| 23491 | </td> <!-- entry_type --> |
| 23492 | |
| 23493 | <td class="entry_description"> |
| 23494 | <p>Operating mode for sharpness map |
| 23495 | generation</p> |
| 23496 | </td> |
| 23497 | |
| 23498 | <td class="entry_units"> |
| 23499 | </td> |
| 23500 | |
| 23501 | <td class="entry_range"> |
| 23502 | </td> |
| 23503 | |
| 23504 | <td class="entry_tags"> |
| 23505 | <ul class="entry_tags"> |
| 23506 | <li><a href="#tag_FUTURE">FUTURE</a></li> |
| 23507 | </ul> |
| 23508 | </td> |
| 23509 | |
| 23510 | </tr> |
| 23511 | |
| 23512 | |
| 23513 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 23514 | <!-- end of entry --> |
| 23515 | |
| 23516 | |
| 23517 | <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap"> |
| 23518 | <td class="entry_name |
| 23519 | " rowspan="3"> |
| 23520 | android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map |
| 23521 | </td> |
| 23522 | <td class="entry_type"> |
| 23523 | <span class="entry_type_name">byte</span> |
| 23524 | |
| 23525 | <span class="entry_type_visibility"> [java_public as lensShadingMap]</span> |
| 23526 | |
| 23527 | |
| 23528 | <span class="entry_type_hwlevel">[full] </span> |
| 23529 | |
| 23530 | |
| 23531 | |
| 23532 | |
| 23533 | </td> <!-- entry_type --> |
| 23534 | |
| 23535 | <td class="entry_description"> |
| 23536 | <p>The shading map is a low-resolution floating-point map |
| 23537 | that lists the coefficients used to correct for vignetting,<wbr/> for each |
| 23538 | Bayer color channel.<wbr/></p> |
| 23539 | </td> |
| 23540 | |
| 23541 | <td class="entry_units"> |
| 23542 | </td> |
| 23543 | |
| 23544 | <td class="entry_range"> |
| 23545 | <p>Each gain factor is >= 1</p> |
| 23546 | </td> |
| 23547 | |
| 23548 | <td class="entry_tags"> |
| 23549 | </td> |
| 23550 | |
| 23551 | </tr> |
| 23552 | <tr class="entries_header"> |
| 23553 | <th class="th_details" colspan="5">Details</th> |
| 23554 | </tr> |
| 23555 | <tr class="entry_cont"> |
| 23556 | <td class="entry_details" colspan="5"> |
| 23557 | <p>The map provided here is the same map that is used by the camera device to |
| 23558 | correct both color shading and vignetting for output non-RAW images.<wbr/></p> |
| 23559 | <p>When there is no lens shading correction applied to RAW |
| 23560 | output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code> |
| 23561 | false),<wbr/> this map is the complete lens shading correction |
| 23562 | map; when there is some lens shading correction applied to |
| 23563 | the RAW output image (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a><code>==</code> true),<wbr/> this map reports the remaining lens shading |
| 23564 | correction map that needs to be applied to get shading |
| 23565 | corrected images that match the camera device's output for |
| 23566 | non-RAW formats.<wbr/></p> |
| 23567 | <p>For a complete shading correction map,<wbr/> the least shaded |
| 23568 | section of the image will have a gain factor of 1; all |
| 23569 | other sections will have gains above 1.<wbr/></p> |
| 23570 | <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map |
| 23571 | will take into account the colorCorrection settings.<wbr/></p> |
| 23572 | <p>The shading map is for the entire active pixel array,<wbr/> and is not |
| 23573 | affected by the crop region specified in the request.<wbr/> Each shading map |
| 23574 | entry is the value of the shading compensation map over a specific |
| 23575 | pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading |
| 23576 | map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry |
| 23577 | (x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at |
| 23578 | pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/> |
| 23579 | The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p> |
| 23580 | <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green |
| 23581 | channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/> |
| 23582 | The shading map is stored in a fully interleaved format.<wbr/></p> |
| 23583 | <p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/> |
| 23584 | and will be smaller than 64x64.<wbr/></p> |
| 23585 | <p>As an example,<wbr/> given a very small map defined as:</p> |
| 23586 | <pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ] |
| 23587 | values = |
| 23588 | [ 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/> |
| 23589 | 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/> |
| 23590 | 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/> |
| 23591 | 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/> |
| 23592 | 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/> |
| 23593 | 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 ] |
| 23594 | </code></pre> |
| 23595 | <p>The low-resolution scaling map images for each channel are |
| 23596 | (displayed using nearest-neighbor interpolation):</p> |
| 23597 | <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/> |
| 23598 | <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/> |
| 23599 | <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/> |
| 23600 | <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p> |
| 23601 | <p>As a visualization only,<wbr/> inverting the full-color map to recover an |
| 23602 | image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p> |
| 23603 | <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p> |
| 23604 | </td> |
| 23605 | </tr> |
| 23606 | |
| 23607 | |
| 23608 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 23609 | <!-- end of entry --> |
| 23610 | |
| 23611 | |
| 23612 | <tr class="entry" id="dynamic_android.statistics.lensShadingMap"> |
| 23613 | <td class="entry_name |
| 23614 | " rowspan="5"> |
| 23615 | android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map |
| 23616 | </td> |
| 23617 | <td class="entry_type"> |
| 23618 | <span class="entry_type_name">float</span> |
| 23619 | <span class="entry_type_container">x</span> |
| 23620 | |
| 23621 | <span class="entry_type_array"> |
| 23622 | 4 x n x m |
| 23623 | </span> |
| 23624 | <span class="entry_type_visibility"> [ndk_public]</span> |
| 23625 | |
| 23626 | |
| 23627 | <span class="entry_type_hwlevel">[full] </span> |
| 23628 | |
| 23629 | |
| 23630 | <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div> |
| 23631 | |
| 23632 | |
| 23633 | </td> <!-- entry_type --> |
| 23634 | |
| 23635 | <td class="entry_description"> |
| 23636 | <p>The shading map is a low-resolution floating-point map |
| 23637 | that lists the coefficients used to correct for vignetting and color shading,<wbr/> |
| 23638 | for each Bayer color channel of RAW image data.<wbr/></p> |
| 23639 | </td> |
| 23640 | |
| 23641 | <td class="entry_units"> |
| 23642 | </td> |
| 23643 | |
| 23644 | <td class="entry_range"> |
| 23645 | <p>Each gain factor is >= 1</p> |
| 23646 | </td> |
| 23647 | |
| 23648 | <td class="entry_tags"> |
| 23649 | </td> |
| 23650 | |
| 23651 | </tr> |
| 23652 | <tr class="entries_header"> |
| 23653 | <th class="th_details" colspan="5">Details</th> |
| 23654 | </tr> |
| 23655 | <tr class="entry_cont"> |
| 23656 | <td class="entry_details" colspan="5"> |
| 23657 | <p>The map provided here is the same map that is used by the camera device to |
| 23658 | correct both color shading and vignetting for output non-RAW images.<wbr/></p> |
| 23659 | <p>When there is no lens shading correction applied to RAW |
| 23660 | output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code> |
| 23661 | false),<wbr/> this map is the complete lens shading correction |
| 23662 | map; when there is some lens shading correction applied to |
| 23663 | the RAW output image (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a><code>==</code> true),<wbr/> this map reports the remaining lens shading |
| 23664 | correction map that needs to be applied to get shading |
| 23665 | corrected images that match the camera device's output for |
| 23666 | non-RAW formats.<wbr/></p> |
| 23667 | <p>For a complete shading correction map,<wbr/> the least shaded |
| 23668 | section of the image will have a gain factor of 1; all |
| 23669 | other sections will have gains above 1.<wbr/></p> |
| 23670 | <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map |
| 23671 | will take into account the colorCorrection settings.<wbr/></p> |
| 23672 | <p>The shading map is for the entire active pixel array,<wbr/> and is not |
| 23673 | affected by the crop region specified in the request.<wbr/> Each shading map |
| 23674 | entry is the value of the shading compensation map over a specific |
| 23675 | pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading |
| 23676 | map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry |
| 23677 | (x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at |
| 23678 | pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/> |
| 23679 | The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p> |
| 23680 | <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green |
| 23681 | channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/> |
| 23682 | The shading map is stored in a fully interleaved format,<wbr/> and its size |
| 23683 | 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> |
| 23684 | <p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/> |
| 23685 | and will be smaller than 64x64.<wbr/></p> |
| 23686 | <p>As an example,<wbr/> given a very small map defined as:</p> |
| 23687 | <pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ] |
| 23688 | <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> = |
| 23689 | [ 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/> |
| 23690 | 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/> |
| 23691 | 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/> |
| 23692 | 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/> |
| 23693 | 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/> |
| 23694 | 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 ] |
| 23695 | </code></pre> |
| 23696 | <p>The low-resolution scaling map images for each channel are |
| 23697 | (displayed using nearest-neighbor interpolation):</p> |
| 23698 | <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/> |
| 23699 | <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/> |
| 23700 | <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/> |
| 23701 | <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p> |
| 23702 | <p>As a visualization only,<wbr/> inverting the full-color map to recover an |
| 23703 | image of a gray wall (using bicubic interpolation for visual quality) |
| 23704 | as captured by the sensor gives:</p> |
| 23705 | <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p> |
| 23706 | <p>Note that the RAW image data might be subject to lens shading |
| 23707 | correction not reported on this map.<wbr/> Query |
| 23708 | <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 |
| 23709 | 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> |
| 23710 | is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading |
| 23711 | correction.<wbr/> In the case full lens shading correction is applied to RAW |
| 23712 | images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/> |
| 23713 | In other words,<wbr/> the map reported in this key is the remaining lens shading |
| 23714 | that needs to be applied on the RAW image to get images without lens shading |
| 23715 | 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 |
| 23716 | formats.<wbr/></p> |
| 23717 | </td> |
| 23718 | </tr> |
| 23719 | |
| 23720 | <tr class="entries_header"> |
| 23721 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 23722 | </tr> |
| 23723 | <tr class="entry_cont"> |
| 23724 | <td class="entry_details" colspan="5"> |
| 23725 | <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/> |
| 23726 | When AE and AWB are in AUTO modes |
| 23727 | (<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 |
| 23728 | may have all the information it need to generate most accurate lens shading map.<wbr/> When |
| 23729 | AE or AWB are in manual mode |
| 23730 | (<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 |
| 23731 | may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid |
| 23732 | generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with |
| 23733 | the latest known good map generated when the AE and AWB are in AUTO modes.<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="dynamic_android.statistics.predictedColorGains"> |
| 23742 | <td class="entry_name |
| 23743 | entry_name_deprecated |
| 23744 | " rowspan="3"> |
| 23745 | android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains |
| 23746 | </td> |
| 23747 | <td class="entry_type"> |
| 23748 | <span class="entry_type_name">float</span> |
| 23749 | <span class="entry_type_container">x</span> |
| 23750 | |
| 23751 | <span class="entry_type_array"> |
| 23752 | 4 |
| 23753 | </span> |
| 23754 | <span class="entry_type_visibility"> [hidden]</span> |
| 23755 | |
| 23756 | |
| 23757 | |
| 23758 | <span class="entry_type_deprecated">[deprecated] </span> |
| 23759 | |
| 23760 | <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> |
| 23761 | |
| 23762 | |
| 23763 | </td> <!-- entry_type --> |
| 23764 | |
| 23765 | <td class="entry_description"> |
| 23766 | <p>The best-fit color channel gains calculated |
| 23767 | by the camera device's statistics units for the current output frame.<wbr/></p> |
| 23768 | </td> |
| 23769 | |
| 23770 | <td class="entry_units"> |
| 23771 | </td> |
| 23772 | |
| 23773 | <td class="entry_range"> |
| 23774 | <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> |
| 23775 | </td> |
| 23776 | |
| 23777 | <td class="entry_tags"> |
| 23778 | </td> |
| 23779 | |
| 23780 | </tr> |
| 23781 | <tr class="entries_header"> |
| 23782 | <th class="th_details" colspan="5">Details</th> |
| 23783 | </tr> |
| 23784 | <tr class="entry_cont"> |
| 23785 | <td class="entry_details" colspan="5"> |
| 23786 | <p>This may be different than the gains used for this frame,<wbr/> |
| 23787 | since statistics processing on data from a new frame |
| 23788 | typically completes after the transform has already been |
| 23789 | applied to that frame.<wbr/></p> |
| 23790 | <p>The 4 channel gains are defined in Bayer domain,<wbr/> |
| 23791 | see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p> |
| 23792 | <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/> |
| 23793 | regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p> |
| 23794 | </td> |
| 23795 | </tr> |
| 23796 | |
| 23797 | |
| 23798 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 23799 | <!-- end of entry --> |
| 23800 | |
| 23801 | |
| 23802 | <tr class="entry" id="dynamic_android.statistics.predictedColorTransform"> |
| 23803 | <td class="entry_name |
| 23804 | entry_name_deprecated |
| 23805 | " rowspan="3"> |
| 23806 | android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform |
| 23807 | </td> |
| 23808 | <td class="entry_type"> |
| 23809 | <span class="entry_type_name">rational</span> |
| 23810 | <span class="entry_type_container">x</span> |
| 23811 | |
| 23812 | <span class="entry_type_array"> |
| 23813 | 3 x 3 |
| 23814 | </span> |
| 23815 | <span class="entry_type_visibility"> [hidden]</span> |
| 23816 | |
| 23817 | |
| 23818 | |
| 23819 | <span class="entry_type_deprecated">[deprecated] </span> |
| 23820 | |
| 23821 | <div class="entry_type_notes">3x3 rational matrix in row-major order</div> |
| 23822 | |
| 23823 | |
| 23824 | </td> <!-- entry_type --> |
| 23825 | |
| 23826 | <td class="entry_description"> |
| 23827 | <p>The best-fit color transform matrix estimate |
| 23828 | calculated by the camera device's statistics units for the current |
| 23829 | output frame.<wbr/></p> |
| 23830 | </td> |
| 23831 | |
| 23832 | <td class="entry_units"> |
| 23833 | </td> |
| 23834 | |
| 23835 | <td class="entry_range"> |
| 23836 | <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> |
| 23837 | </td> |
| 23838 | |
| 23839 | <td class="entry_tags"> |
| 23840 | </td> |
| 23841 | |
| 23842 | </tr> |
| 23843 | <tr class="entries_header"> |
| 23844 | <th class="th_details" colspan="5">Details</th> |
| 23845 | </tr> |
| 23846 | <tr class="entry_cont"> |
| 23847 | <td class="entry_details" colspan="5"> |
| 23848 | <p>The camera device will provide the estimate from its |
| 23849 | statistics unit on the white balance transforms to use |
| 23850 | for the next frame.<wbr/> These are the values the camera device believes |
| 23851 | are the best fit for the current output frame.<wbr/> This may |
| 23852 | be different than the transform used for this frame,<wbr/> since |
| 23853 | statistics processing on data from a new frame typically |
| 23854 | completes after the transform has already been applied to |
| 23855 | that frame.<wbr/></p> |
| 23856 | <p>These estimates must be provided for all frames,<wbr/> even if |
| 23857 | capture settings and color transforms are set by the application.<wbr/></p> |
| 23858 | <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/> |
| 23859 | regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p> |
| 23860 | </td> |
| 23861 | </tr> |
| 23862 | |
| 23863 | |
| 23864 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 23865 | <!-- end of entry --> |
| 23866 | |
| 23867 | |
| 23868 | <tr class="entry" id="dynamic_android.statistics.sceneFlicker"> |
| 23869 | <td class="entry_name |
| 23870 | " rowspan="3"> |
| 23871 | android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker |
| 23872 | </td> |
| 23873 | <td class="entry_type"> |
| 23874 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 23875 | |
| 23876 | <span class="entry_type_visibility"> [public]</span> |
| 23877 | |
| 23878 | |
| 23879 | <span class="entry_type_hwlevel">[full] </span> |
| 23880 | |
| 23881 | |
| 23882 | |
| 23883 | <ul class="entry_type_enum"> |
| 23884 | <li> |
| 23885 | <span class="entry_type_enum_name">NONE</span> |
| 23886 | <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination |
| 23887 | in the current scene.<wbr/></p></span> |
| 23888 | </li> |
| 23889 | <li> |
| 23890 | <span class="entry_type_enum_name">50HZ</span> |
| 23891 | <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz |
| 23892 | in the current scene.<wbr/></p></span> |
| 23893 | </li> |
| 23894 | <li> |
| 23895 | <span class="entry_type_enum_name">60HZ</span> |
| 23896 | <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz |
| 23897 | in the current scene.<wbr/></p></span> |
| 23898 | </li> |
| 23899 | </ul> |
| 23900 | |
| 23901 | </td> <!-- entry_type --> |
| 23902 | |
| 23903 | <td class="entry_description"> |
| 23904 | <p>The camera device estimated scene illumination lighting |
| 23905 | frequency.<wbr/></p> |
| 23906 | </td> |
| 23907 | |
| 23908 | <td class="entry_units"> |
| 23909 | </td> |
| 23910 | |
| 23911 | <td class="entry_range"> |
| 23912 | </td> |
| 23913 | |
| 23914 | <td class="entry_tags"> |
| 23915 | </td> |
| 23916 | |
| 23917 | </tr> |
| 23918 | <tr class="entries_header"> |
| 23919 | <th class="th_details" colspan="5">Details</th> |
| 23920 | </tr> |
| 23921 | <tr class="entry_cont"> |
| 23922 | <td class="entry_details" colspan="5"> |
| 23923 | <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate |
| 23924 | that depends on the local utility power standards.<wbr/> This flicker must be |
| 23925 | accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/> |
| 23926 | The camera device uses this entry to tell the application what the scene |
| 23927 | illuminant frequency is.<wbr/></p> |
| 23928 | <p>When manual exposure control is enabled |
| 23929 | (<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> == |
| 23930 | OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform |
| 23931 | antibanding,<wbr/> and the application can ensure it selects |
| 23932 | exposure times that do not cause banding issues by looking |
| 23933 | into this metadata field.<wbr/> See |
| 23934 | <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p> |
| 23935 | <p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p> |
| 23936 | </td> |
| 23937 | </tr> |
| 23938 | |
| 23939 | |
| 23940 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 23941 | <!-- end of entry --> |
| 23942 | |
| 23943 | |
| 23944 | <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode"> |
| 23945 | <td class="entry_name |
| 23946 | " rowspan="3"> |
| 23947 | android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode |
| 23948 | </td> |
| 23949 | <td class="entry_type"> |
| 23950 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 23951 | |
| 23952 | <span class="entry_type_visibility"> [public as boolean]</span> |
| 23953 | |
| 23954 | |
| 23955 | |
| 23956 | |
| 23957 | |
| 23958 | <ul class="entry_type_enum"> |
| 23959 | <li> |
| 23960 | <span class="entry_type_enum_name">OFF</span> |
| 23961 | <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span> |
| 23962 | </li> |
| 23963 | <li> |
| 23964 | <span class="entry_type_enum_name">ON</span> |
| 23965 | <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span> |
| 23966 | </li> |
| 23967 | </ul> |
| 23968 | |
| 23969 | </td> <!-- entry_type --> |
| 23970 | |
| 23971 | <td class="entry_description"> |
| 23972 | <p>Operating mode for hot pixel map generation.<wbr/></p> |
| 23973 | </td> |
| 23974 | |
| 23975 | <td class="entry_units"> |
| 23976 | </td> |
| 23977 | |
| 23978 | <td class="entry_range"> |
| 23979 | <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> |
| 23980 | </td> |
| 23981 | |
| 23982 | <td class="entry_tags"> |
| 23983 | <ul class="entry_tags"> |
| 23984 | <li><a href="#tag_V1">V1</a></li> |
| 23985 | <li><a href="#tag_RAW">RAW</a></li> |
| 23986 | </ul> |
| 23987 | </td> |
| 23988 | |
| 23989 | </tr> |
| 23990 | <tr class="entries_header"> |
| 23991 | <th class="th_details" colspan="5">Details</th> |
| 23992 | </tr> |
| 23993 | <tr class="entry_cont"> |
| 23994 | <td class="entry_details" colspan="5"> |
| 23995 | <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/> |
| 23996 | If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p> |
| 23997 | </td> |
| 23998 | </tr> |
| 23999 | |
| 24000 | |
| 24001 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 24002 | <!-- end of entry --> |
| 24003 | |
| 24004 | |
| 24005 | <tr class="entry" id="dynamic_android.statistics.hotPixelMap"> |
| 24006 | <td class="entry_name |
| 24007 | " rowspan="5"> |
| 24008 | android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map |
| 24009 | </td> |
| 24010 | <td class="entry_type"> |
| 24011 | <span class="entry_type_name">int32</span> |
| 24012 | <span class="entry_type_container">x</span> |
| 24013 | |
| 24014 | <span class="entry_type_array"> |
| 24015 | 2 x n |
| 24016 | </span> |
| 24017 | <span class="entry_type_visibility"> [public as point]</span> |
| 24018 | |
| 24019 | |
| 24020 | |
| 24021 | |
| 24022 | <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div> |
| 24023 | |
| 24024 | |
| 24025 | </td> <!-- entry_type --> |
| 24026 | |
| 24027 | <td class="entry_description"> |
| 24028 | <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p> |
| 24029 | </td> |
| 24030 | |
| 24031 | <td class="entry_units"> |
| 24032 | </td> |
| 24033 | |
| 24034 | <td class="entry_range"> |
| 24035 | <p>n <= number of pixels on the sensor.<wbr/> |
| 24036 | The <code>(x,<wbr/> y)</code> coordinates must be bounded by |
| 24037 | <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> |
| 24038 | </td> |
| 24039 | |
| 24040 | <td class="entry_tags"> |
| 24041 | <ul class="entry_tags"> |
| 24042 | <li><a href="#tag_V1">V1</a></li> |
| 24043 | <li><a href="#tag_RAW">RAW</a></li> |
| 24044 | </ul> |
| 24045 | </td> |
| 24046 | |
| 24047 | </tr> |
| 24048 | <tr class="entries_header"> |
| 24049 | <th class="th_details" colspan="5">Details</th> |
| 24050 | </tr> |
| 24051 | <tr class="entry_cont"> |
| 24052 | <td class="entry_details" colspan="5"> |
| 24053 | <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and |
| 24054 | <code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and |
| 24055 | bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and |
| 24056 | 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/> |
| 24057 | This may include hot pixels that lie outside of the active array |
| 24058 | bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> |
| 24059 | </td> |
| 24060 | </tr> |
| 24061 | |
| 24062 | <tr class="entries_header"> |
| 24063 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 24064 | </tr> |
| 24065 | <tr class="entry_cont"> |
| 24066 | <td class="entry_details" colspan="5"> |
| 24067 | <p>A hotpixel map contains the coordinates of pixels on the camera |
| 24068 | sensor that do report valid values (usually due to defects in |
| 24069 | the camera sensor).<wbr/> This includes pixels that are stuck at certain |
| 24070 | values,<wbr/> or have a response that does not accuractly encode the |
| 24071 | incoming light from the scene.<wbr/></p> |
| 24072 | <p>To avoid performance issues,<wbr/> there should be significantly fewer hot |
| 24073 | pixels than actual pixels on the camera sensor.<wbr/></p> |
| 24074 | </td> |
| 24075 | </tr> |
| 24076 | |
| 24077 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 24078 | <!-- end of entry --> |
| 24079 | |
| 24080 | |
| 24081 | <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode"> |
| 24082 | <td class="entry_name |
| 24083 | " rowspan="3"> |
| 24084 | android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode |
| 24085 | </td> |
| 24086 | <td class="entry_type"> |
| 24087 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 24088 | |
| 24089 | <span class="entry_type_visibility"> [public]</span> |
| 24090 | |
| 24091 | |
| 24092 | <span class="entry_type_hwlevel">[full] </span> |
| 24093 | |
| 24094 | |
| 24095 | |
| 24096 | <ul class="entry_type_enum"> |
| 24097 | <li> |
| 24098 | <span class="entry_type_enum_name">OFF</span> |
| 24099 | <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span> |
| 24100 | </li> |
| 24101 | <li> |
| 24102 | <span class="entry_type_enum_name">ON</span> |
| 24103 | <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span> |
| 24104 | </li> |
| 24105 | </ul> |
| 24106 | |
| 24107 | </td> <!-- entry_type --> |
| 24108 | |
| 24109 | <td class="entry_description"> |
| 24110 | <p>Whether the camera device will output the lens |
| 24111 | shading map in output result metadata.<wbr/></p> |
| 24112 | </td> |
| 24113 | |
| 24114 | <td class="entry_units"> |
| 24115 | </td> |
| 24116 | |
| 24117 | <td class="entry_range"> |
| 24118 | <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> |
| 24119 | </td> |
| 24120 | |
| 24121 | <td class="entry_tags"> |
| 24122 | <ul class="entry_tags"> |
| 24123 | <li><a href="#tag_RAW">RAW</a></li> |
| 24124 | </ul> |
| 24125 | </td> |
| 24126 | |
| 24127 | </tr> |
| 24128 | <tr class="entries_header"> |
| 24129 | <th class="th_details" colspan="5">Details</th> |
| 24130 | </tr> |
| 24131 | <tr class="entry_cont"> |
| 24132 | <td class="entry_details" colspan="5"> |
| 24133 | <p>When set to ON,<wbr/> |
| 24134 | <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in |
| 24135 | the output result metadata.<wbr/></p> |
| 24136 | <p>ON is always supported on devices with the RAW capability.<wbr/></p> |
| 24137 | </td> |
| 24138 | </tr> |
| 24139 | |
| 24140 | |
| 24141 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 24142 | <!-- end of entry --> |
| 24143 | |
| 24144 | |
| 24145 | |
| 24146 | <!-- end of kind --> |
| 24147 | </tbody> |
| 24148 | |
| 24149 | <!-- end of section --> |
| 24150 | <tr><td colspan="6" id="section_tonemap" class="section">tonemap</td></tr> |
| 24151 | |
| 24152 | |
| 24153 | <tr><td colspan="6" class="kind">controls</td></tr> |
| 24154 | |
| 24155 | <thead class="entries_header"> |
| 24156 | <tr> |
| 24157 | <th class="th_name">Property Name</th> |
| 24158 | <th class="th_type">Type</th> |
| 24159 | <th class="th_description">Description</th> |
| 24160 | <th class="th_units">Units</th> |
| 24161 | <th class="th_range">Range</th> |
| 24162 | <th class="th_tags">Tags</th> |
| 24163 | </tr> |
| 24164 | </thead> |
| 24165 | |
| 24166 | <tbody> |
| 24167 | |
| 24168 | |
| 24169 | |
| 24170 | |
| 24171 | |
| 24172 | |
| 24173 | |
| 24174 | |
| 24175 | |
| 24176 | |
| 24177 | <tr class="entry" id="controls_android.tonemap.curveBlue"> |
| 24178 | <td class="entry_name |
| 24179 | " rowspan="3"> |
| 24180 | android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue |
| 24181 | </td> |
| 24182 | <td class="entry_type"> |
| 24183 | <span class="entry_type_name">float</span> |
| 24184 | <span class="entry_type_container">x</span> |
| 24185 | |
| 24186 | <span class="entry_type_array"> |
| 24187 | n x 2 |
| 24188 | </span> |
| 24189 | <span class="entry_type_visibility"> [ndk_public]</span> |
| 24190 | |
| 24191 | |
| 24192 | <span class="entry_type_hwlevel">[full] </span> |
| 24193 | |
| 24194 | |
| 24195 | <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> |
| 24196 | |
| 24197 | |
| 24198 | </td> <!-- entry_type --> |
| 24199 | |
| 24200 | <td class="entry_description"> |
| 24201 | <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue |
| 24202 | channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is |
| 24203 | CONTRAST_<wbr/>CURVE.<wbr/></p> |
| 24204 | </td> |
| 24205 | |
| 24206 | <td class="entry_units"> |
| 24207 | </td> |
| 24208 | |
| 24209 | <td class="entry_range"> |
| 24210 | </td> |
| 24211 | |
| 24212 | <td class="entry_tags"> |
| 24213 | </td> |
| 24214 | |
| 24215 | </tr> |
| 24216 | <tr class="entries_header"> |
| 24217 | <th class="th_details" colspan="5">Details</th> |
| 24218 | </tr> |
| 24219 | <tr class="entry_cont"> |
| 24220 | <td class="entry_details" colspan="5"> |
| 24221 | <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> |
| 24222 | </td> |
| 24223 | </tr> |
| 24224 | |
| 24225 | |
| 24226 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 24227 | <!-- end of entry --> |
| 24228 | |
| 24229 | |
| 24230 | <tr class="entry" id="controls_android.tonemap.curveGreen"> |
| 24231 | <td class="entry_name |
| 24232 | " rowspan="3"> |
| 24233 | android.<wbr/>tonemap.<wbr/>curve<wbr/>Green |
| 24234 | </td> |
| 24235 | <td class="entry_type"> |
| 24236 | <span class="entry_type_name">float</span> |
| 24237 | <span class="entry_type_container">x</span> |
| 24238 | |
| 24239 | <span class="entry_type_array"> |
| 24240 | n x 2 |
| 24241 | </span> |
| 24242 | <span class="entry_type_visibility"> [ndk_public]</span> |
| 24243 | |
| 24244 | |
| 24245 | <span class="entry_type_hwlevel">[full] </span> |
| 24246 | |
| 24247 | |
| 24248 | <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> |
| 24249 | |
| 24250 | |
| 24251 | </td> <!-- entry_type --> |
| 24252 | |
| 24253 | <td class="entry_description"> |
| 24254 | <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green |
| 24255 | channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is |
| 24256 | CONTRAST_<wbr/>CURVE.<wbr/></p> |
| 24257 | </td> |
| 24258 | |
| 24259 | <td class="entry_units"> |
| 24260 | </td> |
| 24261 | |
| 24262 | <td class="entry_range"> |
| 24263 | </td> |
| 24264 | |
| 24265 | <td class="entry_tags"> |
| 24266 | </td> |
| 24267 | |
| 24268 | </tr> |
| 24269 | <tr class="entries_header"> |
| 24270 | <th class="th_details" colspan="5">Details</th> |
| 24271 | </tr> |
| 24272 | <tr class="entry_cont"> |
| 24273 | <td class="entry_details" colspan="5"> |
| 24274 | <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> |
| 24275 | </td> |
| 24276 | </tr> |
| 24277 | |
| 24278 | |
| 24279 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 24280 | <!-- end of entry --> |
| 24281 | |
| 24282 | |
| 24283 | <tr class="entry" id="controls_android.tonemap.curveRed"> |
| 24284 | <td class="entry_name |
| 24285 | " rowspan="5"> |
| 24286 | android.<wbr/>tonemap.<wbr/>curve<wbr/>Red |
| 24287 | </td> |
| 24288 | <td class="entry_type"> |
| 24289 | <span class="entry_type_name">float</span> |
| 24290 | <span class="entry_type_container">x</span> |
| 24291 | |
| 24292 | <span class="entry_type_array"> |
| 24293 | n x 2 |
| 24294 | </span> |
| 24295 | <span class="entry_type_visibility"> [ndk_public]</span> |
| 24296 | |
| 24297 | |
| 24298 | <span class="entry_type_hwlevel">[full] </span> |
| 24299 | |
| 24300 | |
| 24301 | <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> |
| 24302 | |
| 24303 | |
| 24304 | </td> <!-- entry_type --> |
| 24305 | |
| 24306 | <td class="entry_description"> |
| 24307 | <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red |
| 24308 | channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is |
| 24309 | CONTRAST_<wbr/>CURVE.<wbr/></p> |
| 24310 | </td> |
| 24311 | |
| 24312 | <td class="entry_units"> |
| 24313 | </td> |
| 24314 | |
| 24315 | <td class="entry_range"> |
| 24316 | <p>0-1 on both input and output coordinates,<wbr/> normalized |
| 24317 | as a floating-point value such that 0 == black and 1 == white.<wbr/></p> |
| 24318 | </td> |
| 24319 | |
| 24320 | <td class="entry_tags"> |
| 24321 | </td> |
| 24322 | |
| 24323 | </tr> |
| 24324 | <tr class="entries_header"> |
| 24325 | <th class="th_details" colspan="5">Details</th> |
| 24326 | </tr> |
| 24327 | <tr class="entry_cont"> |
| 24328 | <td class="entry_details" colspan="5"> |
| 24329 | <p>Each channel's curve is defined by an array of control points:</p> |
| 24330 | <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = |
| 24331 | [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ] |
| 24332 | 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> |
| 24333 | <p>These are sorted in order of increasing <code>Pin</code>; it is |
| 24334 | required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to |
| 24335 | define a complete mapping.<wbr/> For input values between control points,<wbr/> |
| 24336 | the camera device must linearly interpolate between the control |
| 24337 | points.<wbr/></p> |
| 24338 | <p>Each curve can have an independent number of points,<wbr/> and the number |
| 24339 | of points can be less than max (that is,<wbr/> the request doesn't have to |
| 24340 | always provide a curve with number of points equivalent to |
| 24341 | <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> |
| 24342 | <p>A few examples,<wbr/> and their corresponding graphical mappings; these |
| 24343 | only specify the red channel and the precision is limited to 4 |
| 24344 | digits,<wbr/> for conciseness.<wbr/></p> |
| 24345 | <p>Linear mapping:</p> |
| 24346 | <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 ] |
| 24347 | </code></pre> |
| 24348 | <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> |
| 24349 | <p>Invert mapping:</p> |
| 24350 | <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 ] |
| 24351 | </code></pre> |
| 24352 | <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> |
| 24353 | <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> |
| 24354 | <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ |
| 24355 | 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/> |
| 24356 | 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/> |
| 24357 | 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/> |
| 24358 | 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 ] |
| 24359 | </code></pre> |
| 24360 | <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> |
| 24361 | <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> |
| 24362 | <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ |
| 24363 | 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/> |
| 24364 | 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/> |
| 24365 | 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/> |
| 24366 | 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 ] |
| 24367 | </code></pre> |
| 24368 | <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> |
| 24369 | </td> |
| 24370 | </tr> |
| 24371 | |
| 24372 | <tr class="entries_header"> |
| 24373 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 24374 | </tr> |
| 24375 | <tr class="entry_cont"> |
| 24376 | <td class="entry_details" colspan="5"> |
| 24377 | <p>For good quality of mapping,<wbr/> at least 128 control points are |
| 24378 | preferred.<wbr/></p> |
| 24379 | <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many |
| 24380 | control points used as are available.<wbr/></p> |
| 24381 | </td> |
| 24382 | </tr> |
| 24383 | |
| 24384 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 24385 | <!-- end of entry --> |
| 24386 | |
| 24387 | |
| 24388 | <tr class="entry" id="controls_android.tonemap.curve"> |
| 24389 | <td class="entry_name |
| 24390 | " rowspan="5"> |
| 24391 | android.<wbr/>tonemap.<wbr/>curve |
| 24392 | </td> |
| 24393 | <td class="entry_type"> |
| 24394 | <span class="entry_type_name">float</span> |
| 24395 | |
| 24396 | <span class="entry_type_visibility"> [java_public as tonemapCurve]</span> |
| 24397 | |
| 24398 | <span class="entry_type_synthetic">[synthetic] </span> |
| 24399 | |
| 24400 | <span class="entry_type_hwlevel">[full] </span> |
| 24401 | |
| 24402 | |
| 24403 | |
| 24404 | |
| 24405 | </td> <!-- entry_type --> |
| 24406 | |
| 24407 | <td class="entry_description"> |
| 24408 | <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> |
| 24409 | is CONTRAST_<wbr/>CURVE.<wbr/></p> |
| 24410 | </td> |
| 24411 | |
| 24412 | <td class="entry_units"> |
| 24413 | </td> |
| 24414 | |
| 24415 | <td class="entry_range"> |
| 24416 | </td> |
| 24417 | |
| 24418 | <td class="entry_tags"> |
| 24419 | </td> |
| 24420 | |
| 24421 | </tr> |
| 24422 | <tr class="entries_header"> |
| 24423 | <th class="th_details" colspan="5">Details</th> |
| 24424 | </tr> |
| 24425 | <tr class="entry_cont"> |
| 24426 | <td class="entry_details" colspan="5"> |
| 24427 | <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue |
| 24428 | channels respectively.<wbr/> The following example uses the red channel as an |
| 24429 | example.<wbr/> The same logic applies to green and blue channel.<wbr/> |
| 24430 | Each channel's curve is defined by an array of control points:</p> |
| 24431 | <pre><code>curveRed = |
| 24432 | [ 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) ] |
| 24433 | 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> |
| 24434 | <p>These are sorted in order of increasing <code>Pin</code>; it is always |
| 24435 | guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to |
| 24436 | define a complete mapping.<wbr/> For input values between control points,<wbr/> |
| 24437 | the camera device must linearly interpolate between the control |
| 24438 | points.<wbr/></p> |
| 24439 | <p>Each curve can have an independent number of points,<wbr/> and the number |
| 24440 | of points can be less than max (that is,<wbr/> the request doesn't have to |
| 24441 | always provide a curve with number of points equivalent to |
| 24442 | <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> |
| 24443 | <p>A few examples,<wbr/> and their corresponding graphical mappings; these |
| 24444 | only specify the red channel and the precision is limited to 4 |
| 24445 | digits,<wbr/> for conciseness.<wbr/></p> |
| 24446 | <p>Linear mapping:</p> |
| 24447 | <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ] |
| 24448 | </code></pre> |
| 24449 | <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> |
| 24450 | <p>Invert mapping:</p> |
| 24451 | <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ] |
| 24452 | </code></pre> |
| 24453 | <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> |
| 24454 | <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> |
| 24455 | <pre><code>curveRed = [ |
| 24456 | (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/> |
| 24457 | (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/> |
| 24458 | (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/> |
| 24459 | (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) ] |
| 24460 | </code></pre> |
| 24461 | <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> |
| 24462 | <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> |
| 24463 | <pre><code>curveRed = [ |
| 24464 | (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/> |
| 24465 | (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/> |
| 24466 | (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/> |
| 24467 | (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) ] |
| 24468 | </code></pre> |
| 24469 | <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> |
| 24470 | </td> |
| 24471 | </tr> |
| 24472 | |
| 24473 | <tr class="entries_header"> |
| 24474 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 24475 | </tr> |
| 24476 | <tr class="entry_cont"> |
| 24477 | <td class="entry_details" colspan="5"> |
| 24478 | <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and |
| 24479 | curveBlue entries.<wbr/></p> |
| 24480 | </td> |
| 24481 | </tr> |
| 24482 | |
| 24483 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 24484 | <!-- end of entry --> |
| 24485 | |
| 24486 | |
| 24487 | <tr class="entry" id="controls_android.tonemap.mode"> |
| 24488 | <td class="entry_name |
| 24489 | " rowspan="3"> |
| 24490 | android.<wbr/>tonemap.<wbr/>mode |
| 24491 | </td> |
| 24492 | <td class="entry_type"> |
| 24493 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 24494 | |
| 24495 | <span class="entry_type_visibility"> [public]</span> |
| 24496 | |
| 24497 | |
| 24498 | <span class="entry_type_hwlevel">[full] </span> |
| 24499 | |
| 24500 | |
| 24501 | |
| 24502 | <ul class="entry_type_enum"> |
| 24503 | <li> |
| 24504 | <span class="entry_type_enum_name">CONTRAST_CURVE</span> |
| 24505 | <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in |
| 24506 | the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p> |
| 24507 | <p>All color enhancement and tonemapping must be disabled,<wbr/> except |
| 24508 | for applying the tonemapping curve specified by |
| 24509 | <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> |
| 24510 | <p>Must not slow down frame rate relative to raw |
| 24511 | sensor output.<wbr/></p></span> |
| 24512 | </li> |
| 24513 | <li> |
| 24514 | <span class="entry_type_enum_name">FAST</span> |
| 24515 | <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without |
| 24516 | reducing frame rate compared to raw sensor output.<wbr/></p></span> |
| 24517 | </li> |
| 24518 | <li> |
| 24519 | <span class="entry_type_enum_name">HIGH_QUALITY</span> |
| 24520 | <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at |
| 24521 | the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span> |
| 24522 | </li> |
| 24523 | <li> |
| 24524 | <span class="entry_type_enum_name">GAMMA_VALUE</span> |
| 24525 | <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 |
| 24526 | tonemapping.<wbr/></p> |
| 24527 | <p>All color enhancement and tonemapping must be disabled,<wbr/> except |
| 24528 | for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p> |
| 24529 | <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> |
| 24530 | </li> |
| 24531 | <li> |
| 24532 | <span class="entry_type_enum_name">PRESET_CURVE</span> |
| 24533 | <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in |
| 24534 | <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p> |
| 24535 | <p>All color enhancement and tonemapping must be disabled,<wbr/> except |
| 24536 | for applying the tonemapping curve specified by |
| 24537 | <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p> |
| 24538 | <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> |
| 24539 | </li> |
| 24540 | </ul> |
| 24541 | |
| 24542 | </td> <!-- entry_type --> |
| 24543 | |
| 24544 | <td class="entry_description"> |
| 24545 | <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p> |
| 24546 | </td> |
| 24547 | |
| 24548 | <td class="entry_units"> |
| 24549 | </td> |
| 24550 | |
| 24551 | <td class="entry_range"> |
| 24552 | <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p> |
| 24553 | </td> |
| 24554 | |
| 24555 | <td class="entry_tags"> |
| 24556 | </td> |
| 24557 | |
| 24558 | </tr> |
| 24559 | <tr class="entries_header"> |
| 24560 | <th class="th_details" colspan="5">Details</th> |
| 24561 | </tr> |
| 24562 | <tr class="entry_cont"> |
| 24563 | <td class="entry_details" colspan="5"> |
| 24564 | <p>When switching to an application-defined contrast curve by setting |
| 24565 | <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined |
| 24566 | per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the |
| 24567 | mapping from input high-bit-depth pixel value to the output |
| 24568 | low-bit-depth value.<wbr/> Since the actual pixel ranges of both input |
| 24569 | and output may change depending on the camera pipeline,<wbr/> the values |
| 24570 | are specified by normalized floating-point numbers.<wbr/></p> |
| 24571 | <p>More-complex color mapping operations such as 3D color look-up |
| 24572 | tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color |
| 24573 | transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is |
| 24574 | CONTRAST_<wbr/>CURVE.<wbr/></p> |
| 24575 | <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will |
| 24576 | emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/> |
| 24577 | These values are always available,<wbr/> and as close as possible to the |
| 24578 | actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p> |
| 24579 | <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's |
| 24580 | provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be |
| 24581 | roughly the same.<wbr/></p> |
| 24582 | </td> |
| 24583 | </tr> |
| 24584 | |
| 24585 | |
| 24586 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 24587 | <!-- end of entry --> |
| 24588 | |
| 24589 | |
| 24590 | <tr class="entry" id="controls_android.tonemap.gamma"> |
| 24591 | <td class="entry_name |
| 24592 | " rowspan="3"> |
| 24593 | android.<wbr/>tonemap.<wbr/>gamma |
| 24594 | </td> |
| 24595 | <td class="entry_type"> |
| 24596 | <span class="entry_type_name">float</span> |
| 24597 | |
| 24598 | <span class="entry_type_visibility"> [public]</span> |
| 24599 | |
| 24600 | |
| 24601 | |
| 24602 | |
| 24603 | |
| 24604 | |
| 24605 | </td> <!-- entry_type --> |
| 24606 | |
| 24607 | <td class="entry_description"> |
| 24608 | <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is |
| 24609 | GAMMA_<wbr/>VALUE</p> |
| 24610 | </td> |
| 24611 | |
| 24612 | <td class="entry_units"> |
| 24613 | </td> |
| 24614 | |
| 24615 | <td class="entry_range"> |
| 24616 | </td> |
| 24617 | |
| 24618 | <td class="entry_tags"> |
| 24619 | </td> |
| 24620 | |
| 24621 | </tr> |
| 24622 | <tr class="entries_header"> |
| 24623 | <th class="th_details" colspan="5">Details</th> |
| 24624 | </tr> |
| 24625 | <tr class="entry_cont"> |
| 24626 | <td class="entry_details" colspan="5"> |
| 24627 | <p>The tonemap curve will be defined the following formula: |
| 24628 | * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma) |
| 24629 | where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/> |
| 24630 | pow is the power function and gamma is the gamma value specified by this |
| 24631 | key.<wbr/></p> |
| 24632 | <p>The same curve will be applied to all color channels.<wbr/> The camera device |
| 24633 | may clip the input gamma value to its supported range.<wbr/> The actual applied |
| 24634 | value will be returned in capture result.<wbr/></p> |
| 24635 | <p>The valid range of gamma value varies on different devices,<wbr/> but values |
| 24636 | within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> |
| 24637 | </td> |
| 24638 | </tr> |
| 24639 | |
| 24640 | |
| 24641 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 24642 | <!-- end of entry --> |
| 24643 | |
| 24644 | |
| 24645 | <tr class="entry" id="controls_android.tonemap.presetCurve"> |
| 24646 | <td class="entry_name |
| 24647 | " rowspan="3"> |
| 24648 | android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve |
| 24649 | </td> |
| 24650 | <td class="entry_type"> |
| 24651 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 24652 | |
| 24653 | <span class="entry_type_visibility"> [public]</span> |
| 24654 | |
| 24655 | |
| 24656 | |
| 24657 | |
| 24658 | |
| 24659 | <ul class="entry_type_enum"> |
| 24660 | <li> |
| 24661 | <span class="entry_type_enum_name">SRGB</span> |
| 24662 | <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span> |
| 24663 | </li> |
| 24664 | <li> |
| 24665 | <span class="entry_type_enum_name">REC709</span> |
| 24666 | <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span> |
| 24667 | </li> |
| 24668 | </ul> |
| 24669 | |
| 24670 | </td> <!-- entry_type --> |
| 24671 | |
| 24672 | <td class="entry_description"> |
| 24673 | <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is |
| 24674 | PRESET_<wbr/>CURVE</p> |
| 24675 | </td> |
| 24676 | |
| 24677 | <td class="entry_units"> |
| 24678 | </td> |
| 24679 | |
| 24680 | <td class="entry_range"> |
| 24681 | </td> |
| 24682 | |
| 24683 | <td class="entry_tags"> |
| 24684 | </td> |
| 24685 | |
| 24686 | </tr> |
| 24687 | <tr class="entries_header"> |
| 24688 | <th class="th_details" colspan="5">Details</th> |
| 24689 | </tr> |
| 24690 | <tr class="entry_cont"> |
| 24691 | <td class="entry_details" colspan="5"> |
| 24692 | <p>The tonemap curve will be defined by specified standard.<wbr/></p> |
| 24693 | <p>sRGB (approximated by 16 control points):</p> |
| 24694 | <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> |
| 24695 | <p>Rec.<wbr/> 709 (approximated by 16 control points):</p> |
| 24696 | <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p> |
| 24697 | <p>Note that above figures show a 16 control points approximation of preset |
| 24698 | curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p> |
| 24699 | </td> |
| 24700 | </tr> |
| 24701 | |
| 24702 | |
| 24703 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 24704 | <!-- end of entry --> |
| 24705 | |
| 24706 | |
| 24707 | |
| 24708 | <!-- end of kind --> |
| 24709 | </tbody> |
| 24710 | <tr><td colspan="6" class="kind">static</td></tr> |
| 24711 | |
| 24712 | <thead class="entries_header"> |
| 24713 | <tr> |
| 24714 | <th class="th_name">Property Name</th> |
| 24715 | <th class="th_type">Type</th> |
| 24716 | <th class="th_description">Description</th> |
| 24717 | <th class="th_units">Units</th> |
| 24718 | <th class="th_range">Range</th> |
| 24719 | <th class="th_tags">Tags</th> |
| 24720 | </tr> |
| 24721 | </thead> |
| 24722 | |
| 24723 | <tbody> |
| 24724 | |
| 24725 | |
| 24726 | |
| 24727 | |
| 24728 | |
| 24729 | |
| 24730 | |
| 24731 | |
| 24732 | |
| 24733 | |
| 24734 | <tr class="entry" id="static_android.tonemap.maxCurvePoints"> |
| 24735 | <td class="entry_name |
| 24736 | " rowspan="5"> |
| 24737 | android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points |
| 24738 | </td> |
| 24739 | <td class="entry_type"> |
| 24740 | <span class="entry_type_name">int32</span> |
| 24741 | |
| 24742 | <span class="entry_type_visibility"> [public]</span> |
| 24743 | |
| 24744 | |
| 24745 | <span class="entry_type_hwlevel">[full] </span> |
| 24746 | |
| 24747 | |
| 24748 | |
| 24749 | |
| 24750 | </td> <!-- entry_type --> |
| 24751 | |
| 24752 | <td class="entry_description"> |
| 24753 | <p>Maximum number of supported points in the |
| 24754 | tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> |
| 24755 | </td> |
| 24756 | |
| 24757 | <td class="entry_units"> |
| 24758 | </td> |
| 24759 | |
| 24760 | <td class="entry_range"> |
| 24761 | </td> |
| 24762 | |
| 24763 | <td class="entry_tags"> |
| 24764 | </td> |
| 24765 | |
| 24766 | </tr> |
| 24767 | <tr class="entries_header"> |
| 24768 | <th class="th_details" colspan="5">Details</th> |
| 24769 | </tr> |
| 24770 | <tr class="entry_cont"> |
| 24771 | <td class="entry_details" colspan="5"> |
| 24772 | <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 |
| 24773 | less than this maximum,<wbr/> the camera device will resample the curve to its internal |
| 24774 | representation,<wbr/> using linear interpolation.<wbr/></p> |
| 24775 | <p>The output curves in the result metadata may have a different number |
| 24776 | of points than the input curves,<wbr/> and will represent the actual |
| 24777 | hardware curves used as closely as possible when linearly interpolated.<wbr/></p> |
| 24778 | </td> |
| 24779 | </tr> |
| 24780 | |
| 24781 | <tr class="entries_header"> |
| 24782 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 24783 | </tr> |
| 24784 | <tr class="entry_cont"> |
| 24785 | <td class="entry_details" colspan="5"> |
| 24786 | <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p> |
| 24787 | </td> |
| 24788 | </tr> |
| 24789 | |
| 24790 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 24791 | <!-- end of entry --> |
| 24792 | |
| 24793 | |
| 24794 | <tr class="entry" id="static_android.tonemap.availableToneMapModes"> |
| 24795 | <td class="entry_name |
| 24796 | " rowspan="5"> |
| 24797 | android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes |
| 24798 | </td> |
| 24799 | <td class="entry_type"> |
| 24800 | <span class="entry_type_name">byte</span> |
| 24801 | <span class="entry_type_container">x</span> |
| 24802 | |
| 24803 | <span class="entry_type_array"> |
| 24804 | n |
| 24805 | </span> |
| 24806 | <span class="entry_type_visibility"> [public as enumList]</span> |
| 24807 | |
| 24808 | |
| 24809 | <span class="entry_type_hwlevel">[full] </span> |
| 24810 | |
| 24811 | |
| 24812 | <div class="entry_type_notes">list of enums</div> |
| 24813 | |
| 24814 | |
| 24815 | </td> <!-- entry_type --> |
| 24816 | |
| 24817 | <td class="entry_description"> |
| 24818 | <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera |
| 24819 | device.<wbr/></p> |
| 24820 | </td> |
| 24821 | |
| 24822 | <td class="entry_units"> |
| 24823 | </td> |
| 24824 | |
| 24825 | <td class="entry_range"> |
| 24826 | <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p> |
| 24827 | </td> |
| 24828 | |
| 24829 | <td class="entry_tags"> |
| 24830 | </td> |
| 24831 | |
| 24832 | </tr> |
| 24833 | <tr class="entries_header"> |
| 24834 | <th class="th_details" colspan="5">Details</th> |
| 24835 | </tr> |
| 24836 | <tr class="entry_cont"> |
| 24837 | <td class="entry_details" colspan="5"> |
| 24838 | <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain |
| 24839 | at least one of below mode combinations:</p> |
| 24840 | <ul> |
| 24841 | <li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li> |
| 24842 | <li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li> |
| 24843 | </ul> |
| 24844 | <p>This includes all FULL level devices.<wbr/></p> |
| 24845 | </td> |
| 24846 | </tr> |
| 24847 | |
| 24848 | <tr class="entries_header"> |
| 24849 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 24850 | </tr> |
| 24851 | <tr class="entry_cont"> |
| 24852 | <td class="entry_details" colspan="5"> |
| 24853 | <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available |
| 24854 | on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> |
| 24855 | That is,<wbr/> if the highest quality implementation on the camera device does not slow down |
| 24856 | capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> |
| 24857 | </td> |
| 24858 | </tr> |
| 24859 | |
| 24860 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 24861 | <!-- end of entry --> |
| 24862 | |
| 24863 | |
| 24864 | |
| 24865 | <!-- end of kind --> |
| 24866 | </tbody> |
| 24867 | <tr><td colspan="6" class="kind">dynamic</td></tr> |
| 24868 | |
| 24869 | <thead class="entries_header"> |
| 24870 | <tr> |
| 24871 | <th class="th_name">Property Name</th> |
| 24872 | <th class="th_type">Type</th> |
| 24873 | <th class="th_description">Description</th> |
| 24874 | <th class="th_units">Units</th> |
| 24875 | <th class="th_range">Range</th> |
| 24876 | <th class="th_tags">Tags</th> |
| 24877 | </tr> |
| 24878 | </thead> |
| 24879 | |
| 24880 | <tbody> |
| 24881 | |
| 24882 | |
| 24883 | |
| 24884 | |
| 24885 | |
| 24886 | |
| 24887 | |
| 24888 | |
| 24889 | |
| 24890 | |
| 24891 | <tr class="entry" id="dynamic_android.tonemap.curveBlue"> |
| 24892 | <td class="entry_name |
| 24893 | " rowspan="3"> |
| 24894 | android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue |
| 24895 | </td> |
| 24896 | <td class="entry_type"> |
| 24897 | <span class="entry_type_name">float</span> |
| 24898 | <span class="entry_type_container">x</span> |
| 24899 | |
| 24900 | <span class="entry_type_array"> |
| 24901 | n x 2 |
| 24902 | </span> |
| 24903 | <span class="entry_type_visibility"> [ndk_public]</span> |
| 24904 | |
| 24905 | |
| 24906 | <span class="entry_type_hwlevel">[full] </span> |
| 24907 | |
| 24908 | |
| 24909 | <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> |
| 24910 | |
| 24911 | |
| 24912 | </td> <!-- entry_type --> |
| 24913 | |
| 24914 | <td class="entry_description"> |
| 24915 | <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue |
| 24916 | channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is |
| 24917 | CONTRAST_<wbr/>CURVE.<wbr/></p> |
| 24918 | </td> |
| 24919 | |
| 24920 | <td class="entry_units"> |
| 24921 | </td> |
| 24922 | |
| 24923 | <td class="entry_range"> |
| 24924 | </td> |
| 24925 | |
| 24926 | <td class="entry_tags"> |
| 24927 | </td> |
| 24928 | |
| 24929 | </tr> |
| 24930 | <tr class="entries_header"> |
| 24931 | <th class="th_details" colspan="5">Details</th> |
| 24932 | </tr> |
| 24933 | <tr class="entry_cont"> |
| 24934 | <td class="entry_details" colspan="5"> |
| 24935 | <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> |
| 24936 | </td> |
| 24937 | </tr> |
| 24938 | |
| 24939 | |
| 24940 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 24941 | <!-- end of entry --> |
| 24942 | |
| 24943 | |
| 24944 | <tr class="entry" id="dynamic_android.tonemap.curveGreen"> |
| 24945 | <td class="entry_name |
| 24946 | " rowspan="3"> |
| 24947 | android.<wbr/>tonemap.<wbr/>curve<wbr/>Green |
| 24948 | </td> |
| 24949 | <td class="entry_type"> |
| 24950 | <span class="entry_type_name">float</span> |
| 24951 | <span class="entry_type_container">x</span> |
| 24952 | |
| 24953 | <span class="entry_type_array"> |
| 24954 | n x 2 |
| 24955 | </span> |
| 24956 | <span class="entry_type_visibility"> [ndk_public]</span> |
| 24957 | |
| 24958 | |
| 24959 | <span class="entry_type_hwlevel">[full] </span> |
| 24960 | |
| 24961 | |
| 24962 | <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> |
| 24963 | |
| 24964 | |
| 24965 | </td> <!-- entry_type --> |
| 24966 | |
| 24967 | <td class="entry_description"> |
| 24968 | <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green |
| 24969 | channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is |
| 24970 | CONTRAST_<wbr/>CURVE.<wbr/></p> |
| 24971 | </td> |
| 24972 | |
| 24973 | <td class="entry_units"> |
| 24974 | </td> |
| 24975 | |
| 24976 | <td class="entry_range"> |
| 24977 | </td> |
| 24978 | |
| 24979 | <td class="entry_tags"> |
| 24980 | </td> |
| 24981 | |
| 24982 | </tr> |
| 24983 | <tr class="entries_header"> |
| 24984 | <th class="th_details" colspan="5">Details</th> |
| 24985 | </tr> |
| 24986 | <tr class="entry_cont"> |
| 24987 | <td class="entry_details" colspan="5"> |
| 24988 | <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> |
| 24989 | </td> |
| 24990 | </tr> |
| 24991 | |
| 24992 | |
| 24993 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 24994 | <!-- end of entry --> |
| 24995 | |
| 24996 | |
| 24997 | <tr class="entry" id="dynamic_android.tonemap.curveRed"> |
| 24998 | <td class="entry_name |
| 24999 | " rowspan="5"> |
| 25000 | android.<wbr/>tonemap.<wbr/>curve<wbr/>Red |
| 25001 | </td> |
| 25002 | <td class="entry_type"> |
| 25003 | <span class="entry_type_name">float</span> |
| 25004 | <span class="entry_type_container">x</span> |
| 25005 | |
| 25006 | <span class="entry_type_array"> |
| 25007 | n x 2 |
| 25008 | </span> |
| 25009 | <span class="entry_type_visibility"> [ndk_public]</span> |
| 25010 | |
| 25011 | |
| 25012 | <span class="entry_type_hwlevel">[full] </span> |
| 25013 | |
| 25014 | |
| 25015 | <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> |
| 25016 | |
| 25017 | |
| 25018 | </td> <!-- entry_type --> |
| 25019 | |
| 25020 | <td class="entry_description"> |
| 25021 | <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red |
| 25022 | channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is |
| 25023 | CONTRAST_<wbr/>CURVE.<wbr/></p> |
| 25024 | </td> |
| 25025 | |
| 25026 | <td class="entry_units"> |
| 25027 | </td> |
| 25028 | |
| 25029 | <td class="entry_range"> |
| 25030 | <p>0-1 on both input and output coordinates,<wbr/> normalized |
| 25031 | as a floating-point value such that 0 == black and 1 == white.<wbr/></p> |
| 25032 | </td> |
| 25033 | |
| 25034 | <td class="entry_tags"> |
| 25035 | </td> |
| 25036 | |
| 25037 | </tr> |
| 25038 | <tr class="entries_header"> |
| 25039 | <th class="th_details" colspan="5">Details</th> |
| 25040 | </tr> |
| 25041 | <tr class="entry_cont"> |
| 25042 | <td class="entry_details" colspan="5"> |
| 25043 | <p>Each channel's curve is defined by an array of control points:</p> |
| 25044 | <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = |
| 25045 | [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ] |
| 25046 | 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> |
| 25047 | <p>These are sorted in order of increasing <code>Pin</code>; it is |
| 25048 | required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to |
| 25049 | define a complete mapping.<wbr/> For input values between control points,<wbr/> |
| 25050 | the camera device must linearly interpolate between the control |
| 25051 | points.<wbr/></p> |
| 25052 | <p>Each curve can have an independent number of points,<wbr/> and the number |
| 25053 | of points can be less than max (that is,<wbr/> the request doesn't have to |
| 25054 | always provide a curve with number of points equivalent to |
| 25055 | <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> |
| 25056 | <p>A few examples,<wbr/> and their corresponding graphical mappings; these |
| 25057 | only specify the red channel and the precision is limited to 4 |
| 25058 | digits,<wbr/> for conciseness.<wbr/></p> |
| 25059 | <p>Linear mapping:</p> |
| 25060 | <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 ] |
| 25061 | </code></pre> |
| 25062 | <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> |
| 25063 | <p>Invert mapping:</p> |
| 25064 | <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 ] |
| 25065 | </code></pre> |
| 25066 | <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> |
| 25067 | <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> |
| 25068 | <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ |
| 25069 | 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/> |
| 25070 | 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/> |
| 25071 | 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/> |
| 25072 | 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 ] |
| 25073 | </code></pre> |
| 25074 | <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> |
| 25075 | <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> |
| 25076 | <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ |
| 25077 | 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/> |
| 25078 | 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/> |
| 25079 | 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/> |
| 25080 | 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 ] |
| 25081 | </code></pre> |
| 25082 | <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> |
| 25083 | </td> |
| 25084 | </tr> |
| 25085 | |
| 25086 | <tr class="entries_header"> |
| 25087 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 25088 | </tr> |
| 25089 | <tr class="entry_cont"> |
| 25090 | <td class="entry_details" colspan="5"> |
| 25091 | <p>For good quality of mapping,<wbr/> at least 128 control points are |
| 25092 | preferred.<wbr/></p> |
| 25093 | <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many |
| 25094 | control points used as are available.<wbr/></p> |
| 25095 | </td> |
| 25096 | </tr> |
| 25097 | |
| 25098 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 25099 | <!-- end of entry --> |
| 25100 | |
| 25101 | |
| 25102 | <tr class="entry" id="dynamic_android.tonemap.curve"> |
| 25103 | <td class="entry_name |
| 25104 | " rowspan="5"> |
| 25105 | android.<wbr/>tonemap.<wbr/>curve |
| 25106 | </td> |
| 25107 | <td class="entry_type"> |
| 25108 | <span class="entry_type_name">float</span> |
| 25109 | |
| 25110 | <span class="entry_type_visibility"> [java_public as tonemapCurve]</span> |
| 25111 | |
| 25112 | <span class="entry_type_synthetic">[synthetic] </span> |
| 25113 | |
| 25114 | <span class="entry_type_hwlevel">[full] </span> |
| 25115 | |
| 25116 | |
| 25117 | |
| 25118 | |
| 25119 | </td> <!-- entry_type --> |
| 25120 | |
| 25121 | <td class="entry_description"> |
| 25122 | <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> |
| 25123 | is CONTRAST_<wbr/>CURVE.<wbr/></p> |
| 25124 | </td> |
| 25125 | |
| 25126 | <td class="entry_units"> |
| 25127 | </td> |
| 25128 | |
| 25129 | <td class="entry_range"> |
| 25130 | </td> |
| 25131 | |
| 25132 | <td class="entry_tags"> |
| 25133 | </td> |
| 25134 | |
| 25135 | </tr> |
| 25136 | <tr class="entries_header"> |
| 25137 | <th class="th_details" colspan="5">Details</th> |
| 25138 | </tr> |
| 25139 | <tr class="entry_cont"> |
| 25140 | <td class="entry_details" colspan="5"> |
| 25141 | <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue |
| 25142 | channels respectively.<wbr/> The following example uses the red channel as an |
| 25143 | example.<wbr/> The same logic applies to green and blue channel.<wbr/> |
| 25144 | Each channel's curve is defined by an array of control points:</p> |
| 25145 | <pre><code>curveRed = |
| 25146 | [ 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) ] |
| 25147 | 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> |
| 25148 | <p>These are sorted in order of increasing <code>Pin</code>; it is always |
| 25149 | guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to |
| 25150 | define a complete mapping.<wbr/> For input values between control points,<wbr/> |
| 25151 | the camera device must linearly interpolate between the control |
| 25152 | points.<wbr/></p> |
| 25153 | <p>Each curve can have an independent number of points,<wbr/> and the number |
| 25154 | of points can be less than max (that is,<wbr/> the request doesn't have to |
| 25155 | always provide a curve with number of points equivalent to |
| 25156 | <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> |
| 25157 | <p>A few examples,<wbr/> and their corresponding graphical mappings; these |
| 25158 | only specify the red channel and the precision is limited to 4 |
| 25159 | digits,<wbr/> for conciseness.<wbr/></p> |
| 25160 | <p>Linear mapping:</p> |
| 25161 | <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ] |
| 25162 | </code></pre> |
| 25163 | <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> |
| 25164 | <p>Invert mapping:</p> |
| 25165 | <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ] |
| 25166 | </code></pre> |
| 25167 | <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> |
| 25168 | <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> |
| 25169 | <pre><code>curveRed = [ |
| 25170 | (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/> |
| 25171 | (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/> |
| 25172 | (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/> |
| 25173 | (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) ] |
| 25174 | </code></pre> |
| 25175 | <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> |
| 25176 | <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> |
| 25177 | <pre><code>curveRed = [ |
| 25178 | (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/> |
| 25179 | (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/> |
| 25180 | (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/> |
| 25181 | (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) ] |
| 25182 | </code></pre> |
| 25183 | <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> |
| 25184 | </td> |
| 25185 | </tr> |
| 25186 | |
| 25187 | <tr class="entries_header"> |
| 25188 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 25189 | </tr> |
| 25190 | <tr class="entry_cont"> |
| 25191 | <td class="entry_details" colspan="5"> |
| 25192 | <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and |
| 25193 | curveBlue entries.<wbr/></p> |
| 25194 | </td> |
| 25195 | </tr> |
| 25196 | |
| 25197 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 25198 | <!-- end of entry --> |
| 25199 | |
| 25200 | |
| 25201 | <tr class="entry" id="dynamic_android.tonemap.mode"> |
| 25202 | <td class="entry_name |
| 25203 | " rowspan="3"> |
| 25204 | android.<wbr/>tonemap.<wbr/>mode |
| 25205 | </td> |
| 25206 | <td class="entry_type"> |
| 25207 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 25208 | |
| 25209 | <span class="entry_type_visibility"> [public]</span> |
| 25210 | |
| 25211 | |
| 25212 | <span class="entry_type_hwlevel">[full] </span> |
| 25213 | |
| 25214 | |
| 25215 | |
| 25216 | <ul class="entry_type_enum"> |
| 25217 | <li> |
| 25218 | <span class="entry_type_enum_name">CONTRAST_CURVE</span> |
| 25219 | <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in |
| 25220 | the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p> |
| 25221 | <p>All color enhancement and tonemapping must be disabled,<wbr/> except |
| 25222 | for applying the tonemapping curve specified by |
| 25223 | <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> |
| 25224 | <p>Must not slow down frame rate relative to raw |
| 25225 | sensor output.<wbr/></p></span> |
| 25226 | </li> |
| 25227 | <li> |
| 25228 | <span class="entry_type_enum_name">FAST</span> |
| 25229 | <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without |
| 25230 | reducing frame rate compared to raw sensor output.<wbr/></p></span> |
| 25231 | </li> |
| 25232 | <li> |
| 25233 | <span class="entry_type_enum_name">HIGH_QUALITY</span> |
| 25234 | <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at |
| 25235 | the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span> |
| 25236 | </li> |
| 25237 | <li> |
| 25238 | <span class="entry_type_enum_name">GAMMA_VALUE</span> |
| 25239 | <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 |
| 25240 | tonemapping.<wbr/></p> |
| 25241 | <p>All color enhancement and tonemapping must be disabled,<wbr/> except |
| 25242 | for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p> |
| 25243 | <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> |
| 25244 | </li> |
| 25245 | <li> |
| 25246 | <span class="entry_type_enum_name">PRESET_CURVE</span> |
| 25247 | <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in |
| 25248 | <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p> |
| 25249 | <p>All color enhancement and tonemapping must be disabled,<wbr/> except |
| 25250 | for applying the tonemapping curve specified by |
| 25251 | <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p> |
| 25252 | <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> |
| 25253 | </li> |
| 25254 | </ul> |
| 25255 | |
| 25256 | </td> <!-- entry_type --> |
| 25257 | |
| 25258 | <td class="entry_description"> |
| 25259 | <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p> |
| 25260 | </td> |
| 25261 | |
| 25262 | <td class="entry_units"> |
| 25263 | </td> |
| 25264 | |
| 25265 | <td class="entry_range"> |
| 25266 | <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p> |
| 25267 | </td> |
| 25268 | |
| 25269 | <td class="entry_tags"> |
| 25270 | </td> |
| 25271 | |
| 25272 | </tr> |
| 25273 | <tr class="entries_header"> |
| 25274 | <th class="th_details" colspan="5">Details</th> |
| 25275 | </tr> |
| 25276 | <tr class="entry_cont"> |
| 25277 | <td class="entry_details" colspan="5"> |
| 25278 | <p>When switching to an application-defined contrast curve by setting |
| 25279 | <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined |
| 25280 | per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the |
| 25281 | mapping from input high-bit-depth pixel value to the output |
| 25282 | low-bit-depth value.<wbr/> Since the actual pixel ranges of both input |
| 25283 | and output may change depending on the camera pipeline,<wbr/> the values |
| 25284 | are specified by normalized floating-point numbers.<wbr/></p> |
| 25285 | <p>More-complex color mapping operations such as 3D color look-up |
| 25286 | tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color |
| 25287 | transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is |
| 25288 | CONTRAST_<wbr/>CURVE.<wbr/></p> |
| 25289 | <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will |
| 25290 | emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/> |
| 25291 | These values are always available,<wbr/> and as close as possible to the |
| 25292 | actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p> |
| 25293 | <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's |
| 25294 | provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be |
| 25295 | roughly the same.<wbr/></p> |
| 25296 | </td> |
| 25297 | </tr> |
| 25298 | |
| 25299 | |
| 25300 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 25301 | <!-- end of entry --> |
| 25302 | |
| 25303 | |
| 25304 | <tr class="entry" id="dynamic_android.tonemap.gamma"> |
| 25305 | <td class="entry_name |
| 25306 | " rowspan="3"> |
| 25307 | android.<wbr/>tonemap.<wbr/>gamma |
| 25308 | </td> |
| 25309 | <td class="entry_type"> |
| 25310 | <span class="entry_type_name">float</span> |
| 25311 | |
| 25312 | <span class="entry_type_visibility"> [public]</span> |
| 25313 | |
| 25314 | |
| 25315 | |
| 25316 | |
| 25317 | |
| 25318 | |
| 25319 | </td> <!-- entry_type --> |
| 25320 | |
| 25321 | <td class="entry_description"> |
| 25322 | <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is |
| 25323 | GAMMA_<wbr/>VALUE</p> |
| 25324 | </td> |
| 25325 | |
| 25326 | <td class="entry_units"> |
| 25327 | </td> |
| 25328 | |
| 25329 | <td class="entry_range"> |
| 25330 | </td> |
| 25331 | |
| 25332 | <td class="entry_tags"> |
| 25333 | </td> |
| 25334 | |
| 25335 | </tr> |
| 25336 | <tr class="entries_header"> |
| 25337 | <th class="th_details" colspan="5">Details</th> |
| 25338 | </tr> |
| 25339 | <tr class="entry_cont"> |
| 25340 | <td class="entry_details" colspan="5"> |
| 25341 | <p>The tonemap curve will be defined the following formula: |
| 25342 | * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma) |
| 25343 | where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/> |
| 25344 | pow is the power function and gamma is the gamma value specified by this |
| 25345 | key.<wbr/></p> |
| 25346 | <p>The same curve will be applied to all color channels.<wbr/> The camera device |
| 25347 | may clip the input gamma value to its supported range.<wbr/> The actual applied |
| 25348 | value will be returned in capture result.<wbr/></p> |
| 25349 | <p>The valid range of gamma value varies on different devices,<wbr/> but values |
| 25350 | within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> |
| 25351 | </td> |
| 25352 | </tr> |
| 25353 | |
| 25354 | |
| 25355 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 25356 | <!-- end of entry --> |
| 25357 | |
| 25358 | |
| 25359 | <tr class="entry" id="dynamic_android.tonemap.presetCurve"> |
| 25360 | <td class="entry_name |
| 25361 | " rowspan="3"> |
| 25362 | android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve |
| 25363 | </td> |
| 25364 | <td class="entry_type"> |
| 25365 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 25366 | |
| 25367 | <span class="entry_type_visibility"> [public]</span> |
| 25368 | |
| 25369 | |
| 25370 | |
| 25371 | |
| 25372 | |
| 25373 | <ul class="entry_type_enum"> |
| 25374 | <li> |
| 25375 | <span class="entry_type_enum_name">SRGB</span> |
| 25376 | <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span> |
| 25377 | </li> |
| 25378 | <li> |
| 25379 | <span class="entry_type_enum_name">REC709</span> |
| 25380 | <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span> |
| 25381 | </li> |
| 25382 | </ul> |
| 25383 | |
| 25384 | </td> <!-- entry_type --> |
| 25385 | |
| 25386 | <td class="entry_description"> |
| 25387 | <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is |
| 25388 | PRESET_<wbr/>CURVE</p> |
| 25389 | </td> |
| 25390 | |
| 25391 | <td class="entry_units"> |
| 25392 | </td> |
| 25393 | |
| 25394 | <td class="entry_range"> |
| 25395 | </td> |
| 25396 | |
| 25397 | <td class="entry_tags"> |
| 25398 | </td> |
| 25399 | |
| 25400 | </tr> |
| 25401 | <tr class="entries_header"> |
| 25402 | <th class="th_details" colspan="5">Details</th> |
| 25403 | </tr> |
| 25404 | <tr class="entry_cont"> |
| 25405 | <td class="entry_details" colspan="5"> |
| 25406 | <p>The tonemap curve will be defined by specified standard.<wbr/></p> |
| 25407 | <p>sRGB (approximated by 16 control points):</p> |
| 25408 | <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> |
| 25409 | <p>Rec.<wbr/> 709 (approximated by 16 control points):</p> |
| 25410 | <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p> |
| 25411 | <p>Note that above figures show a 16 control points approximation of preset |
| 25412 | curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p> |
| 25413 | </td> |
| 25414 | </tr> |
| 25415 | |
| 25416 | |
| 25417 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 25418 | <!-- end of entry --> |
| 25419 | |
| 25420 | |
| 25421 | |
| 25422 | <!-- end of kind --> |
| 25423 | </tbody> |
| 25424 | |
| 25425 | <!-- end of section --> |
| 25426 | <tr><td colspan="6" id="section_led" class="section">led</td></tr> |
| 25427 | |
| 25428 | |
| 25429 | <tr><td colspan="6" class="kind">controls</td></tr> |
| 25430 | |
| 25431 | <thead class="entries_header"> |
| 25432 | <tr> |
| 25433 | <th class="th_name">Property Name</th> |
| 25434 | <th class="th_type">Type</th> |
| 25435 | <th class="th_description">Description</th> |
| 25436 | <th class="th_units">Units</th> |
| 25437 | <th class="th_range">Range</th> |
| 25438 | <th class="th_tags">Tags</th> |
| 25439 | </tr> |
| 25440 | </thead> |
| 25441 | |
| 25442 | <tbody> |
| 25443 | |
| 25444 | |
| 25445 | |
| 25446 | |
| 25447 | |
| 25448 | |
| 25449 | |
| 25450 | |
| 25451 | |
| 25452 | |
| 25453 | <tr class="entry" id="controls_android.led.transmit"> |
| 25454 | <td class="entry_name |
| 25455 | " rowspan="1"> |
| 25456 | android.<wbr/>led.<wbr/>transmit |
| 25457 | </td> |
| 25458 | <td class="entry_type"> |
| 25459 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 25460 | |
| 25461 | <span class="entry_type_visibility"> [hidden as boolean]</span> |
| 25462 | |
| 25463 | |
| 25464 | |
| 25465 | |
| 25466 | |
| 25467 | <ul class="entry_type_enum"> |
| 25468 | <li> |
| 25469 | <span class="entry_type_enum_name">OFF</span> |
| 25470 | </li> |
| 25471 | <li> |
| 25472 | <span class="entry_type_enum_name">ON</span> |
| 25473 | </li> |
| 25474 | </ul> |
| 25475 | |
| 25476 | </td> <!-- entry_type --> |
| 25477 | |
| 25478 | <td class="entry_description"> |
| 25479 | <p>This LED is nominally used to indicate to the user |
| 25480 | that the camera is powered on and may be streaming images back to the |
| 25481 | Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may |
| 25482 | disable this when video is processed locally and not transmitted to |
| 25483 | any untrusted applications.<wbr/></p> |
| 25484 | <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be |
| 25485 | transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever |
| 25486 | data is stored locally on the device.<wbr/></p> |
| 25487 | <p>The LED <em>may</em> be off if a trusted application is using the data that |
| 25488 | doesn't violate the above rules.<wbr/></p> |
| 25489 | </td> |
| 25490 | |
| 25491 | <td class="entry_units"> |
| 25492 | </td> |
| 25493 | |
| 25494 | <td class="entry_range"> |
| 25495 | </td> |
| 25496 | |
| 25497 | <td class="entry_tags"> |
| 25498 | </td> |
| 25499 | |
| 25500 | </tr> |
| 25501 | |
| 25502 | |
| 25503 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 25504 | <!-- end of entry --> |
| 25505 | |
| 25506 | |
| 25507 | |
| 25508 | <!-- end of kind --> |
| 25509 | </tbody> |
| 25510 | <tr><td colspan="6" class="kind">dynamic</td></tr> |
| 25511 | |
| 25512 | <thead class="entries_header"> |
| 25513 | <tr> |
| 25514 | <th class="th_name">Property Name</th> |
| 25515 | <th class="th_type">Type</th> |
| 25516 | <th class="th_description">Description</th> |
| 25517 | <th class="th_units">Units</th> |
| 25518 | <th class="th_range">Range</th> |
| 25519 | <th class="th_tags">Tags</th> |
| 25520 | </tr> |
| 25521 | </thead> |
| 25522 | |
| 25523 | <tbody> |
| 25524 | |
| 25525 | |
| 25526 | |
| 25527 | |
| 25528 | |
| 25529 | |
| 25530 | |
| 25531 | |
| 25532 | |
| 25533 | |
| 25534 | <tr class="entry" id="dynamic_android.led.transmit"> |
| 25535 | <td class="entry_name |
| 25536 | " rowspan="1"> |
| 25537 | android.<wbr/>led.<wbr/>transmit |
| 25538 | </td> |
| 25539 | <td class="entry_type"> |
| 25540 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 25541 | |
| 25542 | <span class="entry_type_visibility"> [hidden as boolean]</span> |
| 25543 | |
| 25544 | |
| 25545 | |
| 25546 | |
| 25547 | |
| 25548 | <ul class="entry_type_enum"> |
| 25549 | <li> |
| 25550 | <span class="entry_type_enum_name">OFF</span> |
| 25551 | </li> |
| 25552 | <li> |
| 25553 | <span class="entry_type_enum_name">ON</span> |
| 25554 | </li> |
| 25555 | </ul> |
| 25556 | |
| 25557 | </td> <!-- entry_type --> |
| 25558 | |
| 25559 | <td class="entry_description"> |
| 25560 | <p>This LED is nominally used to indicate to the user |
| 25561 | that the camera is powered on and may be streaming images back to the |
| 25562 | Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may |
| 25563 | disable this when video is processed locally and not transmitted to |
| 25564 | any untrusted applications.<wbr/></p> |
| 25565 | <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be |
| 25566 | transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever |
| 25567 | data is stored locally on the device.<wbr/></p> |
| 25568 | <p>The LED <em>may</em> be off if a trusted application is using the data that |
| 25569 | doesn't violate the above rules.<wbr/></p> |
| 25570 | </td> |
| 25571 | |
| 25572 | <td class="entry_units"> |
| 25573 | </td> |
| 25574 | |
| 25575 | <td class="entry_range"> |
| 25576 | </td> |
| 25577 | |
| 25578 | <td class="entry_tags"> |
| 25579 | </td> |
| 25580 | |
| 25581 | </tr> |
| 25582 | |
| 25583 | |
| 25584 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 25585 | <!-- end of entry --> |
| 25586 | |
| 25587 | |
| 25588 | |
| 25589 | <!-- end of kind --> |
| 25590 | </tbody> |
| 25591 | <tr><td colspan="6" class="kind">static</td></tr> |
| 25592 | |
| 25593 | <thead class="entries_header"> |
| 25594 | <tr> |
| 25595 | <th class="th_name">Property Name</th> |
| 25596 | <th class="th_type">Type</th> |
| 25597 | <th class="th_description">Description</th> |
| 25598 | <th class="th_units">Units</th> |
| 25599 | <th class="th_range">Range</th> |
| 25600 | <th class="th_tags">Tags</th> |
| 25601 | </tr> |
| 25602 | </thead> |
| 25603 | |
| 25604 | <tbody> |
| 25605 | |
| 25606 | |
| 25607 | |
| 25608 | |
| 25609 | |
| 25610 | |
| 25611 | |
| 25612 | |
| 25613 | |
| 25614 | |
| 25615 | <tr class="entry" id="static_android.led.availableLeds"> |
| 25616 | <td class="entry_name |
| 25617 | " rowspan="1"> |
| 25618 | android.<wbr/>led.<wbr/>available<wbr/>Leds |
| 25619 | </td> |
| 25620 | <td class="entry_type"> |
| 25621 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 25622 | <span class="entry_type_container">x</span> |
| 25623 | |
| 25624 | <span class="entry_type_array"> |
| 25625 | n |
| 25626 | </span> |
| 25627 | <span class="entry_type_visibility"> [hidden]</span> |
| 25628 | |
| 25629 | |
| 25630 | |
| 25631 | |
| 25632 | |
| 25633 | <ul class="entry_type_enum"> |
| 25634 | <li> |
| 25635 | <span class="entry_type_enum_name">TRANSMIT</span> |
| 25636 | <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> |
| 25637 | </li> |
| 25638 | </ul> |
| 25639 | |
| 25640 | </td> <!-- entry_type --> |
| 25641 | |
| 25642 | <td class="entry_description"> |
| 25643 | <p>A list of camera LEDs that are available on this system.<wbr/></p> |
| 25644 | </td> |
| 25645 | |
| 25646 | <td class="entry_units"> |
| 25647 | </td> |
| 25648 | |
| 25649 | <td class="entry_range"> |
| 25650 | </td> |
| 25651 | |
| 25652 | <td class="entry_tags"> |
| 25653 | </td> |
| 25654 | |
| 25655 | </tr> |
| 25656 | |
| 25657 | |
| 25658 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 25659 | <!-- end of entry --> |
| 25660 | |
| 25661 | |
| 25662 | |
| 25663 | <!-- end of kind --> |
| 25664 | </tbody> |
| 25665 | |
| 25666 | <!-- end of section --> |
| 25667 | <tr><td colspan="6" id="section_info" class="section">info</td></tr> |
| 25668 | |
| 25669 | |
| 25670 | <tr><td colspan="6" class="kind">static</td></tr> |
| 25671 | |
| 25672 | <thead class="entries_header"> |
| 25673 | <tr> |
| 25674 | <th class="th_name">Property Name</th> |
| 25675 | <th class="th_type">Type</th> |
| 25676 | <th class="th_description">Description</th> |
| 25677 | <th class="th_units">Units</th> |
| 25678 | <th class="th_range">Range</th> |
| 25679 | <th class="th_tags">Tags</th> |
| 25680 | </tr> |
| 25681 | </thead> |
| 25682 | |
| 25683 | <tbody> |
| 25684 | |
| 25685 | |
| 25686 | |
| 25687 | |
| 25688 | |
| 25689 | |
| 25690 | |
| 25691 | |
| 25692 | |
| 25693 | |
| 25694 | <tr class="entry" id="static_android.info.supportedHardwareLevel"> |
| 25695 | <td class="entry_name |
| 25696 | " rowspan="5"> |
| 25697 | android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level |
| 25698 | </td> |
| 25699 | <td class="entry_type"> |
| 25700 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 25701 | |
| 25702 | <span class="entry_type_visibility"> [public]</span> |
| 25703 | |
| 25704 | |
| 25705 | <span class="entry_type_hwlevel">[legacy] </span> |
| 25706 | |
| 25707 | |
| 25708 | |
| 25709 | <ul class="entry_type_enum"> |
| 25710 | <li> |
| 25711 | <span class="entry_type_enum_name">LIMITED</span> |
| 25712 | <span class="entry_type_enum_notes"><p>This camera device does not have enough capabilities to qualify as a <code>FULL</code> device or |
| 25713 | better.<wbr/></p> |
| 25714 | <p>Only the stream configurations listed in the <code>LEGACY</code> and <code>LIMITED</code> tables in the |
| 25715 | <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p> |
| 25716 | <p>All <code>LIMITED</code> devices support the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability,<wbr/> indicating basic |
| 25717 | support for color image capture.<wbr/> The only exception is that the device may |
| 25718 | alternatively support only the <code>DEPTH_<wbr/>OUTPUT</code> capability,<wbr/> if it can only output depth |
| 25719 | measurements and not color images.<wbr/></p> |
| 25720 | <p><code>LIMITED</code> devices and above require the use of <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> |
| 25721 | to lock exposure metering (and calculate flash power,<wbr/> for cameras with flash) before |
| 25722 | capturing a high-quality still image.<wbr/></p> |
| 25723 | <p>A <code>LIMITED</code> device that only lists the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability is only |
| 25724 | required to support full-automatic operation and post-processing (<code>OFF</code> is not |
| 25725 | supported for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>,<wbr/> or |
| 25726 | <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>)</p> |
| 25727 | <p>Additional capabilities may optionally be supported by a <code>LIMITED</code>-level device,<wbr/> and |
| 25728 | can be checked for in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p></span> |
| 25729 | </li> |
| 25730 | <li> |
| 25731 | <span class="entry_type_enum_name">FULL</span> |
| 25732 | <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p> |
| 25733 | <p>The stream configurations listed in the <code>FULL</code>,<wbr/> <code>LEGACY</code> and <code>LIMITED</code> tables in the |
| 25734 | <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p> |
| 25735 | <p>A <code>FULL</code> device will support below capabilities:</p> |
| 25736 | <ul> |
| 25737 | <li><code>BURST_<wbr/>CAPTURE</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains |
| 25738 | <code>BURST_<wbr/>CAPTURE</code>)</li> |
| 25739 | <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> |
| 25740 | <li>Manual sensor control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains <code>MANUAL_<wbr/>SENSOR</code>)</li> |
| 25741 | <li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains |
| 25742 | <code>MANUAL_<wbr/>POST_<wbr/>PROCESSING</code>)</li> |
| 25743 | <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> |
| 25744 | <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> |
| 25745 | </ul> |
| 25746 | <p>Note: |
| 25747 | Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region |
| 25748 | (<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>); this requirement was relaxed in API level |
| 25749 | 23,<wbr/> and <code>FULL</code> devices may only support <code>CENTERED</code> cropping.<wbr/></p></span> |
| 25750 | </li> |
| 25751 | <li> |
| 25752 | <span class="entry_type_enum_name">LEGACY</span> |
| 25753 | <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p> |
| 25754 | <p>Only the stream configurations listed in the <code>LEGACY</code> table in the <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> |
| 25755 | documentation are supported.<wbr/></p> |
| 25756 | <p>A <code>LEGACY</code> device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual |
| 25757 | post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/> |
| 25758 | No additional capabilities beyond <code>BACKWARD_<wbr/>COMPATIBLE</code> will ever be listed by a |
| 25759 | <code>LEGACY</code> device in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> |
| 25760 | <p>In addition,<wbr/> the <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is not functional on <code>LEGACY</code> |
| 25761 | devices.<wbr/> Instead,<wbr/> every request that includes a JPEG-format output target is treated |
| 25762 | as triggering a still capture,<wbr/> internally executing a precapture trigger.<wbr/> This may |
| 25763 | fire the flash for flash power metering during precapture,<wbr/> and then fire the flash |
| 25764 | for the final capture,<wbr/> if a flash is available on the device and the AE mode is set to |
| 25765 | enable the flash.<wbr/></p></span> |
| 25766 | </li> |
| 25767 | <li> |
| 25768 | <span class="entry_type_enum_name">3</span> |
| 25769 | <span class="entry_type_enum_notes"><p>This camera device is capable of YUV reprocessing and RAW data capture,<wbr/> in addition to |
| 25770 | FULL-level capabilities.<wbr/></p> |
| 25771 | <p>The stream configurations listed in the <code>LEVEL_<wbr/>3</code>,<wbr/> <code>RAW</code>,<wbr/> <code>FULL</code>,<wbr/> <code>LEGACY</code> and |
| 25772 | <code>LIMITED</code> tables in the <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> |
| 25773 | documentation are guaranteed to be supported.<wbr/></p> |
| 25774 | <p>The following additional capabilities are guaranteed to be supported:</p> |
| 25775 | <ul> |
| 25776 | <li><code>YUV_<wbr/>REPROCESSING</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains |
| 25777 | <code>YUV_<wbr/>REPROCESSING</code>)</li> |
| 25778 | <li><code>RAW</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains |
| 25779 | <code>RAW</code>)</li> |
| 25780 | </ul></span> |
| 25781 | </li> |
| 25782 | </ul> |
| 25783 | |
| 25784 | </td> <!-- entry_type --> |
| 25785 | |
| 25786 | <td class="entry_description"> |
| 25787 | <p>Generally classifies the overall set of the camera device functionality.<wbr/></p> |
| 25788 | </td> |
| 25789 | |
| 25790 | <td class="entry_units"> |
| 25791 | </td> |
| 25792 | |
| 25793 | <td class="entry_range"> |
| 25794 | </td> |
| 25795 | |
| 25796 | <td class="entry_tags"> |
| 25797 | </td> |
| 25798 | |
| 25799 | </tr> |
| 25800 | <tr class="entries_header"> |
| 25801 | <th class="th_details" colspan="5">Details</th> |
| 25802 | </tr> |
| 25803 | <tr class="entry_cont"> |
| 25804 | <td class="entry_details" colspan="5"> |
| 25805 | <p>The supported hardware level is a high-level description of the camera device's |
| 25806 | capabilities,<wbr/> summarizing several capabilities into one field.<wbr/> Each level adds additional |
| 25807 | features to the previous one,<wbr/> and is always a strict superset of the previous level.<wbr/> |
| 25808 | The ordering is <code>LEGACY < LIMITED < FULL < LEVEL_<wbr/>3</code>.<wbr/></p> |
| 25809 | <p>Starting from <code>LEVEL_<wbr/>3</code>,<wbr/> the level enumerations are guaranteed to be in increasing |
| 25810 | numerical value as well.<wbr/> To check if a given device is at least at a given hardware level,<wbr/> |
| 25811 | the following code snippet can be used:</p> |
| 25812 | <pre><code>//<wbr/> Returns true if the device supports the required hardware level,<wbr/> or better.<wbr/> |
| 25813 | boolean isHardwareLevelSupported(CameraCharacteristics c,<wbr/> int requiredLevel) { |
| 25814 | int deviceLevel = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL); |
| 25815 | if (deviceLevel == Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LEGACY) { |
| 25816 | return requiredLevel == deviceLevel; |
| 25817 | } |
| 25818 | //<wbr/> deviceLevel is not LEGACY,<wbr/> can use numerical sort |
| 25819 | return requiredLevel <= deviceLevel; |
| 25820 | } |
| 25821 | </code></pre> |
| 25822 | <p>At a high level,<wbr/> the levels are:</p> |
| 25823 | <ul> |
| 25824 | <li><code>LEGACY</code> devices operate in a backwards-compatibility mode for older |
| 25825 | Android devices,<wbr/> and have very limited capabilities.<wbr/></li> |
| 25826 | <li><code>LIMITED</code> devices represent the |
| 25827 | baseline feature set,<wbr/> and may also include additional capabilities that are |
| 25828 | subsets of <code>FULL</code>.<wbr/></li> |
| 25829 | <li><code>FULL</code> devices additionally support per-frame manual control of sensor,<wbr/> flash,<wbr/> lens and |
| 25830 | post-processing settings,<wbr/> and image capture at a high rate.<wbr/></li> |
| 25831 | <li><code>LEVEL_<wbr/>3</code> devices additionally support YUV reprocessing and RAW image capture,<wbr/> along |
| 25832 | with additional output stream configurations.<wbr/></li> |
| 25833 | </ul> |
| 25834 | <p>See the individual level enums for full descriptions of the supported capabilities.<wbr/> The |
| 25835 | <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> entry describes the device's capabilities at a |
| 25836 | finer-grain level,<wbr/> if needed.<wbr/> In addition,<wbr/> many controls have their available settings or |
| 25837 | ranges defined in individual <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a> entries.<wbr/></p> |
| 25838 | <p>Some features are not part of any particular hardware level or capability and must be |
| 25839 | queried separately.<wbr/> These include:</p> |
| 25840 | <ul> |
| 25841 | <li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li> |
| 25842 | <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> |
| 25843 | <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> |
| 25844 | <li>Optical or electrical image stabilization |
| 25845 | (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/> |
| 25846 | <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li> |
| 25847 | </ul> |
| 25848 | </td> |
| 25849 | </tr> |
| 25850 | |
| 25851 | <tr class="entries_header"> |
| 25852 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 25853 | </tr> |
| 25854 | <tr class="entry_cont"> |
| 25855 | <td class="entry_details" colspan="5"> |
| 25856 | <p>The camera 3 HAL device can implement one of three possible operational modes; LIMITED,<wbr/> |
| 25857 | FULL,<wbr/> and LEVEL_<wbr/>3.<wbr/></p> |
| 25858 | <p>FULL support or better is expected from new higher-end devices.<wbr/> Limited |
| 25859 | mode has hardware requirements roughly in line with those for a camera HAL device v1 |
| 25860 | implementation,<wbr/> and is expected from older or inexpensive devices.<wbr/> Each level is a strict |
| 25861 | superset of the previous level,<wbr/> and they share the same essential operational flow.<wbr/></p> |
| 25862 | <p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p> |
| 25863 | <p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there for backwards compatibility in |
| 25864 | the <code>android.<wbr/>hardware.<wbr/>camera2</code> user-facing API only on HALv1 devices,<wbr/> and is implemented |
| 25865 | by the camera framework code.<wbr/></p> |
| 25866 | </td> |
| 25867 | </tr> |
| 25868 | |
| 25869 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 25870 | <!-- end of entry --> |
| 25871 | |
| 25872 | |
| 25873 | |
| 25874 | <!-- end of kind --> |
| 25875 | </tbody> |
| 25876 | |
| 25877 | <!-- end of section --> |
| 25878 | <tr><td colspan="6" id="section_blackLevel" class="section">blackLevel</td></tr> |
| 25879 | |
| 25880 | |
| 25881 | <tr><td colspan="6" class="kind">controls</td></tr> |
| 25882 | |
| 25883 | <thead class="entries_header"> |
| 25884 | <tr> |
| 25885 | <th class="th_name">Property Name</th> |
| 25886 | <th class="th_type">Type</th> |
| 25887 | <th class="th_description">Description</th> |
| 25888 | <th class="th_units">Units</th> |
| 25889 | <th class="th_range">Range</th> |
| 25890 | <th class="th_tags">Tags</th> |
| 25891 | </tr> |
| 25892 | </thead> |
| 25893 | |
| 25894 | <tbody> |
| 25895 | |
| 25896 | |
| 25897 | |
| 25898 | |
| 25899 | |
| 25900 | |
| 25901 | |
| 25902 | |
| 25903 | |
| 25904 | |
| 25905 | <tr class="entry" id="controls_android.blackLevel.lock"> |
| 25906 | <td class="entry_name |
| 25907 | " rowspan="5"> |
| 25908 | android.<wbr/>black<wbr/>Level.<wbr/>lock |
| 25909 | </td> |
| 25910 | <td class="entry_type"> |
| 25911 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 25912 | |
| 25913 | <span class="entry_type_visibility"> [public as boolean]</span> |
| 25914 | |
| 25915 | |
| 25916 | <span class="entry_type_hwlevel">[full] </span> |
| 25917 | |
| 25918 | |
| 25919 | |
| 25920 | <ul class="entry_type_enum"> |
| 25921 | <li> |
| 25922 | <span class="entry_type_enum_name">OFF</span> |
| 25923 | </li> |
| 25924 | <li> |
| 25925 | <span class="entry_type_enum_name">ON</span> |
| 25926 | </li> |
| 25927 | </ul> |
| 25928 | |
| 25929 | </td> <!-- entry_type --> |
| 25930 | |
| 25931 | <td class="entry_description"> |
| 25932 | <p>Whether black-level compensation is locked |
| 25933 | to its current values,<wbr/> or is free to vary.<wbr/></p> |
| 25934 | </td> |
| 25935 | |
| 25936 | <td class="entry_units"> |
| 25937 | </td> |
| 25938 | |
| 25939 | <td class="entry_range"> |
| 25940 | </td> |
| 25941 | |
| 25942 | <td class="entry_tags"> |
| 25943 | <ul class="entry_tags"> |
| 25944 | <li><a href="#tag_HAL2">HAL2</a></li> |
| 25945 | </ul> |
| 25946 | </td> |
| 25947 | |
| 25948 | </tr> |
| 25949 | <tr class="entries_header"> |
| 25950 | <th class="th_details" colspan="5">Details</th> |
| 25951 | </tr> |
| 25952 | <tr class="entry_cont"> |
| 25953 | <td class="entry_details" colspan="5"> |
| 25954 | <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level |
| 25955 | compensation will not change until the lock is set to |
| 25956 | <code>false</code> (OFF).<wbr/></p> |
| 25957 | <p>Since changes to certain capture parameters (such as |
| 25958 | exposure time) may require resetting of black level |
| 25959 | compensation,<wbr/> the camera device must report whether setting |
| 25960 | the black level lock was successful in the output result |
| 25961 | metadata.<wbr/></p> |
| 25962 | <p>For example,<wbr/> if a sequence of requests is as follows:</p> |
| 25963 | <ul> |
| 25964 | <li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li> |
| 25965 | <li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li> |
| 25966 | <li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li> |
| 25967 | <li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li> |
| 25968 | <li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li> |
| 25969 | <li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li> |
| 25970 | </ul> |
| 25971 | <p>And the exposure change in Request 4 requires the camera |
| 25972 | device to reset the black level offsets,<wbr/> then the output |
| 25973 | result metadata is expected to be:</p> |
| 25974 | <ul> |
| 25975 | <li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li> |
| 25976 | <li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li> |
| 25977 | <li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li> |
| 25978 | <li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li> |
| 25979 | <li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li> |
| 25980 | <li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li> |
| 25981 | </ul> |
| 25982 | <p>This indicates to the application that on frame 4,<wbr/> black |
| 25983 | levels were reset due to exposure value changes,<wbr/> and pixel |
| 25984 | values may not be consistent across captures.<wbr/></p> |
| 25985 | <p>The camera device will maintain the lock to the extent |
| 25986 | possible,<wbr/> only overriding the lock to OFF when changes to |
| 25987 | other request parameters require a black level recalculation |
| 25988 | or reset.<wbr/></p> |
| 25989 | </td> |
| 25990 | </tr> |
| 25991 | |
| 25992 | <tr class="entries_header"> |
| 25993 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 25994 | </tr> |
| 25995 | <tr class="entry_cont"> |
| 25996 | <td class="entry_details" colspan="5"> |
| 25997 | <p>If for some reason black level locking is no longer possible |
| 25998 | (for example,<wbr/> the analog gain has changed,<wbr/> which forces |
| 25999 | black level offsets to be recalculated),<wbr/> then the HAL must |
| 26000 | override this request (and it must report 'OFF' when this |
| 26001 | does happen) until the next capture for which locking is |
| 26002 | possible again.<wbr/></p> |
| 26003 | </td> |
| 26004 | </tr> |
| 26005 | |
| 26006 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 26007 | <!-- end of entry --> |
| 26008 | |
| 26009 | |
| 26010 | |
| 26011 | <!-- end of kind --> |
| 26012 | </tbody> |
| 26013 | <tr><td colspan="6" class="kind">dynamic</td></tr> |
| 26014 | |
| 26015 | <thead class="entries_header"> |
| 26016 | <tr> |
| 26017 | <th class="th_name">Property Name</th> |
| 26018 | <th class="th_type">Type</th> |
| 26019 | <th class="th_description">Description</th> |
| 26020 | <th class="th_units">Units</th> |
| 26021 | <th class="th_range">Range</th> |
| 26022 | <th class="th_tags">Tags</th> |
| 26023 | </tr> |
| 26024 | </thead> |
| 26025 | |
| 26026 | <tbody> |
| 26027 | |
| 26028 | |
| 26029 | |
| 26030 | |
| 26031 | |
| 26032 | |
| 26033 | |
| 26034 | |
| 26035 | |
| 26036 | |
| 26037 | <tr class="entry" id="dynamic_android.blackLevel.lock"> |
| 26038 | <td class="entry_name |
| 26039 | " rowspan="5"> |
| 26040 | android.<wbr/>black<wbr/>Level.<wbr/>lock |
| 26041 | </td> |
| 26042 | <td class="entry_type"> |
| 26043 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 26044 | |
| 26045 | <span class="entry_type_visibility"> [public as boolean]</span> |
| 26046 | |
| 26047 | |
| 26048 | <span class="entry_type_hwlevel">[full] </span> |
| 26049 | |
| 26050 | |
| 26051 | |
| 26052 | <ul class="entry_type_enum"> |
| 26053 | <li> |
| 26054 | <span class="entry_type_enum_name">OFF</span> |
| 26055 | </li> |
| 26056 | <li> |
| 26057 | <span class="entry_type_enum_name">ON</span> |
| 26058 | </li> |
| 26059 | </ul> |
| 26060 | |
| 26061 | </td> <!-- entry_type --> |
| 26062 | |
| 26063 | <td class="entry_description"> |
| 26064 | <p>Whether black-level compensation is locked |
| 26065 | to its current values,<wbr/> or is free to vary.<wbr/></p> |
| 26066 | </td> |
| 26067 | |
| 26068 | <td class="entry_units"> |
| 26069 | </td> |
| 26070 | |
| 26071 | <td class="entry_range"> |
| 26072 | </td> |
| 26073 | |
| 26074 | <td class="entry_tags"> |
| 26075 | <ul class="entry_tags"> |
| 26076 | <li><a href="#tag_HAL2">HAL2</a></li> |
| 26077 | </ul> |
| 26078 | </td> |
| 26079 | |
| 26080 | </tr> |
| 26081 | <tr class="entries_header"> |
| 26082 | <th class="th_details" colspan="5">Details</th> |
| 26083 | </tr> |
| 26084 | <tr class="entry_cont"> |
| 26085 | <td class="entry_details" colspan="5"> |
| 26086 | <p>Whether the black level offset was locked for this frame.<wbr/> Should be |
| 26087 | ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless |
| 26088 | a change in other capture settings forced the camera device to |
| 26089 | perform a black level reset.<wbr/></p> |
| 26090 | </td> |
| 26091 | </tr> |
| 26092 | |
| 26093 | <tr class="entries_header"> |
| 26094 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 26095 | </tr> |
| 26096 | <tr class="entry_cont"> |
| 26097 | <td class="entry_details" colspan="5"> |
| 26098 | <p>If for some reason black level locking is no longer possible |
| 26099 | (for example,<wbr/> the analog gain has changed,<wbr/> which forces |
| 26100 | black level offsets to be recalculated),<wbr/> then the HAL must |
| 26101 | override this request (and it must report 'OFF' when this |
| 26102 | does happen) until the next capture for which locking is |
| 26103 | possible again.<wbr/></p> |
| 26104 | </td> |
| 26105 | </tr> |
| 26106 | |
| 26107 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 26108 | <!-- end of entry --> |
| 26109 | |
| 26110 | |
| 26111 | |
| 26112 | <!-- end of kind --> |
| 26113 | </tbody> |
| 26114 | |
| 26115 | <!-- end of section --> |
| 26116 | <tr><td colspan="6" id="section_sync" class="section">sync</td></tr> |
| 26117 | |
| 26118 | |
| 26119 | <tr><td colspan="6" class="kind">dynamic</td></tr> |
| 26120 | |
| 26121 | <thead class="entries_header"> |
| 26122 | <tr> |
| 26123 | <th class="th_name">Property Name</th> |
| 26124 | <th class="th_type">Type</th> |
| 26125 | <th class="th_description">Description</th> |
| 26126 | <th class="th_units">Units</th> |
| 26127 | <th class="th_range">Range</th> |
| 26128 | <th class="th_tags">Tags</th> |
| 26129 | </tr> |
| 26130 | </thead> |
| 26131 | |
| 26132 | <tbody> |
| 26133 | |
| 26134 | |
| 26135 | |
| 26136 | |
| 26137 | |
| 26138 | |
| 26139 | |
| 26140 | |
| 26141 | |
| 26142 | |
| 26143 | <tr class="entry" id="dynamic_android.sync.frameNumber"> |
| 26144 | <td class="entry_name |
| 26145 | " rowspan="5"> |
| 26146 | android.<wbr/>sync.<wbr/>frame<wbr/>Number |
| 26147 | </td> |
| 26148 | <td class="entry_type"> |
| 26149 | <span class="entry_type_name entry_type_name_enum">int64</span> |
| 26150 | |
| 26151 | <span class="entry_type_visibility"> [ndk_public]</span> |
| 26152 | |
| 26153 | |
| 26154 | <span class="entry_type_hwlevel">[legacy] </span> |
| 26155 | |
| 26156 | |
| 26157 | |
| 26158 | <ul class="entry_type_enum"> |
| 26159 | <li> |
| 26160 | <span class="entry_type_enum_name">CONVERGING</span> |
| 26161 | <span class="entry_type_enum_value">-1</span> |
| 26162 | <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p> |
| 26163 | <p>Synchronization is in progress,<wbr/> and reading metadata from this |
| 26164 | result may include a mix of data that have taken effect since the |
| 26165 | last synchronization time.<wbr/></p> |
| 26166 | <p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/> |
| 26167 | this value will update to the actual frame number frame number |
| 26168 | the result is guaranteed to be synchronized to (as long as the |
| 26169 | request settings remain constant).<wbr/></p></span> |
| 26170 | </li> |
| 26171 | <li> |
| 26172 | <span class="entry_type_enum_name">UNKNOWN</span> |
| 26173 | <span class="entry_type_enum_value">-2</span> |
| 26174 | <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p> |
| 26175 | <p>The result may have already converged,<wbr/> or it may be in |
| 26176 | progress.<wbr/> Reading from this result may include some mix |
| 26177 | of settings from past requests.<wbr/></p> |
| 26178 | <p>After a settings change,<wbr/> the new settings will eventually all |
| 26179 | take effect for the output buffers and results.<wbr/> However,<wbr/> this |
| 26180 | value will not change when that happens.<wbr/> Altering settings |
| 26181 | rapidly may provide outcomes using mixes of settings from recent |
| 26182 | requests.<wbr/></p> |
| 26183 | <p>This value is intended primarily for backwards compatibility with |
| 26184 | the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span> |
| 26185 | </li> |
| 26186 | </ul> |
| 26187 | |
| 26188 | </td> <!-- entry_type --> |
| 26189 | |
| 26190 | <td class="entry_description"> |
| 26191 | <p>The frame number corresponding to the last request |
| 26192 | with which the output result (metadata + buffers) has been fully |
| 26193 | synchronized.<wbr/></p> |
| 26194 | </td> |
| 26195 | |
| 26196 | <td class="entry_units"> |
| 26197 | </td> |
| 26198 | |
| 26199 | <td class="entry_range"> |
| 26200 | <p>Either a non-negative value corresponding to a |
| 26201 | <code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p> |
| 26202 | </td> |
| 26203 | |
| 26204 | <td class="entry_tags"> |
| 26205 | <ul class="entry_tags"> |
| 26206 | <li><a href="#tag_V1">V1</a></li> |
| 26207 | </ul> |
| 26208 | </td> |
| 26209 | |
| 26210 | </tr> |
| 26211 | <tr class="entries_header"> |
| 26212 | <th class="th_details" colspan="5">Details</th> |
| 26213 | </tr> |
| 26214 | <tr class="entry_cont"> |
| 26215 | <td class="entry_details" colspan="5"> |
| 26216 | <p>When a request is submitted to the camera device,<wbr/> there is usually a |
| 26217 | delay of several frames before the controls get applied.<wbr/> A camera |
| 26218 | device may either choose to account for this delay by implementing a |
| 26219 | pipeline and carefully submit well-timed atomic control updates,<wbr/> or |
| 26220 | it may start streaming control changes that span over several frame |
| 26221 | boundaries.<wbr/></p> |
| 26222 | <p>In the latter case,<wbr/> whenever a request's settings change relative to |
| 26223 | the previous submitted request,<wbr/> the full set of changes may take |
| 26224 | multiple frame durations to fully take effect.<wbr/> Some settings may |
| 26225 | take effect sooner (in less frame durations) than others.<wbr/></p> |
| 26226 | <p>While a set of control changes are being propagated,<wbr/> this value |
| 26227 | will be CONVERGING.<wbr/></p> |
| 26228 | <p>Once it is fully known that a set of control changes have been |
| 26229 | finished propagating,<wbr/> and the resulting updated control settings |
| 26230 | have been read back by the camera device,<wbr/> this value will be set |
| 26231 | to a non-negative frame number (corresponding to the request to |
| 26232 | which the results have synchronized to).<wbr/></p> |
| 26233 | <p>Older camera device implementations may not have a way to detect |
| 26234 | when all camera controls have been applied,<wbr/> and will always set this |
| 26235 | value to UNKNOWN.<wbr/></p> |
| 26236 | <p>FULL capability devices will always have this value set to the |
| 26237 | frame number of the request corresponding to this result.<wbr/></p> |
| 26238 | <p><em>Further details</em>:</p> |
| 26239 | <ul> |
| 26240 | <li>Whenever a request differs from the last request,<wbr/> any future |
| 26241 | results not yet returned may have this value set to CONVERGING (this |
| 26242 | could include any in-progress captures not yet returned by the camera |
| 26243 | device,<wbr/> for more details see pipeline considerations below).<wbr/></li> |
| 26244 | <li>Submitting a series of multiple requests that differ from the |
| 26245 | previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3) |
| 26246 | moves the new synchronization frame to the last non-repeating |
| 26247 | request (using the smallest frame number from the contiguous list of |
| 26248 | repeating requests).<wbr/></li> |
| 26249 | <li>Submitting the same request repeatedly will not change this value |
| 26250 | to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li> |
| 26251 | <li>When this value changes to non-negative,<wbr/> that means that all of the |
| 26252 | metadata controls from the request have been applied,<wbr/> all of the |
| 26253 | metadata controls from the camera device have been read to the |
| 26254 | updated values (into the result),<wbr/> and all of the graphics buffers |
| 26255 | corresponding to this result are also synchronized to the request.<wbr/></li> |
| 26256 | </ul> |
| 26257 | <p><em>Pipeline considerations</em>:</p> |
| 26258 | <p>Submitting a request with updated controls relative to the previously |
| 26259 | submitted requests may also invalidate the synchronization state |
| 26260 | of all the results corresponding to currently in-flight requests.<wbr/></p> |
| 26261 | <p>In other words,<wbr/> results for this current request and up to |
| 26262 | <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their |
| 26263 | <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p> |
| 26264 | </td> |
| 26265 | </tr> |
| 26266 | |
| 26267 | <tr class="entries_header"> |
| 26268 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 26269 | </tr> |
| 26270 | <tr class="entry_cont"> |
| 26271 | <td class="entry_details" colspan="5"> |
| 26272 | <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> |
| 26273 | is also UNKNOWN.<wbr/></p> |
| 26274 | <p>FULL capability devices should simply set this value to the |
| 26275 | <code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p> |
| 26276 | </td> |
| 26277 | </tr> |
| 26278 | |
| 26279 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 26280 | <!-- end of entry --> |
| 26281 | |
| 26282 | |
| 26283 | |
| 26284 | <!-- end of kind --> |
| 26285 | </tbody> |
| 26286 | <tr><td colspan="6" class="kind">static</td></tr> |
| 26287 | |
| 26288 | <thead class="entries_header"> |
| 26289 | <tr> |
| 26290 | <th class="th_name">Property Name</th> |
| 26291 | <th class="th_type">Type</th> |
| 26292 | <th class="th_description">Description</th> |
| 26293 | <th class="th_units">Units</th> |
| 26294 | <th class="th_range">Range</th> |
| 26295 | <th class="th_tags">Tags</th> |
| 26296 | </tr> |
| 26297 | </thead> |
| 26298 | |
| 26299 | <tbody> |
| 26300 | |
| 26301 | |
| 26302 | |
| 26303 | |
| 26304 | |
| 26305 | |
| 26306 | |
| 26307 | |
| 26308 | |
| 26309 | |
| 26310 | <tr class="entry" id="static_android.sync.maxLatency"> |
| 26311 | <td class="entry_name |
| 26312 | " rowspan="5"> |
| 26313 | android.<wbr/>sync.<wbr/>max<wbr/>Latency |
| 26314 | </td> |
| 26315 | <td class="entry_type"> |
| 26316 | <span class="entry_type_name entry_type_name_enum">int32</span> |
| 26317 | |
| 26318 | <span class="entry_type_visibility"> [public]</span> |
| 26319 | |
| 26320 | |
| 26321 | <span class="entry_type_hwlevel">[legacy] </span> |
| 26322 | |
| 26323 | |
| 26324 | |
| 26325 | <ul class="entry_type_enum"> |
| 26326 | <li> |
| 26327 | <span class="entry_type_enum_name">PER_FRAME_CONTROL</span> |
| 26328 | <span class="entry_type_enum_value">0</span> |
| 26329 | <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p> |
| 26330 | <p>Changing controls over multiple requests one after another will |
| 26331 | produce results that have those controls applied atomically |
| 26332 | each frame.<wbr/></p> |
| 26333 | <p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span> |
| 26334 | </li> |
| 26335 | <li> |
| 26336 | <span class="entry_type_enum_name">UNKNOWN</span> |
| 26337 | <span class="entry_type_enum_value">-1</span> |
| 26338 | <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set) |
| 26339 | of the past requests applied to the camera settings.<wbr/></p> |
| 26340 | <p>By submitting a series of identical requests,<wbr/> the camera device |
| 26341 | will eventually have the camera settings applied,<wbr/> but it is |
| 26342 | unknown when that exact point will be.<wbr/></p> |
| 26343 | <p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span> |
| 26344 | </li> |
| 26345 | </ul> |
| 26346 | |
| 26347 | </td> <!-- entry_type --> |
| 26348 | |
| 26349 | <td class="entry_description"> |
| 26350 | <p>The maximum number of frames that can occur after a request |
| 26351 | (different than the previous) has been submitted,<wbr/> and before the |
| 26352 | result's state becomes synchronized.<wbr/></p> |
| 26353 | </td> |
| 26354 | |
| 26355 | <td class="entry_units"> |
| 26356 | Frame counts |
| 26357 | </td> |
| 26358 | |
| 26359 | <td class="entry_range"> |
| 26360 | <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p> |
| 26361 | </td> |
| 26362 | |
| 26363 | <td class="entry_tags"> |
| 26364 | <ul class="entry_tags"> |
| 26365 | <li><a href="#tag_V1">V1</a></li> |
| 26366 | </ul> |
| 26367 | </td> |
| 26368 | |
| 26369 | </tr> |
| 26370 | <tr class="entries_header"> |
| 26371 | <th class="th_details" colspan="5">Details</th> |
| 26372 | </tr> |
| 26373 | <tr class="entry_cont"> |
| 26374 | <td class="entry_details" colspan="5"> |
| 26375 | <p>This defines the maximum distance (in number of metadata results),<wbr/> |
| 26376 | between the frame number of the request that has new controls to apply |
| 26377 | and the frame number of the result that has all the controls applied.<wbr/></p> |
| 26378 | <p>In other words this acts as an upper boundary for how many frames |
| 26379 | must occur before the camera device knows for a fact that the new |
| 26380 | submitted camera settings have been applied in outgoing frames.<wbr/></p> |
| 26381 | </td> |
| 26382 | </tr> |
| 26383 | |
| 26384 | <tr class="entries_header"> |
| 26385 | <th class="th_details" colspan="5">HAL Implementation Details</th> |
| 26386 | </tr> |
| 26387 | <tr class="entry_cont"> |
| 26388 | <td class="entry_details" colspan="5"> |
| 26389 | <p>For example if maxLatency was 2,<wbr/></p> |
| 26390 | <pre><code>initial request = X (repeating) |
| 26391 | request1 = X |
| 26392 | request2 = Y |
| 26393 | request3 = Y |
| 26394 | request4 = Y |
| 26395 | |
| 26396 | where requestN has frameNumber N,<wbr/> and the first of the repeating |
| 26397 | initial request's has frameNumber F (and F < 1).<wbr/> |
| 26398 | |
| 26399 | initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F } |
| 26400 | result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F } |
| 26401 | result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING } |
| 26402 | result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING } |
| 26403 | result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 } |
| 26404 | |
| 26405 | where resultN has frameNumber N.<wbr/> |
| 26406 | </code></pre> |
| 26407 | <p>Since <code>result4</code> has a <code>frameNumber == 4</code> and |
| 26408 | <code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly |
| 26409 | <code>4 - 2 = 2</code>.<wbr/></p> |
| 26410 | <p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of |
| 26411 | <a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or |
| 26412 | <code><a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html#getFrameNumber">CaptureResult#getFrameNumber</a></code>.<wbr/></p> |
| 26413 | <p>LIMITED devices are strongly encouraged to use a non-negative |
| 26414 | value.<wbr/> If UNKNOWN is used here then app developers do not have a way |
| 26415 | to know when sensor settings have been applied.<wbr/></p> |
| 26416 | </td> |
| 26417 | </tr> |
| 26418 | |
| 26419 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 26420 | <!-- end of entry --> |
| 26421 | |
| 26422 | |
| 26423 | |
| 26424 | <!-- end of kind --> |
| 26425 | </tbody> |
| 26426 | |
| 26427 | <!-- end of section --> |
| 26428 | <tr><td colspan="6" id="section_reprocess" class="section">reprocess</td></tr> |
| 26429 | |
| 26430 | |
| 26431 | <tr><td colspan="6" class="kind">controls</td></tr> |
| 26432 | |
| 26433 | <thead class="entries_header"> |
| 26434 | <tr> |
| 26435 | <th class="th_name">Property Name</th> |
| 26436 | <th class="th_type">Type</th> |
| 26437 | <th class="th_description">Description</th> |
| 26438 | <th class="th_units">Units</th> |
| 26439 | <th class="th_range">Range</th> |
| 26440 | <th class="th_tags">Tags</th> |
| 26441 | </tr> |
| 26442 | </thead> |
| 26443 | |
| 26444 | <tbody> |
| 26445 | |
| 26446 | |
| 26447 | |
| 26448 | |
| 26449 | |
| 26450 | |
| 26451 | |
| 26452 | |
| 26453 | |
| 26454 | |
| 26455 | <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor"> |
| 26456 | <td class="entry_name |
| 26457 | " rowspan="3"> |
| 26458 | android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor |
| 26459 | </td> |
| 26460 | <td class="entry_type"> |
| 26461 | <span class="entry_type_name">float</span> |
| 26462 | |
| 26463 | <span class="entry_type_visibility"> [java_public]</span> |
| 26464 | |
| 26465 | |
| 26466 | <span class="entry_type_hwlevel">[limited] </span> |
| 26467 | |
| 26468 | |
| 26469 | |
| 26470 | |
| 26471 | </td> <!-- entry_type --> |
| 26472 | |
| 26473 | <td class="entry_description"> |
| 26474 | <p>The amount of exposure time increase factor applied to the original output |
| 26475 | frame by the application processing before sending for reprocessing.<wbr/></p> |
| 26476 | </td> |
| 26477 | |
| 26478 | <td class="entry_units"> |
| 26479 | Relative exposure time increase factor.<wbr/> |
| 26480 | </td> |
| 26481 | |
| 26482 | <td class="entry_range"> |
| 26483 | <p>>= 1.<wbr/>0</p> |
| 26484 | </td> |
| 26485 | |
| 26486 | <td class="entry_tags"> |
| 26487 | <ul class="entry_tags"> |
| 26488 | <li><a href="#tag_REPROC">REPROC</a></li> |
| 26489 | </ul> |
| 26490 | </td> |
| 26491 | |
| 26492 | </tr> |
| 26493 | <tr class="entries_header"> |
| 26494 | <th class="th_details" colspan="5">Details</th> |
| 26495 | </tr> |
| 26496 | <tr class="entry_cont"> |
| 26497 | <td class="entry_details" colspan="5"> |
| 26498 | <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING |
| 26499 | capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p> |
| 26500 | <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original |
| 26501 | output frames to effectively reduce the noise to the same level as a frame that was |
| 26502 | captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured |
| 26503 | images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in |
| 26504 | the camera device is that the amount of noise in the image would be approximately what |
| 26505 | would be expected if the original capture parameters had been a sensitivity of |
| 26506 | S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather |
| 26507 | than S and T respectively.<wbr/> If the captured images were processed by the application |
| 26508 | before being sent for reprocessing,<wbr/> then the application may have used image processing |
| 26509 | algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the |
| 26510 | application-processed images (input images).<wbr/> By using the effectiveExposureFactor |
| 26511 | control,<wbr/> the application can communicate to the camera device the actual noise level |
| 26512 | improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera |
| 26513 | device can select appropriate noise reduction and edge enhancement parameters to avoid |
| 26514 | excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge |
| 26515 | enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p> |
| 26516 | <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse |
| 26517 | multiple output frames together to a final frame for reprocessing.<wbr/> When N image are |
| 26518 | fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to |
| 26519 | square root of N (based on a simple photon shot noise model).<wbr/> The camera device will |
| 26520 | adjust the reprocessing noise reduction and edge enhancement parameters accordingly to |
| 26521 | produce the best quality images.<wbr/></p> |
| 26522 | <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input |
| 26523 | buffer in a way that affects its effective exposure time.<wbr/></p> |
| 26524 | <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise |
| 26525 | 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/> |
| 26526 | Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when |
| 26527 | <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p> |
| 26528 | </td> |
| 26529 | </tr> |
| 26530 | |
| 26531 | |
| 26532 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 26533 | <!-- end of entry --> |
| 26534 | |
| 26535 | |
| 26536 | |
| 26537 | <!-- end of kind --> |
| 26538 | </tbody> |
| 26539 | <tr><td colspan="6" class="kind">dynamic</td></tr> |
| 26540 | |
| 26541 | <thead class="entries_header"> |
| 26542 | <tr> |
| 26543 | <th class="th_name">Property Name</th> |
| 26544 | <th class="th_type">Type</th> |
| 26545 | <th class="th_description">Description</th> |
| 26546 | <th class="th_units">Units</th> |
| 26547 | <th class="th_range">Range</th> |
| 26548 | <th class="th_tags">Tags</th> |
| 26549 | </tr> |
| 26550 | </thead> |
| 26551 | |
| 26552 | <tbody> |
| 26553 | |
| 26554 | |
| 26555 | |
| 26556 | |
| 26557 | |
| 26558 | |
| 26559 | |
| 26560 | |
| 26561 | |
| 26562 | |
| 26563 | <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor"> |
| 26564 | <td class="entry_name |
| 26565 | " rowspan="3"> |
| 26566 | android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor |
| 26567 | </td> |
| 26568 | <td class="entry_type"> |
| 26569 | <span class="entry_type_name">float</span> |
| 26570 | |
| 26571 | <span class="entry_type_visibility"> [java_public]</span> |
| 26572 | |
| 26573 | |
| 26574 | <span class="entry_type_hwlevel">[limited] </span> |
| 26575 | |
| 26576 | |
| 26577 | |
| 26578 | |
| 26579 | </td> <!-- entry_type --> |
| 26580 | |
| 26581 | <td class="entry_description"> |
| 26582 | <p>The amount of exposure time increase factor applied to the original output |
| 26583 | frame by the application processing before sending for reprocessing.<wbr/></p> |
| 26584 | </td> |
| 26585 | |
| 26586 | <td class="entry_units"> |
| 26587 | Relative exposure time increase factor.<wbr/> |
| 26588 | </td> |
| 26589 | |
| 26590 | <td class="entry_range"> |
| 26591 | <p>>= 1.<wbr/>0</p> |
| 26592 | </td> |
| 26593 | |
| 26594 | <td class="entry_tags"> |
| 26595 | <ul class="entry_tags"> |
| 26596 | <li><a href="#tag_REPROC">REPROC</a></li> |
| 26597 | </ul> |
| 26598 | </td> |
| 26599 | |
| 26600 | </tr> |
| 26601 | <tr class="entries_header"> |
| 26602 | <th class="th_details" colspan="5">Details</th> |
| 26603 | </tr> |
| 26604 | <tr class="entry_cont"> |
| 26605 | <td class="entry_details" colspan="5"> |
| 26606 | <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING |
| 26607 | capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p> |
| 26608 | <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original |
| 26609 | output frames to effectively reduce the noise to the same level as a frame that was |
| 26610 | captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured |
| 26611 | images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in |
| 26612 | the camera device is that the amount of noise in the image would be approximately what |
| 26613 | would be expected if the original capture parameters had been a sensitivity of |
| 26614 | S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather |
| 26615 | than S and T respectively.<wbr/> If the captured images were processed by the application |
| 26616 | before being sent for reprocessing,<wbr/> then the application may have used image processing |
| 26617 | algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the |
| 26618 | application-processed images (input images).<wbr/> By using the effectiveExposureFactor |
| 26619 | control,<wbr/> the application can communicate to the camera device the actual noise level |
| 26620 | improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera |
| 26621 | device can select appropriate noise reduction and edge enhancement parameters to avoid |
| 26622 | excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge |
| 26623 | enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p> |
| 26624 | <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse |
| 26625 | multiple output frames together to a final frame for reprocessing.<wbr/> When N image are |
| 26626 | fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to |
| 26627 | square root of N (based on a simple photon shot noise model).<wbr/> The camera device will |
| 26628 | adjust the reprocessing noise reduction and edge enhancement parameters accordingly to |
| 26629 | produce the best quality images.<wbr/></p> |
| 26630 | <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input |
| 26631 | buffer in a way that affects its effective exposure time.<wbr/></p> |
| 26632 | <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise |
| 26633 | 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/> |
| 26634 | Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when |
| 26635 | <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p> |
| 26636 | </td> |
| 26637 | </tr> |
| 26638 | |
| 26639 | |
| 26640 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 26641 | <!-- end of entry --> |
| 26642 | |
| 26643 | |
| 26644 | |
| 26645 | <!-- end of kind --> |
| 26646 | </tbody> |
| 26647 | <tr><td colspan="6" class="kind">static</td></tr> |
| 26648 | |
| 26649 | <thead class="entries_header"> |
| 26650 | <tr> |
| 26651 | <th class="th_name">Property Name</th> |
| 26652 | <th class="th_type">Type</th> |
| 26653 | <th class="th_description">Description</th> |
| 26654 | <th class="th_units">Units</th> |
| 26655 | <th class="th_range">Range</th> |
| 26656 | <th class="th_tags">Tags</th> |
| 26657 | </tr> |
| 26658 | </thead> |
| 26659 | |
| 26660 | <tbody> |
| 26661 | |
| 26662 | |
| 26663 | |
| 26664 | |
| 26665 | |
| 26666 | |
| 26667 | |
| 26668 | |
| 26669 | |
| 26670 | |
| 26671 | <tr class="entry" id="static_android.reprocess.maxCaptureStall"> |
| 26672 | <td class="entry_name |
| 26673 | " rowspan="3"> |
| 26674 | android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall |
| 26675 | </td> |
| 26676 | <td class="entry_type"> |
| 26677 | <span class="entry_type_name">int32</span> |
| 26678 | |
| 26679 | <span class="entry_type_visibility"> [java_public]</span> |
| 26680 | |
| 26681 | |
| 26682 | <span class="entry_type_hwlevel">[limited] </span> |
| 26683 | |
| 26684 | |
| 26685 | |
| 26686 | |
| 26687 | </td> <!-- entry_type --> |
| 26688 | |
| 26689 | <td class="entry_description"> |
| 26690 | <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a |
| 26691 | reprocess capture request.<wbr/></p> |
| 26692 | </td> |
| 26693 | |
| 26694 | <td class="entry_units"> |
| 26695 | Number of frames.<wbr/> |
| 26696 | </td> |
| 26697 | |
| 26698 | <td class="entry_range"> |
| 26699 | <p><= 4</p> |
| 26700 | </td> |
| 26701 | |
| 26702 | <td class="entry_tags"> |
| 26703 | <ul class="entry_tags"> |
| 26704 | <li><a href="#tag_REPROC">REPROC</a></li> |
| 26705 | </ul> |
| 26706 | </td> |
| 26707 | |
| 26708 | </tr> |
| 26709 | <tr class="entries_header"> |
| 26710 | <th class="th_details" colspan="5">Details</th> |
| 26711 | </tr> |
| 26712 | <tr class="entry_cont"> |
| 26713 | <td class="entry_details" colspan="5"> |
| 26714 | <p>The key describes the maximal interference that one reprocess (input) request |
| 26715 | can introduce to the camera simultaneous streaming of regular (output) capture |
| 26716 | requests,<wbr/> including repeating requests.<wbr/></p> |
| 26717 | <p>When a reprocessing capture request is submitted while a camera output repeating request |
| 26718 | (e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture |
| 26719 | pipeline for at least one frame duration so that the camera device is unable to process |
| 26720 | the following capture request in time for the next sensor start of exposure boundary.<wbr/> |
| 26721 | When this happens,<wbr/> the application may observe a capture time gap (longer than one frame |
| 26722 | duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview |
| 26723 | glitch if the repeating request output targets include a preview surface.<wbr/> This key gives |
| 26724 | the worst-case number of frame stall introduced by one reprocess request with any kind of |
| 26725 | formats/<wbr/>sizes combination.<wbr/></p> |
| 26726 | <p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the |
| 26727 | ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p> |
| 26728 | <p>This key is supported if the camera device supports PRIVATE or YUV reprocessing ( |
| 26729 | i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or |
| 26730 | YUV_<wbr/>REPROCESSING).<wbr/></p> |
| 26731 | </td> |
| 26732 | </tr> |
| 26733 | |
| 26734 | |
| 26735 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 26736 | <!-- end of entry --> |
| 26737 | |
| 26738 | |
| 26739 | |
| 26740 | <!-- end of kind --> |
| 26741 | </tbody> |
| 26742 | |
| 26743 | <!-- end of section --> |
| 26744 | <tr><td colspan="6" id="section_depth" class="section">depth</td></tr> |
| 26745 | |
| 26746 | |
| 26747 | <tr><td colspan="6" class="kind">static</td></tr> |
| 26748 | |
| 26749 | <thead class="entries_header"> |
| 26750 | <tr> |
| 26751 | <th class="th_name">Property Name</th> |
| 26752 | <th class="th_type">Type</th> |
| 26753 | <th class="th_description">Description</th> |
| 26754 | <th class="th_units">Units</th> |
| 26755 | <th class="th_range">Range</th> |
| 26756 | <th class="th_tags">Tags</th> |
| 26757 | </tr> |
| 26758 | </thead> |
| 26759 | |
| 26760 | <tbody> |
| 26761 | |
| 26762 | |
| 26763 | |
| 26764 | |
| 26765 | |
| 26766 | |
| 26767 | |
| 26768 | |
| 26769 | |
| 26770 | |
| 26771 | <tr class="entry" id="static_android.depth.maxDepthSamples"> |
| 26772 | <td class="entry_name |
| 26773 | " rowspan="3"> |
| 26774 | android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples |
| 26775 | </td> |
| 26776 | <td class="entry_type"> |
| 26777 | <span class="entry_type_name">int32</span> |
| 26778 | |
| 26779 | <span class="entry_type_visibility"> [system]</span> |
| 26780 | |
| 26781 | |
| 26782 | <span class="entry_type_hwlevel">[limited] </span> |
| 26783 | |
| 26784 | |
| 26785 | |
| 26786 | |
| 26787 | </td> <!-- entry_type --> |
| 26788 | |
| 26789 | <td class="entry_description"> |
| 26790 | <p>Maximum number of points that a depth point cloud may contain.<wbr/></p> |
| 26791 | </td> |
| 26792 | |
| 26793 | <td class="entry_units"> |
| 26794 | </td> |
| 26795 | |
| 26796 | <td class="entry_range"> |
| 26797 | </td> |
| 26798 | |
| 26799 | <td class="entry_tags"> |
| 26800 | <ul class="entry_tags"> |
| 26801 | <li><a href="#tag_DEPTH">DEPTH</a></li> |
| 26802 | </ul> |
| 26803 | </td> |
| 26804 | |
| 26805 | </tr> |
| 26806 | <tr class="entries_header"> |
| 26807 | <th class="th_details" colspan="5">Details</th> |
| 26808 | </tr> |
| 26809 | <tr class="entry_cont"> |
| 26810 | <td class="entry_details" colspan="5"> |
| 26811 | <p>If a camera device supports outputting depth range data in the form of a depth point |
| 26812 | 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 |
| 26813 | number of points an output buffer may contain.<wbr/></p> |
| 26814 | <p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/> |
| 26815 | If output in the depth point cloud format is not supported,<wbr/> this entry will |
| 26816 | not be defined.<wbr/></p> |
| 26817 | </td> |
| 26818 | </tr> |
| 26819 | |
| 26820 | |
| 26821 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 26822 | <!-- end of entry --> |
| 26823 | |
| 26824 | |
| 26825 | <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations"> |
| 26826 | <td class="entry_name |
| 26827 | " rowspan="3"> |
| 26828 | android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations |
| 26829 | </td> |
| 26830 | <td class="entry_type"> |
| 26831 | <span class="entry_type_name entry_type_name_enum">int32</span> |
| 26832 | <span class="entry_type_container">x</span> |
| 26833 | |
| 26834 | <span class="entry_type_array"> |
| 26835 | n x 4 |
| 26836 | </span> |
| 26837 | <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span> |
| 26838 | |
| 26839 | |
| 26840 | <span class="entry_type_hwlevel">[limited] </span> |
| 26841 | |
| 26842 | |
| 26843 | |
| 26844 | <ul class="entry_type_enum"> |
| 26845 | <li> |
| 26846 | <span class="entry_type_enum_name">OUTPUT</span> |
| 26847 | </li> |
| 26848 | <li> |
| 26849 | <span class="entry_type_enum_name">INPUT</span> |
| 26850 | </li> |
| 26851 | </ul> |
| 26852 | |
| 26853 | </td> <!-- entry_type --> |
| 26854 | |
| 26855 | <td class="entry_description"> |
| 26856 | <p>The available depth dataspace stream |
| 26857 | configurations that this camera device supports |
| 26858 | (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> |
| 26859 | </td> |
| 26860 | |
| 26861 | <td class="entry_units"> |
| 26862 | </td> |
| 26863 | |
| 26864 | <td class="entry_range"> |
| 26865 | </td> |
| 26866 | |
| 26867 | <td class="entry_tags"> |
| 26868 | <ul class="entry_tags"> |
| 26869 | <li><a href="#tag_DEPTH">DEPTH</a></li> |
| 26870 | </ul> |
| 26871 | </td> |
| 26872 | |
| 26873 | </tr> |
| 26874 | <tr class="entries_header"> |
| 26875 | <th class="th_details" colspan="5">Details</th> |
| 26876 | </tr> |
| 26877 | <tr class="entry_cont"> |
| 26878 | <td class="entry_details" colspan="5"> |
| 26879 | <p>These are output stream configurations for use with |
| 26880 | dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are |
| 26881 | listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p> |
| 26882 | <p>Only devices that support depth output for at least |
| 26883 | the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include |
| 26884 | this entry.<wbr/></p> |
| 26885 | <p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB |
| 26886 | sparse depth point cloud must report a single entry for |
| 26887 | the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/> |
| 26888 | <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to |
| 26889 | the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p> |
| 26890 | </td> |
| 26891 | </tr> |
| 26892 | |
| 26893 | |
| 26894 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 26895 | <!-- end of entry --> |
| 26896 | |
| 26897 | |
| 26898 | <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations"> |
| 26899 | <td class="entry_name |
| 26900 | " rowspan="3"> |
| 26901 | android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations |
| 26902 | </td> |
| 26903 | <td class="entry_type"> |
| 26904 | <span class="entry_type_name">int64</span> |
| 26905 | <span class="entry_type_container">x</span> |
| 26906 | |
| 26907 | <span class="entry_type_array"> |
| 26908 | 4 x n |
| 26909 | </span> |
| 26910 | <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> |
| 26911 | |
| 26912 | |
| 26913 | <span class="entry_type_hwlevel">[limited] </span> |
| 26914 | |
| 26915 | |
| 26916 | |
| 26917 | |
| 26918 | </td> <!-- entry_type --> |
| 26919 | |
| 26920 | <td class="entry_description"> |
| 26921 | <p>This lists the minimum frame duration for each |
| 26922 | format/<wbr/>size combination for depth output formats.<wbr/></p> |
| 26923 | </td> |
| 26924 | |
| 26925 | <td class="entry_units"> |
| 26926 | (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n |
| 26927 | </td> |
| 26928 | |
| 26929 | <td class="entry_range"> |
| 26930 | </td> |
| 26931 | |
| 26932 | <td class="entry_tags"> |
| 26933 | <ul class="entry_tags"> |
| 26934 | <li><a href="#tag_DEPTH">DEPTH</a></li> |
| 26935 | </ul> |
| 26936 | </td> |
| 26937 | |
| 26938 | </tr> |
| 26939 | <tr class="entries_header"> |
| 26940 | <th class="th_details" colspan="5">Details</th> |
| 26941 | </tr> |
| 26942 | <tr class="entry_cont"> |
| 26943 | <td class="entry_details" colspan="5"> |
| 26944 | <p>This should correspond to the frame duration when only that |
| 26945 | stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) |
| 26946 | set to either OFF or FAST.<wbr/></p> |
| 26947 | <p>When multiple streams are used in a request,<wbr/> the minimum frame |
| 26948 | duration will be max(individual stream min durations).<wbr/></p> |
| 26949 | <p>The minimum frame duration of a stream (of a particular format,<wbr/> size) |
| 26950 | is the same regardless of whether the stream is input or output.<wbr/></p> |
| 26951 | <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and |
| 26952 | <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about |
| 26953 | calculating the max frame rate.<wbr/></p> |
| 26954 | <p>(Keep in sync with <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>)</p> |
| 26955 | </td> |
| 26956 | </tr> |
| 26957 | |
| 26958 | |
| 26959 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 26960 | <!-- end of entry --> |
| 26961 | |
| 26962 | |
| 26963 | <tr class="entry" id="static_android.depth.availableDepthStallDurations"> |
| 26964 | <td class="entry_name |
| 26965 | " rowspan="3"> |
| 26966 | android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations |
| 26967 | </td> |
| 26968 | <td class="entry_type"> |
| 26969 | <span class="entry_type_name">int64</span> |
| 26970 | <span class="entry_type_container">x</span> |
| 26971 | |
| 26972 | <span class="entry_type_array"> |
| 26973 | 4 x n |
| 26974 | </span> |
| 26975 | <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> |
| 26976 | |
| 26977 | |
| 26978 | <span class="entry_type_hwlevel">[limited] </span> |
| 26979 | |
| 26980 | |
| 26981 | |
| 26982 | |
| 26983 | </td> <!-- entry_type --> |
| 26984 | |
| 26985 | <td class="entry_description"> |
| 26986 | <p>This lists the maximum stall duration for each |
| 26987 | output format/<wbr/>size combination for depth streams.<wbr/></p> |
| 26988 | </td> |
| 26989 | |
| 26990 | <td class="entry_units"> |
| 26991 | (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n |
| 26992 | </td> |
| 26993 | |
| 26994 | <td class="entry_range"> |
| 26995 | </td> |
| 26996 | |
| 26997 | <td class="entry_tags"> |
| 26998 | <ul class="entry_tags"> |
| 26999 | <li><a href="#tag_DEPTH">DEPTH</a></li> |
| 27000 | </ul> |
| 27001 | </td> |
| 27002 | |
| 27003 | </tr> |
| 27004 | <tr class="entries_header"> |
| 27005 | <th class="th_details" colspan="5">Details</th> |
| 27006 | </tr> |
| 27007 | <tr class="entry_cont"> |
| 27008 | <td class="entry_details" colspan="5"> |
| 27009 | <p>A stall duration is how much extra time would get added |
| 27010 | to the normal minimum frame duration for a repeating request |
| 27011 | that has streams with non-zero stall.<wbr/></p> |
| 27012 | <p>This functions similarly to |
| 27013 | <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth |
| 27014 | streams.<wbr/></p> |
| 27015 | <p>All depth output stream formats may have a nonzero stall |
| 27016 | duration.<wbr/></p> |
| 27017 | </td> |
| 27018 | </tr> |
| 27019 | |
| 27020 | |
| 27021 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 27022 | <!-- end of entry --> |
| 27023 | |
| 27024 | |
| 27025 | <tr class="entry" id="static_android.depth.depthIsExclusive"> |
| 27026 | <td class="entry_name |
| 27027 | " rowspan="3"> |
| 27028 | android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive |
| 27029 | </td> |
| 27030 | <td class="entry_type"> |
| 27031 | <span class="entry_type_name entry_type_name_enum">byte</span> |
| 27032 | |
| 27033 | <span class="entry_type_visibility"> [public as boolean]</span> |
| 27034 | |
| 27035 | |
| 27036 | <span class="entry_type_hwlevel">[limited] </span> |
| 27037 | |
| 27038 | |
| 27039 | |
| 27040 | <ul class="entry_type_enum"> |
| 27041 | <li> |
| 27042 | <span class="entry_type_enum_name">FALSE</span> |
| 27043 | </li> |
| 27044 | <li> |
| 27045 | <span class="entry_type_enum_name">TRUE</span> |
| 27046 | </li> |
| 27047 | </ul> |
| 27048 | |
| 27049 | </td> <!-- entry_type --> |
| 27050 | |
| 27051 | <td class="entry_description"> |
| 27052 | <p>Indicates whether a capture request may target both a |
| 27053 | DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as |
| 27054 | YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p> |
| 27055 | </td> |
| 27056 | |
| 27057 | <td class="entry_units"> |
| 27058 | </td> |
| 27059 | |
| 27060 | <td class="entry_range"> |
| 27061 | </td> |
| 27062 | |
| 27063 | <td class="entry_tags"> |
| 27064 | </td> |
| 27065 | |
| 27066 | </tr> |
| 27067 | <tr class="entries_header"> |
| 27068 | <th class="th_details" colspan="5">Details</th> |
| 27069 | </tr> |
| 27070 | <tr class="entry_cont"> |
| 27071 | <td class="entry_details" colspan="5"> |
| 27072 | <p>If TRUE,<wbr/> including both depth and color outputs in a single |
| 27073 | capture request is not supported.<wbr/> An application must interleave color |
| 27074 | and depth requests.<wbr/> If FALSE,<wbr/> a single request can target both types |
| 27075 | of output.<wbr/></p> |
| 27076 | <p>Typically,<wbr/> this restriction exists on camera devices that |
| 27077 | need to emit a specific pattern or wavelength of light to |
| 27078 | measure depth values,<wbr/> which causes the color image to be |
| 27079 | corrupted during depth measurement.<wbr/></p> |
| 27080 | </td> |
| 27081 | </tr> |
| 27082 | |
| 27083 | |
| 27084 | <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| 27085 | <!-- end of entry --> |
| 27086 | |
| 27087 | |
| 27088 | |
| 27089 | <!-- end of kind --> |
| 27090 | </tbody> |
| 27091 | |
| 27092 | <!-- end of section --> |
| 27093 | <!-- </namespace> --> |
| 27094 | </table> |
| 27095 | |
| 27096 | <div class="tags" id="tag_index"> |
| 27097 | <h2>Tags</h2> |
| 27098 | <ul> |
| 27099 | <li id="tag_BC">BC - |
| 27100 | Needed for backwards compatibility with old Java API |
| 27101 | |
| 27102 | <ul class="tags_entries"> |
| 27103 | <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li> |
| 27104 | <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li> |
| 27105 | <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li> |
| 27106 | <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li> |
| 27107 | <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li> |
| 27108 | <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li> |
| 27109 | <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li> |
| 27110 | <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li> |
| 27111 | <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li> |
| 27112 | <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li> |
| 27113 | <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li> |
| 27114 | <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li> |
| 27115 | <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li> |
| 27116 | <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li> |
| 27117 | <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li> |
| 27118 | <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li> |
| 27119 | <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li> |
| 27120 | <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li> |
| 27121 | <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li> |
| 27122 | <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li> |
| 27123 | <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li> |
| 27124 | <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li> |
| 27125 | <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li> |
| 27126 | <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li> |
| 27127 | <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li> |
| 27128 | <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li> |
| 27129 | <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li> |
| 27130 | <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li> |
| 27131 | <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li> |
| 27132 | <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li> |
| 27133 | <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li> |
| 27134 | <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li> |
| 27135 | <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li> |
| 27136 | <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li> |
| 27137 | <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li> |
| 27138 | <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li> |
| 27139 | <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li> |
| 27140 | <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li> |
| 27141 | <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li> |
| 27142 | <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li> |
| 27143 | <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li> |
| 27144 | <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li> |
| 27145 | <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li> |
| 27146 | <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li> |
| 27147 | <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li> |
| 27148 | <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li> |
| 27149 | <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li> |
| 27150 | <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li> |
| 27151 | <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li> |
| 27152 | <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li> |
| 27153 | <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li> |
| 27154 | <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li> |
| 27155 | <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li> |
| 27156 | <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li> |
| 27157 | <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li> |
| 27158 | <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li> |
| 27159 | <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li> |
| 27160 | <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li> |
| 27161 | <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li> |
| 27162 | <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li> |
| 27163 | <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li> |
| 27164 | <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li> |
| 27165 | <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li> |
| 27166 | <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li> |
| 27167 | <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li> |
| 27168 | <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li> |
| 27169 | <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li> |
| 27170 | </ul> |
| 27171 | </li> <!-- tag_BC --> |
| 27172 | <li id="tag_V1">V1 - |
| 27173 | New features for first camera 2 release (API1) |
| 27174 | |
| 27175 | <ul class="tags_entries"> |
| 27176 | <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li> |
| 27177 | <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li> |
| 27178 | <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li> |
| 27179 | <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li> |
| 27180 | <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li> |
| 27181 | <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li> |
| 27182 | <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li> |
| 27183 | <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li> |
| 27184 | <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li> |
| 27185 | <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li> |
| 27186 | <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li> |
| 27187 | <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li> |
| 27188 | <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li> |
| 27189 | <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li> |
| 27190 | <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li> |
| 27191 | <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li> |
| 27192 | <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li> |
| 27193 | <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li> |
| 27194 | <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li> |
| 27195 | <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li> |
| 27196 | <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li> |
| 27197 | <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li> |
| 27198 | <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li> |
| 27199 | <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li> |
| 27200 | <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li> |
| 27201 | <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li> |
| 27202 | <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li> |
| 27203 | <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li> |
| 27204 | <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li> |
| 27205 | <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li> |
| 27206 | <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li> |
| 27207 | <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li> |
| 27208 | <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li> |
| 27209 | <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li> |
| 27210 | <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li> |
| 27211 | <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li> |
| 27212 | <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li> |
| 27213 | <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li> |
| 27214 | <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li> |
| 27215 | <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li> |
| 27216 | <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li> |
| 27217 | <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li> |
| 27218 | <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li> |
| 27219 | <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li> |
| 27220 | <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li> |
| 27221 | </ul> |
| 27222 | </li> <!-- tag_V1 --> |
| 27223 | <li id="tag_RAW">RAW - |
| 27224 | Needed for useful RAW image processing and DNG file support |
| 27225 | |
| 27226 | <ul class="tags_entries"> |
| 27227 | <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li> |
| 27228 | <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li> |
| 27229 | <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li> |
| 27230 | <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li> |
| 27231 | <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li> |
| 27232 | <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li> |
| 27233 | <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li> |
| 27234 | <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li> |
| 27235 | <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li> |
| 27236 | <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li> |
| 27237 | <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li> |
| 27238 | <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li> |
| 27239 | <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li> |
| 27240 | <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li> |
| 27241 | <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li> |
| 27242 | <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li> |
| 27243 | <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li> |
| 27244 | <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li> |
| 27245 | <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li> |
| 27246 | <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li> |
| 27247 | <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li> |
| 27248 | <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li> |
| 27249 | <li><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a> (dynamic)</li> |
| 27250 | <li><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a> (dynamic)</li> |
| 27251 | <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li> |
| 27252 | <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li> |
| 27253 | <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li> |
| 27254 | <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li> |
| 27255 | <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li> |
| 27256 | </ul> |
| 27257 | </li> <!-- tag_RAW --> |
| 27258 | <li id="tag_HAL2">HAL2 - |
| 27259 | Entry is only used by camera device HAL 2.x |
| 27260 | |
| 27261 | <ul class="tags_entries"> |
| 27262 | <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li> |
| 27263 | <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li> |
| 27264 | <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li> |
| 27265 | <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li> |
| 27266 | <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li> |
| 27267 | </ul> |
| 27268 | </li> <!-- tag_HAL2 --> |
| 27269 | <li id="tag_FULL">FULL - |
| 27270 | Entry is required for full hardware level devices, and optional for other hardware levels |
| 27271 | |
| 27272 | <ul class="tags_entries"> |
| 27273 | <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li> |
| 27274 | </ul> |
| 27275 | </li> <!-- tag_FULL --> |
| 27276 | <li id="tag_DEPTH">DEPTH - |
| 27277 | Entry is required for the depth capability. |
| 27278 | |
| 27279 | <ul class="tags_entries"> |
| 27280 | <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li> |
| 27281 | <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li> |
| 27282 | <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li> |
| 27283 | <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li> |
| 27284 | <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li> |
| 27285 | <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li> |
| 27286 | <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li> |
| 27287 | <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li> |
| 27288 | </ul> |
| 27289 | </li> <!-- tag_DEPTH --> |
| 27290 | <li id="tag_REPROC">REPROC - |
| 27291 | Entry is required for the YUV or PRIVATE reprocessing capability. |
| 27292 | |
| 27293 | <ul class="tags_entries"> |
| 27294 | <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li> |
| 27295 | <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li> |
| 27296 | <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li> |
| 27297 | <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li> |
| 27298 | <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li> |
| 27299 | <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li> |
| 27300 | <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li> |
| 27301 | <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li> |
| 27302 | <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li> |
| 27303 | <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li> |
| 27304 | </ul> |
| 27305 | </li> <!-- tag_REPROC --> |
| 27306 | <li id="tag_FUTURE">FUTURE - |
| 27307 | Entry is under-specified and is not required for now. This is for book-keeping purpose, |
| 27308 | do not implement or use it, it may be revised for future. |
| 27309 | |
| 27310 | <ul class="tags_entries"> |
| 27311 | <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li> |
| 27312 | <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li> |
| 27313 | <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li> |
| 27314 | <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li> |
| 27315 | <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li> |
| 27316 | <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li> |
| 27317 | <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li> |
| 27318 | <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li> |
| 27319 | <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li> |
| 27320 | <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li> |
| 27321 | <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li> |
| 27322 | <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li> |
| 27323 | <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li> |
| 27324 | <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li> |
| 27325 | <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li> |
| 27326 | <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li> |
| 27327 | <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li> |
| 27328 | <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li> |
| 27329 | <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li> |
| 27330 | <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li> |
| 27331 | <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li> |
| 27332 | </ul> |
| 27333 | </li> <!-- tag_FUTURE --> |
| 27334 | </ul> |
| 27335 | </div> |
| 27336 | |
| 27337 | [ <a href="#">top</a> ] |
| 27338 | |
| 27339 | </body> |
| 27340 | </html> |