camera_metadata: Add visibility support, and a HAL2 tag

- 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
diff --git a/camera/docs/CameraMetadataKeys.mako b/camera/docs/CameraMetadataKeys.mako
index 18af316..1c8d47c 100644
--- a/camera/docs/CameraMetadataKeys.mako
+++ b/camera/docs/CameraMetadataKeys.mako
@@ -42,6 +42,11 @@
 ##
 ## 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 @@
 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
diff --git a/camera/docs/camera_metadata_tags.mako b/camera/docs/camera_metadata_tags.mako
index 2bffe40..105f7e1 100644
--- a/camera/docs/camera_metadata_tags.mako
+++ b/camera/docs/camera_metadata_tags.mako
@@ -27,6 +27,18 @@
  * 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 @@
     % 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,
diff --git a/camera/docs/docs.html b/camera/docs/docs.html
index 210e9d8..c270b61 100644
--- a/camera/docs/docs.html
+++ b/camera/docs/docs.html
@@ -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">
@@ -363,6 +365,7 @@
       <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>
@@ -381,6 +384,7 @@
         <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>
@@ -427,6 +431,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
             </td>
 
@@ -460,6 +466,8 @@
 
             </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
@@ -497,6 +505,7 @@
         <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>
@@ -543,6 +552,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
             </td>
 
@@ -575,6 +586,7 @@
         <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>
@@ -618,6 +630,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Enum for controlling
           antibanding
@@ -650,6 +664,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Adjustment to AE target image
           brightness
@@ -700,6 +716,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Whether AE is currently locked to its latest
           calculated values
@@ -769,6 +787,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Whether AE is currently updating the sensor
           exposure and sensitivity fields
@@ -809,6 +829,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               List of areas to use for
           metering
@@ -859,6 +881,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Range over which fps can be adjusted to
           maintain exposure
@@ -908,6 +932,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Whether the HAL must trigger precapture
           metering.<wbr>
@@ -1022,6 +1048,8 @@
 
             </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
@@ -1059,6 +1087,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               List of areas to use for focus
           estimation
@@ -1120,6 +1150,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Whether the HAL must trigger autofocus.<wbr>
             </td>
@@ -1173,6 +1205,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Whether AWB is currently locked to its
           latest calculated values
@@ -1238,6 +1272,8 @@
 
             </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
@@ -1278,6 +1314,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               List of areas to use for illuminant
           estimation
@@ -1360,6 +1398,8 @@
 
             </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
@@ -1433,6 +1473,8 @@
 
             </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
@@ -1492,6 +1534,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Overall mode of 3A control
           routines
@@ -1603,6 +1647,8 @@
 
             </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
@@ -1645,6 +1691,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Whether video stabilization is
           active
@@ -1680,6 +1728,7 @@
         <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>
@@ -1714,6 +1763,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Which set of antibanding modes are
           supported
@@ -1749,6 +1800,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Which subset of AE modes is
           supported
@@ -1787,6 +1840,8 @@
 
             </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
@@ -1821,6 +1876,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Maximum and minimum exposure compensation
           setting,<wbr> in counts of
@@ -1857,6 +1914,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Smallest step by which exposure compensation
           can be changed
@@ -1896,6 +1955,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               List of AF modes that can be
           selected
@@ -1936,6 +1997,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               what subset of the full color effect enum
           list is supported
@@ -1975,6 +2038,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               what subset of the scene mode enum list is
           supported.<wbr>
@@ -2015,6 +2080,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               List of video stabilization modes that can
           be supported
@@ -2054,6 +2121,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
             </td>
 
@@ -2086,6 +2155,8 @@
 
             </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?
@@ -2124,6 +2195,8 @@
 
             </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
@@ -2177,6 +2250,7 @@
         <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>
@@ -2206,6 +2280,8 @@
 
             </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
@@ -2244,6 +2320,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               List of areas to use for
           metering
@@ -2327,6 +2405,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Current state of AE algorithm
             </td>
@@ -2434,6 +2514,8 @@
 
             </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
