OSDN Git Service

Camera: modify metadata visibility attributes
authorYin-Chia Yeh <yinchiayeh@google.com>
Sat, 2 Apr 2016 23:30:30 +0000 (16:30 -0700)
committerYin-Chia Yeh <yinchiayeh@google.com>
Thu, 7 Apr 2016 22:25:12 +0000 (15:25 -0700)
So we can better describe whether a key should present in java or
native API.

Here are all possbile visibility values:
public      = visible in both Java/NDK public API
ndk_public  = visible in NDK API, @hide in java API
             (mostly source of synthethic keys)
java_public = visible in public java API, not present in NDK
             (mostly synthetic keys or features not supported
              in NDK)
hidden      = @hide in java API, not visible in NDK
system      = not defined in any API.

Bug: 27102995
Change-Id: Ib5163b0aba62126dfe3d72ec62a24136ce206b17

12 files changed:
camera/docs/ACameraMetadata.mako
camera/docs/CameraMetadataEnums.mako
camera/docs/CameraMetadataKeys.mako
camera/docs/CaptureResultTest.mako
camera/docs/camera_device_info.mako
camera/docs/docs.html
camera/docs/metadata_helpers.py
camera/docs/metadata_model.py
camera/docs/metadata_properties.xml
camera/docs/metadata_properties.xsd
camera/docs/ndk_camera_metadata_tags.mako
camera/include/system/camera_metadata_tags.h

index 7407603..b65efc1 100644 (file)
 % 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 == kind_name) and \
-         any_visible(section, kind_name, ('public','hidden') ):
+         any_visible(section, kind_name, ('public','ndk_public') ):
       % for inner_namespace in get_children_by_filtering_kind(section, kind_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.
-        % for entry in filter_visibility(inner_namespace.merged_entries, ('hidden','public')):
+        % for entry in filter_visibility(inner_namespace.merged_entries, ('public','ndk_public')):
           % if not entry.synthetic:
         case ${ndk(entry.name) | csym}:
+          % else:
+            assert(False),"A synthetic key should not present in NDK!"
           % endif
        % endfor
     % endfor
     % for entry in filter_visibility( \
         get_children_by_filtering_kind(section, kind_name, 'merged_entries'), \
-                                         ('hidden', 'public')):
+                                         ('public','ndk_public')):
       % if not entry.synthetic:
         case ${ndk(entry.name) | csym}:
       % endif
index eb4b1b0..b61fcc4 100644 (file)
@@ -35,7 +35,7 @@
 ${value.notes | javadoc(metadata)}\
     % endif
      * @see ${target_class}#${entry.name | jkey_identifier}
-    % if entry.applied_visibility == 'hidden' or value.hidden:
+    % if entry.applied_visibility in ('hidden', 'ndk_public') or value.hidden:
      * @hide
     %endif
     % if value.deprecated:
@@ -52,11 +52,11 @@ ${value.notes | javadoc(metadata)}\
 % 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) and \
-         any_visible(section, xml_name, ('public','hidden') ):
+         any_visible(section, xml_name, ('public','hidden', 'ndk_public', 'java_public') ):
       % 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.
-        % for entry in filter_visibility(inner_namespace.entries, ('hidden','public')):
+        % for entry in filter_visibility(inner_namespace.entries, ('hidden','public', 'ndk_public', 'java_public')):
           % if entry.enum \
               and not (entry.typedef and entry.typedef.languages.get('java')) \
               and not entry.is_clone():
@@ -66,7 +66,7 @@ ${generate_enum(entry, target_class)}\
       % endfor
       % for entry in filter_visibility( \
           get_children_by_filtering_kind(section, xml_name, 'entries'), \
-                                         ('hidden', 'public')):
+                                         ('hidden', 'public', 'ndk_public', 'java_public')):
         % if entry.enum \
              and not (entry.typedef and entry.typedef.languages.get('java')) \
              and not entry.is_clone():
index f9286fa..f9ce15e 100644 (file)
@@ -53,14 +53,14 @@ ${concatenated_info | javadoc(metadata)}\
   % if entry.deprecated:
      * @deprecated
   % endif
-  % if entry.applied_visibility == 'hidden':
+  % if entry.applied_visibility in ('hidden', 'ndk_public'):
      * @hide
   % endif
      */
   % if entry.deprecated:
     @Deprecated
   % endif
-  % if entry.applied_visibility == 'public':
+  % if entry.applied_visibility in ('public', 'java_public'):
     @PublicKey
   % endif
   % if entry.synthetic:
@@ -75,17 +75,17 @@ ${concatenated_info | javadoc(metadata)}\
 % 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) and \
-         any_visible(section, xml_name, ('public','hidden') ):
+         any_visible(section, xml_name, ('public','hidden','ndk_public','java_public') ):
       % 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.
-        % for entry in filter_visibility(inner_namespace.merged_entries, ('hidden','public')):
+        % for entry in filter_visibility(inner_namespace.merged_entries, ('hidden','public', 'ndk_public', 'java_public')):
 ${generate_key(entry)}
        % endfor
     % endfor
     % for entry in filter_visibility( \
         get_children_by_filtering_kind(section, xml_name, 'merged_entries'), \
-                                         ('hidden', 'public')):
+                                         ('hidden', 'public', 'ndk_public', 'java_public')):
 ${generate_key(entry)}
     % endfor
     % endif
index 6fb4905..4878fd7 100644 (file)
@@ -24,7 +24,7 @@
         ArrayList<CaptureResult.Key<?>> resultKeys = new ArrayList<CaptureResult.Key<?>>();
 % for sec in find_all_sections(metadata):
   % for entry in find_unique_entries(sec):
-    % if entry.kind == 'dynamic' and entry.visibility == "public":
+    % if entry.kind == 'dynamic' and entry.visibility in ("public", "java_public"):
         resultKeys.add(CaptureResult.${jkey_identifier(entry.name)});
     % endif
   % endfor
