Line data Source code
1 : /*
2 : * GPAC - Multimedia Framework C SDK
3 : *
4 : * Authors: Jean Le Feuvre
5 : * Copyright (c) Telecom ParisTech 2000-2012
6 : * All rights reserved
7 : *
8 : * This file is part of GPAC / BIFS codec sub-project
9 : *
10 : * GPAC is free software; you can redistribute it and/or modify
11 : * it under the terms of the GNU Lesser General Public License as published by
12 : * the Free Software Foundation; either version 2, or (at your option)
13 : * any later version.
14 : *
15 : * GPAC is distributed in the hope that it will be useful,
16 : * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 : * GNU Lesser General Public License for more details.
19 : *
20 : * You should have received a copy of the GNU Lesser General Public
21 : * License along with this library; see the file COPYING. If not, write to
22 : * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
23 : *
24 : */
25 :
26 :
27 : /*
28 : DO NOT MOFIFY - File generated on GMT Tue Nov 08 09:10:57 2011
29 :
30 : BY MPEG4Gen for GPAC Version 0.5.0
31 : */
32 :
33 :
34 :
35 : #include <gpac/internal/bifs_tables.h>
36 :
37 :
38 : #ifndef GPAC_DISABLE_BIFS
39 :
40 :
41 0 : u32 ALL_GetNodeType(const u32 *table, const u32 count, u32 NodeTag, u32 Version)
42 : {
43 : u32 i = 0;
44 880801 : while (i<count) {
45 843100 : if (table[i] == NodeTag) goto found;
46 795423 : i++;
47 : }
48 : return 0;
49 27810 : found:
50 32 : if (Version == 2) return i+2;
51 27778 : return i+1;
52 : }
53 :
54 :
55 :
56 :
57 4391 : u32 NDT_V1_GetNodeTag(u32 Context_NDT_Tag, u32 NodeType)
58 : {
59 4391 : if (!NodeType) return 0;
60 : /* adjust according to the table version */
61 : /* v1: 0 reserved for extensions */
62 4391 : NodeType -= 1;
63 4391 : switch (Context_NDT_Tag) {
64 337 : case NDT_SFWorldNode:
65 337 : if (NodeType >= SFWorldNode_V1_Count) return 0;
66 337 : return SFWorldNode_V1_TypeToTag[NodeType];
67 1595 : case NDT_SF3DNode:
68 1595 : if (NodeType >= SF3DNode_V1_Count) return 0;
69 1595 : return SF3DNode_V1_TypeToTag[NodeType];
70 771 : case NDT_SF2DNode:
71 771 : if (NodeType >= SF2DNode_V1_Count) return 0;
72 771 : return SF2DNode_V1_TypeToTag[NodeType];
73 0 : case NDT_SFStreamingNode:
74 0 : if (NodeType >= SFStreamingNode_V1_Count) return 0;
75 0 : return SFStreamingNode_V1_TypeToTag[NodeType];
76 288 : case NDT_SFAppearanceNode:
77 288 : if (NodeType >= SFAppearanceNode_V1_Count) return 0;
78 288 : return SFAppearanceNode_V1_TypeToTag[NodeType];
79 32 : case NDT_SFAudioNode:
80 32 : if (NodeType >= SFAudioNode_V1_Count) return 0;
81 32 : return SFAudioNode_V1_TypeToTag[NodeType];
82 0 : case NDT_SFBackground3DNode:
83 0 : if (NodeType >= SFBackground3DNode_V1_Count) return 0;
84 0 : return SFBackground3DNode_V1_TypeToTag[NodeType];
85 0 : case NDT_SFBackground2DNode:
86 0 : if (NodeType >= SFBackground2DNode_V1_Count) return 0;
87 0 : return SFBackground2DNode_V1_TypeToTag[NodeType];
88 566 : case NDT_SFGeometryNode:
89 566 : if (NodeType >= SFGeometryNode_V1_Count) return 0;
90 566 : return SFGeometryNode_V1_TypeToTag[NodeType];
91 30 : case NDT_SFColorNode:
92 30 : if (NodeType >= SFColorNode_V1_Count) return 0;
93 30 : return SFColorNode_V1_TypeToTag[NodeType];
94 66 : case NDT_SFTextureNode:
95 66 : if (NodeType >= SFTextureNode_V1_Count) return 0;
96 66 : return SFTextureNode_V1_TypeToTag[NodeType];
97 45 : case NDT_SFCoordinateNode:
98 45 : if (NodeType >= SFCoordinateNode_V1_Count) return 0;
99 45 : return SFCoordinateNode_V1_TypeToTag[NodeType];
100 309 : case NDT_SFCoordinate2DNode:
101 309 : if (NodeType >= SFCoordinate2DNode_V1_Count) return 0;
102 309 : return SFCoordinate2DNode_V1_TypeToTag[NodeType];
103 0 : case NDT_SFExpressionNode:
104 0 : if (NodeType >= SFExpressionNode_V1_Count) return 0;
105 0 : return SFExpressionNode_V1_TypeToTag[NodeType];
106 0 : case NDT_SFFaceDefMeshNode:
107 0 : if (NodeType >= SFFaceDefMeshNode_V1_Count) return 0;
108 0 : return SFFaceDefMeshNode_V1_TypeToTag[NodeType];
109 0 : case NDT_SFFaceDefTablesNode:
110 0 : if (NodeType >= SFFaceDefTablesNode_V1_Count) return 0;
111 0 : return SFFaceDefTablesNode_V1_TypeToTag[NodeType];
112 0 : case NDT_SFFaceDefTransformNode:
113 0 : if (NodeType >= SFFaceDefTransformNode_V1_Count) return 0;
114 0 : return SFFaceDefTransformNode_V1_TypeToTag[NodeType];
115 0 : case NDT_SFFAPNode:
116 0 : if (NodeType >= SFFAPNode_V1_Count) return 0;
117 0 : return SFFAPNode_V1_TypeToTag[NodeType];
118 0 : case NDT_SFFDPNode:
119 0 : if (NodeType >= SFFDPNode_V1_Count) return 0;
120 0 : return SFFDPNode_V1_TypeToTag[NodeType];
121 0 : case NDT_SFFITNode:
122 0 : if (NodeType >= SFFITNode_V1_Count) return 0;
123 0 : return SFFITNode_V1_TypeToTag[NodeType];
124 0 : case NDT_SFFogNode:
125 0 : if (NodeType >= SFFogNode_V1_Count) return 0;
126 0 : return SFFogNode_V1_TypeToTag[NodeType];
127 23 : case NDT_SFFontStyleNode:
128 23 : if (NodeType >= SFFontStyleNode_V1_Count) return 0;
129 23 : return SFFontStyleNode_V1_TypeToTag[NodeType];
130 43 : case NDT_SFTopNode:
131 43 : if (NodeType >= SFTopNode_V1_Count) return 0;
132 43 : return SFTopNode_V1_TypeToTag[NodeType];
133 54 : case NDT_SFLinePropertiesNode:
134 54 : if (NodeType >= SFLinePropertiesNode_V1_Count) return 0;
135 54 : return SFLinePropertiesNode_V1_TypeToTag[NodeType];
136 202 : case NDT_SFMaterialNode:
137 202 : if (NodeType >= SFMaterialNode_V1_Count) return 0;
138 202 : return SFMaterialNode_V1_TypeToTag[NodeType];
139 0 : case NDT_SFNavigationInfoNode:
140 0 : if (NodeType >= SFNavigationInfoNode_V1_Count) return 0;
141 0 : return SFNavigationInfoNode_V1_TypeToTag[NodeType];
142 15 : case NDT_SFNormalNode:
143 15 : if (NodeType >= SFNormalNode_V1_Count) return 0;
144 15 : return SFNormalNode_V1_TypeToTag[NodeType];
145 0 : case NDT_SFTextureCoordinateNode:
146 0 : if (NodeType >= SFTextureCoordinateNode_V1_Count) return 0;
147 0 : return SFTextureCoordinateNode_V1_TypeToTag[NodeType];
148 15 : case NDT_SFTextureTransformNode:
149 15 : if (NodeType >= SFTextureTransformNode_V1_Count) return 0;
150 15 : return SFTextureTransformNode_V1_TypeToTag[NodeType];
151 0 : case NDT_SFViewpointNode:
152 0 : if (NodeType >= SFViewpointNode_V1_Count) return 0;
153 0 : return SFViewpointNode_V1_TypeToTag[NodeType];
154 0 : case NDT_SFVisemeNode:
155 0 : if (NodeType >= SFVisemeNode_V1_Count) return 0;
156 0 : return SFVisemeNode_V1_TypeToTag[NodeType];
157 : default:
158 : return 0;
159 : }
160 : }
161 :
162 :
163 0 : u32 NDT_V1_GetNumBits(u32 NDT_Tag)
164 : {
165 : switch (NDT_Tag) {
166 : case NDT_SFWorldNode:
167 : return SFWorldNode_V1_NUMBITS;
168 : case NDT_SF3DNode:
169 : return SF3DNode_V1_NUMBITS;
170 : case NDT_SF2DNode:
171 : return SF2DNode_V1_NUMBITS;
172 : case NDT_SFStreamingNode:
173 : return SFStreamingNode_V1_NUMBITS;
174 : case NDT_SFAppearanceNode:
175 : return SFAppearanceNode_V1_NUMBITS;
176 : case NDT_SFAudioNode:
177 : return SFAudioNode_V1_NUMBITS;
178 : case NDT_SFBackground3DNode:
179 : return SFBackground3DNode_V1_NUMBITS;
180 : case NDT_SFBackground2DNode:
181 : return SFBackground2DNode_V1_NUMBITS;
182 : case NDT_SFGeometryNode:
183 : return SFGeometryNode_V1_NUMBITS;
184 : case NDT_SFColorNode:
185 : return SFColorNode_V1_NUMBITS;
186 : case NDT_SFTextureNode:
187 : return SFTextureNode_V1_NUMBITS;
188 : case NDT_SFCoordinateNode:
189 : return SFCoordinateNode_V1_NUMBITS;
190 : case NDT_SFCoordinate2DNode:
191 : return SFCoordinate2DNode_V1_NUMBITS;
192 : case NDT_SFExpressionNode:
193 : return SFExpressionNode_V1_NUMBITS;
194 : case NDT_SFFaceDefMeshNode:
195 : return SFFaceDefMeshNode_V1_NUMBITS;
196 : case NDT_SFFaceDefTablesNode:
197 : return SFFaceDefTablesNode_V1_NUMBITS;
198 : case NDT_SFFaceDefTransformNode:
199 : return SFFaceDefTransformNode_V1_NUMBITS;
200 : case NDT_SFFAPNode:
201 : return SFFAPNode_V1_NUMBITS;
202 : case NDT_SFFDPNode:
203 : return SFFDPNode_V1_NUMBITS;
204 : case NDT_SFFITNode:
205 : return SFFITNode_V1_NUMBITS;
206 : case NDT_SFFogNode:
207 : return SFFogNode_V1_NUMBITS;
208 : case NDT_SFFontStyleNode:
209 : return SFFontStyleNode_V1_NUMBITS;
210 : case NDT_SFTopNode:
211 : return SFTopNode_V1_NUMBITS;
212 : case NDT_SFLinePropertiesNode:
213 : return SFLinePropertiesNode_V1_NUMBITS;
214 : case NDT_SFMaterialNode:
215 : return SFMaterialNode_V1_NUMBITS;
216 : case NDT_SFNavigationInfoNode:
217 : return SFNavigationInfoNode_V1_NUMBITS;
218 : case NDT_SFNormalNode:
219 : return SFNormalNode_V1_NUMBITS;
220 : case NDT_SFTextureCoordinateNode:
221 : return SFTextureCoordinateNode_V1_NUMBITS;
222 : case NDT_SFTextureTransformNode:
223 : return SFTextureTransformNode_V1_NUMBITS;
224 : case NDT_SFViewpointNode:
225 : return SFViewpointNode_V1_NUMBITS;
226 : case NDT_SFVisemeNode:
227 : return SFVisemeNode_V1_NUMBITS;
228 : default:
229 : return 0;
230 : }
231 : }
232 :
233 46305 : u32 NDT_V1_GetNodeType(u32 NDT_Tag, u32 NodeTag)
234 : {
235 46305 : if(!NDT_Tag || !NodeTag) return 0;
236 46305 : switch(NDT_Tag) {
237 : case NDT_SFWorldNode:
238 : return ALL_GetNodeType(SFWorldNode_V1_TypeToTag, SFWorldNode_V1_Count, NodeTag, GF_BIFS_V1);
239 : case NDT_SF3DNode:
240 : return ALL_GetNodeType(SF3DNode_V1_TypeToTag, SF3DNode_V1_Count, NodeTag, GF_BIFS_V1);
241 : case NDT_SF2DNode:
242 : return ALL_GetNodeType(SF2DNode_V1_TypeToTag, SF2DNode_V1_Count, NodeTag, GF_BIFS_V1);
243 : case NDT_SFStreamingNode:
244 : return ALL_GetNodeType(SFStreamingNode_V1_TypeToTag, SFStreamingNode_V1_Count, NodeTag, GF_BIFS_V1);
245 : case NDT_SFAppearanceNode:
246 : return ALL_GetNodeType(SFAppearanceNode_V1_TypeToTag, SFAppearanceNode_V1_Count, NodeTag, GF_BIFS_V1);
247 : case NDT_SFAudioNode:
248 : return ALL_GetNodeType(SFAudioNode_V1_TypeToTag, SFAudioNode_V1_Count, NodeTag, GF_BIFS_V1);
249 : case NDT_SFBackground3DNode:
250 : return ALL_GetNodeType(SFBackground3DNode_V1_TypeToTag, SFBackground3DNode_V1_Count, NodeTag, GF_BIFS_V1);
251 : case NDT_SFBackground2DNode:
252 : return ALL_GetNodeType(SFBackground2DNode_V1_TypeToTag, SFBackground2DNode_V1_Count, NodeTag, GF_BIFS_V1);
253 : case NDT_SFGeometryNode:
254 : return ALL_GetNodeType(SFGeometryNode_V1_TypeToTag, SFGeometryNode_V1_Count, NodeTag, GF_BIFS_V1);
255 : case NDT_SFColorNode:
256 : return ALL_GetNodeType(SFColorNode_V1_TypeToTag, SFColorNode_V1_Count, NodeTag, GF_BIFS_V1);
257 : case NDT_SFTextureNode:
258 : return ALL_GetNodeType(SFTextureNode_V1_TypeToTag, SFTextureNode_V1_Count, NodeTag, GF_BIFS_V1);
259 : case NDT_SFCoordinateNode:
260 : return ALL_GetNodeType(SFCoordinateNode_V1_TypeToTag, SFCoordinateNode_V1_Count, NodeTag, GF_BIFS_V1);
261 : case NDT_SFCoordinate2DNode:
262 : return ALL_GetNodeType(SFCoordinate2DNode_V1_TypeToTag, SFCoordinate2DNode_V1_Count, NodeTag, GF_BIFS_V1);
263 : case NDT_SFExpressionNode:
264 : return ALL_GetNodeType(SFExpressionNode_V1_TypeToTag, SFExpressionNode_V1_Count, NodeTag, GF_BIFS_V1);
265 : case NDT_SFFaceDefMeshNode:
266 : return ALL_GetNodeType(SFFaceDefMeshNode_V1_TypeToTag, SFFaceDefMeshNode_V1_Count, NodeTag, GF_BIFS_V1);
267 : case NDT_SFFaceDefTablesNode:
268 : return ALL_GetNodeType(SFFaceDefTablesNode_V1_TypeToTag, SFFaceDefTablesNode_V1_Count, NodeTag, GF_BIFS_V1);
269 : case NDT_SFFaceDefTransformNode:
270 : return ALL_GetNodeType(SFFaceDefTransformNode_V1_TypeToTag, SFFaceDefTransformNode_V1_Count, NodeTag, GF_BIFS_V1);
271 : case NDT_SFFAPNode:
272 : return ALL_GetNodeType(SFFAPNode_V1_TypeToTag, SFFAPNode_V1_Count, NodeTag, GF_BIFS_V1);
273 : case NDT_SFFDPNode:
274 : return ALL_GetNodeType(SFFDPNode_V1_TypeToTag, SFFDPNode_V1_Count, NodeTag, GF_BIFS_V1);
275 : case NDT_SFFITNode:
276 : return ALL_GetNodeType(SFFITNode_V1_TypeToTag, SFFITNode_V1_Count, NodeTag, GF_BIFS_V1);
277 : case NDT_SFFogNode:
278 : return ALL_GetNodeType(SFFogNode_V1_TypeToTag, SFFogNode_V1_Count, NodeTag, GF_BIFS_V1);
279 : case NDT_SFFontStyleNode:
280 : return ALL_GetNodeType(SFFontStyleNode_V1_TypeToTag, SFFontStyleNode_V1_Count, NodeTag, GF_BIFS_V1);
281 : case NDT_SFTopNode:
282 : return ALL_GetNodeType(SFTopNode_V1_TypeToTag, SFTopNode_V1_Count, NodeTag, GF_BIFS_V1);
283 : case NDT_SFLinePropertiesNode:
284 : return ALL_GetNodeType(SFLinePropertiesNode_V1_TypeToTag, SFLinePropertiesNode_V1_Count, NodeTag, GF_BIFS_V1);
285 : case NDT_SFMaterialNode:
286 : return ALL_GetNodeType(SFMaterialNode_V1_TypeToTag, SFMaterialNode_V1_Count, NodeTag, GF_BIFS_V1);
287 : case NDT_SFNavigationInfoNode:
288 : return ALL_GetNodeType(SFNavigationInfoNode_V1_TypeToTag, SFNavigationInfoNode_V1_Count, NodeTag, GF_BIFS_V1);
289 : case NDT_SFNormalNode:
290 : return ALL_GetNodeType(SFNormalNode_V1_TypeToTag, SFNormalNode_V1_Count, NodeTag, GF_BIFS_V1);
291 : case NDT_SFTextureCoordinateNode:
292 : return ALL_GetNodeType(SFTextureCoordinateNode_V1_TypeToTag, SFTextureCoordinateNode_V1_Count, NodeTag, GF_BIFS_V1);
293 : case NDT_SFTextureTransformNode:
294 : return ALL_GetNodeType(SFTextureTransformNode_V1_TypeToTag, SFTextureTransformNode_V1_Count, NodeTag, GF_BIFS_V1);
295 : case NDT_SFViewpointNode:
296 : return ALL_GetNodeType(SFViewpointNode_V1_TypeToTag, SFViewpointNode_V1_Count, NodeTag, GF_BIFS_V1);
297 : case NDT_SFVisemeNode:
298 : return ALL_GetNodeType(SFVisemeNode_V1_TypeToTag, SFVisemeNode_V1_Count, NodeTag, GF_BIFS_V1);
299 : default:
300 : return 0;
301 : }
302 : }
303 :
304 :
305 :
306 :
307 5 : u32 NDT_V2_GetNodeTag(u32 Context_NDT_Tag, u32 NodeType)
308 : {
309 5 : if (!NodeType) return 0;
310 : /* adjust according to the table version */
311 : /* v2: 0 reserved for extensions, 1 reserved for protos */
312 5 : if (NodeType == 1) return 0;
313 5 : NodeType -= 2;
314 5 : switch (Context_NDT_Tag) {
315 0 : case NDT_SFWorldNode:
316 0 : if (NodeType >= SFWorldNode_V2_Count) return 0;
317 0 : return SFWorldNode_V2_TypeToTag[NodeType];
318 0 : case NDT_SF3DNode:
319 0 : if (NodeType >= SF3DNode_V2_Count) return 0;
320 0 : return SF3DNode_V2_TypeToTag[NodeType];
321 0 : case NDT_SF2DNode:
322 0 : if (NodeType >= SF2DNode_V2_Count) return 0;
323 0 : return SF2DNode_V2_TypeToTag[NodeType];
324 0 : case NDT_SFGeometryNode:
325 0 : if (NodeType >= SFGeometryNode_V2_Count) return 0;
326 0 : return SFGeometryNode_V2_TypeToTag[NodeType];
327 5 : case NDT_SFMaterialNode:
328 5 : if (NodeType >= SFMaterialNode_V2_Count) return 0;
329 5 : return SFMaterialNode_V2_TypeToTag[NodeType];
330 0 : case NDT_SFBAPNode:
331 0 : if (NodeType >= SFBAPNode_V2_Count) return 0;
332 0 : return SFBAPNode_V2_TypeToTag[NodeType];
333 0 : case NDT_SFBDPNode:
334 0 : if (NodeType >= SFBDPNode_V2_Count) return 0;
335 0 : return SFBDPNode_V2_TypeToTag[NodeType];
336 0 : case NDT_SFBodyDefTableNode:
337 0 : if (NodeType >= SFBodyDefTableNode_V2_Count) return 0;
338 0 : return SFBodyDefTableNode_V2_TypeToTag[NodeType];
339 0 : case NDT_SFBodySegmentConnectionHintNode:
340 0 : if (NodeType >= SFBodySegmentConnectionHintNode_V2_Count) return 0;
341 0 : return SFBodySegmentConnectionHintNode_V2_TypeToTag[NodeType];
342 0 : case NDT_SFPerceptualParameterNode:
343 0 : if (NodeType >= SFPerceptualParameterNode_V2_Count) return 0;
344 0 : return SFPerceptualParameterNode_V2_TypeToTag[NodeType];
345 : default:
346 : return 0;
347 : }
348 : }
349 :
350 :
351 0 : u32 NDT_V2_GetNumBits(u32 NDT_Tag)
352 : {
353 : switch (NDT_Tag) {
354 : case NDT_SFWorldNode:
355 : return SFWorldNode_V2_NUMBITS;
356 : case NDT_SF3DNode:
357 : return SF3DNode_V2_NUMBITS;
358 : case NDT_SF2DNode:
359 : return SF2DNode_V2_NUMBITS;
360 : case NDT_SFGeometryNode:
361 : return SFGeometryNode_V2_NUMBITS;
362 : case NDT_SFMaterialNode:
363 : return SFMaterialNode_V2_NUMBITS;
364 : case NDT_SFBAPNode:
365 : return SFBAPNode_V2_NUMBITS;
366 : case NDT_SFBDPNode:
367 : return SFBDPNode_V2_NUMBITS;
368 : case NDT_SFBodyDefTableNode:
369 : return SFBodyDefTableNode_V2_NUMBITS;
370 : case NDT_SFBodySegmentConnectionHintNode:
371 : return SFBodySegmentConnectionHintNode_V2_NUMBITS;
372 : case NDT_SFPerceptualParameterNode:
373 : return SFPerceptualParameterNode_V2_NUMBITS;
374 : default:
375 : return 1;
376 : }
377 : }
378 :
379 15243 : u32 NDT_V2_GetNodeType(u32 NDT_Tag, u32 NodeTag)
380 : {
381 15243 : if(!NDT_Tag || !NodeTag) return 0;
382 15243 : switch(NDT_Tag) {
383 : case NDT_SFWorldNode:
384 : return ALL_GetNodeType(SFWorldNode_V2_TypeToTag, SFWorldNode_V2_Count, NodeTag, GF_BIFS_V2);
385 : case NDT_SF3DNode:
386 : return ALL_GetNodeType(SF3DNode_V2_TypeToTag, SF3DNode_V2_Count, NodeTag, GF_BIFS_V2);
387 : case NDT_SF2DNode:
388 : return ALL_GetNodeType(SF2DNode_V2_TypeToTag, SF2DNode_V2_Count, NodeTag, GF_BIFS_V2);
389 : case NDT_SFGeometryNode:
390 : return ALL_GetNodeType(SFGeometryNode_V2_TypeToTag, SFGeometryNode_V2_Count, NodeTag, GF_BIFS_V2);
391 : case NDT_SFMaterialNode:
392 : return ALL_GetNodeType(SFMaterialNode_V2_TypeToTag, SFMaterialNode_V2_Count, NodeTag, GF_BIFS_V2);
393 : case NDT_SFBAPNode:
394 : return ALL_GetNodeType(SFBAPNode_V2_TypeToTag, SFBAPNode_V2_Count, NodeTag, GF_BIFS_V2);
395 : case NDT_SFBDPNode:
396 : return ALL_GetNodeType(SFBDPNode_V2_TypeToTag, SFBDPNode_V2_Count, NodeTag, GF_BIFS_V2);
397 : case NDT_SFBodyDefTableNode:
398 : return ALL_GetNodeType(SFBodyDefTableNode_V2_TypeToTag, SFBodyDefTableNode_V2_Count, NodeTag, GF_BIFS_V2);
399 : case NDT_SFBodySegmentConnectionHintNode:
400 : return ALL_GetNodeType(SFBodySegmentConnectionHintNode_V2_TypeToTag, SFBodySegmentConnectionHintNode_V2_Count, NodeTag, GF_BIFS_V2);
401 : case NDT_SFPerceptualParameterNode:
402 : return ALL_GetNodeType(SFPerceptualParameterNode_V2_TypeToTag, SFPerceptualParameterNode_V2_Count, NodeTag, GF_BIFS_V2);
403 : default:
404 : return 0;
405 : }
406 : }
407 :
408 :
409 :
410 :
411 5 : u32 NDT_V3_GetNodeTag(u32 Context_NDT_Tag, u32 NodeType)
412 : {
413 5 : if (!NodeType) return 0;
414 : /* adjust according to the table version */
415 : /* v3: 0 reserved for extensions */
416 5 : NodeType -= 1;
417 5 : switch (Context_NDT_Tag) {
418 0 : case NDT_SFWorldNode:
419 0 : if (NodeType >= SFWorldNode_V3_Count) return 0;
420 0 : return SFWorldNode_V3_TypeToTag[NodeType];
421 5 : case NDT_SF3DNode:
422 5 : if (NodeType >= SF3DNode_V3_Count) return 0;
423 5 : return SF3DNode_V3_TypeToTag[NodeType];
424 0 : case NDT_SF2DNode:
425 0 : if (NodeType >= SF2DNode_V3_Count) return 0;
426 0 : return SF2DNode_V3_TypeToTag[NodeType];
427 0 : case NDT_SFTemporalNode:
428 0 : if (NodeType >= SFTemporalNode_V3_Count) return 0;
429 0 : return SFTemporalNode_V3_TypeToTag[NodeType];
430 : default:
431 : return 0;
432 : }
433 : }
434 :
435 :
436 0 : u32 NDT_V3_GetNumBits(u32 NDT_Tag)
437 : {
438 : switch (NDT_Tag) {
439 : case NDT_SFWorldNode:
440 : return SFWorldNode_V3_NUMBITS;
441 : case NDT_SF3DNode:
442 : return SF3DNode_V3_NUMBITS;
443 : case NDT_SF2DNode:
444 : return SF2DNode_V3_NUMBITS;
445 : case NDT_SFTemporalNode:
446 : return SFTemporalNode_V3_NUMBITS;
447 702 : default:
448 0 : return 0;
449 : }
450 : }
451 :
452 14872 : u32 NDT_V3_GetNodeType(u32 NDT_Tag, u32 NodeTag)
453 : {
454 14872 : if(!NDT_Tag || !NodeTag) return 0;
455 14872 : switch(NDT_Tag) {
456 : case NDT_SFWorldNode:
457 : return ALL_GetNodeType(SFWorldNode_V3_TypeToTag, SFWorldNode_V3_Count, NodeTag, GF_BIFS_V3);
458 : case NDT_SF3DNode:
459 : return ALL_GetNodeType(SF3DNode_V3_TypeToTag, SF3DNode_V3_Count, NodeTag, GF_BIFS_V3);
460 : case NDT_SF2DNode:
461 : return ALL_GetNodeType(SF2DNode_V3_TypeToTag, SF2DNode_V3_Count, NodeTag, GF_BIFS_V3);
462 : case NDT_SFTemporalNode:
463 : return ALL_GetNodeType(SFTemporalNode_V3_TypeToTag, SFTemporalNode_V3_Count, NodeTag, GF_BIFS_V3);
464 : default:
465 : return 0;
466 : }
467 : }
468 :
469 :
470 :
471 :
472 30 : u32 NDT_V4_GetNodeTag(u32 Context_NDT_Tag, u32 NodeType)
473 : {
474 30 : if (!NodeType) return 0;
475 : /* adjust according to the table version */
476 : /* v4: 0 reserved for extensions */
477 30 : NodeType -= 1;
478 30 : switch (Context_NDT_Tag) {
479 0 : case NDT_SFWorldNode:
480 0 : if (NodeType >= SFWorldNode_V4_Count) return 0;
481 0 : return SFWorldNode_V4_TypeToTag[NodeType];
482 30 : case NDT_SF3DNode:
483 30 : if (NodeType >= SF3DNode_V4_Count) return 0;
484 30 : return SF3DNode_V4_TypeToTag[NodeType];
485 0 : case NDT_SF2DNode:
486 0 : if (NodeType >= SF2DNode_V4_Count) return 0;
487 0 : return SF2DNode_V4_TypeToTag[NodeType];
488 0 : case NDT_SFTextureNode:
489 0 : if (NodeType >= SFTextureNode_V4_Count) return 0;
490 0 : return SFTextureNode_V4_TypeToTag[NodeType];
491 : default:
492 : return 0;
493 : }
494 : }
495 :
496 :
497 0 : u32 NDT_V4_GetNumBits(u32 NDT_Tag)
498 : {
499 5165 : switch (NDT_Tag) {
500 : case NDT_SFWorldNode:
501 : return SFWorldNode_V4_NUMBITS;
502 : case NDT_SF3DNode:
503 : return SF3DNode_V4_NUMBITS;
504 : case NDT_SF2DNode:
505 : return SF2DNode_V4_NUMBITS;
506 204 : case NDT_SFTextureNode:
507 0 : return SFTextureNode_V4_NUMBITS;
508 498 : default:
509 0 : return 0;
510 : }
511 : }
512 :
513 14849 : u32 NDT_V4_GetNodeType(u32 NDT_Tag, u32 NodeTag)
514 : {
515 14849 : if(!NDT_Tag || !NodeTag) return 0;
516 14849 : switch(NDT_Tag) {
517 : case NDT_SFWorldNode:
518 : return ALL_GetNodeType(SFWorldNode_V4_TypeToTag, SFWorldNode_V4_Count, NodeTag, GF_BIFS_V4);
519 : case NDT_SF3DNode:
520 : return ALL_GetNodeType(SF3DNode_V4_TypeToTag, SF3DNode_V4_Count, NodeTag, GF_BIFS_V4);
521 : case NDT_SF2DNode:
522 : return ALL_GetNodeType(SF2DNode_V4_TypeToTag, SF2DNode_V4_Count, NodeTag, GF_BIFS_V4);
523 : case NDT_SFTextureNode:
524 : return ALL_GetNodeType(SFTextureNode_V4_TypeToTag, SFTextureNode_V4_Count, NodeTag, GF_BIFS_V4);
525 : default:
526 : return 0;
527 : }
528 : }
529 :
530 :
531 :
532 :
533 30 : u32 NDT_V5_GetNodeTag(u32 Context_NDT_Tag, u32 NodeType)
534 : {
535 30 : if (!NodeType) return 0;
536 : /* adjust according to the table version */
537 : /* v5: 0 reserved for extensions */
538 30 : NodeType -= 1;
539 30 : switch (Context_NDT_Tag) {
540 0 : case NDT_SFWorldNode:
541 0 : if (NodeType >= SFWorldNode_V5_Count) return 0;
542 0 : return SFWorldNode_V5_TypeToTag[NodeType];
543 15 : case NDT_SF3DNode:
544 15 : if (NodeType >= SF3DNode_V5_Count) return 0;
545 15 : return SF3DNode_V5_TypeToTag[NodeType];
546 0 : case NDT_SF2DNode:
547 0 : if (NodeType >= SF2DNode_V5_Count) return 0;
548 0 : return SF2DNode_V5_TypeToTag[NodeType];
549 0 : case NDT_SFAppearanceNode:
550 0 : if (NodeType >= SFAppearanceNode_V5_Count) return 0;
551 0 : return SFAppearanceNode_V5_TypeToTag[NodeType];
552 15 : case NDT_SFGeometryNode:
553 15 : if (NodeType >= SFGeometryNode_V5_Count) return 0;
554 15 : return SFGeometryNode_V5_TypeToTag[NodeType];
555 0 : case NDT_SFTextureNode:
556 0 : if (NodeType >= SFTextureNode_V5_Count) return 0;
557 0 : return SFTextureNode_V5_TypeToTag[NodeType];
558 0 : case NDT_SFDepthImageNode:
559 0 : if (NodeType >= SFDepthImageNode_V5_Count) return 0;
560 0 : return SFDepthImageNode_V5_TypeToTag[NodeType];
561 0 : case NDT_SFBlendListNode:
562 0 : if (NodeType >= SFBlendListNode_V5_Count) return 0;
563 0 : return SFBlendListNode_V5_TypeToTag[NodeType];
564 0 : case NDT_SFFrameListNode:
565 0 : if (NodeType >= SFFrameListNode_V5_Count) return 0;
566 0 : return SFFrameListNode_V5_TypeToTag[NodeType];
567 0 : case NDT_SFLightMapNode:
568 0 : if (NodeType >= SFLightMapNode_V5_Count) return 0;
569 0 : return SFLightMapNode_V5_TypeToTag[NodeType];
570 0 : case NDT_SFSurfaceMapNode:
571 0 : if (NodeType >= SFSurfaceMapNode_V5_Count) return 0;
572 0 : return SFSurfaceMapNode_V5_TypeToTag[NodeType];
573 0 : case NDT_SFViewMapNode:
574 0 : if (NodeType >= SFViewMapNode_V5_Count) return 0;
575 0 : return SFViewMapNode_V5_TypeToTag[NodeType];
576 0 : case NDT_SFParticleInitializerNode:
577 0 : if (NodeType >= SFParticleInitializerNode_V5_Count) return 0;
578 0 : return SFParticleInitializerNode_V5_TypeToTag[NodeType];
579 0 : case NDT_SFInfluenceNode:
580 0 : if (NodeType >= SFInfluenceNode_V5_Count) return 0;
581 0 : return SFInfluenceNode_V5_TypeToTag[NodeType];
582 0 : case NDT_SFDepthTextureNode:
583 0 : if (NodeType >= SFDepthTextureNode_V5_Count) return 0;
584 0 : return SFDepthTextureNode_V5_TypeToTag[NodeType];
585 0 : case NDT_SFSBBoneNode:
586 0 : if (NodeType >= SFSBBoneNode_V5_Count) return 0;
587 0 : return SFSBBoneNode_V5_TypeToTag[NodeType];
588 0 : case NDT_SFSBMuscleNode:
589 0 : if (NodeType >= SFSBMuscleNode_V5_Count) return 0;
590 0 : return SFSBMuscleNode_V5_TypeToTag[NodeType];
591 0 : case NDT_SFSBSegmentNode:
592 0 : if (NodeType >= SFSBSegmentNode_V5_Count) return 0;
593 0 : return SFSBSegmentNode_V5_TypeToTag[NodeType];
594 0 : case NDT_SFSBSiteNode:
595 0 : if (NodeType >= SFSBSiteNode_V5_Count) return 0;
596 0 : return SFSBSiteNode_V5_TypeToTag[NodeType];
597 0 : case NDT_SFBaseMeshNode:
598 0 : if (NodeType >= SFBaseMeshNode_V5_Count) return 0;
599 0 : return SFBaseMeshNode_V5_TypeToTag[NodeType];
600 0 : case NDT_SFSubdivSurfaceSectorNode:
601 0 : if (NodeType >= SFSubdivSurfaceSectorNode_V5_Count) return 0;
602 0 : return SFSubdivSurfaceSectorNode_V5_TypeToTag[NodeType];
603 : default:
604 : return 0;
605 : }
606 : }
607 :
608 :
609 0 : u32 NDT_V5_GetNumBits(u32 NDT_Tag)
610 : {
611 : switch (NDT_Tag) {
612 : case NDT_SFWorldNode:
613 : return SFWorldNode_V5_NUMBITS;
614 : case NDT_SF3DNode:
615 : return SF3DNode_V5_NUMBITS;
616 : case NDT_SF2DNode:
617 : return SF2DNode_V5_NUMBITS;
618 : case NDT_SFAppearanceNode:
619 : return SFAppearanceNode_V5_NUMBITS;
620 : case NDT_SFGeometryNode:
621 : return SFGeometryNode_V5_NUMBITS;
622 : case NDT_SFTextureNode:
623 : return SFTextureNode_V5_NUMBITS;
624 : case NDT_SFDepthImageNode:
625 : return SFDepthImageNode_V5_NUMBITS;
626 : case NDT_SFBlendListNode:
627 : return SFBlendListNode_V5_NUMBITS;
628 : case NDT_SFFrameListNode:
629 : return SFFrameListNode_V5_NUMBITS;
630 : case NDT_SFLightMapNode:
631 : return SFLightMapNode_V5_NUMBITS;
632 : case NDT_SFSurfaceMapNode:
633 : return SFSurfaceMapNode_V5_NUMBITS;
634 : case NDT_SFViewMapNode:
635 : return SFViewMapNode_V5_NUMBITS;
636 : case NDT_SFParticleInitializerNode:
637 : return SFParticleInitializerNode_V5_NUMBITS;
638 : case NDT_SFInfluenceNode:
639 : return SFInfluenceNode_V5_NUMBITS;
640 : case NDT_SFDepthTextureNode:
641 : return SFDepthTextureNode_V5_NUMBITS;
642 : case NDT_SFSBBoneNode:
643 : return SFSBBoneNode_V5_NUMBITS;
644 : case NDT_SFSBMuscleNode:
645 : return SFSBMuscleNode_V5_NUMBITS;
646 : case NDT_SFSBSegmentNode:
647 : return SFSBSegmentNode_V5_NUMBITS;
648 : case NDT_SFSBSiteNode:
649 : return SFSBSiteNode_V5_NUMBITS;
650 : case NDT_SFBaseMeshNode:
651 : return SFBaseMeshNode_V5_NUMBITS;
652 : case NDT_SFSubdivSurfaceSectorNode:
653 : return SFSubdivSurfaceSectorNode_V5_NUMBITS;
654 : default:
655 : return 0;
656 : }
657 : }
658 :
659 14726 : u32 NDT_V5_GetNodeType(u32 NDT_Tag, u32 NodeTag)
660 : {
661 14726 : if(!NDT_Tag || !NodeTag) return 0;
662 14726 : switch(NDT_Tag) {
663 : case NDT_SFWorldNode:
664 : return ALL_GetNodeType(SFWorldNode_V5_TypeToTag, SFWorldNode_V5_Count, NodeTag, GF_BIFS_V5);
665 : case NDT_SF3DNode:
666 : return ALL_GetNodeType(SF3DNode_V5_TypeToTag, SF3DNode_V5_Count, NodeTag, GF_BIFS_V5);
667 : case NDT_SF2DNode:
668 : return ALL_GetNodeType(SF2DNode_V5_TypeToTag, SF2DNode_V5_Count, NodeTag, GF_BIFS_V5);
669 : case NDT_SFAppearanceNode:
670 : return ALL_GetNodeType(SFAppearanceNode_V5_TypeToTag, SFAppearanceNode_V5_Count, NodeTag, GF_BIFS_V5);
671 : case NDT_SFGeometryNode:
672 : return ALL_GetNodeType(SFGeometryNode_V5_TypeToTag, SFGeometryNode_V5_Count, NodeTag, GF_BIFS_V5);
673 : case NDT_SFTextureNode:
674 : return ALL_GetNodeType(SFTextureNode_V5_TypeToTag, SFTextureNode_V5_Count, NodeTag, GF_BIFS_V5);
675 : case NDT_SFDepthImageNode:
676 : return ALL_GetNodeType(SFDepthImageNode_V5_TypeToTag, SFDepthImageNode_V5_Count, NodeTag, GF_BIFS_V5);
677 : case NDT_SFBlendListNode:
678 : return ALL_GetNodeType(SFBlendListNode_V5_TypeToTag, SFBlendListNode_V5_Count, NodeTag, GF_BIFS_V5);
679 : case NDT_SFFrameListNode:
680 : return ALL_GetNodeType(SFFrameListNode_V5_TypeToTag, SFFrameListNode_V5_Count, NodeTag, GF_BIFS_V5);
681 : case NDT_SFLightMapNode:
682 : return ALL_GetNodeType(SFLightMapNode_V5_TypeToTag, SFLightMapNode_V5_Count, NodeTag, GF_BIFS_V5);
683 : case NDT_SFSurfaceMapNode:
684 : return ALL_GetNodeType(SFSurfaceMapNode_V5_TypeToTag, SFSurfaceMapNode_V5_Count, NodeTag, GF_BIFS_V5);
685 : case NDT_SFViewMapNode:
686 : return ALL_GetNodeType(SFViewMapNode_V5_TypeToTag, SFViewMapNode_V5_Count, NodeTag, GF_BIFS_V5);
687 : case NDT_SFParticleInitializerNode:
688 : return ALL_GetNodeType(SFParticleInitializerNode_V5_TypeToTag, SFParticleInitializerNode_V5_Count, NodeTag, GF_BIFS_V5);
689 : case NDT_SFInfluenceNode:
690 : return ALL_GetNodeType(SFInfluenceNode_V5_TypeToTag, SFInfluenceNode_V5_Count, NodeTag, GF_BIFS_V5);
691 : case NDT_SFDepthTextureNode:
692 : return ALL_GetNodeType(SFDepthTextureNode_V5_TypeToTag, SFDepthTextureNode_V5_Count, NodeTag, GF_BIFS_V5);
693 : case NDT_SFSBBoneNode:
694 : return ALL_GetNodeType(SFSBBoneNode_V5_TypeToTag, SFSBBoneNode_V5_Count, NodeTag, GF_BIFS_V5);
695 : case NDT_SFSBMuscleNode:
696 : return ALL_GetNodeType(SFSBMuscleNode_V5_TypeToTag, SFSBMuscleNode_V5_Count, NodeTag, GF_BIFS_V5);
697 : case NDT_SFSBSegmentNode:
698 : return ALL_GetNodeType(SFSBSegmentNode_V5_TypeToTag, SFSBSegmentNode_V5_Count, NodeTag, GF_BIFS_V5);
699 : case NDT_SFSBSiteNode:
700 : return ALL_GetNodeType(SFSBSiteNode_V5_TypeToTag, SFSBSiteNode_V5_Count, NodeTag, GF_BIFS_V5);
701 : case NDT_SFBaseMeshNode:
702 : return ALL_GetNodeType(SFBaseMeshNode_V5_TypeToTag, SFBaseMeshNode_V5_Count, NodeTag, GF_BIFS_V5);
703 : case NDT_SFSubdivSurfaceSectorNode:
704 : return ALL_GetNodeType(SFSubdivSurfaceSectorNode_V5_TypeToTag, SFSubdivSurfaceSectorNode_V5_Count, NodeTag, GF_BIFS_V5);
705 : default:
706 : return 0;
707 : }
708 : }
709 :
710 :
711 :
712 :
713 989 : u32 NDT_V6_GetNodeTag(u32 Context_NDT_Tag, u32 NodeType)
714 : {
715 989 : if (!NodeType) return 0;
716 : /* adjust according to the table version */
717 : /* v6: 0 reserved for extensions */
718 989 : NodeType -= 1;
719 989 : switch (Context_NDT_Tag) {
720 0 : case NDT_SFWorldNode:
721 0 : if (NodeType >= SFWorldNode_V6_Count) return 0;
722 0 : return SFWorldNode_V6_TypeToTag[NodeType];
723 69 : case NDT_SF3DNode:
724 69 : if (NodeType >= SF3DNode_V6_Count) return 0;
725 69 : return SF3DNode_V6_TypeToTag[NodeType];
726 845 : case NDT_SF2DNode:
727 845 : if (NodeType >= SF2DNode_V6_Count) return 0;
728 845 : return SF2DNode_V6_TypeToTag[NodeType];
729 15 : case NDT_SFGeometryNode:
730 15 : if (NodeType >= SFGeometryNode_V6_Count) return 0;
731 15 : return SFGeometryNode_V6_TypeToTag[NodeType];
732 30 : case NDT_SFTextureNode:
733 30 : if (NodeType >= SFTextureNode_V6_Count) return 0;
734 30 : return SFTextureNode_V6_TypeToTag[NodeType];
735 0 : case NDT_SFFontStyleNode:
736 0 : if (NodeType >= SFFontStyleNode_V6_Count) return 0;
737 0 : return SFFontStyleNode_V6_TypeToTag[NodeType];
738 15 : case NDT_SFLinePropertiesNode:
739 15 : if (NodeType >= SFLinePropertiesNode_V6_Count) return 0;
740 15 : return SFLinePropertiesNode_V6_TypeToTag[NodeType];
741 15 : case NDT_SFTextureTransformNode:
742 15 : if (NodeType >= SFTextureTransformNode_V6_Count) return 0;
743 15 : return SFTextureTransformNode_V6_TypeToTag[NodeType];
744 0 : case NDT_SFViewportNode:
745 0 : if (NodeType >= SFViewportNode_V6_Count) return 0;
746 0 : return SFViewportNode_V6_TypeToTag[NodeType];
747 : default:
748 : return 0;
749 : }
750 : }
751 :
752 :
753 0 : u32 NDT_V6_GetNumBits(u32 NDT_Tag)
754 : {
755 : switch (NDT_Tag) {
756 : case NDT_SFWorldNode:
757 : return SFWorldNode_V6_NUMBITS;
758 : case NDT_SF3DNode:
759 : return SF3DNode_V6_NUMBITS;
760 : case NDT_SF2DNode:
761 : return SF2DNode_V6_NUMBITS;
762 : case NDT_SFGeometryNode:
763 : return SFGeometryNode_V6_NUMBITS;
764 : case NDT_SFTextureNode:
765 : return SFTextureNode_V6_NUMBITS;
766 : case NDT_SFFontStyleNode:
767 : return SFFontStyleNode_V6_NUMBITS;
768 : case NDT_SFLinePropertiesNode:
769 : return SFLinePropertiesNode_V6_NUMBITS;
770 : case NDT_SFTextureTransformNode:
771 : return SFTextureTransformNode_V6_NUMBITS;
772 : case NDT_SFViewportNode:
773 : return SFViewportNode_V6_NUMBITS;
774 : default:
775 : return 0;
776 : }
777 : }
778 :
779 14559 : u32 NDT_V6_GetNodeType(u32 NDT_Tag, u32 NodeTag)
780 : {
781 14559 : if(!NDT_Tag || !NodeTag) return 0;
782 14559 : switch(NDT_Tag) {
783 : case NDT_SFWorldNode:
784 : return ALL_GetNodeType(SFWorldNode_V6_TypeToTag, SFWorldNode_V6_Count, NodeTag, GF_BIFS_V6);
785 : case NDT_SF3DNode:
786 : return ALL_GetNodeType(SF3DNode_V6_TypeToTag, SF3DNode_V6_Count, NodeTag, GF_BIFS_V6);
787 : case NDT_SF2DNode:
788 : return ALL_GetNodeType(SF2DNode_V6_TypeToTag, SF2DNode_V6_Count, NodeTag, GF_BIFS_V6);
789 : case NDT_SFGeometryNode:
790 : return ALL_GetNodeType(SFGeometryNode_V6_TypeToTag, SFGeometryNode_V6_Count, NodeTag, GF_BIFS_V6);
791 : case NDT_SFTextureNode:
792 : return ALL_GetNodeType(SFTextureNode_V6_TypeToTag, SFTextureNode_V6_Count, NodeTag, GF_BIFS_V6);
793 : case NDT_SFFontStyleNode:
794 : return ALL_GetNodeType(SFFontStyleNode_V6_TypeToTag, SFFontStyleNode_V6_Count, NodeTag, GF_BIFS_V6);
795 : case NDT_SFLinePropertiesNode:
796 : return ALL_GetNodeType(SFLinePropertiesNode_V6_TypeToTag, SFLinePropertiesNode_V6_Count, NodeTag, GF_BIFS_V6);
797 : case NDT_SFTextureTransformNode:
798 : return ALL_GetNodeType(SFTextureTransformNode_V6_TypeToTag, SFTextureTransformNode_V6_Count, NodeTag, GF_BIFS_V6);
799 : case NDT_SFViewportNode:
800 : return ALL_GetNodeType(SFViewportNode_V6_TypeToTag, SFViewportNode_V6_Count, NodeTag, GF_BIFS_V6);
801 : default:
802 : return 0;
803 : }
804 : }
805 :
806 :
807 :
808 :
809 5 : u32 NDT_V7_GetNodeTag(u32 Context_NDT_Tag, u32 NodeType)
810 : {
811 5 : if (!NodeType) return 0;
812 : /* adjust according to the table version */
813 : /* v7: 0 reserved for extensions */
814 5 : NodeType -= 1;
815 5 : switch (Context_NDT_Tag) {
816 0 : case NDT_SFWorldNode:
817 0 : if (NodeType >= SFWorldNode_V7_Count) return 0;
818 0 : return SFWorldNode_V7_TypeToTag[NodeType];
819 5 : case NDT_SF3DNode:
820 5 : if (NodeType >= SF3DNode_V7_Count) return 0;
821 5 : return SF3DNode_V7_TypeToTag[NodeType];
822 0 : case NDT_SF2DNode:
823 0 : if (NodeType >= SF2DNode_V7_Count) return 0;
824 0 : return SF2DNode_V7_TypeToTag[NodeType];
825 0 : case NDT_SFAudioNode:
826 0 : if (NodeType >= SFAudioNode_V7_Count) return 0;
827 0 : return SFAudioNode_V7_TypeToTag[NodeType];
828 0 : case NDT_SFTextureNode:
829 0 : if (NodeType >= SFTextureNode_V7_Count) return 0;
830 0 : return SFTextureNode_V7_TypeToTag[NodeType];
831 0 : case NDT_SFDepthImageNode:
832 0 : if (NodeType >= SFDepthImageNode_V7_Count) return 0;
833 0 : return SFDepthImageNode_V7_TypeToTag[NodeType];
834 0 : case NDT_SFDepthTextureNode:
835 0 : if (NodeType >= SFDepthTextureNode_V7_Count) return 0;
836 0 : return SFDepthTextureNode_V7_TypeToTag[NodeType];
837 : default:
838 : return 0;
839 : }
840 : }
841 :
842 :
843 0 : u32 NDT_V7_GetNumBits(u32 NDT_Tag)
844 : {
845 : switch (NDT_Tag) {
846 : case NDT_SFWorldNode:
847 : return SFWorldNode_V7_NUMBITS;
848 : case NDT_SF3DNode:
849 : return SF3DNode_V7_NUMBITS;
850 : case NDT_SF2DNode:
851 : return SF2DNode_V7_NUMBITS;
852 : case NDT_SFAudioNode:
853 : return SFAudioNode_V7_NUMBITS;
854 : case NDT_SFTextureNode:
855 : return SFTextureNode_V7_NUMBITS;
856 : case NDT_SFDepthImageNode:
857 : return SFDepthImageNode_V7_NUMBITS;
858 : case NDT_SFDepthTextureNode:
859 : return SFDepthTextureNode_V7_NUMBITS;
860 : default:
861 : return 0;
862 : }
863 : }
864 :
865 10265 : u32 NDT_V7_GetNodeType(u32 NDT_Tag, u32 NodeTag)
866 : {
867 10265 : if(!NDT_Tag || !NodeTag) return 0;
868 10265 : switch(NDT_Tag) {
869 : case NDT_SFWorldNode:
870 : return ALL_GetNodeType(SFWorldNode_V7_TypeToTag, SFWorldNode_V7_Count, NodeTag, GF_BIFS_V7);
871 : case NDT_SF3DNode:
872 : return ALL_GetNodeType(SF3DNode_V7_TypeToTag, SF3DNode_V7_Count, NodeTag, GF_BIFS_V7);
873 : case NDT_SF2DNode:
874 : return ALL_GetNodeType(SF2DNode_V7_TypeToTag, SF2DNode_V7_Count, NodeTag, GF_BIFS_V7);
875 : case NDT_SFAudioNode:
876 : return ALL_GetNodeType(SFAudioNode_V7_TypeToTag, SFAudioNode_V7_Count, NodeTag, GF_BIFS_V7);
877 : case NDT_SFTextureNode:
878 : return ALL_GetNodeType(SFTextureNode_V7_TypeToTag, SFTextureNode_V7_Count, NodeTag, GF_BIFS_V7);
879 : case NDT_SFDepthImageNode:
880 : return ALL_GetNodeType(SFDepthImageNode_V7_TypeToTag, SFDepthImageNode_V7_Count, NodeTag, GF_BIFS_V7);
881 : case NDT_SFDepthTextureNode:
882 : return ALL_GetNodeType(SFDepthTextureNode_V7_TypeToTag, SFDepthTextureNode_V7_Count, NodeTag, GF_BIFS_V7);
883 : default:
884 : return 0;
885 : }
886 : }
887 :
888 :
889 :
890 :
891 5 : u32 NDT_V8_GetNodeTag(u32 Context_NDT_Tag, u32 NodeType)
892 : {
893 5 : if (!NodeType) return 0;
894 : /* adjust according to the table version */
895 : /* v8: 0 reserved for extensions */
896 5 : NodeType -= 1;
897 5 : switch (Context_NDT_Tag) {
898 0 : case NDT_SFWorldNode:
899 0 : if (NodeType >= SFWorldNode_V8_Count) return 0;
900 0 : return SFWorldNode_V8_TypeToTag[NodeType];
901 5 : case NDT_SF3DNode:
902 5 : if (NodeType >= SF3DNode_V8_Count) return 0;
903 5 : return SF3DNode_V8_TypeToTag[NodeType];
904 0 : case NDT_SF2DNode:
905 0 : if (NodeType >= SF2DNode_V8_Count) return 0;
906 0 : return SF2DNode_V8_TypeToTag[NodeType];
907 0 : case NDT_SFMusicScoreNode:
908 0 : if (NodeType >= SFMusicScoreNode_V8_Count) return 0;
909 0 : return SFMusicScoreNode_V8_TypeToTag[NodeType];
910 : default:
911 : return 0;
912 : }
913 : }
914 :
915 :
916 0 : u32 NDT_V8_GetNumBits(u32 NDT_Tag)
917 : {
918 90 : switch (NDT_Tag) {
919 : case NDT_SFWorldNode:
920 : return SFWorldNode_V8_NUMBITS;
921 54 : case NDT_SF3DNode:
922 0 : return SF3DNode_V8_NUMBITS;
923 5 : case NDT_SF2DNode:
924 0 : return SF2DNode_V8_NUMBITS;
925 0 : case NDT_SFMusicScoreNode:
926 0 : return SFMusicScoreNode_V8_NUMBITS;
927 31 : default:
928 0 : return 0;
929 : }
930 : }
931 :
932 10227 : u32 NDT_V8_GetNodeType(u32 NDT_Tag, u32 NodeTag)
933 : {
934 10227 : if(!NDT_Tag || !NodeTag) return 0;
935 10227 : switch(NDT_Tag) {
936 : case NDT_SFWorldNode:
937 : return ALL_GetNodeType(SFWorldNode_V8_TypeToTag, SFWorldNode_V8_Count, NodeTag, GF_BIFS_V8);
938 : case NDT_SF3DNode:
939 : return ALL_GetNodeType(SF3DNode_V8_TypeToTag, SF3DNode_V8_Count, NodeTag, GF_BIFS_V8);
940 : case NDT_SF2DNode:
941 : return ALL_GetNodeType(SF2DNode_V8_TypeToTag, SF2DNode_V8_Count, NodeTag, GF_BIFS_V8);
942 : case NDT_SFMusicScoreNode:
943 : return ALL_GetNodeType(SFMusicScoreNode_V8_TypeToTag, SFMusicScoreNode_V8_Count, NodeTag, GF_BIFS_V8);
944 : default:
945 : return 0;
946 : }
947 : }
948 :
949 :
950 :
951 :
952 5 : u32 NDT_V9_GetNodeTag(u32 Context_NDT_Tag, u32 NodeType)
953 : {
954 5 : if (!NodeType) return 0;
955 : /* adjust according to the table version */
956 : /* v9: 0 reserved for extensions */
957 5 : NodeType -= 1;
958 5 : switch (Context_NDT_Tag) {
959 0 : case NDT_SFWorldNode:
960 0 : if (NodeType >= SFWorldNode_V9_Count) return 0;
961 0 : return SFWorldNode_V9_TypeToTag[NodeType];
962 5 : case NDT_SF3DNode:
963 5 : if (NodeType >= SF3DNode_V9_Count) return 0;
964 5 : return SF3DNode_V9_TypeToTag[NodeType];
965 0 : case NDT_SFGeometryNode:
966 0 : if (NodeType >= SFGeometryNode_V9_Count) return 0;
967 0 : return SFGeometryNode_V9_TypeToTag[NodeType];
968 : default:
969 : return 0;
970 : }
971 : }
972 :
973 :
974 0 : u32 NDT_V9_GetNumBits(u32 NDT_Tag)
975 : {
976 : switch (NDT_Tag) {
977 : case NDT_SFWorldNode:
978 : return SFWorldNode_V9_NUMBITS;
979 : case NDT_SF3DNode:
980 : return SF3DNode_V9_NUMBITS;
981 : case NDT_SFGeometryNode:
982 : return SFGeometryNode_V9_NUMBITS;
983 36 : default:
984 0 : return 0;
985 : }
986 : }
987 :
988 10210 : u32 NDT_V9_GetNodeType(u32 NDT_Tag, u32 NodeTag)
989 : {
990 10210 : if(!NDT_Tag || !NodeTag) return 0;
991 10210 : switch(NDT_Tag) {
992 : case NDT_SFWorldNode:
993 : return ALL_GetNodeType(SFWorldNode_V9_TypeToTag, SFWorldNode_V9_Count, NodeTag, GF_BIFS_V9);
994 : case NDT_SF3DNode:
995 : return ALL_GetNodeType(SF3DNode_V9_TypeToTag, SF3DNode_V9_Count, NodeTag, GF_BIFS_V9);
996 : case NDT_SFGeometryNode:
997 : return ALL_GetNodeType(SFGeometryNode_V9_TypeToTag, SFGeometryNode_V9_Count, NodeTag, GF_BIFS_V9);
998 : default:
999 : return 0;
1000 : }
1001 : }
1002 :
1003 :
1004 :
1005 :
1006 30 : u32 NDT_V10_GetNodeTag(u32 Context_NDT_Tag, u32 NodeType)
1007 : {
1008 30 : if (!NodeType) return 0;
1009 : /* adjust according to the table version */
1010 : /* v10: 0 reserved for extensions */
1011 30 : NodeType -= 1;
1012 30 : switch (Context_NDT_Tag) {
1013 0 : case NDT_SFWorldNode:
1014 0 : if (NodeType >= SFWorldNode_V10_Count) return 0;
1015 0 : return SFWorldNode_V10_TypeToTag[NodeType];
1016 15 : case NDT_SF3DNode:
1017 15 : if (NodeType >= SF3DNode_V10_Count) return 0;
1018 15 : return SF3DNode_V10_TypeToTag[NodeType];
1019 0 : case NDT_SF2DNode:
1020 0 : if (NodeType >= SF2DNode_V10_Count) return 0;
1021 0 : return SF2DNode_V10_TypeToTag[NodeType];
1022 15 : case NDT_SFTextureNode:
1023 15 : if (NodeType >= SFTextureNode_V10_Count) return 0;
1024 15 : return SFTextureNode_V10_TypeToTag[NodeType];
1025 : default:
1026 : return 0;
1027 : }
1028 : }
1029 :
1030 :
1031 0 : u32 NDT_V10_GetNumBits(u32 NDT_Tag)
1032 : {
1033 66 : switch (NDT_Tag) {
1034 : case NDT_SFWorldNode:
1035 : return SFWorldNode_V10_NUMBITS;
1036 : case NDT_SF3DNode:
1037 : return SF3DNode_V10_NUMBITS;
1038 : case NDT_SF2DNode:
1039 : return SF2DNode_V10_NUMBITS;
1040 31 : case NDT_SFTextureNode:
1041 0 : return SFTextureNode_V10_NUMBITS;
1042 0 : default:
1043 0 : return 0;
1044 : }
1045 : }
1046 :
1047 10180 : u32 NDT_V10_GetNodeType(u32 NDT_Tag, u32 NodeTag)
1048 : {
1049 10180 : if(!NDT_Tag || !NodeTag) return 0;
1050 10180 : switch(NDT_Tag) {
1051 : case NDT_SFWorldNode:
1052 : return ALL_GetNodeType(SFWorldNode_V10_TypeToTag, SFWorldNode_V10_Count, NodeTag, GF_BIFS_V10);
1053 : case NDT_SF3DNode:
1054 : return ALL_GetNodeType(SF3DNode_V10_TypeToTag, SF3DNode_V10_Count, NodeTag, GF_BIFS_V10);
1055 : case NDT_SF2DNode:
1056 : return ALL_GetNodeType(SF2DNode_V10_TypeToTag, SF2DNode_V10_Count, NodeTag, GF_BIFS_V10);
1057 : case NDT_SFTextureNode:
1058 : return ALL_GetNodeType(SFTextureNode_V10_TypeToTag, SFTextureNode_V10_Count, NodeTag, GF_BIFS_V10);
1059 : default:
1060 : return 0;
1061 : }
1062 : }
1063 :
1064 :
1065 :
1066 5495 : u32 gf_bifs_ndt_get_node_type(u32 NDT_Tag, u32 NodeType, u32 Version)
1067 : {
1068 5495 : switch (Version) {
1069 4391 : case GF_BIFS_V1:
1070 4391 : return NDT_V1_GetNodeTag(NDT_Tag, NodeType);
1071 5 : case GF_BIFS_V2:
1072 5 : return NDT_V2_GetNodeTag(NDT_Tag, NodeType);
1073 5 : case GF_BIFS_V3:
1074 5 : return NDT_V3_GetNodeTag(NDT_Tag, NodeType);
1075 30 : case GF_BIFS_V4:
1076 30 : return NDT_V4_GetNodeTag(NDT_Tag, NodeType);
1077 30 : case GF_BIFS_V5:
1078 30 : return NDT_V5_GetNodeTag(NDT_Tag, NodeType);
1079 989 : case GF_BIFS_V6:
1080 989 : return NDT_V6_GetNodeTag(NDT_Tag, NodeType);
1081 5 : case GF_BIFS_V7:
1082 5 : return NDT_V7_GetNodeTag(NDT_Tag, NodeType);
1083 5 : case GF_BIFS_V8:
1084 5 : return NDT_V8_GetNodeTag(NDT_Tag, NodeType);
1085 5 : case GF_BIFS_V9:
1086 5 : return NDT_V9_GetNodeTag(NDT_Tag, NodeType);
1087 30 : case GF_BIFS_V10:
1088 30 : return NDT_V10_GetNodeTag(NDT_Tag, NodeType);
1089 : default:
1090 : return 0;
1091 : }
1092 : }
1093 :
1094 49175 : u32 gf_bifs_get_ndt_bits(u32 NDT_Tag, u32 Version)
1095 : {
1096 49175 : switch (Version) {
1097 : case GF_BIFS_V1:
1098 : return NDT_V1_GetNumBits(NDT_Tag);
1099 : case GF_BIFS_V2:
1100 : return NDT_V2_GetNumBits(NDT_Tag);
1101 : case GF_BIFS_V3:
1102 : return NDT_V3_GetNumBits(NDT_Tag);
1103 : case GF_BIFS_V4:
1104 : return NDT_V4_GetNumBits(NDT_Tag);
1105 : case GF_BIFS_V5:
1106 : return NDT_V5_GetNumBits(NDT_Tag);
1107 : case GF_BIFS_V6:
1108 : return NDT_V6_GetNumBits(NDT_Tag);
1109 : case GF_BIFS_V7:
1110 : return NDT_V7_GetNumBits(NDT_Tag);
1111 : case GF_BIFS_V8:
1112 : return NDT_V8_GetNumBits(NDT_Tag);
1113 : case GF_BIFS_V9:
1114 : return NDT_V9_GetNumBits(NDT_Tag);
1115 : case GF_BIFS_V10:
1116 : return NDT_V10_GetNumBits(NDT_Tag);
1117 : default:
1118 : return 0;
1119 : }
1120 : }
1121 :
1122 161436 : u32 gf_bifs_get_node_type(u32 NDT_Tag, u32 NodeTag, u32 Version)
1123 : {
1124 161436 : switch (Version) {
1125 46305 : case GF_BIFS_V1:
1126 46305 : return NDT_V1_GetNodeType(NDT_Tag, NodeTag);
1127 15243 : case GF_BIFS_V2:
1128 15243 : return NDT_V2_GetNodeType(NDT_Tag, NodeTag);
1129 14872 : case GF_BIFS_V3:
1130 14872 : return NDT_V3_GetNodeType(NDT_Tag, NodeTag);
1131 14849 : case GF_BIFS_V4:
1132 14849 : return NDT_V4_GetNodeType(NDT_Tag, NodeTag);
1133 14726 : case GF_BIFS_V5:
1134 14726 : return NDT_V5_GetNodeType(NDT_Tag, NodeTag);
1135 14559 : case GF_BIFS_V6:
1136 14559 : return NDT_V6_GetNodeType(NDT_Tag, NodeTag);
1137 10265 : case GF_BIFS_V7:
1138 10265 : return NDT_V7_GetNodeType(NDT_Tag, NodeTag);
1139 10227 : case GF_BIFS_V8:
1140 10227 : return NDT_V8_GetNodeType(NDT_Tag, NodeTag);
1141 10210 : case GF_BIFS_V9:
1142 10210 : return NDT_V9_GetNodeType(NDT_Tag, NodeTag);
1143 10180 : case GF_BIFS_V10:
1144 10180 : return NDT_V10_GetNodeType(NDT_Tag, NodeTag);
1145 : default:
1146 : return 0;
1147 : }
1148 : }
1149 :
1150 :
1151 :
1152 : #endif /*GPAC_DISABLE_BIFS*/
1153 :
|