@@ -2471,6 +2553,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               List of areas to use for focus
           estimation
@@ -2555,6 +2639,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Current state of AF algorithm
             </td>
@@ -2587,6 +2673,8 @@
 
             </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
@@ -2649,6 +2737,8 @@
 
             </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
@@ -2689,6 +2779,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               List of areas to use for illuminant
           estimation
@@ -2757,6 +2849,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Current state of AWB algorithm
             </td>
@@ -2814,6 +2908,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Overall mode of 3A control
           routines
@@ -2852,6 +2948,7 @@
         <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>
@@ -2893,6 +2990,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Controls the quality of the demosaicing
           processing
@@ -2930,6 +3029,7 @@
         <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>
@@ -2975,6 +3075,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Operation mode for edge
           enhancement
@@ -3005,6 +3107,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Control the amount of edge enhancement
           applied to the images
@@ -3035,6 +3139,7 @@
         <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>
@@ -3080,6 +3185,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Operation mode for edge
           enhancement
@@ -3114,6 +3221,7 @@
         <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>
@@ -3143,6 +3251,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Power for flash firing/<wbr>torch
             </td>
@@ -3180,6 +3290,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Firing time of flash relative to start of
           exposure
@@ -3236,6 +3348,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Select flash operation mode
             </td>
@@ -3267,6 +3381,7 @@
         <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>
@@ -3298,6 +3413,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Whether this camera has a
             flash
@@ -3334,6 +3451,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Time taken before flash can fire
             again
@@ -3374,6 +3493,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               The x,<wbr>y whitepoint of the
           flash
@@ -3409,6 +3530,8 @@
 
             </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
@@ -3443,6 +3566,7 @@
         <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>
@@ -3472,6 +3596,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Power for flash firing/<wbr>torch
             </td>
@@ -3509,6 +3635,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Firing time of flash relative to start of
           exposure
@@ -3565,6 +3693,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Select flash operation mode
             </td>
@@ -3618,6 +3748,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Current state of the flash
           unit
@@ -3652,6 +3784,7 @@
         <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>
@@ -3698,6 +3831,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Operating mode of geometric
           correction
@@ -3728,6 +3863,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Control the amount of shading correction
           applied to the images
@@ -3767,6 +3904,7 @@
         <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>
@@ -3813,6 +3951,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Set operational mode for hot pixel
           correction
@@ -3845,6 +3985,7 @@
         <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>
@@ -3881,6 +4022,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Location of hot/<wbr>defective pixels on
             sensor
@@ -3916,6 +4059,7 @@
         <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>
@@ -3962,6 +4106,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Set operational mode for hot pixel
           correction
@@ -3999,6 +4145,7 @@
         <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>
@@ -4033,6 +4180,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               GPS coordinates to include in output JPEG
           EXIF
@@ -4067,6 +4216,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               32 characters describing GPS algorithm to
           include in EXIF
@@ -4101,6 +4252,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Time GPS fix was made to include in
           EXIF
@@ -4135,6 +4288,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Orientation of JPEG image to
           write
@@ -4170,6 +4325,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Compression quality of the final JPEG
           image
@@ -4205,6 +4362,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Compression quality of JPEG
           thumbnail
@@ -4243,6 +4402,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Resolution of embedded JPEG
           thumbnail
@@ -4276,6 +4437,7 @@
         <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>
@@ -4310,6 +4472,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Supported resolutions for the JPEG
           thumbnail
@@ -4345,6 +4509,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Maximum size in bytes for the compressed
           JPEG buffer
@@ -4378,6 +4544,7 @@
         <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>
@@ -4412,6 +4579,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               GPS coordinates to include in output JPEG
           EXIF
@@ -4446,6 +4615,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               32 characters describing GPS algorithm to
           include in EXIF
@@ -4480,6 +4651,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Time GPS fix was made to include in
           EXIF
@@ -4514,6 +4687,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Orientation of JPEG image to
           write
@@ -4549,6 +4724,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Compression quality of the final JPEG
           image