index 2227adb..92b7ef2 100644 (file)
@@ -84,7 +84,7 @@ message CameraDeviceInfo {
   idx = section_idx * pow(2,16)
 %>\
 % for entry in find_unique_entries(sec):
-% if entry.kind == 'static' and entry.visibility == "public":
+% if entry.kind == 'static' and entry.visibility in ("public", "java_public"):
     ${protobuf_type(entry)} ${protobuf_name(entry)} = ${idx};
 <%\
   idx += 1
index 9ce6cf0..e8f5afc 100644 (file)
@@ -4893,7 +4893,7 @@ mode camera devices.<wbr/></p>
                 <span class="entry_type_array">
                   3
                 </span>
-              <span class="entry_type_visibility"> [hidden]</span>
+              <span class="entry_type_visibility"> [ndk_public]</span>
 
 
               <span class="entry_type_hwlevel">[legacy] </span>
@@ -4941,7 +4941,7 @@ this value must be &gt;= 1 for AE and AF.<wbr/> The order of the elements is:
             <td class="entry_type">
                 <span class="entry_type_name">int32</span>
 
-              <span class="entry_type_visibility"> [public]</span>
+              <span class="entry_type_visibility"> [java_public]</span>
 
               <span class="entry_type_synthetic">[synthetic] </span>
 
@@ -5001,7 +5001,7 @@ maxRegions to have this entry be automatically populated.<wbr/></p>
             <td class="entry_type">
                 <span class="entry_type_name">int32</span>
 
-              <span class="entry_type_visibility"> [public]</span>
+              <span class="entry_type_visibility"> [java_public]</span>
 
               <span class="entry_type_synthetic">[synthetic] </span>
 
@@ -5060,7 +5060,7 @@ maxRegions to have this entry be automatically populated.<wbr/></p>
             <td class="entry_type">
                 <span class="entry_type_name">int32</span>
 
-              <span class="entry_type_visibility"> [public]</span>
+              <span class="entry_type_visibility"> [java_public]</span>
 
               <span class="entry_type_synthetic">[synthetic] </span>
 
@@ -10448,7 +10448,7 @@ are stuck at an arbitrary value or are oversensitive).<wbr/></p>
             <td class="entry_type">
                 <span class="entry_type_name">byte</span>
 
-              <span class="entry_type_visibility"> [public as location]</span>
+              <span class="entry_type_visibility"> [java_public as location]</span>
 
               <span class="entry_type_synthetic">[synthetic] </span>
 
@@ -10501,7 +10501,7 @@ viewed by anyone who receives the JPEG image.<wbr/></p>
                 <span class="entry_type_array">
                   3
                 </span>
-              <span class="entry_type_visibility"> [hidden]</span>
+              <span class="entry_type_visibility"> [ndk_public]</span>
 
 
               <span class="entry_type_hwlevel">[legacy] </span>
@@ -10545,7 +10545,7 @@ EXIF.<wbr/></p>
             <td class="entry_type">
                 <span class="entry_type_name">byte</span>
 
-              <span class="entry_type_visibility"> [hidden as string]</span>
+              <span class="entry_type_visibility"> [ndk_public as string]</span>
 
 
               <span class="entry_type_hwlevel">[legacy] </span>
@@ -10588,7 +10588,7 @@ include in EXIF.<wbr/></p>
             <td class="entry_type">
                 <span class="entry_type_name">int64</span>
 
-              <span class="entry_type_visibility"> [hidden]</span>
+              <span class="entry_type_visibility"> [ndk_public]</span>
 
 
               <span class="entry_type_hwlevel">[legacy] </span>
@@ -11060,7 +11060,7 @@ JPEG</p>
             <td class="entry_type">
                 <span class="entry_type_name">byte</span>
 
-              <span class="entry_type_visibility"> [public as location]</span>
+              <span class="entry_type_visibility"> [java_public as location]</span>
 
               <span class="entry_type_synthetic">[synthetic] </span>
 
@@ -11113,7 +11113,7 @@ viewed by anyone who receives the JPEG image.<wbr/></p>
                 <span class="entry_type_array">
                   3
                 </span>
-              <span class="entry_type_visibility"> [hidden]</span>
+              <span class="entry_type_visibility"> [ndk_public]</span>
 
 
               <span class="entry_type_hwlevel">[legacy] </span>
@@ -11157,7 +11157,7 @@ EXIF.<wbr/></p>
             <td class="entry_type">
                 <span class="entry_type_name">byte</span>
 
-              <span class="entry_type_visibility"> [hidden as string]</span>
+              <span class="entry_type_visibility"> [ndk_public as string]</span>
 
 
               <span class="entry_type_hwlevel">[legacy] </span>
@@ -11200,7 +11200,7 @@ include in EXIF.<wbr/></p>
             <td class="entry_type">
                 <span class="entry_type_name">int64</span>
 
-              <span class="entry_type_visibility"> [hidden]</span>
+              <span class="entry_type_visibility"> [ndk_public]</span>
 
 
               <span class="entry_type_hwlevel">[legacy] </span>
@@ -12299,7 +12299,7 @@ the MANUAL_<wbr/>SENSOR capability.<wbr/></p>
                 <span class="entry_type_array">
                   2
                 </span>
-              <span class="entry_type_visibility"> [hidden as size]</span>
+              <span class="entry_type_visibility"> [ndk_public as size]</span>
 
 
               <span class="entry_type_hwlevel">[full] </span>
@@ -14908,7 +14908,7 @@ REPROCESS.<wbr/> For HAL3,<wbr/> this tag is redundant.<wbr/></p>
                 <span class="entry_type_array">
                   3
                 </span>
-              <span class="entry_type_visibility"> [hidden]</span>
+              <span class="entry_type_visibility"> [ndk_public]</span>
 
 
               <span class="entry_type_hwlevel">[legacy] </span>
@@ -14982,7 +14982,7 @@ into the 3 stream types as below:</p>
             <td class="entry_type">
                 <span class="entry_type_name">int32</span>
 
-              <span class="entry_type_visibility"> [public]</span>
+              <span class="entry_type_visibility"> [java_public]</span>
 
               <span class="entry_type_synthetic">[synthetic] </span>
 
@@ -15045,7 +15045,7 @@ never support raw streams.<wbr/></p>
             <td class="entry_type">
                 <span class="entry_type_name">int32</span>
 
-              <span class="entry_type_visibility"> [public]</span>
+              <span class="entry_type_visibility"> [java_public]</span>
 
               <span class="entry_type_synthetic">[synthetic] </span>
 
@@ -15113,7 +15113,7 @@ processed format -- it will return 0 for a non-stalling stream.<wbr/></p>
             <td class="entry_type">
                 <span class="entry_type_name">int32</span>
 
-              <span class="entry_type_visibility"> [public]</span>
+              <span class="entry_type_visibility"> [java_public]</span>
 
               <span class="entry_type_synthetic">[synthetic] </span>
 
@@ -15896,7 +15896,7 @@ DEPTH).<wbr/></p>
                 <span class="entry_type_array">
                   n
                 </span>
-              <span class="entry_type_visibility"> [hidden]</span>
+              <span class="entry_type_visibility"> [ndk_public]</span>
 
 
               <span class="entry_type_hwlevel">[legacy] </span>
@@ -15969,7 +15969,7 @@ via
                 <span class="entry_type_array">
                   n
                 </span>
