| ## -*- coding: utf-8 -*- |
| /* |
| * Copyright (C) 2015 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| /** |
| * @addtogroup Camera |
| * @{ |
| */ |
| |
| /** |
| * @file NdkCameraMetadataTags.h |
| */ |
| |
| /* |
| * This file defines an NDK API. |
| * Do not remove methods. |
| * Do not change method signatures. |
| * Do not change the value of constants. |
| * Do not change the size of any of the classes defined in here. |
| * Do not reference types that are not part of the NDK. |
| * Do not #include files that aren't part of the NDK. |
| */ |
| |
| #ifndef _NDK_CAMERA_METADATA_TAGS_H |
| #define _NDK_CAMERA_METADATA_TAGS_H |
| |
| #include <sys/cdefs.h> |
| |
| __BEGIN_DECLS |
| |
| #if __ANDROID_API__ >= 24 |
| <%! |
| from metadata_helpers import csym |
| def annotated_type(entry): |
| type = entry.type |
| if entry.container == 'array': |
| type += '[' + '*'.join(entry.container_sizes) + ']' |
| if entry.enum: |
| type += ' (acamera_metadata_enum_%s_t)'%(csym(entry.name).lower()) |
| |
| return type |
| %>\ |
| \ |
| |
| typedef enum acamera_metadata_section { |
| % for i in find_all_sections(metadata): |
| ${ndk(path_name(i)) | csym}, |
| % endfor |
| ACAMERA_SECTION_COUNT, |
| |
| ACAMERA_VENDOR = 0x8000 |
| } acamera_metadata_section_t; |
| |
| /** |
| * Hierarchy positions in enum space. |
| */ |
| typedef enum acamera_metadata_section_start { |
| % for i in find_all_sections(metadata): |
| ${ndk(path_name(i)) + '.start' | csym,ljust(30)} = ${ndk(path_name(i)) | csym,pad(64)} << 16, |
| % endfor |
| ACAMERA_VENDOR_START = ACAMERA_VENDOR << 16 |
| } acamera_metadata_section_start_t; |
| |
| /** |
| * Main enum for camera metadata tags. |
| */ |
| typedef enum acamera_metadata_tag { |
| % for sec in find_all_sections(metadata): |
| <% |
| entries = remove_synthetic(find_unique_entries(sec)) |
| 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_ndk_visible == "true": |
| % if entry.deprecated: |
| ${ndk(entry.name) + " = " | csym,ljust(60)}// Deprecated! DO NOT USE |
| % else: |
| % if entry.description or entry.details: |
| /** |
| % if entry.description: |
| ${entry.description | ndkdoc(metadata)}\ |
| % endif |
| * |
| * <p>Type: ${annotated_type(entry)}</p> |
| * |
| * <p>This tag may appear in: |
| * <ul> |
| % if metadata.is_entry_this_kind(entry, 'static'): |
| * <li>ACameraMetadata from ACameraManager_getCameraCharacteristics</li> |
| % endif |
| % if metadata.is_entry_this_kind(entry, 'dynamic'): |
| * <li>ACameraMetadata from ACameraCaptureSession_captureCallback_result callbacks</li> |
| % endif |
| % if metadata.is_entry_this_kind(entry, 'controls'): |
| * <li>ACaptureRequest</li> |
| % endif |
| * </ul></p> |
| * |
| % if entry.details: |
| ${entry.applied_ndk_details | ndkdoc(metadata)}\ |
| % endif |
| */ |
| % endif |
| ${ndk(entry.name) + " = " | csym,ljust(60)}// ${annotated_type(entry)} |
| % endif |
| % if idx == 0: |
| ${ndk(path_name(find_parent_section(entry))) | csym}_START, |
| % else: |
| ${ndk(path_name(find_parent_section(entry))) | csym}_START + ${idx}, |
| % endif |
| % endif |
| % endfor |
| ${ndk(path_name(sec)) | csym}_END, |
| |
| %endfor |
| } acamera_metadata_tag_t; |
| |
| /** |
| * Enumeration definitions for the various entries that need them |
| */ |
| |
| % for sec in find_all_sections(metadata): |
| % 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()} { |
| <% |
| i = 0 |
| %>\ |
| % for val in entry.enum.values: |
| % if val.ndk_hidden: |
| <% |
| print " WARNING: {}_{} is marked as hidden".format(csym(ndk(entry.name)), val.name) + \ |
| " enum in NDK. Please double check this value is properly hidden" + \ |
| " in NDK API implementation" |
| %>\ |
| % endif |
| % if val.hidden or val.ndk_hidden: |
| % if val.id: |
| <% |
| i = int(val.id, 0) + 1 |
| continue |
| %>\ |
| % else: |
| <% |
| i += 1 |
| continue |
| %>\ |
| % endif |
| % endif |
| % if (val.notes or val.deprecated): |
| /** |
| % if val.notes: |
| ${val.notes | ndkdoc(metadata)}\ |
| % endif |
| % if val.ndk_notes: |
| ${val.ndk_notes | ndkdoc(metadata)}\ |
| % endif |
| % if val.deprecated: |
| * |
| * <b>Deprecated</b>: please refer to this API documentation to find the alternatives |
| % endif |
| */ |
| % endif |
| % if val.id: |
| ${'%s_%s'%(csym(ndk(entry.name)), val.name) | pad(70)} = ${val.id}, |
| <% |
| i = int(val.id, 0) |
| %>\ |
| % else: |
| ${'%s_%s'%(csym(ndk(entry.name)), val.name) | pad(70)} = ${i}, |
| % endif |
| <% |
| i += 1 |
| %> |
| % endfor |
| } acamera_metadata_enum_${csym(entry.name).lower()}_t; |
| |
| % endif |
| % endfor |
| |
| % endfor |
| #endif /* __ANDROID_API__ >= 24 */ |
| |
| __END_DECLS |
| |
| #endif /* _NDK_CAMERA_METADATA_TAGS_H */ |
| |
| /** @} */ |