@@ -4584,6 +4761,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               The size of the compressed JPEG image,<wbr> in
           bytes
@@ -4623,6 +4802,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Compression quality of JPEG
           thumbnail
@@ -4661,6 +4842,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Resolution of embedded JPEG
           thumbnail
@@ -4699,6 +4882,7 @@
         <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>
@@ -4728,6 +4912,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Size of the lens aperture
             </td>
@@ -4764,6 +4950,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               State of lens neutral density
           filter(s)
@@ -4801,6 +4989,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Lens optical zoom setting
             </td>
@@ -4836,6 +5026,8 @@
 
             </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
@@ -4883,6 +5075,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Whether optical image stabilization is
           enabled.<wbr>
@@ -4917,6 +5111,7 @@
         <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>
@@ -4952,6 +5147,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               List of supported aperture
             values
@@ -4992,6 +5189,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               List of supported ND filter
             values
@@ -5035,6 +5234,8 @@
 
             </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
@@ -5078,6 +5279,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               List of supported optical image
             stabilization modes
@@ -5116,6 +5319,8 @@
 
             </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
@@ -5161,6 +5366,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Dimensions of geometric correction
             map
@@ -5195,6 +5402,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Hyperfocal distance for this lens; set to
             0 if fixed focus
@@ -5232,6 +5441,8 @@
 
             </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
@@ -5274,6 +5485,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               A low-resolution map of lens shading,<wbr> per
             color channel
@@ -5317,6 +5530,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Dimensions of lens shading
             map
@@ -5362,6 +5577,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Direction the camera faces relative to
           device screen
@@ -5397,6 +5614,8 @@
 
             </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
@@ -5443,6 +5662,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Coordinates of camera optical axis on
           device
@@ -5475,6 +5696,7 @@
         <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>
@@ -5504,6 +5726,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Size of the lens aperture
             </td>
@@ -5540,6 +5764,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               State of lens neutral density
           filter(s)
@@ -5577,6 +5803,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Lens optical zoom setting
             </td>
@@ -5612,6 +5840,8 @@
 
             </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
@@ -5648,6 +5878,8 @@
 
             </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)
@@ -5695,6 +5927,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Whether optical image stabilization is
           enabled.<wbr>
@@ -5735,6 +5969,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Current lens status
             </td>
@@ -5771,6 +6007,7 @@
         <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>
@@ -5816,6 +6053,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Mode of operation for the noise reduction
           algorithm
@@ -5850,6 +6089,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Control the amount of noise reduction
           applied to the images
@@ -5881,6 +6122,7 @@
         <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>
@@ -5926,6 +6168,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Mode of operation for the noise reduction
           algorithm
@@ -5964,6 +6208,7 @@
         <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>
@@ -5993,6 +6238,8 @@
 
             </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
@@ -6032,6 +6279,8 @@
 
             </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
@@ -6068,6 +6317,8 @@
 
             </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
@@ -6110,6 +6361,7 @@
         <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>
@@ -6139,6 +6391,8 @@
 
             </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
@@ -6171,6 +6425,8 @@
 
             </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
@@ -6201,12 +6457,18 @@
             <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>
@@ -6230,6 +6492,9 @@
             </td>
 
             <td class="entry_tags">
+              <ul class="entry_tags">
+                  <li><a href="#tag_HAL2">HAL2</a></li>
+              </ul>
             </td>
 
           </tr> <!-- end of entry -->
@@ -6264,6 +6529,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               How much metadata to produce on
           output
@@ -6288,12 +6555,18 @@
             <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
@@ -6316,6 +6589,9 @@
             </td>
 
             <td class="entry_tags">
+              <ul class="entry_tags">
+                  <li><a href="#tag_HAL2">HAL2</a></li>
+              </ul>
             </td>
 
           </tr> <!-- end of entry -->
@@ -6346,9 +6622,11 @@
 
             </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">
@@ -6361,6 +6639,9 @@
             </td>
 
             <td class="entry_tags">