-              <span class="entry_type_visibility"> [hidden]</span>
+              <span class="entry_type_visibility"> [ndk_public]</span>
 
 
               <span class="entry_type_hwlevel">[legacy] </span>
@@ -16050,7 +16050,7 @@ here or in the vendor tag list.<wbr/></p>
                 <span class="entry_type_array">
                   n
                 </span>
-              <span class="entry_type_visibility"> [hidden]</span>
+              <span class="entry_type_visibility"> [ndk_public]</span>
 
 
               <span class="entry_type_hwlevel">[legacy] </span>
@@ -17356,7 +17356,7 @@ additional formats if it so chooses.<wbr/></p>
                 <span class="entry_type_array">
                   n x 4
                 </span>
-              <span class="entry_type_visibility"> [hidden as streamConfiguration]</span>
+              <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
 
 
               <span class="entry_type_hwlevel">[legacy] </span>
@@ -17543,7 +17543,7 @@ YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.
                 <span class="entry_type_array">
                   4 x n
                 </span>
-              <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
+              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
 
 
               <span class="entry_type_hwlevel">[legacy] </span>
@@ -17609,7 +17609,7 @@ calculating the max frame rate.<wbr/></p>
                 <span class="entry_type_array">
                   4 x n
                 </span>
-              <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
+              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
 
 
               <span class="entry_type_hwlevel">[legacy] </span>
@@ -17725,7 +17725,7 @@ and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
             <td class="entry_type">
                 <span class="entry_type_name">int32</span>
 
-              <span class="entry_type_visibility"> [public as streamConfigurationMap]</span>
+              <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span>
 
               <span class="entry_type_synthetic">[synthetic] </span>
 
@@ -22997,7 +22997,7 @@ FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">androi
                 <span class="entry_type_array">
                   n
                 </span>
-              <span class="entry_type_visibility"> [hidden]</span>
+              <span class="entry_type_visibility"> [ndk_public]</span>
 
 
               <span class="entry_type_hwlevel">[legacy] </span>
@@ -23053,7 +23053,7 @@ assigned a new ID.<wbr/></p>
                 <span class="entry_type_array">
                   n x 6
                 </span>
-              <span class="entry_type_visibility"> [hidden]</span>
+              <span class="entry_type_visibility"> [ndk_public]</span>
 
 
               <span class="entry_type_hwlevel">[legacy] </span>
@@ -23110,7 +23110,7 @@ faces.<wbr/></p>
                 <span class="entry_type_array">
                   n x 4
                 </span>
-              <span class="entry_type_visibility"> [hidden as rectangle]</span>
+              <span class="entry_type_visibility"> [ndk_public as rectangle]</span>
 
 
               <span class="entry_type_hwlevel">[legacy] </span>
@@ -23167,7 +23167,7 @@ faces.<wbr/></p>
                 <span class="entry_type_array">
                   n
                 </span>
-              <span class="entry_type_visibility"> [hidden]</span>
+              <span class="entry_type_visibility"> [ndk_public]</span>
 
 
               <span class="entry_type_hwlevel">[legacy] </span>
@@ -23231,7 +23231,7 @@ all times is illegal).<wbr/></p>
                 <span class="entry_type_array">
                   n
                 </span>
-              <span class="entry_type_visibility"> [public as face]</span>
+              <span class="entry_type_visibility"> [java_public as face]</span>
 
               <span class="entry_type_synthetic">[synthetic] </span>
 
@@ -23577,7 +23577,7 @@ image of a gray wall (using bicubic interpolation for visual quality) as capture
                 <span class="entry_type_array">
                   4 x n x m
                 </span>
-              <span class="entry_type_visibility"> [hidden]</span>
+              <span class="entry_type_visibility"> [ndk_public]</span>
 
 
               <span class="entry_type_hwlevel">[full] </span>
@@ -24131,7 +24131,7 @@ the output result metadata.<wbr/></p>
                 <span class="entry_type_array">
                   n x 2
                 </span>
-              <span class="entry_type_visibility"> [hidden]</span>
+              <span class="entry_type_visibility"> [ndk_public]</span>
 
 
               <span class="entry_type_hwlevel">[full] </span>
@@ -24184,7 +24184,7 @@ CONTRAST_<wbr/>CURVE.<wbr/></p>
                 <span class="entry_type_array">
                   n x 2
                 </span>
-              <span class="entry_type_visibility"> [hidden]</span>
+              <span class="entry_type_visibility"> [ndk_public]</span>
 
 
               <span class="entry_type_hwlevel">[full] </span>
@@ -24237,7 +24237,7 @@ CONTRAST_<wbr/>CURVE.<wbr/></p>
                 <span class="entry_type_array">
                   n x 2
                 </span>
-              <span class="entry_type_visibility"> [hidden]</span>
+              <span class="entry_type_visibility"> [ndk_public]</span>
 
 
               <span class="entry_type_hwlevel">[full] </span>
@@ -24338,7 +24338,7 @@ control points used as are available.<wbr/></p>
             <td class="entry_type">
                 <span class="entry_type_name">float</span>
 
-              <span class="entry_type_visibility"> [public as tonemapCurve]</span>
+              <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
 
               <span class="entry_type_synthetic">[synthetic] </span>
 
@@ -24845,7 +24845,7 @@ capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same outp
                 <span class="entry_type_array">
                   n x 2
                 </span>
-              <span class="entry_type_visibility"> [hidden]</span>
+              <span class="entry_type_visibility"> [ndk_public]</span>
 
 
               <span class="entry_type_hwlevel">[full] </span>
@@ -24898,7 +24898,7 @@ CONTRAST_<wbr/>CURVE.<wbr/></p>
                 <span class="entry_type_array">
                   n x 2
                 </span>
-              <span class="entry_type_visibility"> [hidden]</span>
+              <span class="entry_type_visibility"> [ndk_public]</span>
 
 
               <span class="entry_type_hwlevel">[full] </span>
@@ -24951,7 +24951,7 @@ CONTRAST_<wbr/>CURVE.<wbr/></p>
                 <span class="entry_type_array">
                   n x 2
                 </span>
-              <span class="entry_type_visibility"> [hidden]</span>
+              <span class="entry_type_visibility"> [ndk_public]</span>
 
 
               <span class="entry_type_hwlevel">[full] </span>
@@ -25052,7 +25052,7 @@ control points used as are available.<wbr/></p>
             <td class="entry_type">
                 <span class="entry_type_name">float</span>
 
-              <span class="entry_type_visibility"> [public as tonemapCurve]</span>
+              <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
 
               <span class="entry_type_synthetic">[synthetic] </span>
 
