camera_metadata: Add/Update some metadata tags
Below tags are Added/Updated:
android.statistics.sceneFlicker
android.colorCorrection.gains
android.statistics.lensShadingMapMode
android.lens.info.lensShadingMapSize
android.statistics.lensShadingMap
android.statistics.predictedColorTransform
android.statistics.predictedColorGains
android.sensor.info.sensitivityRange
Also fixed some typos in tag descrptions.
Change-Id: Ib051bd3c97dad04062ece82e90bce8e6a2531bbd
diff --git a/camera/docs/docs.html b/camera/docs/docs.html
index 2a8f36f..50f98e5 100644
--- a/camera/docs/docs.html
+++ b/camera/docs/docs.html
@@ -104,12 +104,14 @@
<ul class="toc_section">
<li><a href="#controls_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
<li><a href="#controls_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
+ <li><a href="#controls_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">dynamic</span>
<ul class="toc_section">
- <li><a href="#dynamic_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
+ <li><a href="#dynamic_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
+ <li><a href="#dynamic_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
</ul>
</li>
</ul> <!-- toc_section -->
@@ -336,7 +338,6 @@
<li><a href="#static_android.lens.info.geometricCorrectionMapSize">android.lens.info.geometricCorrectionMapSize</a></li>
<li><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li>
<li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li>
- <li><a href="#static_android.lens.info.shadingMap">android.lens.info.shadingMap</a></li>
<li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li>
<li><a href="#static_android.lens.facing">android.lens.facing</a></li>
@@ -467,7 +468,7 @@
<ul class="toc_section">
<li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li>
- <li><a href="#static_android.sensor.info.availableSensitivities">android.sensor.info.availableSensitivities</a></li>
+ <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li>
<li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li>
<li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li>
<li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li>
@@ -528,6 +529,7 @@
<li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
<li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
<li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
+ <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
</ul>
</li>
<li>
@@ -555,6 +557,10 @@
<li><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
<li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li>
<li><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
+ <li><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li>
+ <li><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li>
+ <li><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li>
+ <li><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li>
</ul>
</li>
</ul> <!-- toc_section -->
@@ -622,6 +628,23 @@
</li>
</ul> <!-- toc_section -->
</li>
+ <li>
+ <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span>
+ <ul class="toc_section">
+ <li>
+ <span class="toc_kind_header">controls</span>
+ <ul class="toc_section">
+ <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li>
+ </ul>
+ </li>
+ <li>
+ <span class="toc_kind_header">dynamic</span>
+ <ul class="toc_section">
+ <li><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li>
+ </ul>
+ </li>
+ </ul> <!-- toc_section -->
+ </li>
</ul>
@@ -680,7 +703,7 @@
<li>
<span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
<span class="entry_type_enum_notes">Use the android.<wbr>color<wbr>Correction.<wbr>transform matrix
- to do color conversion</span>
+ and android.<wbr>color<wbr>Correction.<wbr>gains to do color conversion</span>
</li>
<li>
<span class="entry_type_enum_name">FAST</span>
@@ -717,23 +740,22 @@
<tr class="entry" id="controls_android.colorCorrection.transform">
<td class="entry_name">android.<wbr>color<wbr>Correction.<wbr>transform</td>
<td class="entry_type">
- <span class="entry_type_name">float</span>
+ <span class="entry_type_name">rational</span>
<span class="entry_type_container">x</span>
<span class="entry_type_array">
3 x 3
</span>
<span class="entry_type_visibility"> [public]</span>
- <div class="entry_type_notes">3x3 float matrix in row-major order</div>
+ <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
</td> <!-- entry_type -->
<td class="entry_description">
- A transform matrix to chromatically adapt
- pixels in the CIE XYZ (1931) color space from the scene
- illuminant to the sRGB-standard
- D65-illuminant
+ A color transform matrix to use to transform
+ from sensor RGB color space to output linear sRGB color space
+
</td>
<td class="entry_units">
@@ -745,10 +767,58 @@
</td>
<td class="entry_notes">
- Values outside (0,<wbr>1) should be clamped.<wbr> Need to
- provide utilities to go from CCT (+hue?),<wbr> or (x,<wbr>y) white
- point,<wbr> (or AWB mode) to matrix; use linear Bradford
- algorithm.<wbr>
+ This matrix is either set by HAL when the request
+ android.<wbr>color<wbr>Correction.<wbr>mode is not TRANSFORM_<wbr>MATRIX,<wbr> or
+ directly by the application in the request when the
+ androird.<wbr>color<wbr>Correction.<wbr>mode is TRANSFORM_<wbr>MATRIX.<wbr>
+ In the latter case,<wbr> the HAL may round the matrix to account
+ for precision issues; the final rounded matrix should be
+ reported back in this matrix result metadata.<wbr>
+ </td>
+
+ <td class="entry_tags">
+ </td>
+
+ </tr> <!-- end of entry -->
+
+
+ <tr class="entry" id="controls_android.colorCorrection.gains">
+ <td class="entry_name">android.<wbr>color<wbr>Correction.<wbr>gains</td>
+ <td class="entry_type">
+ <span class="entry_type_name">float</span>
+ <span class="entry_type_container">x</span>
+
+ <span class="entry_type_array">
+ 4
+ </span>
+ <span class="entry_type_visibility"> [public]</span>
+ <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
+
+
+ </td> <!-- entry_type -->
+
+ <td class="entry_description">
+ Gains applying to Bayer color channels for
+ white-balance
+ </td>
+
+ <td class="entry_units">
+ </td>
+
+ <td class="entry_range">
+ </td>
+
+ <td class="entry_notes">
+ The 4-channel white-balance gains are defined in
+ the order of [R G_<wbr>even G_<wbr>odd B],<wbr> where G_<wbr>even is the gain
+ for green pixels on even rows of the output,<wbr> and G_<wbr>odd
+ is the gain for greenpixels on the odd rows.<wbr> if a HAL
+ does not support a separate gain for even/<wbr>odd green channels,<wbr>
+ it should use the G_<wbr>even value,<wbr>and write G_<wbr>odd equal to
+ G_<wbr>even in the output result metadata.<wbr>
+<br>
+<br> The ouput should be the gains actually applied by the HAL to
+ the current frame.<wbr>
</td>
<td class="entry_tags">
@@ -785,34 +855,69 @@
- <tr class="entry" id="dynamic_android.colorCorrection.mode">
- <td class="entry_name">android.<wbr>color<wbr>Correction.<wbr>mode</td>
+ <tr class="entry" id="dynamic_android.colorCorrection.transform">
+ <td class="entry_name">android.<wbr>color<wbr>Correction.<wbr>transform</td>
<td class="entry_type">
- <span class="entry_type_name entry_type_name_enum">byte</span>
+ <span class="entry_type_name">rational</span>
+ <span class="entry_type_container">x</span>
+ <span class="entry_type_array">
+ 3 x 3
+ </span>
<span class="entry_type_visibility"> [public]</span>
+ <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
- <ul class="entry_type_enum">
- <li>
- <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
- <span class="entry_type_enum_notes">Use the android.<wbr>color<wbr>Correction.<wbr>transform matrix
- to do color conversion</span>
- </li>
- <li>
- <span class="entry_type_enum_name">FAST</span>
- <span class="entry_type_enum_notes">Must not slow down frame rate relative to raw
- bayer output</span>
- </li>
- <li>
- <span class="entry_type_enum_name">HIGH_QUALITY</span>
- <span class="entry_type_enum_notes">Frame rate may be reduced by high
- quality</span>
- </li>
- </ul>
</td> <!-- entry_type -->
<td class="entry_description">
+ A color transform matrix to use to transform
+ from sensor RGB color space to output linear sRGB color space
+
+ </td>
+
+ <td class="entry_units">
+ </td>
+
+ <td class="entry_range">
+ Output values are expected to be in the range
+ (0,<wbr>1)
+ </td>
+
+ <td class="entry_notes">
+ This matrix is either set by HAL when the request
+ android.<wbr>color<wbr>Correction.<wbr>mode is not TRANSFORM_<wbr>MATRIX,<wbr> or
+ directly by the application in the request when the
+ androird.<wbr>color<wbr>Correction.<wbr>mode is TRANSFORM_<wbr>MATRIX.<wbr>
+ In the latter case,<wbr> the HAL may round the matrix to account
+ for precision issues; the final rounded matrix should be
+ reported back in this matrix result metadata.<wbr>
+ </td>
+
+ <td class="entry_tags">
+ </td>
+
+ </tr> <!-- end of entry -->
+
+
+ <tr class="entry" id="dynamic_android.colorCorrection.gains">
+ <td class="entry_name">android.<wbr>color<wbr>Correction.<wbr>gains</td>
+ <td class="entry_type">
+ <span class="entry_type_name">float</span>
+ <span class="entry_type_container">x</span>
+
+ <span class="entry_type_array">
+ 4
+ </span>
+ <span class="entry_type_visibility"> [public]</span>
+ <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
+
+
+ </td> <!-- entry_type -->
+
+ <td class="entry_description">
+ Gains applying to Bayer color channels for
+ white-balance
</td>
<td class="entry_units">
@@ -822,6 +927,16 @@
</td>
<td class="entry_notes">
+ The 4-channel white-balance gains are defined in
+ the order of [R G_<wbr>even G_<wbr>odd B],<wbr> where G_<wbr>even is the gain
+ for green pixels on even rows of the output,<wbr> and G_<wbr>odd
+ is the gain for greenpixels on the odd rows.<wbr> if a HAL
+ does not support a separate gain for even/<wbr>odd green channels,<wbr>
+ it should use the G_<wbr>even value,<wbr>and write G_<wbr>odd equal to
+ G_<wbr>even in the output result metadata.<wbr>
+<br>
+<br> The ouput should be the gains actually applied by the HAL to
+ the current frame.<wbr>
</td>
<td class="entry_tags">
@@ -1005,8 +1120,8 @@
<ul class="entry_type_enum">
<li>
<span class="entry_type_enum_name">OFF</span>
- <span class="entry_type_enum_notes">Autoexposure is disabled; sensor.<wbr>exposureTime
- and sensor.<wbr>sensitivity are used</span>
+ <span class="entry_type_enum_notes">Autoexposure is disabled; sensor.<wbr>exposureTime,<wbr>
+ sensor.<wbr>sensitivity and sensor.<wbr>frameDuration are used</span>
</li>
<li>
<span class="entry_type_enum_name">ON</span>
@@ -1221,7 +1336,7 @@
<li>
<span class="entry_type_enum_name">OFF</span>
<span class="entry_type_enum_notes">The 3A routines do not control the lens;
- android.<wbr>lens.<wbr>focus<wbr>Position is controlled by the
+ android.<wbr>lens.<wbr>focus<wbr>Distance is controlled by the
application</span>
</li>
<li>
@@ -2653,7 +2768,7 @@
<li>
<span class="entry_type_enum_name">OFF</span>
<span class="entry_type_enum_notes">The 3A routines do not control the lens;
- android.<wbr>lens.<wbr>focus<wbr>Position is controlled by the
+ android.<wbr>lens.<wbr>focus<wbr>Distance is controlled by the
application</span>
</li>
<li>
@@ -5564,49 +5679,6 @@
</tr> <!-- end of entry -->
- <tr class="entry" id="static_android.lens.info.shadingMap">
- <td class="entry_name">android.<wbr>lens.<wbr>info.<wbr>shading<wbr>Map</td>
- <td class="entry_type">
- <span class="entry_type_name">float</span>
- <span class="entry_type_container">x</span>
-
- <span class="entry_type_array">
- 3 x n x m
- </span>
- <span class="entry_type_visibility"> [system]</span>
- <div class="entry_type_notes">2D array of float gain factors per channel to correct for lens falloff.<wbr> Should be on the order of 3x40x30</div>
-
-
- </td> <!-- entry_type -->
-
- <td class="entry_description">
- A low-resolution map of lens shading,<wbr> per
- color channel
- </td>
-
- <td class="entry_units">
- </td>
-
- <td class="entry_range">
- Each gain factor is >= 1
- </td>
-
- <td class="entry_notes">
- Assume bilinear interpolation of map.<wbr> The least
- shaded section of the image should have a gain factor
- of 1; all other sections should have gains above
- 1.<wbr>
- </td>
-
- <td class="entry_tags">
- <ul class="entry_tags">
- <li><a href="#tag_DNG">DNG</a></li>
- </ul>
- </td>
-
- </tr> <!-- end of entry -->
-
-
<tr class="entry" id="static_android.lens.info.shadingMapSize">
<td class="entry_name">android.<wbr>lens.<wbr>info.<wbr>shading<wbr>Map<wbr>Size</td>
<td class="entry_type">
@@ -5617,7 +5689,7 @@
2
</span>
<span class="entry_type_visibility"> [public]</span>
- <div class="entry_type_notes">width and height of lens shading map</div>
+ <div class="entry_type_notes">width and height of lens shading map provided by the HAL.<wbr> (N,<wbr> M)</div>
</td> <!-- entry_type -->
@@ -7215,8 +7287,8 @@
The minimum frame duration that is supported
for each resolution in availableJpegSizes.<wbr> Should
correspond to the frame duration when only that JPEG
- stream is active,<wbr> with all processing set to
- FAST
+ stream is active and captured in a burst,<wbr> with all
+ processing set to FAST
</td>
<td class="entry_units">
@@ -7796,17 +7868,17 @@
</tr> <!-- end of entry -->
- <tr class="entry" id="static_android.sensor.info.availableSensitivities">
- <td class="entry_name">android.<wbr>sensor.<wbr>info.<wbr>available<wbr>Sensitivities</td>
+ <tr class="entry" id="static_android.sensor.info.sensitivityRange">
+ <td class="entry_name">android.<wbr>sensor.<wbr>info.<wbr>sensitivity<wbr>Range</td>
<td class="entry_type">
<span class="entry_type_name">int32</span>
<span class="entry_type_container">x</span>
<span class="entry_type_array">
- n
+ 2
</span>
<span class="entry_type_visibility"> [public]</span>
- <div class="entry_type_notes">List of supported sensitivity values</div>
+ <div class="entry_type_notes">Range of supported sensitivities</div>
</td> <!-- entry_type -->
@@ -7819,8 +7891,7 @@
</td>
<td class="entry_range">
- Must at least include 100,<wbr> 200,<wbr> 400,<wbr> 800,<wbr>
- 1600
+ Min <= 100,<wbr> Max >= 1600
</td>
<td class="entry_notes">
@@ -7941,7 +8012,7 @@
</td> <!-- entry_type -->
<td class="entry_description">
- Maximum frame duration (minimum frame
+ Maximum possible frame duration (minimum frame
rate)
</td>
@@ -7956,7 +8027,9 @@
<td class="entry_notes">
Minimum duration is a function of resolution,<wbr>
processing settings.<wbr> See
- android.<wbr>scaler.<wbr>info.<wbr>available<wbr>Min<wbr>Frame<wbr>Durations
+ android.<wbr>scaler.<wbr>available<wbr>Processed<wbr>Min<wbr>Durations
+ android.<wbr>scaler.<wbr>available<wbr>Jpeg<wbr>Min<wbr>Durations
+ android.<wbr>scaler.<wbr>available<wbr>Raw<wbr>Min<wbr>Durations
</td>
<td class="entry_tags">
@@ -9101,10 +9174,14 @@
<td class="entry_range">
- android.<wbr>statistics.<wbr>available<wbr>Face<wbr>Detect<wbr>Modes
+ android.<wbr>statistics.<wbr>info.<wbr>available<wbr>Face<wbr>Detect<wbr>Modes
</td>
<td class="entry_notes">
+ Whether face detection is enabled,<wbr> and whether it
+ should output just the basic fields or the full set of
+ fields.<wbr> Value must be one of the
+ android.<wbr>statistics.<wbr>info.<wbr>available<wbr>Face<wbr>Detect<wbr>Modes.<wbr>
</td>
<td class="entry_tags">
@@ -9197,6 +9274,47 @@
</tr> <!-- end of entry -->
+
+ <tr class="entry" id="controls_android.statistics.lensShadingMapMode">
+ <td class="entry_name">android.<wbr>statistics.<wbr>lens<wbr>Shading<wbr>Map<wbr>Mode</td>
+ <td class="entry_type">
+ <span class="entry_type_name entry_type_name_enum">byte</span>
+
+ <span class="entry_type_visibility"> [public]</span>
+
+ <ul class="entry_type_enum">
+ <li>
+ <span class="entry_type_enum_name">OFF</span>
+ </li>
+ <li>
+ <span class="entry_type_enum_name">ON</span>
+ </li>
+ </ul>
+
+ </td> <!-- entry_type -->
+
+ <td class="entry_description">
+ Whether the HAL needs to output the lens
+ shading map in output result metadata
+ </td>
+
+ <td class="entry_units">
+ </td>
+
+ <td class="entry_range">
+ </td>
+
+ <td class="entry_notes">
+ When set to ON,<wbr>
+ android.<wbr>statistics.<wbr>lens<wbr>Shading<wbr>Map must be provided in
+ the output result metdata.<wbr>
+ </td>
+
+ <td class="entry_tags">
+ </td>
+
+ </tr> <!-- end of entry -->
+
<!-- end of kind -->
@@ -9238,7 +9356,7 @@
n
</span>
<span class="entry_type_visibility"> [public]</span>
- <div class="entry_type_notes">List of enums</div>
+ <div class="entry_type_notes">List of enums from android.<wbr>statistics.<wbr>face<wbr>Detect<wbr>Mode</div>
</td> <!-- entry_type -->
@@ -9249,13 +9367,27 @@
</td>
<td class="entry_units">
+ List of enum:
+ OFF
+ SIMPLE
+ FULL
</td>
<td class="entry_range">
- OFF
</td>
<td class="entry_notes">
+ OFF means face detection is disabled,<wbr> it must
+ be included in the list.<wbr>
+<br>
+<br> SIMPLE means the device supports the
+ android.<wbr>statistics.<wbr>face<wbr>Rectangles and
+ android.<wbr>statistics.<wbr>face<wbr>Scores outputs.<wbr>
+<br>
+<br> FULL means the device additionally supports the
+ android.<wbr>statistics.<wbr>face<wbr>Ids and
+ android.<wbr>statistics.<wbr>face<wbr>Landmarks outputs.<wbr>
+
</td>
<td class="entry_tags">
@@ -9306,8 +9438,8 @@
</td> <!-- entry_type -->
<td class="entry_description">
- If face detection is supported,<wbr> how many
- faces can be detected at once
+ Maximum number of simultaneously detectable
+ faces
</td>
<td class="entry_units">
@@ -9489,10 +9621,14 @@
<td class="entry_range">
- android.<wbr>statistics.<wbr>available<wbr>Face<wbr>Detect<wbr>Modes
+ android.<wbr>statistics.<wbr>info.<wbr>available<wbr>Face<wbr>Detect<wbr>Modes
</td>
<td class="entry_notes">
+ Whether face detection is enabled,<wbr> and whether it
+ should output just the basic fields or the full set of
+ fields.<wbr> Value must be one of the
+ android.<wbr>statistics.<wbr>info.<wbr>available<wbr>Face<wbr>Detect<wbr>Modes.<wbr>
</td>
<td class="entry_tags">
@@ -9822,6 +9958,182 @@
</tr> <!-- end of entry -->
+
+ <tr class="entry" id="dynamic_android.statistics.lensShadingMap">
+ <td class="entry_name">android.<wbr>statistics.<wbr>lens<wbr>Shading<wbr>Map</td>
+ <td class="entry_type">
+ <span class="entry_type_name">float</span>
+ <span class="entry_type_container">x</span>
+
+ <span class="entry_type_array">
+ 4 x n x m
+ </span>
+ <span class="entry_type_visibility"> [public]</span>
+ <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div>
+
+
+ </td> <!-- entry_type -->
+
+ <td class="entry_description">
+ A low-resolution map of lens shading,<wbr> per
+ color channel
+ </td>
+
+ <td class="entry_units">
+ </td>
+
+ <td class="entry_range">
+ Each gain factor is >= 1
+ </td>
+
+ <td class="entry_notes">
+ Assume bilinear interpolation of map.<wbr> The least
+ shaded section of the image should have a gain factor
+ of 1; all other sections should have gains above 1.<wbr>
+ the map should be on the order of 30-40 rows,<wbr> and
+ must be smaller than 64x64.<wbr>
+ </td>
+
+ <td class="entry_tags">
+ </td>
+
+ </tr> <!-- end of entry -->
+
+
+ <tr class="entry" id="dynamic_android.statistics.predictedColorGains">
+ <td class="entry_name">android.<wbr>statistics.<wbr>predicted<wbr>Color<wbr>Gains</td>
+ <td class="entry_type">
+ <span class="entry_type_name">float</span>
+ <span class="entry_type_container">x</span>
+
+ <span class="entry_type_array">
+ 4
+ </span>
+ <span class="entry_type_visibility"> [public]</span>
+ <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
+
+
+ </td> <!-- entry_type -->
+
+ <td class="entry_description">
+ The best-fit color channel gains calculated
+ by the HAL's statistics units for the current output frame
+
+ </td>
+
+ <td class="entry_units">
+ </td>
+
+ <td class="entry_range">
+ </td>
+
+ <td class="entry_notes">
+
+ This may be different than the gains used for this frame,<wbr>
+ since statistics processing on data from a new frame
+ typically completes after the transform has already been
+ applied to that frame.<wbr>
+<br>
+<br> The 4 channel gains are defined in Bayer domain,<wbr>
+ see android.<wbr>color<wbr>Correction.<wbr>gains for details.<wbr>
+ </td>
+
+ <td class="entry_tags">
+ </td>
+
+ </tr> <!-- end of entry -->
+
+
+ <tr class="entry" id="dynamic_android.statistics.predictedColorTransform">
+ <td class="entry_name">android.<wbr>statistics.<wbr>predicted<wbr>Color<wbr>Transform</td>
+ <td class="entry_type">
+ <span class="entry_type_name">rational</span>
+ <span class="entry_type_container">x</span>
+
+ <span class="entry_type_array">
+ 3 x 3
+ </span>
+ <span class="entry_type_visibility"> [public]</span>
+ <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
+
+
+ </td> <!-- entry_type -->
+
+ <td class="entry_description">
+ The best-fit color transform matrix estimate
+ calculated by the HAL's statistics units for the current
+ output frame
+ </td>
+
+ <td class="entry_units">
+ </td>
+
+ <td class="entry_range">
+ </td>
+
+ <td class="entry_notes">
+ The HAL must provide the estimate from its
+ statistics unit on the white balance transforms to use
+ for the next frame.<wbr> These are the values the HAL believes
+ are the best fit for the current output frame.<wbr> This may
+ be different than the transform used for this frame,<wbr> since
+ statistics processing on data from a new frame typically
+ completes after the transform has already been applied to
+ that frame.<wbr>
+<br>
+<br> These estimates must be provided for all frames,<wbr> even if
+ capture settings and color transforms are set by the application.<wbr>
+
+ </td>
+
+ <td class="entry_tags">
+ </td>
+
+ </tr> <!-- end of entry -->
+
+
+ <tr class="entry" id="dynamic_android.statistics.sceneFlicker">
+ <td class="entry_name">android.<wbr>statistics.<wbr>scene<wbr>Flicker</td>
+ <td class="entry_type">
+ <span class="entry_type_name entry_type_name_enum">byte</span>
+
+ <span class="entry_type_visibility"> [public]</span>
+
+ <ul class="entry_type_enum">
+ <li>
+ <span class="entry_type_enum_name">NONE</span>
+ </li>
+ <li>
+ <span class="entry_type_enum_name">50HZ</span>
+ </li>
+ <li>
+ <span class="entry_type_enum_name">60HZ</span>
+ </li>
+ </ul>
+
+ </td> <!-- entry_type -->
+
+ <td class="entry_description">
+ The HAL estimated scene illumination lighting
+ frequency
+ </td>
+
+ <td class="entry_units">
+ </td>
+
+ <td class="entry_range">
+ </td>
+
+ <td class="entry_notes">
+ Report NONE if there doesn't appear to be flickering
+ illumination
+ </td>
+
+ <td class="entry_tags">
+ </td>
+
+ </tr> <!-- end of entry -->
+
<!-- end of kind -->
@@ -10566,6 +10878,167 @@
</tbody>
<!-- end of section -->
+ <tr><td colspan="7" id="section_blackLevel" class="section">blackLevel</td></tr>
+
+
+ <tr><td colspan="7" class="kind">controls</td></tr>
+
+ <thead class="entries_header">
+ <tr>
+ <th class="th_name">Property Name</th>
+ <th class="th_type">Type</th>
+ <th class="th_description">Description</th>
+ <th class="th_units">Units</th>
+ <th class="th_range">Range</th>
+ <th class="th_notes">Notes</th>
+ <th class="th_tags">Tags</th>
+ </tr>
+ </thead>
+
+ <tbody>
+
+
+
+
+
+
+
+
+
+
+ <tr class="entry" id="controls_android.blackLevel.lock">
+ <td class="entry_name">android.<wbr>black<wbr>Level.<wbr>lock</td>
+ <td class="entry_type">
+ <span class="entry_type_name entry_type_name_enum">byte</span>
+
+ <span class="entry_type_visibility"> [public]</span>
+
+ <ul class="entry_type_enum">
+ <li>
+ <span class="entry_type_enum_name">OFF</span>
+ </li>
+ <li>
+ <span class="entry_type_enum_name">ON</span>
+ </li>
+ </ul>
+
+ </td> <!-- entry_type -->
+
+ <td class="entry_description">
+ Whether black-level compensation is locked
+ to its current values,<wbr> or is free to vary
+ </td>
+
+ <td class="entry_units">
+ </td>
+
+ <td class="entry_range">
+ </td>
+
+ <td class="entry_notes">
+ When set to ON,<wbr> the values used for black-level
+ compensation must not change until the lock is set to
+ OFF
+<br>
+<br> Since changes to certain capture parameters (such as
+ exposure time) may require resetting of black level
+ compensation,<wbr> the HAL must report whether setting the
+ black level lock was successful in the output result
+ metadata.<wbr>
+ </td>
+
+ <td class="entry_tags">
+ <ul class="entry_tags">
+ <li><a href="#tag_HAL2">HAL2</a></li>
+ </ul>
+ </td>
+
+ </tr> <!-- end of entry -->
+
+
+
+ <!-- end of kind -->
+ </tbody>
+ <tr><td colspan="7" class="kind">dynamic</td></tr>
+
+ <thead class="entries_header">
+ <tr>
+ <th class="th_name">Property Name</th>
+ <th class="th_type">Type</th>
+ <th class="th_description">Description</th>
+ <th class="th_units">Units</th>
+ <th class="th_range">Range</th>
+ <th class="th_notes">Notes</th>
+ <th class="th_tags">Tags</th>
+ </tr>
+ </thead>
+
+ <tbody>
+
+
+
+
+
+
+
+
+
+
+ <tr class="entry" id="dynamic_android.blackLevel.lock">
+ <td class="entry_name">android.<wbr>black<wbr>Level.<wbr>lock</td>
+ <td class="entry_type">
+ <span class="entry_type_name entry_type_name_enum">byte</span>
+
+ <span class="entry_type_visibility"> [public]</span>
+
+ <ul class="entry_type_enum">
+ <li>
+ <span class="entry_type_enum_name">OFF</span>
+ </li>
+ <li>
+ <span class="entry_type_enum_name">ON</span>
+ </li>
+ </ul>
+
+ </td> <!-- entry_type -->
+
+ <td class="entry_description">
+ Whether black-level compensation is locked
+ to its current values,<wbr> or is free to vary
+ </td>
+
+ <td class="entry_units">
+ </td>
+
+ <td class="entry_range">
+ </td>
+
+ <td class="entry_notes">
+ When set to ON,<wbr> the values used for black-level
+ compensation must not change until the lock is set to
+ OFF
+<br>
+<br> Since changes to certain capture parameters (such as
+ exposure time) may require resetting of black level
+ compensation,<wbr> the HAL must report whether setting the
+ black level lock was successful in the output result
+ metadata.<wbr>
+ </td>
+
+ <td class="entry_tags">
+ <ul class="entry_tags">
+ <li><a href="#tag_HAL2">HAL2</a></li>
+ </ul>
+ </td>
+
+ </tr> <!-- end of entry -->
+
+
+
+ <!-- end of kind -->
+ </tbody>
+
+ <!-- end of section -->
<!-- </namespace> -->
</table>
@@ -10633,7 +11106,7 @@
<li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
<li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
<li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
- <li><a href="#static_android.sensor.info.availableSensitivities">android.sensor.info.availableSensitivities</a> (static)</li>
+ <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
<li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
<li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
<li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
@@ -10676,7 +11149,7 @@
<li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
<li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
<li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
- <li><a href="#static_android.sensor.info.availableSensitivities">android.sensor.info.availableSensitivities</a> (static)</li>
+ <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
<li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
<li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
<li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
@@ -10708,7 +11181,6 @@
<ul class="tags_entries">
<li><a href="#static_android.lens.info.geometricCorrectionMap">android.lens.info.geometricCorrectionMap</a> (static)</li>
- <li><a href="#static_android.lens.info.shadingMap">android.lens.info.shadingMap</a> (static)</li>
<li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
<li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
<li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
@@ -10736,6 +11208,7 @@
<li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
<li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li>
<li><a href="#controls_android.request.type">android.request.type</a> (controls)</li>
+ <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li>
</ul>
</li> <!-- tag_HAL2 -->
</ul>
diff --git a/camera/docs/metadata_properties.xml b/camera/docs/metadata_properties.xml
index e53eb2b..77f7cc8 100644
--- a/camera/docs/metadata_properties.xml
+++ b/camera/docs/metadata_properties.xml
@@ -47,7 +47,7 @@
<enum>
<value>TRANSFORM_MATRIX
<notes>Use the android.colorCorrection.transform matrix
- to do color conversion</notes>
+ and android.colorCorrection.gains to do color conversion</notes>
</value>
<value>FAST
<notes>Must not slow down frame rate relative to raw
@@ -59,28 +59,51 @@
</value>
</enum>
</entry>
- <entry name="transform" type="float" visibility="public"
- type_notes="3x3 float matrix in row-major order"
+ <entry name="transform" type="rational" visibility="public"
+ type_notes="3x3 rational matrix in row-major order"
container="array">
<array>
<size>3</size>
<size>3</size>
</array>
- <description>A transform matrix to chromatically adapt
- pixels in the CIE XYZ (1931) color space from the scene
- illuminant to the sRGB-standard
- D65-illuminant</description>
+ <description>A color transform matrix to use to transform
+ from sensor RGB color space to output linear sRGB color space
+ </description>
<range>Output values are expected to be in the range
(0,1)</range>
- <notes>Values outside (0,1) should be clamped. Need to
- provide utilities to go from CCT (+hue?), or (x,y) white
- point, (or AWB mode) to matrix; use linear Bradford
- algorithm.</notes>
+ <notes>This matrix is either set by HAL when the request
+ android.colorCorrection.mode is not TRANSFORM_MATRIX, or
+ directly by the application in the request when the
+ androird.colorCorrection.mode is TRANSFORM_MATRIX.
+ In the latter case, the HAL may round the matrix to account
+ for precision issues; the final rounded matrix should be
+ reported back in this matrix result metadata.</notes>
+ </entry>
+ <entry name="gains" type="float" visibility="public"
+ type_notes="A 1D array of floats for 4 color channel gains"
+ container="array">
+ <array>
+ <size>4</size>
+ </array>
+ <description>Gains applying to Bayer color channels for
+ white-balance</description>
+ <notes>The 4-channel white-balance gains are defined in
+ the order of [R G_even G_odd B], where G_even is the gain
+ for green pixels on even rows of the output, and G_odd
+ is the gain for greenpixels on the odd rows. if a HAL
+ does not support a separate gain for even/odd green channels,
+ it should use the G_even value,and write G_odd equal to
+ G_even in the output result metadata.
+
+ The ouput should be the gains actually applied by the HAL to
+ the current frame.</notes>
</entry>
</controls>
<dynamic>
- <clone entry="android.colorCorrection.mode"
- kind="controls"></clone>
+ <clone entry="android.colorCorrection.transform" kind="controls">
+ </clone>
+ <clone entry="android.colorCorrection.gains" kind="controls">
+ </clone>
</dynamic>
</section>
<section name="control">
@@ -127,8 +150,8 @@
<entry name="aeMode" type="byte" visibility="public" enum="true">
<enum>
<value>OFF
- <notes>Autoexposure is disabled; sensor.exposureTime
- and sensor.sensitivity are used</notes>
+ <notes>Autoexposure is disabled; sensor.exposureTime,
+ sensor.sensitivity and sensor.frameDuration are used</notes>
</value>
<value>ON
<notes>Autoexposure is active, no flash
@@ -223,7 +246,7 @@
<enum>
<value>OFF
<notes>The 3A routines do not control the lens;
- android.lens.focusPosition is controlled by the
+ android.lens.focusDistance is controlled by the
application</notes></value>
<value>AUTO
<notes>if lens is not fixed focus.
@@ -1249,25 +1272,8 @@
0</notes>
<tag id="V1" />
</entry>
- <entry name="shadingMap" type="float"
- type_notes="2D array of float gain factors per channel to correct for lens falloff. Should be on the order of 3x40x30"
- container="array">
- <array>
- <size>3</size>
- <size>n</size>
- <size>m</size>
- </array>
- <description>A low-resolution map of lens shading, per
- color channel</description>
- <range>Each gain factor is >= 1</range>
- <notes>Assume bilinear interpolation of map. The least
- shaded section of the image should have a gain factor
- of 1; all other sections should have gains above
- 1.</notes>
- <tag id="DNG" />
- </entry>
<entry name="shadingMapSize" type="int32" visibility="public"
- type_notes="width and height of lens shading map"
+ type_notes="width and height of lens shading map provided by the HAL. (N, M)"
container="array">
<array>
<size>2</size>
@@ -1647,8 +1653,8 @@
<description>The minimum frame duration that is supported
for each resolution in availableJpegSizes. Should
correspond to the frame duration when only that JPEG
- stream is active, with all processing set to
- FAST</description>
+ stream is active and captured in a burst, with all
+ processing set to FAST</description>
<notes>When multiple streams are configured, the minimum
frame duration will be >= max(individual stream min
durations)</notes>
@@ -1781,15 +1787,14 @@
pixel array is (0,0)</units>
<tag id="DNG" />
</entry>
- <entry name="availableSensitivities" type="int32" visibility="public"
- type_notes="List of supported sensitivity values"
+ <entry name="sensitivityRange" type="int32" visibility="public"
+ type_notes="Range of supported sensitivities"
container="array">
<array>
- <size>n</size>
+ <size>2</size>
</array>
<description>Range of valid sensitivities</description>
- <range>Must at least include 100, 200, 400, 800,
- 1600</range>
+ <range>Min <= 100, Max >= 1600</range>
<tag id="BC" />
<tag id="V1" />
</entry>
@@ -1821,13 +1826,15 @@
<tag id="V1" />
</entry>
<entry name="maxFrameDuration" type="int64" visibility="public">
- <description>Maximum frame duration (minimum frame
+ <description>Maximum possible frame duration (minimum frame
rate)</description>
<units>nanoseconds</units>
<range>>= 30e9</range>
<notes>Minimum duration is a function of resolution,
processing settings. See
- android.scaler.info.availableMinFrameDurations</notes>
+ android.scaler.availableProcessedMinDurations
+ android.scaler.availableJpegMinDurations
+ android.scaler.availableRawMinDurations</notes>
<tag id="BC" />
<tag id="V1" />
</entry>
@@ -2087,7 +2094,11 @@
<description>State of the face detector
unit</description>
<range>
- android.statistics.availableFaceDetectModes</range>
+ android.statistics.info.availableFaceDetectModes</range>
+ <notes>Whether face detection is enabled, and whether it
+ should output just the basic fields or the full set of
+ fields. Value must be one of the
+ android.statistics.info.availableFaceDetectModes.</notes>
<tag id="BC" />
</entry>
<entry name="histogramMode" type="byte" enum="true">
@@ -2112,14 +2123,29 @@
<static>
<namespace name="info">
<entry name="availableFaceDetectModes" type="byte"
- visibility="public"
- type_notes="List of enums" container="array">
+ visibility="public"
+ type_notes="List of enums from android.statistics.faceDetectMode"
+ container="array">
<array>
<size>n</size>
</array>
<description>Which face detection modes are available,
if any</description>
- <range>OFF</range>
+ <units>List of enum:
+ OFF
+ SIMPLE
+ FULL</units>
+ <notes>OFF means face detection is disabled, it must
+ be included in the list.
+
+ SIMPLE means the device supports the
+ android.statistics.faceRectangles and
+ android.statistics.faceScores outputs.
+
+ FULL means the device additionally supports the
+ android.statistics.faceIds and
+ android.statistics.faceLandmarks outputs.
+ </notes>
</entry>
<entry name="histogramBucketCount" type="int32">
<description>Number of histogram buckets
@@ -2127,8 +2153,8 @@
<range>>= 64</range>
</entry>
<entry name="maxFaceCount" type="int32" visibility="public" >
- <description>If face detection is supported, how many
- faces can be detected at once</description>
+ <description>Maximum number of simultaneously detectable
+ faces</description>
<range>>= 4 if availableFaceDetectionModes lists
modes besides OFF, otherwise 0</range>
</entry>
@@ -2230,7 +2256,89 @@
</entry>
<clone entry="android.statistics.sharpnessMapMode"
kind="controls"></clone>
+ <entry name="lensShadingMap" type="float" visibility="public"
+ type_notes="2D array of float gain factors per channel to correct lens shading"
+ container="array">
+ <array>
+ <size>4</size>
+ <size>n</size>
+ <size>m</size>
+ </array>
+ <description>A low-resolution map of lens shading, per
+ color channel</description>
+ <range>Each gain factor is >= 1</range>
+ <notes>Assume bilinear interpolation of map. The least
+ shaded section of the image should have a gain factor
+ of 1; all other sections should have gains above 1.
+ the map should be on the order of 30-40 rows, and
+ must be smaller than 64x64.</notes>
+ </entry>
+ <entry name="predictedColorGains" type="float" visibility="public"
+ type_notes="A 1D array of floats for 4 color channel gains"
+ container="array">
+ <array>
+ <size>4</size>
+ </array>
+ <description>The best-fit color channel gains calculated
+ by the HAL's statistics units for the current output frame
+ </description>
+ <notes>
+ This may be different than the gains used for this frame,
+ since statistics processing on data from a new frame
+ typically completes after the transform has already been
+ applied to that frame.
+
+ The 4 channel gains are defined in Bayer domain,
+ see android.colorCorrection.gains for details.</notes>
+ </entry>
+ <entry name="predictedColorTransform" type="rational" visibility="public"
+ type_notes="3x3 rational matrix in row-major order"
+ container="array">
+ <array>
+ <size>3</size>
+ <size>3</size>
+ </array>
+ <description>The best-fit color transform matrix estimate
+ calculated by the HAL's statistics units for the current
+ output frame</description>
+ <notes>The HAL must provide the estimate from its
+ statistics unit on the white balance transforms to use
+ for the next frame. These are the values the HAL believes
+ are the best fit for the current output frame. This may
+ be different than the transform used for this frame, since
+ statistics processing on data from a new frame typically
+ completes after the transform has already been applied to
+ that frame.
+
+ These estimates must be provided for all frames, even if
+ capture settings and color transforms are set by the application.
+ </notes>
+ </entry>
+ <entry name="sceneFlicker" type="byte" visibility="public" enum="true">
+ <enum>
+ <value>NONE</value>
+ <value>50HZ</value>
+ <value>60HZ</value>
+ </enum>
+ <description>The HAL estimated scene illumination lighting
+ frequency</description>
+ <notes>Report NONE if there doesn't appear to be flickering
+ illumination</notes>
+ </entry>
</dynamic>
+ <controls>
+ <entry name="lensShadingMapMode" type="byte" visibility="public" enum="true">
+ <enum>
+ <value>OFF</value>
+ <value>ON</value>
+ </enum>
+ <description>Whether the HAL needs to output the lens
+ shading map in output result metadata</description>
+ <notes>When set to ON,
+ android.statistics.lensShadingMap must be provided in
+ the output result metdata.</notes>
+ </entry>
+ </controls>
</section>
<section name="tonemap">
<controls>
@@ -2361,5 +2469,31 @@
</entry>
</static>
</section>
+ <section name="blackLevel">
+ <controls>
+ <entry name="lock" type="byte" visibility="public" enum="true">
+ <enum>
+ <value>OFF</value>
+ <value>ON</value>
+ </enum>
+ <description> Whether black-level compensation is locked
+ to its current values, or is free to vary</description>
+ <notes>When set to ON, the values used for black-level
+ compensation must not change until the lock is set to
+ OFF
+
+ Since changes to certain capture parameters (such as
+ exposure time) may require resetting of black level
+ compensation, the HAL must report whether setting the
+ black level lock was successful in the output result
+ metadata.</notes>
+ <tag id="HAL2" />
+ </entry>
+ </controls>
+ <dynamic>
+ <clone entry="android.blackLevel.lock"
+ kind="controls"></clone>
+ </dynamic>
+ </section>
</namespace>
</metadata>