+              <ul class="entry_tags">
+                  <li><a href="#tag_HAL2">HAL2</a></li>
+              </ul>
             </td>
 
           </tr> <!-- end of entry -->
@@ -6375,6 +6656,7 @@
         <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>
@@ -6408,6 +6690,8 @@
 
             </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
@@ -6453,6 +6737,8 @@
 
             </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
@@ -6483,6 +6769,7 @@
         <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>
@@ -6512,6 +6799,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Number of frames captured since
           open()
@@ -6545,6 +6834,8 @@
 
             </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
@@ -6600,6 +6891,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               How much metadata to produce on
           output
@@ -6624,12 +6917,18 @@
             <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
@@ -6652,6 +6951,9 @@
             </td>
 
             <td class="entry_tags">
+              <ul class="entry_tags">
+                  <li><a href="#tag_HAL2">HAL2</a></li>
+              </ul>
             </td>
 
           </tr> <!-- end of entry -->
@@ -6671,6 +6973,7 @@
         <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>
@@ -6704,6 +7007,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               (x,<wbr> y,<wbr> width,<wbr> height).<wbr>
 <br>
@@ -6773,6 +7078,7 @@
         <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>
@@ -6838,6 +7144,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               List of app-visible formats
             </td>
@@ -6874,6 +7182,8 @@
 
             </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
@@ -6917,6 +7227,8 @@
 
             </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
@@ -6952,6 +7264,8 @@
 
             </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
@@ -6992,6 +7306,8 @@
 
             </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
@@ -7035,6 +7351,8 @@
 
             </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
@@ -7077,6 +7395,8 @@
 
             </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
@@ -7119,6 +7439,8 @@
 
             </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>
@@ -7150,6 +7472,7 @@
         <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>
@@ -7183,6 +7506,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               (x,<wbr> y,<wbr> width,<wbr> height).<wbr>
 <br>
@@ -7257,6 +7582,7 @@
         <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>
@@ -7286,6 +7612,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Duration each pixel is exposed to
           light
@@ -7322,6 +7650,8 @@
 
             </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
@@ -7361,6 +7691,8 @@
 
             </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
@@ -7397,6 +7729,7 @@
         <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>
@@ -7433,6 +7766,8 @@
 
             </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
@@ -7474,6 +7809,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Range of valid sensitivities
             </td>
@@ -7529,6 +7866,8 @@
 
             </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
@@ -7568,6 +7907,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Range of valid exposure
             times
@@ -7603,6 +7944,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Maximum frame duration (minimum frame
             rate)
@@ -7647,6 +7990,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               The physical dimensions of the full pixel
             array
@@ -7686,6 +8031,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Dimensions of full pixel array,<wbr> possibly
             including black calibration pixels
@@ -7723,6 +8070,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Maximum raw value output by
             sensor
@@ -7762,6 +8111,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Gain factor from electrons to raw units when
           ISO=100
@@ -7800,6 +8151,8 @@
 
             </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
@@ -7841,6 +8194,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Per-device calibration on top of color space
           transform 1
@@ -7879,6 +8234,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Per-device calibration on top of color space
           transform 2
@@ -7917,6 +8274,8 @@
 
             </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
@@ -7959,6 +8318,8 @@
 
             </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
@@ -7998,6 +8359,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Used by DNG for better WB
           adaptation
@@ -8036,6 +8399,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Used by DNG for better WB
           adaptation
@@ -8069,6 +8434,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Maximum sensitivity that is implemented
           purely through analog gain
@@ -8111,6 +8478,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Estimation of sensor noise
           characteristics
@@ -8152,6 +8521,8 @@
 
             </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
@@ -8274,6 +8645,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Light source used to define transform
           1
@@ -8310,6 +8683,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Light source used to define transform
           2
@@ -8340,6 +8715,7 @@
         <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>
@@ -8369,6 +8745,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Duration each pixel is exposed to
           light
@@ -8405,6 +8783,8 @@
 
             </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
@@ -8444,6 +8824,8 @@
 
             </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