@@ -26093,7 +26093,7 @@ possible again.<wbr/></p>
             <td class="entry_type">
                 <span class="entry_type_name entry_type_name_enum">int64</span>
 
-              <span class="entry_type_visibility"> [hidden]</span>
+              <span class="entry_type_visibility"> [ndk_public]</span>
 
 
               <span class="entry_type_hwlevel">[legacy] </span>
@@ -26405,7 +26405,7 @@ to know when sensor settings have been applied.<wbr/></p>
             <td class="entry_type">
                 <span class="entry_type_name">float</span>
 
-              <span class="entry_type_visibility"> [public]</span>
+              <span class="entry_type_visibility"> [java_public]</span>
 
 
               <span class="entry_type_hwlevel">[limited] </span>
@@ -26513,7 +26513,7 @@ Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective w
             <td class="entry_type">
                 <span class="entry_type_name">float</span>
 
-              <span class="entry_type_visibility"> [public]</span>
+              <span class="entry_type_visibility"> [java_public]</span>
 
 
               <span class="entry_type_hwlevel">[limited] </span>
@@ -26621,7 +26621,7 @@ Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective w
             <td class="entry_type">
                 <span class="entry_type_name">int32</span>
 
-              <span class="entry_type_visibility"> [public]</span>
+              <span class="entry_type_visibility"> [java_public]</span>
 
 
               <span class="entry_type_hwlevel">[limited] </span>
@@ -26779,7 +26779,7 @@ not be defined.<wbr/></p>
                 <span class="entry_type_array">
                   n x 4
                 </span>
-              <span class="entry_type_visibility"> [hidden as streamConfiguration]</span>
+              <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
 
 
               <span class="entry_type_hwlevel">[limited] </span>
@@ -26852,7 +26852,7 @@ the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p>
                 <span class="entry_type_array">
                   4 x n
                 </span>
-              <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
+              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
 
 
               <span class="entry_type_hwlevel">[limited] </span>
@@ -26917,7 +26917,7 @@ calculating the max frame rate.<wbr/></p>
                 <span class="entry_type_array">
                   4 x n
                 </span>
-              <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
+              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
 
 
               <span class="entry_type_hwlevel">[limited] </span>
index 0e5855f..c18b174 100644 (file)
@@ -834,7 +834,7 @@ def javadoc(metadata, indent = 4):
     # Convert metadata entry "android.x.y.z" to form
     # "{@link CaptureRequest#X_Y_Z android.x.y.z}"
     def javadoc_crossref_filter(node):
-      if node.applied_visibility == 'public':
+      if node.applied_visibility in ('public', 'java_public'):
         return '{@link %s#%s %s}' % (kind_mapping[node.kind],
                                      jkey_identifier(node.name),
                                      node.name)
@@ -844,7 +844,7 @@ def javadoc(metadata, indent = 4):
     # For each public tag "android.x.y.z" referenced, add a
     # "@see CaptureRequest#X_Y_Z"
     def javadoc_crossref_see_filter(node_set):
-      node_set = (x for x in node_set if x.applied_visibility == 'public')
+      node_set = (x for x in node_set if x.applied_visibility in ('public', 'java_public'))
 
       text = '\n'
       for node in node_set:
@@ -1133,6 +1133,18 @@ def remove_synthetic(entries):
   """
   return (e for e in entries if not e.synthetic)
 
+def filter_ndk_visible(entries):
+  """
+  Filter the given entries by removing those that are not NDK visible.
+
+  Args:
+    entries: An iterable of Entry nodes
+
+  Yields:
+    An iterable of Entry nodes
+  """
+  return (e for e in entries if e.applied_ndk_visible == 'true')
+
 def wbr(text):
   """
   Insert word break hints for the browser in the form of <wbr> HTML tags.
index 315c97c..37689e5 100644 (file)
@@ -1031,6 +1031,9 @@ class Entry(Node):
                 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.
+    applied_ndk_visible: Always valid. Default is 'false'.
+                         Set to 'true' when the visibility implied entry is visible
+                         in NDK.
     synthetic: The C-level visibility of this entry ('false', 'true').
                Synthetic entries will not be generated into the native metadata
                list of entries (in C code). In general a synthetic entry is
@@ -1137,6 +1140,12 @@ class Entry(Node):
     return self._visibility or 'system'
 
   @property
+  def applied_ndk_visible(self):
+    if self._visibility in ("public", "ndk_public"):
+      return "true"
+    return "false"
+
+  @property
   def synthetic(self):
     return self._synthetic
 
@@ -1274,6 +1283,7 @@ class Entry(Node):
     self._hwlevel = kwargs.get('hwlevel')
     self._deprecated = kwargs.get('deprecated', False)
     self._optional = kwargs.get('optional')
+    self._ndk_visible = kwargs.get('ndk_visible')
 
     self._property_keys = kwargs
 
@@ -1470,6 +1480,7 @@ class MergedEntry(Entry):
                     'type',
                     'type_notes',
                     'visibility',
+                    'ndk_visible',
                     'synthetic',
                     'hwlevel',
                     'deprecated',
index 40c4cd1..25def21 100644 (file)
@@ -2084,7 +2084,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           </details>
           <tag id="BC" />
         </entry>
-        <entry name="maxRegions" type="int32" visibility="hidden"
+        <entry name="maxRegions" type="int32" visibility="ndk_public"
                container="array" hwlevel="legacy">
           <array>
             <size>3</size>
@@ -2102,7 +2102,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           `(AE, AWB, AF)`.</range>
           <tag id="BC" />
         </entry>
-        <entry name="maxRegionsAe" type="int32" visibility="public"
+        <entry name="maxRegionsAe" type="int32" visibility="java_public"
                synthetic="true" hwlevel="legacy">
           <description>
           The maximum number of metering regions that can be used by the auto-exposure (AE)
@@ -2119,7 +2119,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           maxRegions to have this entry be automatically populated.
           </hal_details>
         </entry>
-        <entry name="maxRegionsAwb" type="int32" visibility="public"
+        <entry name="maxRegionsAwb" type="int32" visibility="java_public"
                synthetic="true" hwlevel="legacy">
           <description>
           The maximum number of metering regions that can be used by the auto-white balance (AWB)
@@ -2135,7 +2135,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           maxRegions to have this entry be automatically populated.
           </hal_details>
         </entry>
-        <entry name="maxRegionsAf" type="int32" visibility="public"
+        <entry name="maxRegionsAf" type="int32" visibility="java_public"
                synthetic="true" hwlevel="legacy">
           <description>
           The maximum number of metering regions that can be used by the auto-focus (AF) routine.
