OSDN Git Service

camera_metadata: Add visibility support, and a HAL2 tag
authorEino-Ville Talvala <etalvala@google.com>
Sat, 13 Jul 2013 00:02:27 +0000 (17:02 -0700)
committerEino-Ville Talvala <etalvala@google.com>
Tue, 16 Jul 2013 18:41:09 +0000 (11:41 -0700)
- Add a visibility property which controls whether a tag is available
  only to the system, hidden in managed code, or public in managed code.
- Add a HAL2 tag to indicate HAL2.x-only tags
- Fix output/inputStream tags to be arrays.

Change-Id: I856d0b1bf413eefd58914e5b85b08331a4bf4536

camera/docs/CameraMetadataKeys.mako
camera/docs/camera_metadata_tags.mako
camera/docs/docs.html
camera/docs/html.mako
camera/docs/metadata_helpers.py
camera/docs/metadata_model.py
camera/docs/metadata_parser_xml.py
camera/docs/metadata_properties.xml
camera/docs/metadata_properties.xsd
camera/docs/metadata_template.mako
camera/include/system/camera_metadata_tags.h

index 18af316..1c8d47c 100644 (file)
@@ -42,6 +42,11 @@ import static android.hardware.photography.CameraMetadata.Key;
 ##
 ## Function to generate an enum
 <%def name="generate_enum(entry)">
