xref: /aosp_15_r20/system/media/camera/docs/ACameraMetadata.mako (revision b9df5ad1c9ac98a7fefaac271a55f7ae3db05414)
1*b9df5ad1SAndroid Build Coastguard Worker## -*- coding: utf-8 -*-
2*b9df5ad1SAndroid Build Coastguard Worker##
3*b9df5ad1SAndroid Build Coastguard Worker## Copyright (C) 2015 The Android Open Source Project
4*b9df5ad1SAndroid Build Coastguard Worker##
5*b9df5ad1SAndroid Build Coastguard Worker## Licensed under the Apache License, Version 2.0 (the "License");
6*b9df5ad1SAndroid Build Coastguard Worker## you may not use this file except in compliance with the License.
7*b9df5ad1SAndroid Build Coastguard Worker## You may obtain a copy of the License at
8*b9df5ad1SAndroid Build Coastguard Worker##
9*b9df5ad1SAndroid Build Coastguard Worker##      http://www.apache.org/licenses/LICENSE-2.0
10*b9df5ad1SAndroid Build Coastguard Worker##
11*b9df5ad1SAndroid Build Coastguard Worker## Unless required by applicable law or agreed to in writing, software
12*b9df5ad1SAndroid Build Coastguard Worker## distributed under the License is distributed on an "AS IS" BASIS,
13*b9df5ad1SAndroid Build Coastguard Worker## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*b9df5ad1SAndroid Build Coastguard Worker## See the License for the specific language governing permissions and
15*b9df5ad1SAndroid Build Coastguard Worker## limitations under the License.
16*b9df5ad1SAndroid Build Coastguard Worker##
17*b9df5ad1SAndroid Build Coastguard Worker\
18*b9df5ad1SAndroid Build Coastguard Worker## Generate a list of only Static, Controls, or Dynamic properties.
19*b9df5ad1SAndroid Build Coastguard Worker<%def name="single_kind_keys(kind_name)">\
20*b9df5ad1SAndroid Build Coastguard Worker% for outer_namespace in metadata.outer_namespaces: ## assumes single 'android' namespace
21*b9df5ad1SAndroid Build Coastguard Worker  % for section in outer_namespace.sections:
22*b9df5ad1SAndroid Build Coastguard Worker    % if section.find_first(lambda x: isinstance(x, metadata_model.Entry) and x.kind == kind_name) and \
23*b9df5ad1SAndroid Build Coastguard Worker         any_visible(section, kind_name, ('public','ndk_public','fwk_public','fwk_ndk_public') ):
24*b9df5ad1SAndroid Build Coastguard Worker      % for inner_namespace in get_children_by_filtering_kind(section, kind_name, 'namespaces'):
25*b9df5ad1SAndroid Build Coastguard Worker## 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
26*b9df5ad1SAndroid Build Coastguard Worker## If we need to support more, we should use a recursive function here instead.. but the indentation gets trickier.
27*b9df5ad1SAndroid Build Coastguard Worker        % for entry in filter_visibility(inner_namespace.merged_entries, ('public','ndk_public',\
28*b9df5ad1SAndroid Build Coastguard Worker	      'fwk_public','fwk_ndk_public')):
29*b9df5ad1SAndroid Build Coastguard Worker          % if not entry.synthetic:
30*b9df5ad1SAndroid Build Coastguard Worker        case ${ndk(entry.name) | csym}:
31*b9df5ad1SAndroid Build Coastguard Worker          % else:
32*b9df5ad1SAndroid Build Coastguard Worker            assert(False),"A synthetic key should not present in NDK!"
33*b9df5ad1SAndroid Build Coastguard Worker          % endif
34*b9df5ad1SAndroid Build Coastguard Worker       % endfor
35*b9df5ad1SAndroid Build Coastguard Worker    % endfor
36*b9df5ad1SAndroid Build Coastguard Worker    % for entry in filter_visibility( \
37*b9df5ad1SAndroid Build Coastguard Worker        get_children_by_filtering_kind(section, kind_name, 'merged_entries'), \
38*b9df5ad1SAndroid Build Coastguard Worker                                         ('public','ndk_public','fwk_public','fwk_ndk_public')):
39*b9df5ad1SAndroid Build Coastguard Worker      % if not entry.synthetic:
40*b9df5ad1SAndroid Build Coastguard Worker        case ${ndk(entry.name) | csym}:
41*b9df5ad1SAndroid Build Coastguard Worker      % endif
42*b9df5ad1SAndroid Build Coastguard Worker    % endfor
43*b9df5ad1SAndroid Build Coastguard Worker    % endif
44*b9df5ad1SAndroid Build Coastguard Worker  % endfor
45*b9df5ad1SAndroid Build Coastguard Worker% endfor
46*b9df5ad1SAndroid Build Coastguard Worker</%def>\
47*b9df5ad1SAndroid Build Coastguard Worker/*@O~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~
48*b9df5ad1SAndroid Build Coastguard Worker * The key entries below this point are generated from metadata
49*b9df5ad1SAndroid Build Coastguard Worker * definitions in /system/media/camera/docs. Do not modify by hand or
50*b9df5ad1SAndroid Build Coastguard Worker * modify the comment blocks at the start or end.
51*b9df5ad1SAndroid Build Coastguard Worker *~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~*/
52*b9df5ad1SAndroid Build Coastguard Worker
53*b9df5ad1SAndroid Build Coastguard Workerbool
54*b9df5ad1SAndroid Build Coastguard WorkerACameraMetadata::isCaptureRequestTag(const uint32_t tag) {
55*b9df5ad1SAndroid Build Coastguard Worker    // Skip check for vendor keys
56*b9df5ad1SAndroid Build Coastguard Worker    if (isVendorTag(tag)) {
57*b9df5ad1SAndroid Build Coastguard Worker        return true;
58*b9df5ad1SAndroid Build Coastguard Worker    }
59*b9df5ad1SAndroid Build Coastguard Worker
60*b9df5ad1SAndroid Build Coastguard Worker    switch (tag) {
61*b9df5ad1SAndroid Build Coastguard Worker${single_kind_keys("controls")}\
62*b9df5ad1SAndroid Build Coastguard Worker            return true;
63*b9df5ad1SAndroid Build Coastguard Worker        default:
64*b9df5ad1SAndroid Build Coastguard Worker            return false;
65*b9df5ad1SAndroid Build Coastguard Worker    }
66*b9df5ad1SAndroid Build Coastguard Worker}
67*b9df5ad1SAndroid Build Coastguard Worker
68*b9df5ad1SAndroid Build Coastguard Worker// System tags that should be hidden from users
69*b9df5ad1SAndroid Build Coastguard Workerstd::unordered_set<uint32_t> ACameraMetadata::sSystemTags ({
70*b9df5ad1SAndroid Build Coastguard Worker    % for sec in find_all_sections(metadata):
71*b9df5ad1SAndroid Build Coastguard Worker      % for entry in remove_hal_non_visible(find_unique_entries(sec)):
72*b9df5ad1SAndroid Build Coastguard Worker        % if entry.applied_visibility == "system":
73*b9df5ad1SAndroid Build Coastguard Worker    ${entry.name | csym},
74*b9df5ad1SAndroid Build Coastguard Worker        % endif
75*b9df5ad1SAndroid Build Coastguard Worker      % endfor
76*b9df5ad1SAndroid Build Coastguard Worker    %endfor
77*b9df5ad1SAndroid Build Coastguard Worker});
78*b9df5ad1SAndroid Build Coastguard Worker
79*b9df5ad1SAndroid Build Coastguard Worker/*~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~
80*b9df5ad1SAndroid Build Coastguard Worker * End generated code
81*b9df5ad1SAndroid Build Coastguard Worker *~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~O@*/
82