@@ -3140,7 +3140,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
     </section>
     <section name="jpeg">
       <controls>
-        <entry name="gpsLocation" type="byte" visibility="public" synthetic="true"
+        <entry name="gpsLocation" type="byte" visibility="java_public" synthetic="true"
         typedef="location" hwlevel="legacy">
           <description>
           A location object to use when generating image GPS metadata.
@@ -3151,7 +3151,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           viewed by anyone who receives the JPEG image.
           </details>
         </entry>
-        <entry name="gpsCoordinates" type="double" visibility="hidden"
+        <entry name="gpsCoordinates" type="double" visibility="ndk_public"
         type_notes="latitude, longitude, altitude. First two in degrees, the third in meters"
         container="array" hwlevel="legacy">
           <array>
@@ -3162,14 +3162,14 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           <range>(-180 - 180], [-90,90], [-inf, inf]</range>
           <tag id="BC" />
         </entry>
-        <entry name="gpsProcessingMethod" type="byte" visibility="hidden"
+        <entry name="gpsProcessingMethod" type="byte" visibility="ndk_public"
                typedef="string" hwlevel="legacy">
           <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" visibility="hidden" hwlevel="legacy">
+        <entry name="gpsTimestamp" type="int64" visibility="ndk_public" hwlevel="legacy">
           <description>Time GPS fix was made to include in
           EXIF.</description>
           <units>UTC in seconds since January 1, 1970</units>
@@ -3577,7 +3577,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
             the MANUAL_SENSOR capability.</hal_details>
             <tag id="V1" />
           </entry>
-          <entry name="shadingMapSize" type="int32" visibility="hidden"
+          <entry name="shadingMapSize" type="int32" visibility="ndk_public"
                  type_notes="width and height (N, M) of lens shading map provided by the camera device."
                  container="array" typedef="size" hwlevel="full">
             <array>
@@ -4286,8 +4286,8 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
         </entry>
       </controls>
       <static>
-        <entry name="maxNumOutputStreams" type="int32" visibility="hidden"
-        container="array" hwlevel="legacy">
+        <entry name="maxNumOutputStreams" type="int32" visibility="ndk_public"
+               container="array" hwlevel="legacy">
           <array>
             <size>3</size>
           </array>
@@ -4329,7 +4329,8 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           </details>
           <tag id="BC" />
         </entry>
-        <entry name="maxNumOutputRaw" type="int32" visibility="public" synthetic="true" hwlevel="legacy">
+        <entry name="maxNumOutputRaw" type="int32" visibility="java_public" synthetic="true"
+               hwlevel="legacy">
           <description>The maximum numbers of different types of output streams
           that can be configured and used simultaneously by a camera device
           for any `RAW` formats.
@@ -4356,7 +4357,8 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           never support raw streams.
           </details>
         </entry>
-        <entry name="maxNumOutputProc" type="int32" visibility="public" synthetic="true" hwlevel="legacy">
+        <entry name="maxNumOutputProc" type="int32" visibility="java_public" synthetic="true"
+               hwlevel="legacy">
           <description>The maximum numbers of different types of output streams
           that can be configured and used simultaneously by a camera device
           for any processed (but not-stalling) formats.
@@ -4391,7 +4393,8 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           LEGACY devices will support at least 2 processing/non-stalling streams.
           </details>
         </entry>
-        <entry name="maxNumOutputProcStalling" type="int32" visibility="public" synthetic="true" hwlevel="legacy">
+        <entry name="maxNumOutputProcStalling" type="int32" visibility="java_public" synthetic="true"
+               hwlevel="legacy">
           <description>The maximum numbers of different types of output streams
           that can be configured and used simultaneously by a camera device
           for any processed (and stalling) formats.
@@ -4970,8 +4973,8 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           DEPTH).
           </hal_details>
         </entry>
-        <entry name="availableRequestKeys" type="int32" visibility="hidden"
-          container="array" hwlevel="legacy">
+        <entry name="availableRequestKeys" type="int32" visibility="ndk_public"
+               container="array" hwlevel="legacy">
           <array>
             <size>n</size>
           </array>
@@ -5002,8 +5005,8 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           {@link android.hardware.camera2.CameraCharacteristics#getAvailableCaptureRequestKeys}.
           </hal_details>
         </entry>
-        <entry name="availableResultKeys" type="int32" visibility="hidden"
-          container="array" hwlevel="legacy">
+        <entry name="availableResultKeys" type="int32" visibility="ndk_public"
+               container="array" hwlevel="legacy">
           <array>
             <size>n</size>
           </array>
@@ -5045,8 +5048,8 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           android.hardware.camera2.CameraCharacteristics#getAvailableCaptureResultKeys}.
           </hal_details>
         </entry>
-        <entry name="availableCharacteristicsKeys" type="int32" visibility="hidden"
-          container="array" hwlevel="legacy">
+        <entry name="availableCharacteristicsKeys" type="int32" visibility="ndk_public"
+               container="array" hwlevel="legacy">
           <array>
             <size>n</size>
           </array>
@@ -5507,9 +5510,8 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           </hal_details>
           <tag id="REPROC" />
         </entry>
-        <entry name="availableStreamConfigurations" type="int32" visibility="hidden"
-          enum="true" container="array"
-          typedef="streamConfiguration" hwlevel="legacy">
+        <entry name="availableStreamConfigurations" type="int32" visibility="ndk_public"
+               enum="true" container="array" typedef="streamConfiguration" hwlevel="legacy">
           <array>
             <size>n</size>
             <size>4</size>
@@ -5609,9 +5611,8 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           * available[Processed,Raw,Jpeg]Sizes
           </hal_details>
         </entry>
-        <entry name="availableMinFrameDurations" type="int64" visibility="hidden"
-               container="array"
-               typedef="streamConfigurationDuration" hwlevel="legacy">
+        <entry name="availableMinFrameDurations" type="int64" visibility="ndk_public"
+               container="array" typedef="streamConfigurationDuration" hwlevel="legacy">
           <array>
             <size>4</size>
             <size>n</size>
@@ -5640,7 +5641,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           </details>
           <tag id="V1" />
         </entry>
-        <entry name="availableStallDurations" type="int64" visibility="hidden"
+        <entry name="availableStallDurations" type="int64" visibility="ndk_public"
                container="array" typedef="streamConfigurationDuration" hwlevel="legacy">
           <array>
             <size>4</size>
@@ -5724,7 +5725,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           </hal_details>
           <tag id="V1" />
         </entry>
-        <entry name="streamConfigurationMap" type="int32" visibility="public"
+        <entry name="streamConfigurationMap" type="int32" visibility="java_public"
                synthetic="true" typedef="streamConfigurationMap"
                hwlevel="legacy">
           <description>The available stream configurations that this
@@ -7501,8 +7502,8 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
       <dynamic>
         <clone entry="android.statistics.faceDetectMode"
                kind="controls"></clone>
-        <entry name="faceIds" type="int32" visibility="hidden" container="array"
-               hwlevel="legacy">
+        <entry name="faceIds" type="int32" visibility="ndk_public"
+               container="array" hwlevel="legacy">
           <array>
             <size>n</size>
           </array>
@@ -7515,9 +7516,9 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           Only available if android.statistics.faceDetectMode == FULL</details>
           <tag id="BC" />
         </entry>
-        <entry name="faceLandmarks" type="int32" visibility="hidden"
-        type_notes="(leftEyeX, leftEyeY, rightEyeX, rightEyeY, mouthX, mouthY)"
-        container="array" hwlevel="legacy">
+        <entry name="faceLandmarks" type="int32" visibility="ndk_public"
+               type_notes="(leftEyeX, leftEyeY, rightEyeX, rightEyeY, mouthX, mouthY)"
+               container="array" hwlevel="legacy">
           <array>
             <size>n</size>
             <size>6</size>
@@ -7531,9 +7532,9 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
             Only available if android.statistics.faceDetectMode == FULL</details>
           <tag id="BC" />
         </entry>
-        <entry name="faceRectangles" type="int32" visibility="hidden"
-        type_notes="(xmin, ymin, xmax, ymax). (0,0) is top-left of active pixel area"
-        container="array" typedef="rectangle" hwlevel="legacy">
+        <entry name="faceRectangles" type="int32" visibility="ndk_public"
+               type_notes="(xmin, ymin, xmax, ymax). (0,0) is top-left of active pixel area"
+               container="array" typedef="rectangle" hwlevel="legacy">
           <array>
             <size>n</size>
             <size>4</size>
@@ -7547,8 +7548,8 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
             Only available if android.statistics.faceDetectMode != OFF</details>
           <tag id="BC" />
         </entry>
-        <entry name="faceScores" type="byte" visibility="hidden" container="array"
-               hwlevel="legacy">
+        <entry name="faceScores" type="byte" visibility="ndk_public"
+               container="array" hwlevel="legacy">
           <array>
             <size>n</size>
           </array>
@@ -7562,7 +7563,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           all times is illegal).</hal_details>
           <tag id="BC" />
         </entry>
