xref: /aosp_15_r20/system/media/camera/docs/metadata_template.mako (revision b9df5ad1c9ac98a7fefaac271a55f7ae3db05414)
1*b9df5ad1SAndroid Build Coastguard Worker## -*- coding: utf-8 -*-
2*b9df5ad1SAndroid Build Coastguard Worker<?xml version="1.0" encoding="UTF-8"?>
3*b9df5ad1SAndroid Build Coastguard Worker<!-- Copyright (C) 2012 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<metadata
18*b9df5ad1SAndroid Build Coastguard Worker    xmlns="http://schemas.android.com/service/camera/metadata/"
19*b9df5ad1SAndroid Build Coastguard Worker    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
20*b9df5ad1SAndroid Build Coastguard Worker    xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata_definitions.xsd">
21*b9df5ad1SAndroid Build Coastguard Worker
22*b9df5ad1SAndroid Build Coastguard Worker<tags>
23*b9df5ad1SAndroid Build Coastguard Worker% for tag in metadata.tags:
24*b9df5ad1SAndroid Build Coastguard Worker  % if tag.description and tag.description.strip():
25*b9df5ad1SAndroid Build Coastguard Worker  <tag id="${tag.id}">${tag.description | x}</tag>
26*b9df5ad1SAndroid Build Coastguard Worker  % else:
27*b9df5ad1SAndroid Build Coastguard Worker  <tag id="${tag.id}"><!-- TODO: fill the tag description --></tag>
28*b9df5ad1SAndroid Build Coastguard Worker  % endif
29*b9df5ad1SAndroid Build Coastguard Worker% endfor
30*b9df5ad1SAndroid Build Coastguard Worker</tags>
31*b9df5ad1SAndroid Build Coastguard Worker
32*b9df5ad1SAndroid Build Coastguard Worker<types>
33*b9df5ad1SAndroid Build Coastguard Worker% for typedef in metadata.types:
34*b9df5ad1SAndroid Build Coastguard Worker  <typedef name="${typedef.name}">
35*b9df5ad1SAndroid Build Coastguard Worker    % for (language, klass) in typedef.languages.items():
36*b9df5ad1SAndroid Build Coastguard Worker      <language name="${language}">${klass | h}</language>
37*b9df5ad1SAndroid Build Coastguard Worker    % endfor
38*b9df5ad1SAndroid Build Coastguard Worker  </typedef>
39*b9df5ad1SAndroid Build Coastguard Worker% endfor
40*b9df5ad1SAndroid Build Coastguard Worker</types>
41*b9df5ad1SAndroid Build Coastguard Worker
42*b9df5ad1SAndroid Build Coastguard Worker% for root in metadata.outer_namespaces:
43*b9df5ad1SAndroid Build Coastguard Worker<namespace name="${root.name}">
44*b9df5ad1SAndroid Build Coastguard Worker  % for section in root.sections:
45*b9df5ad1SAndroid Build Coastguard Worker  <section name="${section.name}">
46*b9df5ad1SAndroid Build Coastguard Worker
47*b9df5ad1SAndroid Build Coastguard Worker    % if section.description is not None:
48*b9df5ad1SAndroid Build Coastguard Worker      <description>${section.description}</description>
49*b9df5ad1SAndroid Build Coastguard Worker    % endif
50*b9df5ad1SAndroid Build Coastguard Worker
51*b9df5ad1SAndroid Build Coastguard Worker    % for kind in section.kinds: # dynamic,static,controls
52*b9df5ad1SAndroid Build Coastguard Worker      <${kind.name}>
53*b9df5ad1SAndroid Build Coastguard Worker
54*b9df5ad1SAndroid Build Coastguard Worker        <%def name="insert_body(node)">
55*b9df5ad1SAndroid Build Coastguard Worker            % for nested in node.namespaces:
56*b9df5ad1SAndroid Build Coastguard Worker                ${insert_namespace(nested)}
57*b9df5ad1SAndroid Build Coastguard Worker            % endfor
58*b9df5ad1SAndroid Build Coastguard Worker
59*b9df5ad1SAndroid Build Coastguard Worker            % for entry in node.entries:
60*b9df5ad1SAndroid Build Coastguard Worker                ${insert_entry(entry)}
61*b9df5ad1SAndroid Build Coastguard Worker            % endfor
62*b9df5ad1SAndroid Build Coastguard Worker        </%def>
63*b9df5ad1SAndroid Build Coastguard Worker
64*b9df5ad1SAndroid Build Coastguard Worker        <%def name="insert_namespace(namespace)">
65*b9df5ad1SAndroid Build Coastguard Worker        <namespace name="${namespace.name}">
66*b9df5ad1SAndroid Build Coastguard Worker            ${insert_body(namespace)}
67*b9df5ad1SAndroid Build Coastguard Worker        </namespace>
68*b9df5ad1SAndroid Build Coastguard Worker        </%def>
69*b9df5ad1SAndroid Build Coastguard Worker
70*b9df5ad1SAndroid Build Coastguard Worker        <%def name="insert_entry(prop)">
71*b9df5ad1SAndroid Build Coastguard Worker        % if prop.is_clone():
72*b9df5ad1SAndroid Build Coastguard Worker            <clone entry="${prop.name}" kind="${prop.target_kind}"
73*b9df5ad1SAndroid Build Coastguard Worker          % if ('hal_version' in prop._property_keys):
74*b9df5ad1SAndroid Build Coastguard Worker                hal_version="${prop.hal_major_version}.${prop.hal_minor_version}"
75*b9df5ad1SAndroid Build Coastguard Worker          % endif
76*b9df5ad1SAndroid Build Coastguard Worker            >
77*b9df5ad1SAndroid Build Coastguard Worker
78*b9df5ad1SAndroid Build Coastguard Worker              % if prop.details is not None:
79*b9df5ad1SAndroid Build Coastguard Worker                <details>${prop.details}</details>
80*b9df5ad1SAndroid Build Coastguard Worker              % endif
81*b9df5ad1SAndroid Build Coastguard Worker
82*b9df5ad1SAndroid Build Coastguard Worker              % if prop.ndk_details is not None:
83*b9df5ad1SAndroid Build Coastguard Worker                <ndk_details>${prop.ndk_details}</ndk_details>
84*b9df5ad1SAndroid Build Coastguard Worker              % endif
85*b9df5ad1SAndroid Build Coastguard Worker
86*b9df5ad1SAndroid Build Coastguard Worker              % if prop.hal_details is not None:
87*b9df5ad1SAndroid Build Coastguard Worker                <hal_details>${prop.hal_details}</hal_details>
88*b9df5ad1SAndroid Build Coastguard Worker              % endif
89*b9df5ad1SAndroid Build Coastguard Worker
90*b9df5ad1SAndroid Build Coastguard Worker              % for tag in prop.tags:
91*b9df5ad1SAndroid Build Coastguard Worker                <tag id="${tag.id}" />
92*b9df5ad1SAndroid Build Coastguard Worker              % endfor
93*b9df5ad1SAndroid Build Coastguard Worker
94*b9df5ad1SAndroid Build Coastguard Worker            </clone>
95*b9df5ad1SAndroid Build Coastguard Worker        % else:
96*b9df5ad1SAndroid Build Coastguard Worker            <entry name="${prop.name_short}" type="${prop.type}"
97*b9df5ad1SAndroid Build Coastguard Worker          % if prop.visibility:
98*b9df5ad1SAndroid Build Coastguard Worker                visibility="${prop.visibility}"
99*b9df5ad1SAndroid Build Coastguard Worker          % endif
100*b9df5ad1SAndroid Build Coastguard Worker          % if prop.synthetic:
101*b9df5ad1SAndroid Build Coastguard Worker                synthetic="true"
102*b9df5ad1SAndroid Build Coastguard Worker          % endif
103*b9df5ad1SAndroid Build Coastguard Worker          % if prop.deprecated:
104*b9df5ad1SAndroid Build Coastguard Worker                deprecated="true"
105*b9df5ad1SAndroid Build Coastguard Worker          % endif
106*b9df5ad1SAndroid Build Coastguard Worker          % if prop.optional:
107*b9df5ad1SAndroid Build Coastguard Worker                optional="${str(prop.optional).lower()}"
108*b9df5ad1SAndroid Build Coastguard Worker          % endif
109*b9df5ad1SAndroid Build Coastguard Worker          % if prop.enum:
110*b9df5ad1SAndroid Build Coastguard Worker                enum="true"
111*b9df5ad1SAndroid Build Coastguard Worker          % endif
112*b9df5ad1SAndroid Build Coastguard Worker          % if prop.type_notes is not None:
113*b9df5ad1SAndroid Build Coastguard Worker                type_notes="${prop.type_notes}"
114*b9df5ad1SAndroid Build Coastguard Worker          % endif
115*b9df5ad1SAndroid Build Coastguard Worker          % if prop.container is not None:
116*b9df5ad1SAndroid Build Coastguard Worker                container="${prop.container}"
117*b9df5ad1SAndroid Build Coastguard Worker          % endif
118*b9df5ad1SAndroid Build Coastguard Worker
119*b9df5ad1SAndroid Build Coastguard Worker          % if prop.typedef is not None:
120*b9df5ad1SAndroid Build Coastguard Worker                typedef="${prop.typedef.name}"
121*b9df5ad1SAndroid Build Coastguard Worker          % endif
122*b9df5ad1SAndroid Build Coastguard Worker
123*b9df5ad1SAndroid Build Coastguard Worker          % if prop.hwlevel:
124*b9df5ad1SAndroid Build Coastguard Worker                hwlevel="${prop.hwlevel}"
125*b9df5ad1SAndroid Build Coastguard Worker          % endif
126*b9df5ad1SAndroid Build Coastguard Worker
127*b9df5ad1SAndroid Build Coastguard Worker          % if prop.permission_needed == "true":
128*b9df5ad1SAndroid Build Coastguard Worker                permission_needed="true"
129*b9df5ad1SAndroid Build Coastguard Worker          % endif
130*b9df5ad1SAndroid Build Coastguard Worker
131*b9df5ad1SAndroid Build Coastguard Worker          % if prop.aconfig_flag:
132*b9df5ad1SAndroid Build Coastguard Worker                aconfig_flag="${prop.aconfig_flag}"
133*b9df5ad1SAndroid Build Coastguard Worker          % endif
134*b9df5ad1SAndroid Build Coastguard Worker
135*b9df5ad1SAndroid Build Coastguard Worker          % if (prop.hal_major_version, prop.hal_minor_version) != (3,2):
136*b9df5ad1SAndroid Build Coastguard Worker                hal_version="${prop.hal_major_version}.${prop.hal_minor_version}"
137*b9df5ad1SAndroid Build Coastguard Worker          % endif
138*b9df5ad1SAndroid Build Coastguard Worker
139*b9df5ad1SAndroid Build Coastguard Worker          % if prop.session_characteristics_key_since:
140*b9df5ad1SAndroid Build Coastguard Worker                session_characteristics_key_since="${prop.session_characteristics_key_since}"
141*b9df5ad1SAndroid Build Coastguard Worker          % endif
142*b9df5ad1SAndroid Build Coastguard Worker            >
143*b9df5ad1SAndroid Build Coastguard Worker
144*b9df5ad1SAndroid Build Coastguard Worker              % if prop.container == 'array':
145*b9df5ad1SAndroid Build Coastguard Worker                <array>
146*b9df5ad1SAndroid Build Coastguard Worker                  % for size in prop.container_sizes:
147*b9df5ad1SAndroid Build Coastguard Worker                    <size>${size}</size>
148*b9df5ad1SAndroid Build Coastguard Worker                  % endfor
149*b9df5ad1SAndroid Build Coastguard Worker                </array>
150*b9df5ad1SAndroid Build Coastguard Worker              % elif prop.container == 'tuple':
151*b9df5ad1SAndroid Build Coastguard Worker                <tuple>
152*b9df5ad1SAndroid Build Coastguard Worker                  % for size in prop.container_sizes:
153*b9df5ad1SAndroid Build Coastguard Worker                    <value /> <!-- intentionally generated empty. manually fix -->
154*b9df5ad1SAndroid Build Coastguard Worker                  % endfor
155*b9df5ad1SAndroid Build Coastguard Worker                </tuple>
156*b9df5ad1SAndroid Build Coastguard Worker              % endif
157*b9df5ad1SAndroid Build Coastguard Worker              % if prop.enum:
158*b9df5ad1SAndroid Build Coastguard Worker                <enum>
159*b9df5ad1SAndroid Build Coastguard Worker                  % for value in prop.enum.values:
160*b9df5ad1SAndroid Build Coastguard Worker                      <value
161*b9df5ad1SAndroid Build Coastguard Worker                    % if value.deprecated:
162*b9df5ad1SAndroid Build Coastguard Worker                             deprecated="true"
163*b9df5ad1SAndroid Build Coastguard Worker                    % endif:
164*b9df5ad1SAndroid Build Coastguard Worker                    % if value.optional:
165*b9df5ad1SAndroid Build Coastguard Worker                             optional="true"
166*b9df5ad1SAndroid Build Coastguard Worker                    % endif:
167*b9df5ad1SAndroid Build Coastguard Worker                    % if value.visibility is not None:
168*b9df5ad1SAndroid Build Coastguard Worker                             visibility="${value.visibility}"
169*b9df5ad1SAndroid Build Coastguard Worker                    % endif:
170*b9df5ad1SAndroid Build Coastguard Worker                    % if value.id is not None:
171*b9df5ad1SAndroid Build Coastguard Worker                             id="${value.id}"
172*b9df5ad1SAndroid Build Coastguard Worker                    % endif
173*b9df5ad1SAndroid Build Coastguard Worker                    % if not (value.hal_major_version == prop.hal_major_version and value.hal_minor_version == prop.hal_minor_version):
174*b9df5ad1SAndroid Build Coastguard Worker                             hal_version=${"%d.%d" % (value.hal_major_version, value.hal_minor_version)}
175*b9df5ad1SAndroid Build Coastguard Worker                    % endif
176*b9df5ad1SAndroid Build Coastguard Worker                    % if not (value.aconfig_flag == prop.aconfig_flag):
177*b9df5ad1SAndroid Build Coastguard Worker                             aconfig_flag="${value.aconfig_flag}"
178*b9df5ad1SAndroid Build Coastguard Worker                    % endif
179*b9df5ad1SAndroid Build Coastguard Worker                      >${value.name}
180*b9df5ad1SAndroid Build Coastguard Worker                    % if value.notes is not None:
181*b9df5ad1SAndroid Build Coastguard Worker                             <notes>${value.notes}</notes>
182*b9df5ad1SAndroid Build Coastguard Worker                    % endif
183*b9df5ad1SAndroid Build Coastguard Worker                    % if value.sdk_notes is not None:
184*b9df5ad1SAndroid Build Coastguard Worker                             <sdk_notes>${value.sdk_notes}</sdk_notes>
185*b9df5ad1SAndroid Build Coastguard Worker                    % endif
186*b9df5ad1SAndroid Build Coastguard Worker                    % if value.ndk_notes is not None:
187*b9df5ad1SAndroid Build Coastguard Worker                             <ndk_notes>${value.ndk_notes}</ndk_notes>
188*b9df5ad1SAndroid Build Coastguard Worker                    % endif
189*b9df5ad1SAndroid Build Coastguard Worker
190*b9df5ad1SAndroid Build Coastguard Worker                      </value>
191*b9df5ad1SAndroid Build Coastguard Worker                  % endfor
192*b9df5ad1SAndroid Build Coastguard Worker                </enum>
193*b9df5ad1SAndroid Build Coastguard Worker              % endif
194*b9df5ad1SAndroid Build Coastguard Worker
195*b9df5ad1SAndroid Build Coastguard Worker              % if prop.description is not None:
196*b9df5ad1SAndroid Build Coastguard Worker                <description>${prop.description | x}</description>
197*b9df5ad1SAndroid Build Coastguard Worker              % endif
198*b9df5ad1SAndroid Build Coastguard Worker
199*b9df5ad1SAndroid Build Coastguard Worker              % if prop.deprecation_description is not None:
200*b9df5ad1SAndroid Build Coastguard Worker                <deprecation_description>${prop.deprecation_description | x}</deprecation_description>
201*b9df5ad1SAndroid Build Coastguard Worker              % endif
202*b9df5ad1SAndroid Build Coastguard Worker
203*b9df5ad1SAndroid Build Coastguard Worker              % if prop.units is not None:
204*b9df5ad1SAndroid Build Coastguard Worker                <units>${prop.units | x}</units>
205*b9df5ad1SAndroid Build Coastguard Worker              % endif
206*b9df5ad1SAndroid Build Coastguard Worker
207*b9df5ad1SAndroid Build Coastguard Worker              % if prop.range is not None:
208*b9df5ad1SAndroid Build Coastguard Worker                <range>${prop.range | x}</range>
209*b9df5ad1SAndroid Build Coastguard Worker              % endif
210*b9df5ad1SAndroid Build Coastguard Worker
211*b9df5ad1SAndroid Build Coastguard Worker              % if prop.details is not None:
212*b9df5ad1SAndroid Build Coastguard Worker                <details>${prop.details | x}</details>
213*b9df5ad1SAndroid Build Coastguard Worker              % endif
214*b9df5ad1SAndroid Build Coastguard Worker
215*b9df5ad1SAndroid Build Coastguard Worker              % if prop.ndk_details is not None:
216*b9df5ad1SAndroid Build Coastguard Worker                <ndk_details>${prop.ndk_details}</ndk_details>
217*b9df5ad1SAndroid Build Coastguard Worker              % endif
218*b9df5ad1SAndroid Build Coastguard Worker
219*b9df5ad1SAndroid Build Coastguard Worker              % if prop.hal_details is not None:
220*b9df5ad1SAndroid Build Coastguard Worker                <hal_details>${prop.hal_details | x}</hal_details>
221*b9df5ad1SAndroid Build Coastguard Worker              % endif
222*b9df5ad1SAndroid Build Coastguard Worker
223*b9df5ad1SAndroid Build Coastguard Worker              % for tag in prop.tags:
224*b9df5ad1SAndroid Build Coastguard Worker                <tag id="${tag.id}" />
225*b9df5ad1SAndroid Build Coastguard Worker              % endfor
226*b9df5ad1SAndroid Build Coastguard Worker
227*b9df5ad1SAndroid Build Coastguard Worker            </entry>
228*b9df5ad1SAndroid Build Coastguard Worker        % endif
229*b9df5ad1SAndroid Build Coastguard Worker        </%def>
230*b9df5ad1SAndroid Build Coastguard Worker
231*b9df5ad1SAndroid Build Coastguard Worker        ${insert_body(kind)}
232*b9df5ad1SAndroid Build Coastguard Worker
233*b9df5ad1SAndroid Build Coastguard Worker      </${kind.name}>
234*b9df5ad1SAndroid Build Coastguard Worker    % endfor # for each kind
235*b9df5ad1SAndroid Build Coastguard Worker
236*b9df5ad1SAndroid Build Coastguard Worker  </section>
237*b9df5ad1SAndroid Build Coastguard Worker  % endfor
238*b9df5ad1SAndroid Build Coastguard Worker</namespace>
239*b9df5ad1SAndroid Build Coastguard Worker% endfor
240*b9df5ad1SAndroid Build Coastguard Worker
241*b9df5ad1SAndroid Build Coastguard Worker</metadata>
242