+            % if entry.applied_visibility == 'hidden':
+            /**
+             * @hide
+             */
+            %endif
             public static final class ${entry.get_name_minimal() | pascal_case}Key extends Key<${jtype(entry)}> {
                 public enum Enum {
                   % for value,last in enumerate_with_last(entry.enum.values):
@@ -75,37 +80,65 @@ import static android.hardware.photography.CameraMetadata.Key;
 public final class ${java_name}Keys {
 % for outer_namespace in metadata.outer_namespaces: ## assumes single 'android' namespace
   % for section in outer_namespace.sections:
-    % if section.find_first(lambda x: isinstance(x, metadata_model.Entry) and x.kind == xml_name):
+    % if section.find_first(lambda x: isinstance(x, metadata_model.Entry) and x.kind == xml_name) and \
+         any_visible(section, xml_name, ('public','hidden') ):
+    % if not any_visible(section, xml_name, ('public')):
+    /**
+     * @hide
+     */
+    %endif
     public static final class ${section.name | pascal_case} {
       % for inner_namespace in get_children_by_filtering_kind(section, xml_name, 'namespaces'):
 ## We only support 1 level of inner namespace, i.e. android.a.b and android.a.b.c works, but not android.a.b.c.d
 ## If we need to support more, we should use a recursive function here instead.. but the indentation gets trickier.
         public static final class ${inner_namespace.name| pascal_case} {
-          % for entry in inner_namespace.merged_entries:
+          % for entry in filter_visibility(inner_namespace.merged_entries, ('hidden','public')):
             % if entry.enum:
 ${generate_enum(entry)}
+            % if entry.applied_visibility == 'hidden':
+            /**
+             * @hide
+             */
+            %endif
             public static final Key<${jtype(entry)}> ${entry.get_name_minimal() | csym} =
                     new ${entry.get_name_minimal() | pascal_case}Key("${entry.name}");
             % else:
+            % if entry.applied_visibility == 'hidden':
+            /**
+             * @hide
+             */
+            %endif
             public static final Key<${jtype(entry)}> ${entry.get_name_minimal() | csym} =
                     new Key<${jtype(entry)}>("${entry.name}", ${jclass(entry)});
             % endif
           % endfor
         }
       % endfor
-
-      % for entry in get_children_by_filtering_kind(section, xml_name, 'merged_entries'):
+      % for entry in filter_visibility( \
+          get_children_by_filtering_kind(section, xml_name, 'merged_entries'), \
+                                         ('hidden', 'public')):
         % if entry.enum:
 ${generate_enum(entry)}
+          % if entry.applied_visibility == 'hidden':
+        /**
+         * @hide
+         */
+          %endif
         public static final Key<${jtype(entry)}> ${entry.get_name_minimal() | csym} =
                 new ${entry.get_name_minimal() | pascal_case}Key("${entry.name}");
         % else:
+          % if entry.applied_visibility == 'hidden':
+        /**
+         * @hide
+         */
+          %endif
         public static final Key<${jtype(entry)}> ${entry.get_name_minimal() | csym} =
                 new Key<${jtype(entry)}>("${entry.name}", ${jclass(entry)});
         % endif
       % endfor
 
     }
+
     % endif
   % endfor
 % endfor
index 2bffe40..105f7e1 100644 (file)
  * Generated automatically from camera_metadata_tags.mako
  */
 
+<%!
+  def annotated_type(entry):
+    if entry.enum:
+       type = 'enum'
+    else:
+       type = entry.type
+    if entry.container == 'array':
+       type += '[]'
+
+    return type
+%>\
+\
 /** TODO: Nearly every enum in this file needs a description */
 
 /**
@@ -65,9 +77,10 @@ typedef enum camera_metadata_tag {
     % for sec in find_all_sections(metadata):
       % for idx,entry in enumerate(find_unique_entries(sec)):
         % if idx == 0:
-    ${entry.name | csym,ljust(30)} = ${path_name(find_parent_section(entry)) | csym}_START,
+    ${entry.name + " = " | csym,ljust(50)}// ${annotated_type(entry) | ljust(12)} | ${entry.applied_visibility}
+            ${path_name(find_parent_section(entry)) | csym}_START,
         % else:
-    ${entry.name | csym},
+    ${entry.name + "," | csym,ljust(50)}// ${annotated_type(entry) | ljust(12)} | ${entry.applied_visibility}
         % endif
       % endfor
     ${path_name(sec) | csym}_END,
index 210e9d8..c270b61 100644 (file)
@@ -17,7 +17,7 @@
 <head>
   <!-- automatically generated from html.mako. do NOT edit directly -->
   <meta charset="utf-8" />
-  <title>Android Camera HAL2.0 Properties</title>
+  <title>Android Camera HAL3.0 Properties</title>
   <style type="text/css">
     .section { font-size: 1.5em; font-weight: bold; background-color: beige; padding: 0.5em 0em 0.5em 0.1em }
     .kind { font-size: 1.2em; font-weight: bold; padding-left: 0.5em; background-color: gray }
@@ -31,6 +31,7 @@
     .th_tags { width: 5% }
     .th_notes { width: 30% }
     .th_type { width: 20% }
+    .th_visibility { width: 10% }
     td { font-size: 0.9em; }
 
     /* hide the first thead, we need it there only to enforce column sizes */
@@ -38,6 +39,7 @@
 
     /* Entry flair */
     .entry_name { font-family: monospace; font-style: italic; }
+    .entry_visibility { text-align: center; }
 
     /* Entry type flair */
     .entry_type_name { color: darkgreen; font-weight: bold; }
@@ -75,7 +77,7 @@
 
 
 <body>
-  <h1>Android Camera HAL2.0 Properties</h1>
+  <h1>Android Camera HAL3.0 Properties</h1>
 
   <h2>Table of Contents</h2>
   <ul class="toc">
       <tr>
         <th class="th_name">Property Name</th>
         <th class="th_type">Type</th>
+        <th class="th_visibilty">Visibility</th>
         <th class="th_description">Description</th>
         <th class="th_units">Units</th>
         <th class="th_range">Range</th>
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
             </td>
 
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               A transform matrix to chromatically adapt
           pixels in the CIE XYZ (1931) color space from the scene
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
             </td>
 
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Enum for controlling
           antibanding
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Adjustment to AE target image
           brightness
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Whether AE is currently locked to its latest
           calculated values
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Whether AE is currently updating the sensor
           exposure and sensitivity fields
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               List of areas to use for
           metering
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Range over which fps can be adjusted to
           maintain exposure
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Whether the HAL must trigger precapture
           metering.<wbr>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Whether AF is currently enabled,<wbr> and what
           mode it is set to
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               List of areas to use for focus
           estimation
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Whether the HAL must trigger autofocus.<wbr>
             </td>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Whether AWB is currently locked to its
           latest calculated values
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Whether AWB is currently setting the color
           transform fields,<wbr> and what its illumination target
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               List of areas to use for illuminant
           estimation
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Information to 3A routines about the purpose
           of this capture,<wbr> to help decide optimal 3A
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Whether any special color effect is in use.<wbr>
           Only used if android.<wbr>control.<wbr>mode != OFF
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Overall mode of 3A control
           routines
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Which scene mode is active when
           android.<wbr>control.<wbr>mode = SCENE_<wbr>MODE
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Whether video stabilization is
           active
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Which set of antibanding modes are
           supported
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Which subset of AE modes is
           supported
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               List of frame rate ranges supported by the
           AE algorithm/<wbr>hardware
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Maximum and minimum exposure compensation
           setting,<wbr> in counts of
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Smallest step by which exposure compensation
           can be changed
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               List of AF modes that can be
           selected
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               what subset of the full color effect enum
           list is supported
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               what subset of the scene mode enum list is
           supported.<wbr>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               List of video stabilization modes that can
           be supported
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
             </td>
 
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               For AE,<wbr> AWB,<wbr> and AF,<wbr> how many individual
           regions can be listed for metering?
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               List of AE,<wbr> AWB,<wbr> and AF modes to use for
           each available scene mode
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">hidden</td>
+
             <td class="entry_description">
               The ID sent with the latest
           CAMERA2_<wbr>TRIGGER_<wbr>PRECAPTURE_<wbr>METERING call
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               List of areas to use for
           metering
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Current state of AE algorithm
             </td>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Whether AF is currently enabled,<wbr> and what
           mode it is set to
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               List of areas to use for focus
           estimation
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Current state of AF algorithm
             </td>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">hidden</td>
+
             <td class="entry_description">
               The ID sent with the latest
           CAMERA2_<wbr>TRIGGER_<wbr>AUTOFOCUS call
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Whether AWB is currently setting the color
           transform fields,<wbr> and what its illumination target
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               List of areas to use for illuminant
           estimation
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Current state of AWB algorithm
             </td>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Overall mode of 3A control
           routines
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Controls the quality of the demosaicing
           processing
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Operation mode for edge
           enhancement
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Control the amount of edge enhancement
           applied to the images
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Operation mode for edge
           enhancement
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Power for flash firing/<wbr>torch
             </td>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Firing time of flash relative to start of
           exposure
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Select flash operation mode
             </td>
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Whether this camera has a
             flash
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Time taken before flash can fire
             again
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               The x,<wbr>y whitepoint of the
           flash
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Max energy output of the flash for a full
           power single flash
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Power for flash firing/<wbr>torch
             </td>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Firing time of flash relative to start of
           exposure
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Select flash operation mode
             </td>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Current state of the flash
           unit
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Operating mode of geometric
           correction
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Control the amount of shading correction
           applied to the images
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Set operational mode for hot pixel
           correction
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Location of hot/<wbr>defective pixels on
             sensor
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Set operational mode for hot pixel
           correction
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               GPS coordinates to include in output JPEG
           EXIF
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               32 characters describing GPS algorithm to
           include in EXIF
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Time GPS fix was made to include in
           EXIF
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Orientation of JPEG image to
           write
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Compression quality of the final JPEG
           image
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Compression quality of JPEG
           thumbnail
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Resolution of embedded JPEG
           thumbnail
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Supported resolutions for the JPEG
           thumbnail
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Maximum size in bytes for the compressed
           JPEG buffer
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               GPS coordinates to include in output JPEG
           EXIF
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               32 characters describing GPS algorithm to
           include in EXIF
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Time GPS fix was made to include in
           EXIF
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Orientation of JPEG image to
           write
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Compression quality of the final JPEG
           image
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               The size of the compressed JPEG image,<wbr> in
           bytes
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Compression quality of JPEG
           thumbnail
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Resolution of embedded JPEG
           thumbnail
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Size of the lens aperture
             </td>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               State of lens neutral density
           filter(s)
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Lens optical zoom setting
             </td>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Distance to plane of sharpest focus,<wbr>
           measured from frontmost surface of the lens
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Whether optical image stabilization is
           enabled.<wbr>
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               List of supported aperture
             values
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               List of supported ND filter
             values
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               If fitted with optical zoom,<wbr> what focal
             lengths are available.<wbr> If not,<wbr> the static focal
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               List of supported optical image
             stabilization modes
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               A low-resolution map for correction of
             geometric distortions and chromatic aberrations,<wbr> per
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Dimensions of geometric correction
             map
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Hyperfocal distance for this lens; set to
             0 if fixed focus
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Shortest distance from frontmost surface
             of the lens that can be focused correctly
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               A low-resolution map of lens shading,<wbr> per
             color channel
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Dimensions of lens shading
             map
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Direction the camera faces relative to
           device screen
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Relative angle of camera optical axis to the
           perpendicular axis from the display
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Coordinates of camera optical axis on
           device
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Size of the lens aperture
             </td>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               State of lens neutral density
           filter(s)
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Lens optical zoom setting
             </td>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Distance to plane of sharpest focus,<wbr>
           measured from frontmost surface of the lens
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               The range of scene distances that are in
           sharp focus (depth of field)
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Whether optical image stabilization is
           enabled.<wbr>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Current lens status
             </td>
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Mode of operation for the noise reduction
           algorithm
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Control the amount of noise reduction
           applied to the images
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Mode of operation for the noise reduction
           algorithm
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               If set to 1,<wbr> the camera service does not
           scale 'normalized' coordinates with respect to the crop
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               If set to 1,<wbr> then the camera service always
           switches to FOCUS_<wbr>MODE_<wbr>AUTO before issuing a AF
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               If set to 1,<wbr> the camera service uses
           CAMERA2_<wbr>PIXEL_<wbr>FORMAT_<wbr>ZSL instead of
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               A frame counter set by the framework.<wbr> Must
           be maintained unchanged in output frame
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">hidden</td>
+
             <td class="entry_description">
               An application-specified ID for the current
           request.<wbr> Must be maintained unchanged in output
             <td class="entry_name">android.<wbr>request.<wbr>input<wbr>Streams</td>
             <td class="entry_type">
                 <span class="entry_type_name">byte</span>
+                <span class="entry_type_container">x</span>
 
+                <span class="entry_type_array">
+                  n
+                </span>
 
 
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               List which camera reprocess stream is used
           for the source of reprocessing data.<wbr>
             </td>
 
             <td class="entry_tags">
+              <ul class="entry_tags">
+                  <li><a href="#tag_HAL2">HAL2</a></li>
+              </ul>
             </td>
 
           </tr> <!-- end of entry -->
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               How much metadata to produce on
           output
             <td class="entry_name">android.<wbr>request.<wbr>output<wbr>Streams</td>
             <td class="entry_type">
                 <span class="entry_type_name">byte</span>
+                <span class="entry_type_container">x</span>
 
+                <span class="entry_type_array">
+                  n
+                </span>
 
 
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Lists which camera output streams image data
           from this capture must be sent to
             </td>
 
             <td class="entry_tags">
+              <ul class="entry_tags">
+                  <li><a href="#tag_HAL2">HAL2</a></li>
+              </ul>
             </td>
 
           </tr> <!-- end of entry -->
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               The type of the request; either CAPTURE or
-          REPROCESS
+          REPROCESS.<wbr> For HAL3,<wbr> this tag is redundant.<wbr>
             </td>
 
             <td class="entry_units">
             </td>
 
             <td class="entry_tags">
+              <ul class="entry_tags">
+                  <li><a href="#tag_HAL2">HAL2</a></li>
+              </ul>
             </td>
 
           </tr> <!-- end of entry -->
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               How many output streams can be allocated at
           the same time for each type of stream
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               How many reprocessing streams of any type
           can be allocated at the same time
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Number of frames captured since
           open()
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">hidden</td>
+
             <td class="entry_description">
               An application-specified ID for the current
           request.<wbr> Must be maintained unchanged in output
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               How much metadata to produce on
           output
             <td class="entry_name">android.<wbr>request.<wbr>output<wbr>Streams</td>
             <td class="entry_type">
                 <span class="entry_type_name">byte</span>
+                <span class="entry_type_container">x</span>
 
+                <span class="entry_type_array">
+                  n
+                </span>
 
 
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Lists which camera output streams image data
           from this capture must be sent to
             </td>
 
             <td class="entry_tags">
+              <ul class="entry_tags">
+                  <li><a href="#tag_HAL2">HAL2</a></li>
+              </ul>
             </td>
 
           </tr> <!-- end of entry -->
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               (x,<wbr> y,<wbr> width,<wbr> height).<wbr>
 <br>
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               List of app-visible formats
             </td>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               The minimum frame duration that is supported
           for each resolution in availableJpegSizes.<wbr> Should
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               The resolutions available for output from
           the JPEG block.<wbr> Listed as width x height
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               The maximum ratio between active area width
           and crop region width,<wbr> or between active area height and
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               The minimum frame duration that is supported
           for each resolution in availableProcessedSizes.<wbr> Should
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               The resolutions available for use with
           processed output streams,<wbr> such as YV12,<wbr> NV12,<wbr> and
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               The minimum frame duration that is supported
           for each raw resolution in availableRawSizes.<wbr> Should
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               The resolutions available for use with raw
           sensor output streams,<wbr> listed as width,<wbr>
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               (x,<wbr> y,<wbr> width,<wbr> height).<wbr>
 <br>
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Duration each pixel is exposed to
           light
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Duration from start of frame exposure to
           start of next frame exposure
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Gain applied to image data.<wbr> Must be
           implemented through analog gain only if set to values
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Area of raw data which corresponds to only
             active pixels; smaller or equal to
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Range of valid sensitivities
             </td>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Arrangement of color filters on sensor;
             represents the colors in the top-left 2x2 section of
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Range of valid exposure
             times
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Maximum frame duration (minimum frame
             rate)
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               The physical dimensions of the full pixel
             array
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Dimensions of full pixel array,<wbr> possibly
             including black calibration pixels
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Maximum raw value output by
             sensor
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Gain factor from electrons to raw units when
           ISO=100
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               A fixed black level offset for each of the
           Bayer mosaic channels
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Per-device calibration on top of color space
           transform 1
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Per-device calibration on top of color space
           transform 2
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Linear mapping from XYZ (D50) color space to
           reference linear sensor color,<wbr> for first reference
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Linear mapping from XYZ (D50) color space to
           reference linear sensor color,<wbr> for second reference
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Used by DNG for better WB
           adaptation
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Used by DNG for better WB
           adaptation
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Maximum sensitivity that is implemented
           purely through analog gain
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Estimation of sensor noise
           characteristics
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Clockwise angle through which the output
           image needs to be rotated to be upright on the device
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Light source used to define transform
           1
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Light source used to define transform
           2
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Duration each pixel is exposed to
           light
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Duration from start of frame exposure to
           start of next frame exposure
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Gain applied to image data.<wbr> Must be
           implemented through analog gain only if set to values
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Time at start of exposure of first
           row
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Quality of lens shading correction applied
           to the image data
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Control the amount of shading correction
           applied to the images
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Quality of lens shading correction applied
           to the image data
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               State of the face detector
           unit
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Operating mode for histogram
           generation
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Operating mode for sharpness map
           generation
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Which face detection modes are available,<wbr>
             if any
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Number of histogram buckets
             supported
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               If face detection is supported,<wbr> how many
             faces can be detected at once
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Maximum value possible for a histogram
             bucket
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Maximum value possible for a sharpness map
             region.<wbr>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Dimensions of the sharpness
             map
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               State of the face detector
           unit
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               List of unique IDs for detected
           faces
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               List of landmarks for detected
           faces
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               List of the bounding rectangles for detected
           faces
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               List of the face confidence scores for
           detected faces
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               A 3-channel histogram based on the raw
           sensor data
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Operating mode for histogram
           generation
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               A 3-channel sharpness map,<wbr> based on the raw
           sensor data
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Operating mode for sharpness map
           generation
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Table mapping blue input values to output
           values
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Table mapping green input values to output
           values
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Table mapping red input values to output
           values
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
             </td>
 
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Maximum number of supported points in the
           tonemap curve
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Table mapping blue input values to output
           values
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Table mapping green input values to output
           values
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Table mapping red input values to output
           values
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
             </td>
 
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">hidden</td>
+
             <td class="entry_description">
               This LED is nominally used to indicate to the user
           that the camera is powered on and may be streaming images back to the
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">hidden</td>
+
             <td class="entry_description">
               This LED is nominally used to indicate to the user
           that the camera is powered on and may be streaming images back to the
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">hidden</td>
+
             <td class="entry_description">
               A list of camera LEDs that are available on this system.<wbr>
           
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               
           The camera 3 HAL device can implement one of two possible operational modes;
           <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
         </ul>
       </li> <!-- tag_EXIF -->
+      <li id="tag_HAL2">HAL2 - 
+        Tag only used by camera device HAL 2.x
+    
+        <ul class="tags_entries">
+          <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>
+        </ul>
+      </li> <!-- tag_HAL2 -->
     </ul>
   </div>
 
index b1b9759..3368894 100644 (file)
@@ -18,7 +18,7 @@
 <head>
   <!-- automatically generated from html.mako. do NOT edit directly -->
   <meta charset="utf-8" />
-  <title>Android Camera HAL2.0 Properties</title>
+  <title>Android Camera HAL3.0 Properties</title>
   <style type="text/css">
     .section { font-size: 1.5em; font-weight: bold; background-color: beige; padding: 0.5em 0em 0.5em 0.1em }
     .kind { font-size: 1.2em; font-weight: bold; padding-left: 0.5em; background-color: gray }
@@ -32,6 +32,7 @@
     .th_tags { width: 5% }
     .th_notes { width: 30% }
     .th_type { width: 20% }
+    .th_visibility { width: 10% }
     td { font-size: 0.9em; }
 
     /* hide the first thead, we need it there only to enforce column sizes */
@@ -39,6 +40,7 @@
 
     /* Entry flair */
     .entry_name { font-family: monospace; font-style: italic; }
+    .entry_visibility { text-align: center; }
 
     /* Entry type flair */
     .entry_type_name { color: darkgreen; font-weight: bold; }
 
 
 <body>
-  <h1>Android Camera HAL2.0 Properties</h1>
+  <h1>Android Camera HAL3.0 Properties</h1>
 
   <h2>Table of Contents</h2>
   <ul class="toc">
       <tr>
         <th class="th_name">Property Name</th>
         <th class="th_type">Type</th>
+        <th class="th_visibilty">Visibility</th>
         <th class="th_description">Description</th>
         <th class="th_units">Units</th>
         <th class="th_range">Range</th>
         <tr>
           <th class="th_name">Property Name</th>
           <th class="th_type">Type</th>
+          <th class="th_visibility">Visibility</th>
           <th class="th_description">Description</th>
           <th class="th_units">Units</th>
           <th class="th_range">Range</th>
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">${prop.applied_visibility | wbr}</td>
+
             <td class="entry_description">
             % if prop.description is not None:
               ${prop.description | wbr, br}
index 7d109e9..97a9451 100644 (file)
@@ -532,3 +532,39 @@ def jenum(enum):
 
   return jenum_name
 
+def any_visible(section, kind_name, visibilities):
+  """
+  Determine if entries in this section have an applied visibility that's in
+  the list of given visibilities.
+
+  Args:
+    section: A section of metadata
+    kind_name: A name of the kind, i.e. 'dynamic' or 'static' or 'controls'
+    visibilities: An iterable of visibilities to match against
+
+  Returns:
+    True if the section has any entries with any of the given visibilities. False otherwise.
+  """
+
+  for inner_namespace in get_children_by_filtering_kind(section, kind_name,
+                                                        'namespaces'):
+    if any(filter_visibility(inner_namespace.merged_entries, visibilities)):
+      return True
+
+  return any(filter_visibility(get_children_by_filtering_kind(section, kind_name,
+                                                              'merged_entries'),
+                               visibilities))
+
+
+def filter_visibility(entries, visibilities):
+  """
+  Remove entries whose applied visibility is not in the supplied visibilities.
+
+  Args:
+    entries: An iterable of Entry nodes
+    visibilities: An iterable of visibilities to filter against
+
+  Yields:
+    An iterable of Entry nodes
+  """
+  return (e for e in entries if e.applied_visibility in visibilities)
index daf171c..6b70288 100644 (file)
@@ -936,6 +936,12 @@ class Entry(Node):
     container: The container attribute from <entry container="array">, or None.
     container_sizes: A sequence of size strings or None if container is None.
     enum: An Enum instance if the enum attribute is true, None otherwise.
+    visibility: The visibility of this entry ('system', 'hidden', 'public')
+                across the system. System entries are only visible in native code
+                headers. Hidden entries are marked @hide in managed code, while
+                public entries are visible in the Android SDK.
+    applied_visibility: As visibility, but always valid, defaulting to 'system'
+                        if no visibility is given for an entry.
     tuple_values: A sequence of strings describing the tuple values,
                   None if container is not 'tuple'.
     description: A string description, or None.
@@ -981,6 +987,8 @@ class Entry(Node):
       notes: A string with the notes for the entry
       tag_ids: A list of tag ID strings, e.g. ['BC', 'V1']
       type_notes: A string with the notes for the type
+      visibility: A string describing the visibility, eg 'system', 'hidden',
+                  'public'
     """
 
     if kwargs.get('type') is None:
@@ -1005,6 +1013,14 @@ class Entry(Node):
     return self._kind
 
   @property
+  def visibility(self):
+    return self._visibility
+
+  @property
+  def applied_visibility(self):
+    return self._visibility or 'system'
+
+  @property
   def name_short(self):
     return self.get_name_minimal()
 
@@ -1102,6 +1118,8 @@ class Entry(Node):
     else:
       self._enum = None
 
+    self._visibility = kwargs.get('visibility')
+
     self._property_keys = kwargs
 
   def merge(self):
@@ -1294,6 +1312,7 @@ class MergedEntry(Entry):
                     'tuple_values',
                     'type',
                     'type_notes',
+                    'visibility'
                    ]
 
     for p in props_common:
index 7b55273..4e5c35f 100755 (executable)
@@ -144,6 +144,11 @@ class MetadataParserXml:
     d = {}
 
     #
+    # Visibility
+    #
+    d['visibility'] = entry.get('visibility')
+
+    #
     # Enum
     #
     if entry.get('enum', 'false') == 'true':
index 2980c8d..8eedd54 100644 (file)
@@ -36,11 +36,14 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
     <tag id="EXIF">
       <!-- TODO: fill the tag description -->
     </tag>
+    <tag id="HAL2">
+        Tag only used by camera device HAL 2.x
+    </tag>
   </tags>
   <namespace name="android">
     <section name="colorCorrection">
       <controls>
-        <entry name="mode" type="byte" enum="true">
+        <entry name="mode" type="byte" visibility="public" enum="true">
           <enum>
             <value>TRANSFORM_MATRIX
               <notes>Use the android.colorCorrection.transform matrix
@@ -56,9 +59,9 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
             </value>
           </enum>
         </entry>
-        <entry name="transform" type="float"
-        type_notes="3x3 float matrix in row-major order"
-        container="array">
+        <entry name="transform" type="float" visibility="public"
+               type_notes="3x3 float matrix in row-major order"
+               container="array">
           <array>
             <size>3</size>
             <size>3</size>
@@ -82,7 +85,8 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
     </section>
     <section name="control">
       <controls>
-        <entry name="aeAntibandingMode" type="byte" enum="true">
+        <entry name="aeAntibandingMode" type="byte" visibility="public"
+               enum="true" >
           <enum>
             <value>OFF</value>
             <value>50HZ</value>
@@ -94,7 +98,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           <range>
           android.control.aeAvailableAntibandingModes</range>
         </entry>
-        <entry name="aeExposureCompensation" type="int32">
+        <entry name="aeExposureCompensation" type="int32" visibility="public">
           <description>Adjustment to AE target image
           brightness</description>
           <units>count of positive/negative EV steps</units>
@@ -103,7 +107,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           compensation of -1</notes>
           <tag id="BC" />
         </entry>
-        <entry name="aeLock" type="byte" enum="true">
+        <entry name="aeLock" type="byte" visibility="public" enum="true">
           <enum>
             <value>OFF
             <notes>Autoexposure lock is disabled; the AE algorithm
@@ -120,7 +124,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           ON_AUTO_FLASH_REDEYE.</notes>
           <tag id="BC" />
         </entry>
-        <entry name="aeMode" type="byte" enum="true">
+        <entry name="aeMode" type="byte" visibility="public" enum="true">
           <enum>
             <value>OFF
               <notes>Autoexposure is disabled; sensor.exposureTime
@@ -153,7 +157,8 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           AUTO</notes>
           <tag id="BC" />
         </entry>
-        <entry name="aeRegions" type="int32" container="array">
+        <entry name="aeRegions" type="int32" visibility="public"
+               container="array">
           <array>
             <size>5</size>
             <size>area_count</size>
@@ -175,8 +180,8 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           in the frame metadata</notes>
           <tag id="BC" />
         </entry>
-        <entry name="aeTargetFpsRange" type="int32"
-        container="array">
+        <entry name="aeTargetFpsRange" type="int32" visibility="public"
+               container="array">
           <array>
             <size>2</size>
           </array>
@@ -187,7 +192,8 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           of android.sensor.exposureTime</notes>
           <tag id="BC" />
         </entry>
-        <entry name="aePrecaptureTrigger" type="byte" enum="true">
+        <entry name="aePrecaptureTrigger" type="byte" visibility="public"
+               enum="true">
           <enum>
             <value>IDLE
               <notes>The trigger is idle.</notes>
@@ -209,7 +215,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           camera HAL device v3 header for details.</notes>
           <tag id="BC" />
         </entry>
-        <entry name="afMode" type="byte" enum="true">
+        <entry name="afMode" type="byte" visibility="public" enum="true">
           <enum>
             <value>OFF
             <notes>The 3A routines do not control the lens;
@@ -277,7 +283,8 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           mode it is set to</description>
           <tag id="BC" />
         </entry>
-        <entry name="afRegions" type="int32" container="array">
+        <entry name="afRegions" type="int32" visibility="public"
+               container="array">
           <array>
             <size>5</size>
             <size>area_count</size>
@@ -299,7 +306,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           in the frame metadata</notes>
           <tag id="BC" />
         </entry>
-        <entry name="afTrigger" type="byte" enum="true">
+        <entry name="afTrigger" type="byte" visibility="public" enum="true">
           <enum>
             <value>IDLE
               <notes>The trigger is idle.</notes>
@@ -322,7 +329,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           trigger, and return to initial AF state.</notes>
           <tag id="BC" />
         </entry>
-        <entry name="awbLock" type="byte" enum="true">
+        <entry name="awbLock" type="byte" visibility="public" enum="true">
           <enum>
             <value>OFF
             <notes>Auto-whitebalance lock is disabled; the AWB
@@ -340,7 +347,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           setting</notes>
           <tag id="BC" />
         </entry>
-        <entry name="awbMode" type="byte" enum="true">
+        <entry name="awbMode" type="byte" visibility="public" enum="true">
           <enum>
             <value>OFF</value>
             <value>AUTO</value>
@@ -359,7 +366,8 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           <tag id="BC" />
           <tag id="AWB" />
         </entry>
-        <entry name="awbRegions" type="int32" container="array">
+        <entry name="awbRegions" type="int32" visibility="public"
+               container="array">
           <array>
             <size>5</size>
             <size>area_count</size>
@@ -381,7 +389,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           in the frame metadata</notes>
           <tag id="BC" />
         </entry>
-        <entry name="captureIntent" type="byte" enum="true">
+        <entry name="captureIntent" type="byte" visibility="public" enum="true">
           <enum>
             <value>CUSTOM
             <notes>This request doesn't fall into the other
@@ -413,7 +421,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           <notes>Only used if android.control.mode != OFF.</notes>
           <tag id="BC" />
         </entry>
-        <entry name="effectMode" type="byte" enum="true">
+        <entry name="effectMode" type="byte" visibility="public" enum="true">
           <enum>
             <value>OFF</value>
             <value optional="true">MONO</value>
@@ -430,7 +438,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           <range>android.control.availableEffects</range>
           <tag id="BC" />
         </entry>
-        <entry name="mode" type="byte" enum="true">
+        <entry name="mode" type="byte" visibility="public" enum="true">
           <enum>
             <value>OFF
             <notes>Full application control of pipeline. All 3A
@@ -455,7 +463,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           <range>all must be supported</range>
           <tag id="BC" />
         </entry>
-        <entry name="sceneMode" type="byte" enum="true">
+        <entry name="sceneMode" type="byte" visibility="public" enum="true">
           <enum>
             <value id="0">UNSUPPORTED</value>
             <value>FACE_PRIORITY
@@ -488,7 +496,8 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           <range>android.control.availableSceneModes</range>
           <tag id="BC" />
         </entry>
-        <entry name="videoStabilizationMode" type="byte" enum="true">
+        <entry name="videoStabilizationMode" type="byte" visibility="public"
+               enum="true">
           <enum>
             <value>OFF</value>
             <value>ON</value>
@@ -502,8 +511,8 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
         </entry>
       </controls>
       <static>
-        <entry name="aeAvailableAntibandingModes" type="byte"
-        type_notes="list of enums" container="array">
+        <entry name="aeAvailableAntibandingModes" type="byte" visibility="public"
+               type_notes="list of enums" container="array">
           <array>
             <size>n</size>
           </array>
@@ -521,9 +530,9 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           ON_AUTO_FLASH/ON_ALWAYS_FLASH must be supported if flash
           unit is available</range>
         </entry>
-        <entry name="aeAvailableTargetFpsRanges" type="int32"
-        type_notes="list of pairs of frame rates"
-        container="array">
+        <entry name="aeAvailableTargetFpsRanges" type="int32" visibility="public"
+               type_notes="list of pairs of frame rates"
+               container="array">
           <array>
             <size>2</size>
             <size>n</size>
@@ -531,8 +540,8 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           <description>List of frame rate ranges supported by the
           AE algorithm/hardware</description>
         </entry>
-        <entry name="aeCompensationRange" type="int32"
-        container="array">
+        <entry name="aeCompensationRange" type="int32" visibility="public"
+               container="array">
           <array>
             <size>2</size>
           </array>
@@ -543,13 +552,13 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           size)</range>
           <tag id="BC" />
         </entry>
-        <entry name="aeCompensationStep" type="rational">
+        <entry name="aeCompensationStep" type="rational" visibility="public">
           <description>Smallest step by which exposure compensation
           can be changed</description>
           <range>&lt;= 1/2</range>
           <tag id="BC" />
         </entry>
-        <entry name="afAvailableModes" type="byte"
+        <entry name="afAvailableModes" type="byte" visibility="public"
         type_notes="List of enums" container="array">
           <array>
             <size>n</size>
@@ -560,8 +569,8 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           lens allows for changing focus</range>
           <tag id="BC" />
         </entry>
-        <entry name="availableEffects" type="byte"
-        type_notes="list of enums" container="array">
+        <entry name="availableEffects" type="byte" visibility="public"
+               type_notes="list of enums" container="array">
           <array>
             <size>n</size>
           </array>
@@ -570,9 +579,9 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           <range>OFF must be listed</range>
           <tag id="BC" />
         </entry>
-        <entry name="availableSceneModes" type="byte"
-        type_notes="list of enums from android.control.sceneMode, plus UNSUPPORTED to indicate no scene modes are supported"
-        container="array">
+        <entry name="availableSceneModes" type="byte" visibility="public"
+               type_notes="list of enums from android.control.sceneMode, plus UNSUPPORTED to indicate no scene modes are supported"
+               container="array">
           <array>
             <size>n</size>
           </array>
@@ -583,7 +592,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           <tag id="BC" />
         </entry>
         <entry name="availableVideoStabilizationModes" type="byte"
-        type_notes="List of enums." container="array">
+               visibility="public" type_notes="List of enums." container="array">
           <array>
             <size>n</size>
           </array>
@@ -592,23 +601,23 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           <range>OFF must be included</range>
           <tag id="BC" />
         </entry>
-        <entry name="awbAvailableModes" type="byte"
-        type_notes="List of enums (android.control.awbMode)"
-        container="array">
+        <entry name="awbAvailableModes" type="byte" visibility="public"
+               type_notes="List of enums (android.control.awbMode)"
+               container="array">
           <array>
             <size>n</size>
           </array>
           <range>OFF, AUTO must be included</range>
           <tag id="BC" />
         </entry>
-        <entry name="maxRegions" type="int32">
+        <entry name="maxRegions" type="int32" visibility="public">
           <description>For AE, AWB, and AF, how many individual
           regions can be listed for metering?</description>
           <range>&gt;= 1</range>
           <tag id="BC" />
         </entry>
-        <entry name="sceneModeOverrides" type="byte"
-        container="array">
+        <entry name="sceneModeOverrides" type="byte" visibility="system"
+               container="array">
           <array>
             <size>3</size>
             <size>lengthavailablescenemodes</size>
@@ -640,7 +649,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
         </entry>
       </static>
       <dynamic>
-        <entry name="aePrecaptureId" type="int32">
+        <entry name="aePrecaptureId" type="int32" visibility="hidden">
           <description>The ID sent with the latest
           CAMERA2_TRIGGER_PRECAPTURE_METERING call</description>
           <notes>Must be 0 if no
@@ -650,7 +659,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
         </entry>
         <clone entry="android.control.aeRegions" kind="controls">
         </clone>
-        <entry name="aeState" type="byte" enum="true">
+        <entry name="aeState" type="byte" visibility="public" enum="true">
           <enum>
             <value>INACTIVE
             <notes>AE is off.  When a camera device is opened, it starts in
@@ -685,7 +694,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
         </clone>
         <clone entry="android.control.afRegions" kind="controls">
         </clone>
-        <entry name="afState" type="byte" enum="true">
+        <entry name="afState" type="byte" visibility="public" enum="true">
           <enum>
             <value>INACTIVE
             <notes>AF off or has not yet tried to scan/been asked
@@ -717,7 +726,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           MSG_AUTOFOCUS notification must be send if a notification
           callback is registered.</notes>
         </entry>
-        <entry name="afTriggerId" type="int32">
+        <entry name="afTriggerId" type="int32" visibility="hidden">
           <description>The ID sent with the latest
           CAMERA2_TRIGGER_AUTOFOCUS call</description>
           <notes>Must be 0 if no CAMERA2_TRIGGER_AUTOFOCUS trigger
@@ -728,7 +737,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
         </clone>
         <clone entry="android.control.awbRegions" kind="controls">
         </clone>
-        <entry name="awbState" type="byte" enum="true">
+        <entry name="awbState" type="byte" visibility="public" enum="true">
           <enum>
             <value>INACTIVE
             <notes>AWB is not in auto mode.  When a camera device is opened, it
@@ -771,7 +780,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
     </section>
     <section name="edge">
       <controls>
-        <entry name="mode" type="byte" enum="true">
+        <entry name="mode" type="byte" visibility="public" enum="true">
           <enum>
             <value>OFF
             <notes>No edge enhancement is applied</notes></value>
@@ -815,7 +824,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           duration).</notes>
           <tag id="V1" />
         </entry>
-        <entry name="mode" type="byte" enum="true">
+        <entry name="mode" type="byte" visibility="public" enum="true">
           <enum>
             <value>OFF
             <notes>Do not fire the flash for this
@@ -835,7 +844,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
       </controls>
       <static>
         <namespace name="info">
-          <entry name="available" type="byte">
+          <entry name="available" type="byte" visibility="public">
             <description>Whether this camera has a
             flash</description>
             <units>boolean (0 = false, otherwise true)</units>
@@ -874,7 +883,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
         <clone entry="android.flash.firingTime" kind="controls">
         </clone>
         <clone entry="android.flash.mode" kind="controls"></clone>
-        <entry name="state" type="byte" enum="true">
+        <entry name="state" type="byte" visibility="public" enum="true">
           <enum>
             <value>UNAVAILABLE
             <notes>No flash on camera</notes></value>
@@ -961,7 +970,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
     </section>
     <section name="jpeg">
       <controls>
-        <entry name="gpsCoordinates" type="double"
+        <entry name="gpsCoordinates" type="double" visibility="public"
         type_notes="latitude, longitude, altitude. First two in degrees, the third in meters"
         container="array">
           <array>
@@ -972,39 +981,40 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           <range>(-180 - 180], [-90,90], [-inf, inf]</range>
           <tag id="BC" />
         </entry>
-        <entry name="gpsProcessingMethod" type="byte">
+        <entry name="gpsProcessingMethod" type="byte" visibility="public">
           <description>32 characters describing GPS algorithm to
           include in EXIF</description>
           <units>UTF-8 null-terminated string</units>
           <tag id="BC" />
         </entry>
-        <entry name="gpsTimestamp" type="int64">
+        <entry name="gpsTimestamp" type="int64" visibility="public">
           <description>Time GPS fix was made to include in
           EXIF</description>
           <units>UTC in seconds since January 1, 1970</units>
           <tag id="BC" />
         </entry>
-        <entry name="orientation" type="int32">
+        <entry name="orientation" type="int32" visibility="public">
           <description>Orientation of JPEG image to
           write</description>
           <units>Degrees in multiples of 90</units>
           <range>0, 90, 180, 270</range>
           <tag id="BC" />
         </entry>
-        <entry name="quality" type="byte">
+        <entry name="quality" type="byte" visibility="public">
           <description>Compression quality of the final JPEG
           image</description>
           <range>1-100; larger is higher quality</range>
           <notes>85-95 is typical usage range</notes>
           <tag id="BC" />
         </entry>
-        <entry name="thumbnailQuality" type="byte">
+        <entry name="thumbnailQuality" type="byte" visibility="public">
           <description>Compression quality of JPEG
           thumbnail</description>
           <range>1-100; larger is higher quality</range>
           <tag id="BC" />
         </entry>
-        <entry name="thumbnailSize" type="int32" container="array">
+        <entry name="thumbnailSize" type="int32" visibility="public"
+        container="array">
           <array>
             <size>2</size>
           </array>
@@ -1015,7 +1025,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
         </entry>
       </controls>
       <static>
-        <entry name="availableThumbnailSizes" type="int32"
+        <entry name="availableThumbnailSizes" type="int32" visibility="public"
         type_notes="list of resolution pairs" container="array">
           <array>
             <size>2</size>
@@ -1027,7 +1037,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           (0,0) for no thumbnail generation</range>
           <tag id="BC" />
         </entry>
-        <entry name="maxSize" type="int32">
+        <entry name="maxSize" type="int32" visibility="system">
           <description>Maximum size in bytes for the compressed
           JPEG buffer</description>
           <range>Must be large enough to fit any JPEG produced by
@@ -1068,7 +1078,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
     </section>
     <section name="lens">
       <controls>
-        <entry name="aperture" type="float">
+        <entry name="aperture" type="float" visibility="public">
           <description>Size of the lens aperture</description>
           <units>f-number (f/NNN)</units>
           <range>android.lens.info.availableApertures</range>
@@ -1076,7 +1086,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           pick from supported list</notes>
           <tag id="V1" />
         </entry>
-        <entry name="filterDensity" type="float">
+        <entry name="filterDensity" type="float" visibility="public">
           <description>State of lens neutral density
           filter(s)</description>
           <units>number of stops of filtering</units>
@@ -1085,14 +1095,14 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           pick from supported list</notes>
           <tag id="V1" />
         </entry>
-        <entry name="focalLength" type="float">
+        <entry name="focalLength" type="float" visibility="public">
           <description>Lens optical zoom setting</description>
           <units>focal length in mm</units>
           <range>&gt; 0</range>
           <notes>Will not be supported on most devices.</notes>
           <tag id="V1" />
         </entry>
-        <entry name="focusDistance" type="float">
+        <entry name="focusDistance" type="float" visibility="public">
           <description>Distance to plane of sharpest focus,
           measured from frontmost surface of the lens</description>
           <units>diopters (1/m)</units>
@@ -1102,7 +1112,8 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           <tag id="BC" />
           <tag id="V1" />
         </entry>
-        <entry name="opticalStabilizationMode" type="byte" enum="true">
+        <entry name="opticalStabilizationMode" type="byte" visibility="public"
+        enum="true">
           <enum>
             <value>OFF</value>
             <value optional="true">ON</value>
@@ -1116,7 +1127,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
       </controls>
       <static>
         <namespace name="info">
-          <entry name="availableApertures" type="float"
+          <entry name="availableApertures" type="float" visibility="public"
           container="array">
             <array>
               <size>n</size>
@@ -1128,7 +1139,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
             should be for the fixed aperture</notes>
             <tag id="V1" />
           </entry>
-          <entry name="availableFilterDensities" type="float"
+          <entry name="availableFilterDensities" type="float" visibility="public"
           container="array">
             <array>
               <size>n</size>
@@ -1142,7 +1153,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
             light by two stops)</notes>
             <tag id="V1" />
           </entry>
-          <entry name="availableFocalLengths" type="float"
+          <entry name="availableFocalLengths" type="float" visibility="public"
           type_notes="the list of available focal lengths"
           container="array">
             <array>
@@ -1158,7 +1169,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
             <tag id="V1" />
           </entry>
           <entry name="availableOpticalStabilization" type="byte"
-          type_notes="list of enums" container="array">
+          visibility="public" type_notes="list of enums" container="array">
             <array>
               <size>n</size>
             </array>
@@ -1197,7 +1208,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
             <range>Both values &gt;= 2</range>
             <tag id="V1" />
           </entry>
-          <entry name="hyperfocalDistance" type="float">
+          <entry name="hyperfocalDistance" type="float" visibility="public">
             <description>Hyperfocal distance for this lens; set to
             0 if fixed focus</description>
             <units>diopters</units>
@@ -1206,7 +1217,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
             API's 'fixed' setting</notes>
             <tag id="BC" />
           </entry>
-          <entry name="minimumFocusDistance" type="float">
+          <entry name="minimumFocusDistance" type="float" visibility="public">
             <description>Shortest distance from frontmost surface
             of the lens that can be focused correctly</description>
             <units>diopters</units>
@@ -1232,7 +1243,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
             1.</notes>
             <tag id="DNG" />
           </entry>
-          <entry name="shadingMapSize" type="int32"
+          <entry name="shadingMapSize" type="int32" visibility="public"
           type_notes="width and height of lens shading map"
           container="array">
             <array>
@@ -1244,7 +1255,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
             <tag id="V1" />
           </entry>
         </namespace>
-        <entry name="facing" type="byte" enum="true">
+        <entry name="facing" type="byte" visibility="public" enum="true">
           <enum>
             <value>FRONT</value>
             <value>BACK</value>
@@ -1294,7 +1305,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           <notes>Should be zero for fixed-focus cameras</notes>
           <tag id="BC" />
         </clone>
-        <entry name="focusRange" type="float">
+        <entry name="focusRange" type="float" visibility="public">
           <description>The range of scene distances that are in
           sharp focus (depth of field)</description>
           <units>pair of focus distances in diopters: (near,
@@ -1308,7 +1319,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
         kind="controls">
           <tag id="V1" />
         </clone>
-        <entry name="state" type="byte" enum="true">
+        <entry name="state" type="byte" visibility="public" enum="true">
           <enum>
             <value>STATIONARY</value>
           </enum>
@@ -1319,7 +1330,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
     </section>
     <section name="noiseReduction">
       <controls>
-        <entry name="mode" type="byte" enum="true">
+        <entry name="mode" type="byte" visibility="public" enum="true">
           <enum>
             <value>OFF
             <notes>No noise reduction is applied</notes></value>
@@ -1349,7 +1360,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
     </section>
     <section name="quirks">
       <static>
-        <entry name="meteringCropRegion" type="byte">
+        <entry name="meteringCropRegion" type="byte" visibility="system">
           <description>If set to 1, the camera service does not
           scale 'normalized' coordinates with respect to the crop
           region. This applies to metering input (a{e,f,wb}Region
@@ -1362,7 +1373,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           listed in static metadata. Support will be removed in
           future versions of camera service.</notes>
         </entry>
-        <entry name="triggerAfWithAuto" type="byte">
+        <entry name="triggerAfWithAuto" type="byte" visibility="system">
           <description>If set to 1, then the camera service always
           switches to FOCUS_MODE_AUTO before issuing a AF
           trigger.</description>
@@ -1372,7 +1383,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           not need to be listed in static metadata. Support will be
           removed in future versions of camera service</notes>
         </entry>
-        <entry name="useZslFormat" type="byte">
+        <entry name="useZslFormat" type="byte" visibility="system">
           <description>If set to 1, the camera service uses
           CAMERA2_PIXEL_FORMAT_ZSL instead of
           HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED for the zero
@@ -1388,13 +1399,13 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
     </section>
     <section name="request">
       <controls>
-        <entry name="frameCount" type="int32">
+        <entry name="frameCount" type="int32" visibility="system">
           <description>A frame counter set by the framework. Must
           be maintained unchanged in output frame</description>
           <units>incrementing integer</units>
           <range>Any int</range>
         </entry>
-        <entry name="id" type="int32">
+        <entry name="id" type="int32" visibility="hidden">
           <description>An application-specified ID for the current
           request. Must be maintained unchanged in output
           frame</description>
@@ -1402,7 +1413,11 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           <range>Any int</range>
           <tag id="V1" />
         </entry>
-        <entry name="inputStreams" type="byte">
+        <entry name="inputStreams" type="byte" visibility="system"
+               container="array">
+          <array>
+            <size>n</size>
+          </array>
           <description>List which camera reprocess stream is used
           for the source of reprocessing data.</description>
           <units>List of camera reprocess stream IDs</units>
@@ -1413,8 +1428,10 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           the same image.</range>
           <notes>Only meaningful when android.request.type ==
           REPROCESS. Ignored otherwise</notes>
+          <tag id="HAL2" />
         </entry>
-        <entry name="metadataMode" type="byte" enum="true">
+        <entry name="metadataMode" type="byte" visibility="system"
+               enum="true">
           <enum>
             <value>NONE
             <notes>No metadata should be produced on output, except
@@ -1433,7 +1450,11 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           <description>How much metadata to produce on
           output</description>
         </entry>
-        <entry name="outputStreams" type="byte">
+        <entry name="outputStreams" type="byte" visibility="system"
+               container="array">
+          <array>
+            <size>n</size>
+          </array>
           <description>Lists which camera output streams image data
           from this capture must be sent to</description>
           <units>List of camera stream IDs</units>
@@ -1443,8 +1464,9 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           data should simply be discarded. The image data must
           still be captured for metadata and statistics production,
           and the lens and flash must operate as requested.</notes>
+          <tag id="HAL2" />
         </entry>
-        <entry name="type" type="byte" enum="true">
+        <entry name="type" type="byte" visibility="system" enum="true">
           <enum>
             <value>CAPTURE
             <notes>Capture a new image from the imaging hardware,
@@ -1457,11 +1479,12 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
             needed for reprocessing with [RP]</notes></value>
           </enum>
           <description>The type of the request; either CAPTURE or
-          REPROCESS</description>
+          REPROCESS. For HAL3, this tag is redundant.</description>
+          <tag id="HAL2" />
         </entry>
       </controls>
       <static>
-        <entry name="maxNumOutputStreams" type="int32"
+        <entry name="maxNumOutputStreams" type="int32" visibility="public"
         container="array">
           <array>
             <size>3</size>
@@ -1478,7 +1501,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           one JPEG stream (snapshot)</notes>
           <tag id="BC" />
         </entry>
-        <entry name="maxNumReprocessStreams" type="int32"
+        <entry name="maxNumReprocessStreams" type="int32" visibility="system"
         container="array">
           <array>
             <size>1</size>
@@ -1489,7 +1512,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
         </entry>
       </static>
       <dynamic>
-        <entry name="frameCount" type="int32">
+        <entry name="frameCount" type="int32" visibility="public">
           <description>Number of frames captured since
           open()</description>
           <units>count of frames</units>
@@ -1505,7 +1528,8 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
     </section>
     <section name="scaler">
       <controls>
-        <entry name="cropRegion" type="int32" container="array">
+        <entry name="cropRegion" type="int32" visibility="public"
+               container="array">
           <array>
             <size>4</size>
           </array>
@@ -1552,7 +1576,8 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
         </entry>
       </controls>
       <static>
-        <entry name="availableFormats" type="int32" enum="true"
+        <entry name="availableFormats" type="int32"
+        visibility="public" enum="true"
         type_notes="values from HAL_PIXEL_FORMAT_* in /system/core/include/system/graphics.h"
         container="array">
           <array>
@@ -1583,7 +1608,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           <description>List of app-visible formats</description>
           <tag id="BC" />
         </entry>
-        <entry name="availableJpegMinDurations" type="int64"
+        <entry name="availableJpegMinDurations" type="int64" visibility="public"
         container="array">
           <array>
             <size>n</size>
@@ -1598,7 +1623,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           durations)</notes>
           <tag id="BC" />
         </entry>
-        <entry name="availableJpegSizes" type="int32"
+        <entry name="availableJpegSizes" type="int32" visibility="public"
         container="array">
           <array>
             <size>n</size>
@@ -1610,7 +1635,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           include: - half/quarter max resolution</range>
           <tag id="BC" />
         </entry>
-        <entry name="availableMaxDigitalZoom" type="float">
+        <entry name="availableMaxDigitalZoom" type="float" visibility="public">
           <description>The maximum ratio between active area width
           and crop region width, or between active area height and
           crop region height, if the crop region height is larger
@@ -1618,7 +1643,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           <range>&gt;=1</range>
           <tag id="BC" />
         </entry>
-        <entry name="availableProcessedMinDurations" type="int64"
+        <entry name="availableProcessedMinDurations" type="int64" visibility="public"
         container="array">
           <array>
             <size>n</size>
@@ -1633,7 +1658,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           durations)</notes>
           <tag id="BC" />
         </entry>
-        <entry name="availableProcessedSizes" type="int32"
+        <entry name="availableProcessedSizes" type="int32" visibility="public"
         container="array">
           <array>
             <size>n</size>
@@ -1681,7 +1706,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
     </section>
     <section name="sensor">
       <controls>
-        <entry name="exposureTime" type="int64">
+        <entry name="exposureTime" type="int64" visibility="public">
           <description>Duration each pixel is exposed to
           light</description>
           <units>nanoseconds</units>
@@ -1689,7 +1714,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           <notes>1/10000 - 30 sec range. No bulb mode</notes>
           <tag id="V1" />
         </entry>
-        <entry name="frameDuration" type="int64">
+        <entry name="frameDuration" type="int64" visibility="public">
           <description>Duration from start of frame exposure to
           start of next frame exposure</description>
           <units>nanoseconds</units>
@@ -1700,7 +1725,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           <tag id="V1" />
           <tag id="BC" />
         </entry>
-        <entry name="sensitivity" type="int32">
+        <entry name="sensitivity" type="int32" visibility="public">
           <description>Gain applied to image data. Must be
           implemented through analog gain only if set to values
           below 'maximum analog sensitivity'.</description>
@@ -1712,7 +1737,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
       </controls>
       <static>
         <namespace name="info">
-          <entry name="activeArraySize" type="int32"
+          <entry name="activeArraySize" type="int32" visibility="public"
           type_notes="Four ints defining the active pixel rectangle"
           container="array">
             <array>
@@ -1725,7 +1750,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
             pixel array is (0,0)</units>
             <tag id="DNG" />
           </entry>
-          <entry name="availableSensitivities" type="int32"
+          <entry name="availableSensitivities" type="int32" visibility="public"
           type_notes="List of supported sensitivity values"
           container="array">
             <array>
@@ -1753,7 +1778,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
             the sensor, in reading order</description>
             <tag id="DNG" />
           </entry>
-          <entry name="exposureTimeRange" type="int64"
+          <entry name="exposureTimeRange" type="int64" visibility="public"
           type_notes="nanoseconds" container="array">
             <array>
               <size>2</size>
@@ -1764,7 +1789,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
             sec)</range>
             <tag id="V1" />
           </entry>
-          <entry name="maxFrameDuration" type="int64">
+          <entry name="maxFrameDuration" type="int64" visibility="public">
             <description>Maximum frame duration (minimum frame
             rate)</description>
             <units>nanoseconds</units>
@@ -1775,7 +1800,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
             <tag id="BC" />
             <tag id="V1" />
           </entry>
-          <entry name="physicalSize" type="float"
+          <entry name="physicalSize" type="float" visibility="public"
           type_notes="width x height in millimeters"
           container="array">
             <array>
@@ -1809,7 +1834,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
             <tag id="DNG" />
           </entry>
         </namespace>
-        <entry name="baseGainFactor" type="rational">
+        <entry name="baseGainFactor" type="rational" visibility="public">
           <description>Gain factor from electrons to raw units when
           ISO=100</description>
           <tag id="V1" />
@@ -1891,7 +1916,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           adaptation</description>
           <tag id="DNG" />
         </entry>
-        <entry name="maxAnalogSensitivity" type="int32">
+        <entry name="maxAnalogSensitivity" type="int32" visibility="public">
           <description>Maximum sensitivity that is implemented
           purely through analog gain</description>
           <notes>For android.sensor.sensitivity values less than or
@@ -1918,7 +1943,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           across the sensor</notes>
           <tag id="V1" />
         </entry>
-        <entry name="orientation" type="int32">
+        <entry name="orientation" type="int32" visibility="public">
           <description>Clockwise angle through which the output
           image needs to be rotated to be upright on the device
           screen in its native orientation. Also defines the
@@ -1976,7 +2001,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
         kind="controls"></clone>
         <clone entry="android.sensor.sensitivity" kind="controls">
         </clone>
-        <entry name="timestamp" type="int64">
+        <entry name="timestamp" type="int64" visibility="public">
           <description>Time at start of exposure of first
           row</description>
           <units>nanoseconds</units>
@@ -2018,7 +2043,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
     </section>
     <section name="statistics">
       <controls>
-        <entry name="faceDetectMode" type="byte" enum="true">
+        <entry name="faceDetectMode" type="byte" visibility="public" enum="true">
           <enum>
             <value>OFF</value>
             <value>SIMPLE
@@ -2056,6 +2081,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
       <static>
         <namespace name="info">
           <entry name="availableFaceDetectModes" type="byte"
+          visibility="public"
           type_notes="List of enums" container="array">
             <array>
               <size>n</size>
@@ -2069,7 +2095,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
             supported</description>
             <range>&gt;= 64</range>
           </entry>
-          <entry name="maxFaceCount" type="int32">
+          <entry name="maxFaceCount" type="int32" visibility="public" >
             <description>If face detection is supported, how many
             faces can be detected at once</description>
             <range>&gt;= 4 if availableFaceDetectionModes lists
@@ -2097,7 +2123,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
       <dynamic>
         <clone entry="android.statistics.faceDetectMode"
         kind="controls"></clone>
-        <entry name="faceIds" type="int32" container="array">
+        <entry name="faceIds" type="int32" visibility="public" container="array">
           <array>
             <size>n</size>
           </array>
@@ -2106,7 +2132,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           <notes>Only available if faceDetectMode == FULL</notes>
           <tag id="BC" />
         </entry>
-        <entry name="faceLandmarks" type="int32"
+        <entry name="faceLandmarks" type="int32" visibility="public"
         type_notes="(leftEyeX, leftEyeY, rightEyeX, rightEyeY, mouthX, mouthY)"
         container="array">
           <array>
@@ -2118,7 +2144,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           <notes>Only available if faceDetectMode == FULL</notes>
           <tag id="BC" />
         </entry>
-        <entry name="faceRectangles" type="int32"
+        <entry name="faceRectangles" type="int32" visibility="public"
         type_notes="(xmin, ymin, xmax, ymax). (0,0) is top-left of active pixel area"
         container="array">
           <array>
@@ -2130,7 +2156,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           <notes>Only available if faceDetectMode != OFF</notes>
           <tag id="BC" />
         </entry>
-        <entry name="faceScores" type="byte" container="array">
+        <entry name="faceScores" type="byte" visibility="public" container="array">
           <array>
             <size>n</size>
           </array>
@@ -2177,19 +2203,19 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
     </section>
     <section name="tonemap">
       <controls>
-        <entry name="curveBlue" type="float">
+        <entry name="curveBlue" type="float" visibility="public" >
           <description>Table mapping blue input values to output
           values</description>
           <units>same as android.tonemap.curveRed</units>
           <range>same as android.tonemap.curveRed</range>
         </entry>
-        <entry name="curveGreen" type="float">
+        <entry name="curveGreen" type="float" visibility="public" >
           <description>Table mapping green input values to output
           values</description>
           <units>same as android.tonemap.curveRed</units>
           <range>same as android.tonemap.curveRed</range>
         </entry>
-        <entry name="curveRed" type="float"
+        <entry name="curveRed" type="float" visibility="public"
         type_notes="A 1D array of pairs of floats. mapping a 0-1 input range to a 0-1 output range."
         container="array">
           <array>
@@ -2208,7 +2234,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           0.25, 0.3 -&gt; 0.5, 0.5 -&gt; 0.64</notes>
           <tag id="DNG" />
         </entry>
-        <entry name="mode" type="byte" enum="true">
+        <entry name="mode" type="byte" visibility="public" enum="true">
           <enum>
             <value>CONTRAST_CURVE
             <notes>Use the tone mapping curve specified in
@@ -2223,7 +2249,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
         </entry>
       </controls>
       <static>
-        <entry name="maxCurvePoints" type="int32">
+        <entry name="maxCurvePoints" type="int32" visibility="public" >
           <description>Maximum number of supported points in the
           tonemap curve</description>
           <range>&gt;= 128</range>
@@ -2242,7 +2268,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
     </section>
     <section name="led">
       <controls>
-        <entry name="transmit" type="byte" enum="true">
+        <entry name="transmit" type="byte" visibility="hidden" enum="true">
           <enum>
             <value>OFF</value>
             <value>ON</value>
@@ -2266,7 +2292,8 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
         <clone entry="android.led.transmit" kind="controls"></clone>
       </dynamic>
       <static>
-        <entry name="availableLeds" type="byte" enum="true" container="array">
+        <entry name="availableLeds" type="byte" visibility="hidden" enum="true"
+               container="array">
           <array>
             <size>n</size>
           </array>
@@ -2282,7 +2309,8 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
     </section>
     <section name="info">
       <static>
-        <entry name="supportedHardwareLevel" type="byte" enum="true">
+        <entry name="supportedHardwareLevel" type="byte" visibility="public"
+               enum="true" >
           <enum>
             <value>LIMITED</value>
             <value>FULL</value>
index 259aebf..f567333 100644 (file)
                 </restriction>
             </simpleType>
         </attribute>
+        <attribute name="visibility">
+            <simpleType>
+                <restriction base="string">
+                    <enumeration value="system" />
+                    <enumeration value="hidden" />
+                    <enumeration value="public" />
+                </restriction>
+            </simpleType>
+        </attribute>
     </complexType>
 
     <complexType name="EnumType">
index 253db61..2fee0a1 100644 (file)
@@ -72,6 +72,9 @@
             </clone>
         % else:
             <entry name="${prop.name_short}" type="${prop.type}"
+          % if prop.visibility:
+                visibility="${prop.visibility}"
+          % endif
           % if prop.enum:
                 enum="true"
           % endif
index 646c7ec..2e24fb9 100644 (file)
@@ -103,213 +103,232 @@ typedef enum camera_metadata_section_start {
  * system/media/camera/src/camera_metadata_tag_info.c
  */
 typedef enum camera_metadata_tag {
-    ANDROID_COLOR_CORRECTION_MODE  = ANDROID_COLOR_CORRECTION_START,
-    ANDROID_COLOR_CORRECTION_TRANSFORM,
+    ANDROID_COLOR_CORRECTION_MODE =                   // enum         | public
+            ANDROID_COLOR_CORRECTION_START,
+    ANDROID_COLOR_CORRECTION_TRANSFORM,               // float[]      | public
     ANDROID_COLOR_CORRECTION_END,
 
-    ANDROID_CONTROL_AE_ANTIBANDING_MODE
-                                   = ANDROID_CONTROL_START,
-    ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION,
-    ANDROID_CONTROL_AE_LOCK,
-    ANDROID_CONTROL_AE_MODE,
-    ANDROID_CONTROL_AE_REGIONS,
-    ANDROID_CONTROL_AE_TARGET_FPS_RANGE,
-    ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER,
-    ANDROID_CONTROL_AF_MODE,
-    ANDROID_CONTROL_AF_REGIONS,
-    ANDROID_CONTROL_AF_TRIGGER,
-    ANDROID_CONTROL_AWB_LOCK,
-    ANDROID_CONTROL_AWB_MODE,
-    ANDROID_CONTROL_AWB_REGIONS,
-    ANDROID_CONTROL_CAPTURE_INTENT,
-    ANDROID_CONTROL_EFFECT_MODE,
-    ANDROID_CONTROL_MODE,
-    ANDROID_CONTROL_SCENE_MODE,
-    ANDROID_CONTROL_VIDEO_STABILIZATION_MODE,
-    ANDROID_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES,
-    ANDROID_CONTROL_AE_AVAILABLE_MODES,
-    ANDROID_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES,
-    ANDROID_CONTROL_AE_COMPENSATION_RANGE,
-    ANDROID_CONTROL_AE_COMPENSATION_STEP,
-    ANDROID_CONTROL_AF_AVAILABLE_MODES,
-    ANDROID_CONTROL_AVAILABLE_EFFECTS,
-    ANDROID_CONTROL_AVAILABLE_SCENE_MODES,
+    ANDROID_CONTROL_AE_ANTIBANDING_MODE =             // enum         | public
+            ANDROID_CONTROL_START,
+    ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION,         // int32        | public
+    ANDROID_CONTROL_AE_LOCK,                          // enum         | public
+    ANDROID_CONTROL_AE_MODE,                          // enum         | public
+    ANDROID_CONTROL_AE_REGIONS,                       // int32[]      | public
+    ANDROID_CONTROL_AE_TARGET_FPS_RANGE,              // int32[]      | public
+    ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER,            // enum         | public
+    ANDROID_CONTROL_AF_MODE,                          // enum         | public
+    ANDROID_CONTROL_AF_REGIONS,                       // int32[]      | public
+    ANDROID_CONTROL_AF_TRIGGER,                       // enum         | public
+    ANDROID_CONTROL_AWB_LOCK,                         // enum         | public
+    ANDROID_CONTROL_AWB_MODE,                         // enum         | public
+    ANDROID_CONTROL_AWB_REGIONS,                      // int32[]      | public
+    ANDROID_CONTROL_CAPTURE_INTENT,                   // enum         | public
+    ANDROID_CONTROL_EFFECT_MODE,                      // enum         | public
+    ANDROID_CONTROL_MODE,                             // enum         | public
+    ANDROID_CONTROL_SCENE_MODE,                       // enum         | public
+    ANDROID_CONTROL_VIDEO_STABILIZATION_MODE,         // enum         | public
+    ANDROID_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES,   // byte[]       | public
+    ANDROID_CONTROL_AE_AVAILABLE_MODES,               // byte[]       | system
+    ANDROID_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES,   // int32[]      | public
+    ANDROID_CONTROL_AE_COMPENSATION_RANGE,            // int32[]      | public
+    ANDROID_CONTROL_AE_COMPENSATION_STEP,             // rational     | public
+    ANDROID_CONTROL_AF_AVAILABLE_MODES,               // byte[]       | public
+    ANDROID_CONTROL_AVAILABLE_EFFECTS,                // byte[]       | public
+    ANDROID_CONTROL_AVAILABLE_SCENE_MODES,            // byte[]       | public
     ANDROID_CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES,
-    ANDROID_CONTROL_AWB_AVAILABLE_MODES,
-    ANDROID_CONTROL_MAX_REGIONS,
-    ANDROID_CONTROL_SCENE_MODE_OVERRIDES,
-    ANDROID_CONTROL_AE_PRECAPTURE_ID,
-    ANDROID_CONTROL_AE_STATE,
-    ANDROID_CONTROL_AF_STATE,
-    ANDROID_CONTROL_AF_TRIGGER_ID,
-    ANDROID_CONTROL_AWB_STATE,
+                                                      // byte[]       | public
+    ANDROID_CONTROL_AWB_AVAILABLE_MODES,              // byte[]       | public
+    ANDROID_CONTROL_MAX_REGIONS,                      // int32        | public
+    ANDROID_CONTROL_SCENE_MODE_OVERRIDES,             // byte[]       | system
+    ANDROID_CONTROL_AE_PRECAPTURE_ID,                 // int32        | hidden
+    ANDROID_CONTROL_AE_STATE,                         // enum         | public
+    ANDROID_CONTROL_AF_STATE,                         // enum         | public
+    ANDROID_CONTROL_AF_TRIGGER_ID,                    // int32        | hidden
+    ANDROID_CONTROL_AWB_STATE,                        // enum         | public
     ANDROID_CONTROL_END,
 
-    ANDROID_DEMOSAIC_MODE          = ANDROID_DEMOSAIC_START,
+    ANDROID_DEMOSAIC_MODE =                           // enum         | system
+            ANDROID_DEMOSAIC_START,
     ANDROID_DEMOSAIC_END,
 
-    ANDROID_EDGE_MODE              = ANDROID_EDGE_START,
-    ANDROID_EDGE_STRENGTH,
+    ANDROID_EDGE_MODE =                               // enum         | public
+            ANDROID_EDGE_START,
+    ANDROID_EDGE_STRENGTH,                            // byte         | system
     ANDROID_EDGE_END,
 
-    ANDROID_FLASH_FIRING_POWER     = ANDROID_FLASH_START,
-    ANDROID_FLASH_FIRING_TIME,
-    ANDROID_FLASH_MODE,
-    ANDROID_FLASH_COLOR_TEMPERATURE,
-    ANDROID_FLASH_MAX_ENERGY,
-    ANDROID_FLASH_STATE,
+    ANDROID_FLASH_FIRING_POWER =                      // byte         | system
+            ANDROID_FLASH_START,
+    ANDROID_FLASH_FIRING_TIME,                        // int64        | system
+    ANDROID_FLASH_MODE,                               // enum         | public
+    ANDROID_FLASH_COLOR_TEMPERATURE,                  // byte         | system
+    ANDROID_FLASH_MAX_ENERGY,                         // byte         | system
+    ANDROID_FLASH_STATE,                              // enum         | public
     ANDROID_FLASH_END,
 
-    ANDROID_FLASH_INFO_AVAILABLE   = ANDROID_FLASH_INFO_START,
-    ANDROID_FLASH_INFO_CHARGE_DURATION,
+    ANDROID_FLASH_INFO_AVAILABLE =                    // byte         | public
+            ANDROID_FLASH_INFO_START,
+    ANDROID_FLASH_INFO_CHARGE_DURATION,               // int64        | system
     ANDROID_FLASH_INFO_END,
 
-    ANDROID_GEOMETRIC_MODE         = ANDROID_GEOMETRIC_START,
-    ANDROID_GEOMETRIC_STRENGTH,
+    ANDROID_GEOMETRIC_MODE =                          // enum         | system
+            ANDROID_GEOMETRIC_START,
+    ANDROID_GEOMETRIC_STRENGTH,                       // byte         | system
     ANDROID_GEOMETRIC_END,
 
-    ANDROID_HOT_PIXEL_MODE         = ANDROID_HOT_PIXEL_START,
+    ANDROID_HOT_PIXEL_MODE =                          // enum         | system
+            ANDROID_HOT_PIXEL_START,
     ANDROID_HOT_PIXEL_END,
 
-    ANDROID_HOT_PIXEL_INFO_MAP     = ANDROID_HOT_PIXEL_INFO_START,
+    ANDROID_HOT_PIXEL_INFO_MAP =                      // int32[]      | system
+            ANDROID_HOT_PIXEL_INFO_START,
     ANDROID_HOT_PIXEL_INFO_END,
 
-    ANDROID_JPEG_GPS_COORDINATES   = ANDROID_JPEG_START,
-    ANDROID_JPEG_GPS_PROCESSING_METHOD,
-    ANDROID_JPEG_GPS_TIMESTAMP,
-    ANDROID_JPEG_ORIENTATION,
-    ANDROID_JPEG_QUALITY,
-    ANDROID_JPEG_THUMBNAIL_QUALITY,
-    ANDROID_JPEG_THUMBNAIL_SIZE,
-    ANDROID_JPEG_AVAILABLE_THUMBNAIL_SIZES,
-    ANDROID_JPEG_MAX_SIZE,
-    ANDROID_JPEG_SIZE,
+    ANDROID_JPEG_GPS_COORDINATES =                    // double[]     | public
+            ANDROID_JPEG_START,
+    ANDROID_JPEG_GPS_PROCESSING_METHOD,               // byte         | public
+    ANDROID_JPEG_GPS_TIMESTAMP,                       // int64        | public
+    ANDROID_JPEG_ORIENTATION,                         // int32        | public
+    ANDROID_JPEG_QUALITY,                             // byte         | public
+    ANDROID_JPEG_THUMBNAIL_QUALITY,                   // byte         | public
+    ANDROID_JPEG_THUMBNAIL_SIZE,                      // int32[]      | public
+    ANDROID_JPEG_AVAILABLE_THUMBNAIL_SIZES,           // int32[]      | public
+    ANDROID_JPEG_MAX_SIZE,                            // int32        | system
+    ANDROID_JPEG_SIZE,                                // int32        | system
     ANDROID_JPEG_END,
 
-    ANDROID_LENS_APERTURE          = ANDROID_LENS_START,
-    ANDROID_LENS_FILTER_DENSITY,
-    ANDROID_LENS_FOCAL_LENGTH,
-    ANDROID_LENS_FOCUS_DISTANCE,
-    ANDROID_LENS_OPTICAL_STABILIZATION_MODE,
-    ANDROID_LENS_FACING,
-    ANDROID_LENS_OPTICAL_AXIS_ANGLE,
-    ANDROID_LENS_POSITION,
-    ANDROID_LENS_FOCUS_RANGE,
-    ANDROID_LENS_STATE,
+    ANDROID_LENS_APERTURE =                           // float        | public
+            ANDROID_LENS_START,
+    ANDROID_LENS_FILTER_DENSITY,                      // float        | public
+    ANDROID_LENS_FOCAL_LENGTH,                        // float        | public
+    ANDROID_LENS_FOCUS_DISTANCE,                      // float        | public
+    ANDROID_LENS_OPTICAL_STABILIZATION_MODE,          // enum         | public
+    ANDROID_LENS_FACING,                              // enum         | public
+    ANDROID_LENS_OPTICAL_AXIS_ANGLE,                  // float[]      | system
+    ANDROID_LENS_POSITION,                            // float[]      | system
+    ANDROID_LENS_FOCUS_RANGE,                         // float        | public
+    ANDROID_LENS_STATE,                               // enum         | public
     ANDROID_LENS_END,
 
-    ANDROID_LENS_INFO_AVAILABLE_APERTURES
-                                   = ANDROID_LENS_INFO_START,
-    ANDROID_LENS_INFO_AVAILABLE_FILTER_DENSITIES,
-    ANDROID_LENS_INFO_AVAILABLE_FOCAL_LENGTHS,
-    ANDROID_LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION,
-    ANDROID_LENS_INFO_GEOMETRIC_CORRECTION_MAP,
-    ANDROID_LENS_INFO_GEOMETRIC_CORRECTION_MAP_SIZE,
-    ANDROID_LENS_INFO_HYPERFOCAL_DISTANCE,
-    ANDROID_LENS_INFO_MINIMUM_FOCUS_DISTANCE,
-    ANDROID_LENS_INFO_SHADING_MAP,
-    ANDROID_LENS_INFO_SHADING_MAP_SIZE,
+    ANDROID_LENS_INFO_AVAILABLE_APERTURES =           // float[]      | public
+            ANDROID_LENS_INFO_START,
+    ANDROID_LENS_INFO_AVAILABLE_FILTER_DENSITIES,     // float[]      | public
+    ANDROID_LENS_INFO_AVAILABLE_FOCAL_LENGTHS,        // float[]      | public
+    ANDROID_LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION,// byte[]       | public
+    ANDROID_LENS_INFO_GEOMETRIC_CORRECTION_MAP,       // float[]      | system
+    ANDROID_LENS_INFO_GEOMETRIC_CORRECTION_MAP_SIZE,  // int32[]      | system
+    ANDROID_LENS_INFO_HYPERFOCAL_DISTANCE,            // float        | public
+    ANDROID_LENS_INFO_MINIMUM_FOCUS_DISTANCE,         // float        | public
+    ANDROID_LENS_INFO_SHADING_MAP,                    // float[]      | system
+    ANDROID_LENS_INFO_SHADING_MAP_SIZE,               // int32[]      | public
     ANDROID_LENS_INFO_END,
 
-    ANDROID_NOISE_REDUCTION_MODE   = ANDROID_NOISE_REDUCTION_START,
-    ANDROID_NOISE_REDUCTION_STRENGTH,
+    ANDROID_NOISE_REDUCTION_MODE =                    // enum         | public
+            ANDROID_NOISE_REDUCTION_START,
+    ANDROID_NOISE_REDUCTION_STRENGTH,                 // byte         | system
     ANDROID_NOISE_REDUCTION_END,
 
-    ANDROID_QUIRKS_METERING_CROP_REGION
-                                   = ANDROID_QUIRKS_START,
-    ANDROID_QUIRKS_TRIGGER_AF_WITH_AUTO,
-    ANDROID_QUIRKS_USE_ZSL_FORMAT,
+    ANDROID_QUIRKS_METERING_CROP_REGION =             // byte         | system
+            ANDROID_QUIRKS_START,
+    ANDROID_QUIRKS_TRIGGER_AF_WITH_AUTO,              // byte         | system
+    ANDROID_QUIRKS_USE_ZSL_FORMAT,                    // byte         | system
     ANDROID_QUIRKS_END,
 
-    ANDROID_REQUEST_FRAME_COUNT    = ANDROID_REQUEST_START,
-    ANDROID_REQUEST_ID,
-    ANDROID_REQUEST_INPUT_STREAMS,
-    ANDROID_REQUEST_METADATA_MODE,
-    ANDROID_REQUEST_OUTPUT_STREAMS,
-    ANDROID_REQUEST_TYPE,
-    ANDROID_REQUEST_MAX_NUM_OUTPUT_STREAMS,
-    ANDROID_REQUEST_MAX_NUM_REPROCESS_STREAMS,
+    ANDROID_REQUEST_FRAME_COUNT =                     // int32        | public
+            ANDROID_REQUEST_START,
+    ANDROID_REQUEST_ID,                               // int32        | hidden
+    ANDROID_REQUEST_INPUT_STREAMS,                    // byte[]       | system
+    ANDROID_REQUEST_METADATA_MODE,                    // enum         | system
+    ANDROID_REQUEST_OUTPUT_STREAMS,                   // byte[]       | system
+    ANDROID_REQUEST_TYPE,                             // enum         | system
+    ANDROID_REQUEST_MAX_NUM_OUTPUT_STREAMS,           // int32[]      | public
+    ANDROID_REQUEST_MAX_NUM_REPROCESS_STREAMS,        // int32[]      | system
     ANDROID_REQUEST_END,
 
-    ANDROID_SCALER_CROP_REGION     = ANDROID_SCALER_START,
-    ANDROID_SCALER_AVAILABLE_FORMATS,
-    ANDROID_SCALER_AVAILABLE_JPEG_MIN_DURATIONS,
-    ANDROID_SCALER_AVAILABLE_JPEG_SIZES,
-    ANDROID_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM,
-    ANDROID_SCALER_AVAILABLE_PROCESSED_MIN_DURATIONS,
-    ANDROID_SCALER_AVAILABLE_PROCESSED_SIZES,
-    ANDROID_SCALER_AVAILABLE_RAW_MIN_DURATIONS,
-    ANDROID_SCALER_AVAILABLE_RAW_SIZES,
+    ANDROID_SCALER_CROP_REGION =                      // int32[]      | public
+            ANDROID_SCALER_START,
+    ANDROID_SCALER_AVAILABLE_FORMATS,                 // enum[]       | public
+    ANDROID_SCALER_AVAILABLE_JPEG_MIN_DURATIONS,      // int64[]      | public
+    ANDROID_SCALER_AVAILABLE_JPEG_SIZES,              // int32[]      | public
+    ANDROID_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM,        // float        | public
+    ANDROID_SCALER_AVAILABLE_PROCESSED_MIN_DURATIONS, // int64[]      | public
+    ANDROID_SCALER_AVAILABLE_PROCESSED_SIZES,         // int32[]      | public
+    ANDROID_SCALER_AVAILABLE_RAW_MIN_DURATIONS,       // int64[]      | system
+    ANDROID_SCALER_AVAILABLE_RAW_SIZES,               // int32[]      | system
     ANDROID_SCALER_END,
 
-    ANDROID_SENSOR_EXPOSURE_TIME   = ANDROID_SENSOR_START,
-    ANDROID_SENSOR_FRAME_DURATION,
-    ANDROID_SENSOR_SENSITIVITY,
-    ANDROID_SENSOR_BASE_GAIN_FACTOR,
-    ANDROID_SENSOR_BLACK_LEVEL_PATTERN,
-    ANDROID_SENSOR_CALIBRATION_TRANSFORM1,
-    ANDROID_SENSOR_CALIBRATION_TRANSFORM2,
-    ANDROID_SENSOR_COLOR_TRANSFORM1,
-    ANDROID_SENSOR_COLOR_TRANSFORM2,
-    ANDROID_SENSOR_FORWARD_MATRIX1,
-    ANDROID_SENSOR_FORWARD_MATRIX2,
-    ANDROID_SENSOR_MAX_ANALOG_SENSITIVITY,
-    ANDROID_SENSOR_NOISE_MODEL_COEFFICIENTS,
-    ANDROID_SENSOR_ORIENTATION,
-    ANDROID_SENSOR_REFERENCE_ILLUMINANT1,
-    ANDROID_SENSOR_REFERENCE_ILLUMINANT2,
-    ANDROID_SENSOR_TIMESTAMP,
+    ANDROID_SENSOR_EXPOSURE_TIME =                    // int64        | public
+            ANDROID_SENSOR_START,
+    ANDROID_SENSOR_FRAME_DURATION,                    // int64        | public
+    ANDROID_SENSOR_SENSITIVITY,                       // int32        | public
+    ANDROID_SENSOR_BASE_GAIN_FACTOR,                  // rational     | public
+    ANDROID_SENSOR_BLACK_LEVEL_PATTERN,               // int32[]      | system
+    ANDROID_SENSOR_CALIBRATION_TRANSFORM1,            // rational[]   | system
+    ANDROID_SENSOR_CALIBRATION_TRANSFORM2,            // rational[]   | system
+    ANDROID_SENSOR_COLOR_TRANSFORM1,                  // rational[]   | system
+    ANDROID_SENSOR_COLOR_TRANSFORM2,                  // rational[]   | system
+    ANDROID_SENSOR_FORWARD_MATRIX1,                   // rational[]   | system
+    ANDROID_SENSOR_FORWARD_MATRIX2,                   // rational[]   | system
+    ANDROID_SENSOR_MAX_ANALOG_SENSITIVITY,            // int32        | public
+    ANDROID_SENSOR_NOISE_MODEL_COEFFICIENTS,          // float[]      | system
+    ANDROID_SENSOR_ORIENTATION,                       // int32        | public
+    ANDROID_SENSOR_REFERENCE_ILLUMINANT1,             // enum         | system
+    ANDROID_SENSOR_REFERENCE_ILLUMINANT2,             // byte         | system
+    ANDROID_SENSOR_TIMESTAMP,                         // int64        | public
     ANDROID_SENSOR_END,
 
-    ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE
-                                   = ANDROID_SENSOR_INFO_START,
-    ANDROID_SENSOR_INFO_AVAILABLE_SENSITIVITIES,
-    ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT,
-    ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE,
-    ANDROID_SENSOR_INFO_MAX_FRAME_DURATION,
-    ANDROID_SENSOR_INFO_PHYSICAL_SIZE,
-    ANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE,
-    ANDROID_SENSOR_INFO_WHITE_LEVEL,
+    ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE =           // int32[]      | public
+            ANDROID_SENSOR_INFO_START,
+    ANDROID_SENSOR_INFO_AVAILABLE_SENSITIVITIES,      // int32[]      | public
+    ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT,     // enum         | system
+    ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE,          // int64[]      | public
+    ANDROID_SENSOR_INFO_MAX_FRAME_DURATION,           // int64        | public
+    ANDROID_SENSOR_INFO_PHYSICAL_SIZE,                // float[]      | public
+    ANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE,             // int32[]      | system
+    ANDROID_SENSOR_INFO_WHITE_LEVEL,                  // int32        | system
     ANDROID_SENSOR_INFO_END,
 
-    ANDROID_SHADING_MODE           = ANDROID_SHADING_START,
-    ANDROID_SHADING_STRENGTH,
+    ANDROID_SHADING_MODE =                            // enum         | system
+            ANDROID_SHADING_START,
+    ANDROID_SHADING_STRENGTH,                         // byte         | system
     ANDROID_SHADING_END,
 
-    ANDROID_STATISTICS_FACE_DETECT_MODE
-                                   = ANDROID_STATISTICS_START,
-    ANDROID_STATISTICS_HISTOGRAM_MODE,
-    ANDROID_STATISTICS_SHARPNESS_MAP_MODE,
-    ANDROID_STATISTICS_FACE_IDS,
-    ANDROID_STATISTICS_FACE_LANDMARKS,
-    ANDROID_STATISTICS_FACE_RECTANGLES,
-    ANDROID_STATISTICS_FACE_SCORES,
-    ANDROID_STATISTICS_HISTOGRAM,
-    ANDROID_STATISTICS_SHARPNESS_MAP,
+    ANDROID_STATISTICS_FACE_DETECT_MODE =             // enum         | public
+            ANDROID_STATISTICS_START,
+    ANDROID_STATISTICS_HISTOGRAM_MODE,                // enum         | system
+    ANDROID_STATISTICS_SHARPNESS_MAP_MODE,            // enum         | system
+    ANDROID_STATISTICS_FACE_IDS,                      // int32[]      | public
+    ANDROID_STATISTICS_FACE_LANDMARKS,                // int32[]      | public
+    ANDROID_STATISTICS_FACE_RECTANGLES,               // int32[]      | public
+    ANDROID_STATISTICS_FACE_SCORES,                   // byte[]       | public
+    ANDROID_STATISTICS_HISTOGRAM,                     // int32[]      | system
+    ANDROID_STATISTICS_SHARPNESS_MAP,                 // int32[]      | system
     ANDROID_STATISTICS_END,
 
-    ANDROID_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES
-                                   = ANDROID_STATISTICS_INFO_START,
-    ANDROID_STATISTICS_INFO_HISTOGRAM_BUCKET_COUNT,
-    ANDROID_STATISTICS_INFO_MAX_FACE_COUNT,
-    ANDROID_STATISTICS_INFO_MAX_HISTOGRAM_COUNT,
-    ANDROID_STATISTICS_INFO_MAX_SHARPNESS_MAP_VALUE,
-    ANDROID_STATISTICS_INFO_SHARPNESS_MAP_SIZE,
+    ANDROID_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES = 
+                                                      // byte[]       | public
+            ANDROID_STATISTICS_INFO_START,
+    ANDROID_STATISTICS_INFO_HISTOGRAM_BUCKET_COUNT,   // int32        | system
+    ANDROID_STATISTICS_INFO_MAX_FACE_COUNT,           // int32        | public
+    ANDROID_STATISTICS_INFO_MAX_HISTOGRAM_COUNT,      // int32        | system
+    ANDROID_STATISTICS_INFO_MAX_SHARPNESS_MAP_VALUE,  // int32        | system
+    ANDROID_STATISTICS_INFO_SHARPNESS_MAP_SIZE,       // int32[]      | system
     ANDROID_STATISTICS_INFO_END,
 
-    ANDROID_TONEMAP_CURVE_BLUE     = ANDROID_TONEMAP_START,
-    ANDROID_TONEMAP_CURVE_GREEN,
-    ANDROID_TONEMAP_CURVE_RED,
-    ANDROID_TONEMAP_MODE,
-    ANDROID_TONEMAP_MAX_CURVE_POINTS,
+    ANDROID_TONEMAP_CURVE_BLUE =                      // float        | public
+            ANDROID_TONEMAP_START,
+    ANDROID_TONEMAP_CURVE_GREEN,                      // float        | public
+    ANDROID_TONEMAP_CURVE_RED,                        // float[]      | public
+    ANDROID_TONEMAP_MODE,                             // enum         | public
+    ANDROID_TONEMAP_MAX_CURVE_POINTS,                 // int32        | public
     ANDROID_TONEMAP_END,
 
-    ANDROID_LED_TRANSMIT           = ANDROID_LED_START,
-    ANDROID_LED_AVAILABLE_LEDS,
+    ANDROID_LED_TRANSMIT =                            // enum         | hidden
+            ANDROID_LED_START,
+    ANDROID_LED_AVAILABLE_LEDS,                       // enum[]       | hidden
     ANDROID_LED_END,
 
-    ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL
-                                   = ANDROID_INFO_START,
+    ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL =           // enum         | public
+            ANDROID_INFO_START,
     ANDROID_INFO_END,
 
 } camera_metadata_tag_t;