-        <entry name="faces" type="int32" visibility="public" synthetic="true"
+        <entry name="faces" type="int32" visibility="java_public" synthetic="true"
                container="array" typedef="face" hwlevel="legacy">
           <array>
             <size>n</size>
@@ -7659,7 +7660,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           ![Image of a uniform white wall (inverse shading map)](android.statistics.lensShadingMap/inv_shading.png)
           </details>
         </entry>
-        <entry name="lensShadingMap" type="float" visibility="hidden"
+        <entry name="lensShadingMap" type="float" visibility="ndk_public"
                type_notes="2D array of float gain factors per channel to correct lens shading"
                container="array" hwlevel="full">
           <array>
@@ -7896,7 +7897,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
     </section>
     <section name="tonemap">
       <controls>
-        <entry name="curveBlue" type="float" visibility="hidden"
+        <entry name="curveBlue" type="float" visibility="ndk_public"
         type_notes="1D array of float pairs (P_IN, P_OUT). The maximum number of pairs is specified by android.tonemap.maxCurvePoints."
         container="array" hwlevel="full">
           <array>
@@ -7908,7 +7909,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           CONTRAST_CURVE.</description>
           <details>See android.tonemap.curveRed for more details.</details>
         </entry>
-        <entry name="curveGreen" type="float" visibility="hidden"
+        <entry name="curveGreen" type="float" visibility="ndk_public"
         type_notes="1D array of float pairs (P_IN, P_OUT). The maximum number of pairs is specified by android.tonemap.maxCurvePoints."
         container="array" hwlevel="full">
           <array>
@@ -7920,7 +7921,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           CONTRAST_CURVE.</description>
           <details>See android.tonemap.curveRed for more details.</details>
         </entry>
-        <entry name="curveRed" type="float" visibility="hidden"
+        <entry name="curveRed" type="float" visibility="ndk_public"
         type_notes="1D array of float pairs (P_IN, P_OUT). The maximum number of pairs is specified by android.tonemap.maxCurvePoints."
         container="array" hwlevel="full">
           <array>
@@ -7995,7 +7996,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           control points used as are available.
         </hal_details>
         </entry>
-        <entry name="curve" type="float" visibility="public" synthetic="true"
+        <entry name="curve" type="float" visibility="java_public" synthetic="true"
                typedef="tonemapCurve"
                hwlevel="full">
           <description>Tonemapping / contrast / gamma curve to use when android.tonemap.mode
@@ -8539,8 +8540,8 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
     </section>
     <section name="sync">
       <dynamic>
-        <entry name="frameNumber" type="int64" visibility="hidden" enum="true"
-               hwlevel="legacy">
+        <entry name="frameNumber" type="int64" visibility="ndk_public"
+               enum="true" hwlevel="legacy">
           <enum>
             <value id="-1">CONVERGING
               <notes>
@@ -8731,7 +8732,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
     </section>
     <section name="reprocess">
       <controls>
-        <entry name="effectiveExposureFactor" type="float" visibility="public" hwlevel="limited">
+        <entry name="effectiveExposureFactor" type="float" visibility="java_public" hwlevel="limited">
             <description>
             The amount of exposure time increase factor applied to the original output
             frame by the application processing before sending for reprocessing.
@@ -8782,7 +8783,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
       </clone>
       </dynamic>
       <static>
-        <entry name="maxCaptureStall" type="int32" visibility="public" hwlevel="limited">
+        <entry name="maxCaptureStall" type="int32" visibility="java_public" hwlevel="limited">
           <description>
           The maximal camera capture pipeline stall (in unit of frame count) introduced by a
           reprocess capture request.
@@ -8831,9 +8832,8 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           </details>
           <tag id="DEPTH" />
         </entry>
-        <entry name="availableDepthStreamConfigurations" type="int32" visibility="hidden"
-          enum="true" container="array"
-          typedef="streamConfiguration" hwlevel="limited">
+        <entry name="availableDepthStreamConfigurations" type="int32" visibility="ndk_public"
+               enum="true" container="array" typedef="streamConfiguration" hwlevel="limited">
           <array>
             <size>n</size>
             <size>4</size>