@@ -8481,6 +8863,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Time at start of exposure of first
           row
@@ -8522,6 +8906,7 @@
         <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>
@@ -8567,6 +8952,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Quality of lens shading correction applied
           to the image data
@@ -8597,6 +8984,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Control the amount of shading correction
           applied to the images
@@ -8631,6 +9020,7 @@
         <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>
@@ -8676,6 +9066,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Quality of lens shading correction applied
           to the image data
@@ -8710,6 +9102,7 @@
         <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>
@@ -8754,6 +9147,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               State of the face detector
           unit
@@ -8797,6 +9192,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Operating mode for histogram
           generation
@@ -8838,6 +9235,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Operating mode for sharpness map
           generation
@@ -8870,6 +9269,7 @@
         <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>
@@ -8906,6 +9306,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Which face detection modes are available,<wbr>
             if any
@@ -8937,6 +9339,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Number of histogram buckets
             supported
@@ -8968,6 +9372,8 @@
 
             </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
@@ -9000,6 +9406,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Maximum value possible for a histogram
             bucket
@@ -9030,6 +9438,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Maximum value possible for a sharpness map
             region.<wbr>
@@ -9065,6 +9475,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Dimensions of the sharpness
             map
@@ -9098,6 +9510,7 @@
         <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>
@@ -9142,6 +9555,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               State of the face detector
           unit
@@ -9181,6 +9596,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               List of unique IDs for detected
           faces
@@ -9220,6 +9637,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               List of landmarks for detected
           faces
@@ -9259,6 +9678,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               List of the bounding rectangles for detected
           faces
@@ -9297,6 +9718,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               List of the face confidence scores for
           detected faces
@@ -9337,6 +9760,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               A 3-channel histogram based on the raw
           sensor data
@@ -9382,6 +9807,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Operating mode for histogram
           generation
@@ -9420,6 +9847,8 @@
 
             </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
@@ -9463,6 +9892,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">system</td>
+
             <td class="entry_description">
               Operating mode for sharpness map
           generation
@@ -9500,6 +9931,7 @@
         <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>
@@ -9529,6 +9961,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Table mapping blue input values to output
           values
@@ -9561,6 +9995,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Table mapping green input values to output
           values
@@ -9598,6 +10034,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Table mapping red input values to output
           values
@@ -9656,6 +10094,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
             </td>
 
@@ -9683,6 +10123,7 @@
         <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>
@@ -9712,6 +10153,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Maximum number of supported points in the
           tonemap curve
@@ -9742,6 +10185,7 @@
         <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>
@@ -9771,6 +10215,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Table mapping blue input values to output
           values
@@ -9803,6 +10249,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Table mapping green input values to output
           values
@@ -9840,6 +10288,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
               Table mapping red input values to output
           values
@@ -9898,6 +10348,8 @@
 
             </td> <!-- entry_type -->
 
+            <td class="entry_visibility">public</td>
+
             <td class="entry_description">
             </td>
 
@@ -9930,6 +10382,7 @@
         <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>
@@ -9967,6 +10420,8 @@
 
             </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
@@ -10007,6 +10462,7 @@
         <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>
@@ -10044,6 +10500,8 @@
 
             </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
@@ -10084,6 +10542,7 @@
         <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>
@@ -10123,6 +10582,8 @@
 
             </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>
           
@@ -10157,6 +10618,7 @@
         <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>
@@ -10194,6 +10656,8 @@
 
             </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;
@@ -10391,6 +10855,15 @@
           <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>
 
diff --git a/camera/docs/html.mako b/camera/docs/html.mako
index b1b9759..3368894 100644
--- a/camera/docs/html.mako
+++ b/camera/docs/html.mako
@@ -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; }
@@ -101,7 +103,7 @@
 
 
 <body>
-  <h1>Android Camera HAL2.0 Properties</h1>
+  <h1>Android Camera HAL3.0 Properties</h1>
 
   <h2>Table of Contents</h2>
   <ul class="toc">
@@ -126,6 +128,7 @@
       <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>
