LCOV - code coverage report
Current view: top level - bifs - bifs_node_tables.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 230 448 51.3 %
Date: 2021-04-29 23:48:07 Functions: 23 34 67.6 %

          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             : 

Generated by: LCOV version 1.13