@@ -8863,9 +8863,8 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           </details>
           <tag id="DEPTH" />
         </entry>
-        <entry name="availableDepthMinFrameDurations" type="int64" visibility="hidden"
-               container="array"
-               typedef="streamConfigurationDuration" hwlevel="limited">
+        <entry name="availableDepthMinFrameDurations" type="int64" visibility="ndk_public"
+               container="array" typedef="streamConfigurationDuration" hwlevel="limited">
           <array>
             <size>4</size>
             <size>n</size>
@@ -8894,7 +8893,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           </details>
           <tag id="DEPTH" />
         </entry>
-        <entry name="availableDepthStallDurations" type="int64" visibility="hidden"
+        <entry name="availableDepthStallDurations" type="int64" visibility="ndk_public"
                container="array" typedef="streamConfigurationDuration" hwlevel="limited">
           <array>
             <size>4</size>
index a71a6c9..6401cd0 100644 (file)
         <attribute name="visibility">
             <simpleType>
                 <restriction base="string">
-                    <enumeration value="system" /> <!-- do not expose to java -->
-                    <enumeration value="hidden" /> <!-- java as @hide -->
-                    <enumeration value="public" /> <!-- java as public SDK -->
+                    <enumeration value="system" /> <!-- do not expose to java/NDK API -->
+                    <enumeration value="java_public" /> <!-- java as public SDK. Not included in NDK -->
+                    <enumeration value="ndk_public" /> <!-- public in NDK. @hide in java -->
+                    <enumeration value="hidden" /> <!-- java as @hide. Not included in NDK -->
+                    <enumeration value="public" /> <!-- public to both java and NDK -->
                 </restriction>
             </simpleType>
         </attribute>