@@ -150,6 +153,7 @@
         <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>
@@ -237,6 +241,8 @@
 
             </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}
diff --git a/camera/docs/metadata_helpers.py b/camera/docs/metadata_helpers.py
index 7d109e9..97a9451 100644
--- a/camera/docs/metadata_helpers.py
+++ b/camera/docs/metadata_helpers.py
@@ -532,3 +532,39 @@
 
   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)
diff --git a/camera/docs/metadata_model.py b/camera/docs/metadata_model.py
index daf171c..6b70288 100644
--- a/camera/docs/metadata_model.py
+++ b/camera/docs/metadata_model.py
@@ -936,6 +936,12 @@
     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 @@
       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 @@
     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 @@
     else:
       self._enum = None
 
+    self._visibility = kwargs.get('visibility')
+
     self._property_keys = kwargs
 
   def merge(self):
@@ -1294,6 +1312,7 @@
                     'tuple_values',
                     'type',
                     'type_notes',
+                    'visibility'
                    ]
 
     for p in props_common:
diff --git a/camera/docs/metadata_parser_xml.py b/camera/docs/metadata_parser_xml.py
index 7b55273..4e5c35f 100755
--- a/camera/docs/metadata_parser_xml.py
+++ b/camera/docs/metadata_parser_xml.py
@@ -144,6 +144,11 @@
     d = {}
 
     #
+    # Visibility
+    #
+    d['visibility'] = entry.get('visibility')
+
+    #
     # Enum
     #
     if entry.get('enum', 'false') == 'true':
diff --git a/camera/docs/metadata_properties.xml b/camera/docs/metadata_properties.xml
index 2980c8d..8eedd54 100644
--- a/camera/docs/metadata_properties.xml
+++ b/camera/docs/metadata_properties.xml
@@ -36,11 +36,14 @@
     <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 @@
             </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 @@
     </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 @@
           <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 @@
           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 @@
           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 @@
           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 @@
           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 @@
           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 @@
           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 @@
           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 @@
           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 @@
           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 @@
           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 @@
           <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 @@
           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 @@
           <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 @@
           <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 @@
           <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 @@
           <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 @@
         </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 @@
           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 @@
           <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 @@
           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 @@
           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 @@
           <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 @@
           <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 @@
           <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 @@
         </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 @@
         </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 @@
         </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 @@
           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 @@
         </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 @@
     </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 @@
           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 @@
       </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 @@
         <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 @@
     </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 @@
           <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 @@
         </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 @@
           (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 @@
     </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 @@
           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 @@
           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 @@
           <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 @@
       </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 @@
             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 @@
             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 @@
             <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 @@
             <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 @@
             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 @@
             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 @@
             <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 @@
           <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 @@
         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 @@
     </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 @@
     </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 @@
           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 @@
           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 @@
     </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 @@
           <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 @@
           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 @@
           <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 @@
           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 @@
             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 @@
           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 @@
         </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 @@
     </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 @@
         </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 @@
           <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 @@
           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 @@
           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 @@
           <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 @@
           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 @@
     </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 @@
           <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 @@
           <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 @@
       </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 @@
             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 @@
             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 @@
             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 @@
             <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 @@
             <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 @@
           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 @@
           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 @@
         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 @@
     </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 @@
       <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 @@
             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 @@
       <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 @@
           <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 @@
           <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 @@
           <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 @@
     </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 @@
           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 @@
         </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 @@
     </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 @@
         <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 @@
     </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>
diff --git a/camera/docs/metadata_properties.xsd b/camera/docs/metadata_properties.xsd
index 259aebf..f567333 100644
--- a/camera/docs/metadata_properties.xsd
+++ b/camera/docs/metadata_properties.xsd
@@ -146,6 +146,15 @@
                 </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">
diff --git a/camera/docs/metadata_template.mako b/camera/docs/metadata_template.mako
index 253db61..2fee0a1 100644
--- a/camera/docs/metadata_template.mako
+++ b/camera/docs/metadata_template.mako
@@ -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