index 9612317..7b0294c 100644 (file)
@@ -65,12 +65,12 @@ typedef enum acamera_metadata_tag {
     % for sec in find_all_sections(metadata):
 <%
       entries = remove_synthetic(find_unique_entries(sec))
-      skip_sec = all(e.applied_visibility == "system" for e in entries)
+      skip_sec = all(e.applied_ndk_visible == "false" for e in entries)
       if skip_sec:
         continue
 %>\
       % for idx,entry in enumerate(remove_synthetic(find_unique_entries(sec))):
-        % if entry.applied_visibility != "system":
+        % if entry.applied_ndk_visible == "true":
           % if entry.deprecated:
     ${ndk(entry.name) + " = " | csym,ljust(60)}// Deprecated! DO NOT USE
           % else:
@@ -93,7 +93,7 @@ typedef enum acamera_metadata_tag {
  */
 
 % for sec in find_all_sections(metadata):
-  % for entry in filter_visibility(remove_synthetic(find_unique_entries(sec)), ("public", "hidden")):
+  % for entry in filter_ndk_visible(remove_synthetic(find_unique_entries(sec))):
     % if entry.enum:
 // ${ndk(entry.name) | csym}
 typedef enum acamera_metadata_enum_${csym(ndk(entry.name)).lower()} {
index a8c4c2a..443af40 100644 (file)
@@ -146,7 +146,7 @@ typedef enum camera_metadata_tag {
     ANDROID_CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES,
                                                       // byte[]       | public
     ANDROID_CONTROL_AWB_AVAILABLE_MODES,              // byte[]       | public
-    ANDROID_CONTROL_MAX_REGIONS,                      // int32[]      | hidden
+    ANDROID_CONTROL_MAX_REGIONS,                      // int32[]      | ndk_public
     ANDROID_CONTROL_SCENE_MODE_OVERRIDES,             // byte[]       | system
     ANDROID_CONTROL_AE_PRECAPTURE_ID,                 // int32        | system
     ANDROID_CONTROL_AE_STATE,                         // enum         | public
@@ -191,10 +191,10 @@ typedef enum camera_metadata_tag {
     ANDROID_HOT_PIXEL_AVAILABLE_HOT_PIXEL_MODES,      // byte[]       | public
     ANDROID_HOT_PIXEL_END,
 
-    ANDROID_JPEG_GPS_COORDINATES =                    // double[]     | hidden
+    ANDROID_JPEG_GPS_COORDINATES =                    // double[]     | ndk_public
             ANDROID_JPEG_START,
-    ANDROID_JPEG_GPS_PROCESSING_METHOD,               // byte         | hidden
-    ANDROID_JPEG_GPS_TIMESTAMP,                       // int64        | hidden
+    ANDROID_JPEG_GPS_PROCESSING_METHOD,               // byte         | ndk_public
+    ANDROID_JPEG_GPS_TIMESTAMP,                       // int64        | ndk_public
     ANDROID_JPEG_ORIENTATION,                         // int32        | public
     ANDROID_JPEG_QUALITY,                             // byte         | public
     ANDROID_JPEG_THUMBNAIL_QUALITY,                   // byte         | public
@@ -226,7 +226,7 @@ typedef enum camera_metadata_tag {
     ANDROID_LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION,// byte[]       | public
     ANDROID_LENS_INFO_HYPERFOCAL_DISTANCE,            // float        | public
     ANDROID_LENS_INFO_MINIMUM_FOCUS_DISTANCE,         // float        | public
-    ANDROID_LENS_INFO_SHADING_MAP_SIZE,               // int32[]      | hidden
+    ANDROID_LENS_INFO_SHADING_MAP_SIZE,               // int32[]      | ndk_public
     ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION,     // enum         | public
     ANDROID_LENS_INFO_END,
 
@@ -252,16 +252,16 @@ typedef enum camera_metadata_tag {
     ANDROID_REQUEST_METADATA_MODE,                    // enum         | system
     ANDROID_REQUEST_OUTPUT_STREAMS,                   // int32[]      | system
     ANDROID_REQUEST_TYPE,                             // enum         | system
-    ANDROID_REQUEST_MAX_NUM_OUTPUT_STREAMS,           // int32[]      | hidden
+    ANDROID_REQUEST_MAX_NUM_OUTPUT_STREAMS,           // int32[]      | ndk_public
     ANDROID_REQUEST_MAX_NUM_REPROCESS_STREAMS,        // int32[]      | system
     ANDROID_REQUEST_MAX_NUM_INPUT_STREAMS,            // int32        | public
     ANDROID_REQUEST_PIPELINE_DEPTH,                   // byte         | public
     ANDROID_REQUEST_PIPELINE_MAX_DEPTH,               // byte         | public
     ANDROID_REQUEST_PARTIAL_RESULT_COUNT,             // int32        | public
     ANDROID_REQUEST_AVAILABLE_CAPABILITIES,           // enum[]       | public
-    ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS,           // int32[]      | hidden
-    ANDROID_REQUEST_AVAILABLE_RESULT_KEYS,            // int32[]      | hidden
-    ANDROID_REQUEST_AVAILABLE_CHARACTERISTICS_KEYS,   // int32[]      | hidden
+    ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS,           // int32[]      | ndk_public
+    ANDROID_REQUEST_AVAILABLE_RESULT_KEYS,            // int32[]      | ndk_public
+    ANDROID_REQUEST_AVAILABLE_CHARACTERISTICS_KEYS,   // int32[]      | ndk_public
     ANDROID_REQUEST_END,
 
     ANDROID_SCALER_CROP_REGION =                      // int32[]      | public
@@ -275,9 +275,9 @@ typedef enum camera_metadata_tag {
     ANDROID_SCALER_AVAILABLE_RAW_MIN_DURATIONS,       // int64[]      | system
     ANDROID_SCALER_AVAILABLE_RAW_SIZES,               // int32[]      | system
     ANDROID_SCALER_AVAILABLE_INPUT_OUTPUT_FORMATS_MAP,// int32        | hidden
-    ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS,   // enum[]       | hidden
-    ANDROID_SCALER_AVAILABLE_MIN_FRAME_DURATIONS,     // int64[]      | hidden
-    ANDROID_SCALER_AVAILABLE_STALL_DURATIONS,         // int64[]      | hidden
+    ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS,   // enum[]       | ndk_public
+    ANDROID_SCALER_AVAILABLE_MIN_FRAME_DURATIONS,     // int64[]      | ndk_public
+    ANDROID_SCALER_AVAILABLE_STALL_DURATIONS,         // int64[]      | ndk_public
     ANDROID_SCALER_CROPPING_TYPE,                     // enum         | public
     ANDROID_SCALER_END,
 
@@ -341,14 +341,14 @@ typedef enum camera_metadata_tag {
     ANDROID_STATISTICS_HISTOGRAM_MODE,                // enum         | system
     ANDROID_STATISTICS_SHARPNESS_MAP_MODE,            // enum         | system
     ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE,            // enum         | public
-    ANDROID_STATISTICS_FACE_IDS,                      // int32[]      | hidden
-    ANDROID_STATISTICS_FACE_LANDMARKS,                // int32[]      | hidden
-    ANDROID_STATISTICS_FACE_RECTANGLES,               // int32[]      | hidden
-    ANDROID_STATISTICS_FACE_SCORES,                   // byte[]       | hidden
+    ANDROID_STATISTICS_FACE_IDS,                      // int32[]      | ndk_public
+    ANDROID_STATISTICS_FACE_LANDMARKS,                // int32[]      | ndk_public
+    ANDROID_STATISTICS_FACE_RECTANGLES,               // int32[]      | ndk_public
+    ANDROID_STATISTICS_FACE_SCORES,                   // byte[]       | ndk_public
     ANDROID_STATISTICS_HISTOGRAM,                     // int32[]      | system
     ANDROID_STATISTICS_SHARPNESS_MAP,                 // int32[]      | system
     ANDROID_STATISTICS_LENS_SHADING_CORRECTION_MAP,   // byte         | public
-    ANDROID_STATISTICS_LENS_SHADING_MAP,              // float[]      | hidden
+    ANDROID_STATISTICS_LENS_SHADING_MAP,              // float[]      | ndk_public
     ANDROID_STATISTICS_PREDICTED_COLOR_GAINS,         // float[]      | hidden
     ANDROID_STATISTICS_PREDICTED_COLOR_TRANSFORM,     // rational[]   | hidden
     ANDROID_STATISTICS_SCENE_FLICKER,                 // enum         | public
@@ -370,10 +370,10 @@ typedef enum camera_metadata_tag {
                                                       // byte[]       | public
     ANDROID_STATISTICS_INFO_END,
 
-    ANDROID_TONEMAP_CURVE_BLUE =                      // float[]      | hidden
+    ANDROID_TONEMAP_CURVE_BLUE =                      // float[]      | ndk_public
             ANDROID_TONEMAP_START,
-    ANDROID_TONEMAP_CURVE_GREEN,                      // float[]      | hidden
-    ANDROID_TONEMAP_CURVE_RED,                        // float[]      | hidden
+    ANDROID_TONEMAP_CURVE_GREEN,                      // float[]      | ndk_public
+    ANDROID_TONEMAP_CURVE_RED,                        // float[]      | ndk_public
     ANDROID_TONEMAP_MODE,                             // enum         | public
     ANDROID_TONEMAP_MAX_CURVE_POINTS,                 // int32        | public
     ANDROID_TONEMAP_AVAILABLE_TONE_MAP_MODES,         // byte[]       | public
@@ -394,22 +394,22 @@ typedef enum camera_metadata_tag {
             ANDROID_BLACK_LEVEL_START,
     ANDROID_BLACK_LEVEL_END,
 
-    ANDROID_SYNC_FRAME_NUMBER =                       // enum         | hidden
+    ANDROID_SYNC_FRAME_NUMBER =                       // enum         | ndk_public
             ANDROID_SYNC_START,
     ANDROID_SYNC_MAX_LATENCY,                         // enum         | public
     ANDROID_SYNC_END,
 
-    ANDROID_REPROCESS_EFFECTIVE_EXPOSURE_FACTOR =     // float        | public
+    ANDROID_REPROCESS_EFFECTIVE_EXPOSURE_FACTOR =     // float        | java_public
             ANDROID_REPROCESS_START,
-    ANDROID_REPROCESS_MAX_CAPTURE_STALL,              // int32        | public
+    ANDROID_REPROCESS_MAX_CAPTURE_STALL,              // int32        | java_public
     ANDROID_REPROCESS_END,
 
     ANDROID_DEPTH_MAX_DEPTH_SAMPLES =                 // int32        | system
             ANDROID_DEPTH_START,
     ANDROID_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS,
-                                                      // enum[]       | hidden
-    ANDROID_DEPTH_AVAILABLE_DEPTH_MIN_FRAME_DURATIONS,// int64[]      | hidden
-    ANDROID_DEPTH_AVAILABLE_DEPTH_STALL_DURATIONS,    // int64[]      | hidden
+                                                      // enum[]       | ndk_public
+    ANDROID_DEPTH_AVAILABLE_DEPTH_MIN_FRAME_DURATIONS,// int64[]      | ndk_public
+    ANDROID_DEPTH_AVAILABLE_DEPTH_STALL_DURATIONS,    // int64[]      | ndk_public
     ANDROID_DEPTH_DEPTH_IS_EXCLUSIVE,                 // enum         | public
     ANDROID_DEPTH_END,