IID_to_MPH.c revision e31a69fcbe27894a597176d05a08e04c06092021
1/*
2 * Copyright (C) 2010 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17// This file is automagically generated by hashgen, do not edit
18
19/** \file IID_to_MPH.c Interface ID to MPH mapping */
20
21#include "SLES/OpenSLES.h"
22#include "MPH.h"
23#include <assert.h>
24#include <string.h>
25
26extern const struct SLInterfaceID_ SL_IID_array[MPH_MAX];
27
28/** \brief Map SLInterfaceID to its minimal perfect hash (MPH), or -1 if unknown */
29
30int IID_to_MPH(const SLInterfaceID iid)
31{
32#define MAX_HASH_VALUE 196
33  static const unsigned char asso_values[] =
34    {
35       35,  20,  54,  84, 197, 197,  59, 197, 197, 197,
36      197, 197, 197, 197,  69, 197,  64,  44, 197, 197,
37      197, 197,  39, 197,  54,  14, 197, 197,  14, 197,
38      197, 125,   5, 197, 197, 197, 197, 197, 197, 197,
39      127, 197, 197, 197,   9, 197, 112, 197, 197, 197,
40      197, 197, 122, 197, 197, 197, 197, 197,  14, 100,
41      197,   9,  24, 197,  50, 197, 197, 197, 197, 117,
42      197, 197,  97,  85, 197, 197, 197, 197, 197, 197,
43      197, 197, 197, 197, 197, 197, 117, 197,  19, 197,
44      197, 197,   9, 197, 197, 197,  25, 197,  14, 102,
45      197, 197, 197, 197, 197, 197, 197,   4, 197,  97,
46      197, 197,   0, 197,   4,  92, 117, 197,  67,  45,
47      197, 197, 110, 197, 197, 197,  72, 197,  40, 197,
48      197, 197, 197, 197, 197, 102,  52, 197, 197, 197,
49      197, 197,  57,  67, 197,  62, 197, 125, 197, 197,
50      197, 197, 197,  82, 197, 197,  72, 197, 197,  65,
51        5, 197,  32, 197, 197,  67, 120, 197, 197,  37,
52      197,  57,  55, 197, 197,  47, 197,  45, 197, 197,
53      197, 197,   7, 197,  17,  30, 197, 197, 197, 197,
54      197, 197,   0, 197, 197, 197, 105,  32, 197, 197,
55      197, 197, 197, 197, 197, 197, 115, 197, 197, 197,
56       95,  32, 197, 197, 197,  22, 197, 197,   2, 197,
57      197, 197, 197,  12,  10, 197, 197,  12, 197, 197,
58      197, 197, 197, 197,   2, 197,  70, 197, 197, 197,
59       10,   2, 197, 197,  70, 197, 120, 115, 197, 197,
60      197,  80, 105, 100, 197, 197
61    };
62    static const signed char hash_to_MPH[] = {
63        -1,
64        -1,
65        -1,
66        -1,
67        -1,
68        -1,
69        -1,
70        -1,
71        -1,
72        -1,
73        -1,
74        -1,
75        -1,
76        -1,
77        -1,
78        -1,
79        MPH_ANDROIDEFFECTSEND,
80        -1,
81        MPH_XADYNAMICINTERFACEMANAGEMENT,
82        -1,
83        MPH_XAAUDIODECODERCAPABILITIES,
84        MPH_XALED,
85        -1,
86        MPH_XATHREADSYNC,
87        -1,
88        MPH_XAOUTPUTMIX,
89        MPH_MIDITIME,
90        -1,
91        MPH_XAIMAGECONTROLS,
92        -1,
93        MPH_AUDIOIODEVICECAPABILITIES,
94        MPH_MUTESOLO,
95        -1,
96        MPH_XAVOLUME,
97        -1,
98        MPH_ANDROIDCONFIGURATION,
99        MPH_XASNAPSHOT,
100        -1,
101        MPH_XAPLAY,
102        -1,
103        MPH_SEEK,
104        MPH_3DLOCATION,
105        -1,
106        MPH_XACONFIGEXTENSION,
107        -1,
108        MPH_XAIMAGEDECODERCAPABILITIES,
109        MPH_XACAMERACAPABILITIES,
110        -1,
111        MPH_3DMACROSCOPIC,
112        -1,
113        MPH_VIBRA,
114        MPH_XAIMAGEEFFECTS,
115        -1,
116        MPH_XAMETADATAEXTRACTION,
117        -1,
118        MPH_PRESETREVERB,
119        MPH_XAOBJECT,
120        -1,
121        MPH_RATEPITCH,
122        -1,
123        MPH_PITCH,
124        MPH_XAVIBRA,
125        -1,
126        MPH_XARADIO,
127        -1,
128        MPH_OUTPUTMIXEXT,
129        MPH_ENGINECAPABILITIES,
130        -1,
131        MPH_XAVIDEOPOSTPROCESSING,
132        -1,
133        MPH_3DCOMMIT,
134        MPH_XAVIDEODECODERCAPABILITIES,
135        -1,
136        MPH_METADATATRAVERSAL,
137        -1,
138        MPH_XASEEK,
139        MPH_AUDIODECODERCAPABILITIES,
140        -1,
141        MPH_DEVICEVOLUME,
142        -1,
143        MPH_OBJECT,
144        MPH_ENVIRONMENTALREVERB,
145        -1,
146        MPH_XARDS,
147        -1,
148        MPH_XAVIDEOENCODER,
149        MPH_OUTPUTMIX,
150        -1,
151        MPH_XADYNAMICSOURCE,
152        -1,
153        MPH_3DGROUPING,
154        MPH_XASTREAMINFORMATION,
155        -1,
156        MPH_XAPREFETCHSTATUS,
157        -1,
158        MPH_XAMETADATATRAVERSAL,
159        MPH_VIRTUALIZER,
160        -1,
161        MPH_BUFFERQUEUE,
162        -1,
163        MPH_ANDROIDBUFFERQUEUE,
164        MPH_PLAY,
165        -1,
166        MPH_XAMETADATAINSERTION,
167        -1,
168        MPH_XADEVICEVOLUME,
169        MPH_XAVIDEOENCODERCAPABILITIES,
170        -1,
171        MPH_ENGINE,
172        -1,
173        MPH_MIDIMUTESOLO,
174        MPH_XAEQUALIZER,
175        -1,
176        MPH_METADATAEXTRACTION,
177        -1,
178        -1,
179        MPH_XARECORD,
180        -1,
181        MPH_XAIMAGEENCODER,
182        -1,
183        -1,
184        MPH_VISUALIZATION,
185        -1,
186        MPH_XACAMERA,
187        -1,
188        -1,
189        MPH_BASSBOOST,
190        -1,
191        MPH_LED,
192        -1,
193        -1,
194        MPH_EFFECTSEND,
195        -1,
196        MPH_XAENGINE,
197        -1,
198        -1,
199        MPH_RECORD,
200        -1,
201        MPH_MIDIMESSAGE,
202        -1,
203        -1,
204        MPH_ANDROIDEFFECTCAPABILITIES,
205        -1,
206        MPH_3DSOURCE,
207        -1,
208        -1,
209        MPH_VOLUME,
210        -1,
211        MPH_XAAUDIOENCODERCAPABILITIES,
212        -1,
213        -1,
214        MPH_PLAYBACKRATE,
215        -1,
216        MPH_XAAUDIOIODEVICECAPABILITIES,
217        -1,
218        -1,
219        MPH_NULL,
220        -1,
221        MPH_ANDROIDEFFECT,
222        -1,
223        -1,
224        MPH_XAIMAGEENCODERCAPABILITIES,
225        -1,
226        MPH_XAPLAYBACKRATE,
227        -1,
228        -1,
229        MPH_MIDITEMPO,
230        -1,
231        MPH_DYNAMICSOURCE,
232        -1,
233        -1,
234        MPH_DYNAMICINTERFACEMANAGEMENT,
235        -1,
236        MPH_EQUALIZER,
237        -1,
238        -1,
239        MPH_XAAUDIOENCODER,
240        -1,
241        MPH_THREADSYNC,
242        -1,
243        -1,
244        MPH_PREFETCHSTATUS,
245        -1,
246        MPH_3DDOPPLER,
247        -1,
248        -1,
249        MPH_ANDROIDSIMPLEBUFFERQUEUE,
250        -1,
251        -1,
252        -1,
253        -1,
254        MPH_AUDIOENCODERCAPABILITIES,
255        -1,
256        -1,
257        -1,
258        -1,
259        MPH_AUDIOENCODER
260    };
261    if (&SL_IID_array[0] <= iid && &SL_IID_array[MPH_MAX] > iid)
262        return iid - &SL_IID_array[0];
263    if (NULL != iid) {
264        static const unsigned len = sizeof(struct SLInterfaceID_);
265        unsigned key = len +
266            asso_values[((unsigned char *)iid)[8]] + asso_values[((unsigned char *)iid)[0]];
267        if (key <= MAX_HASH_VALUE) {
268            int MPH = hash_to_MPH[key];
269            if (MPH >= 0) {
270                assert(MPH < MPH_MAX);
271                SLInterfaceID trial = &SL_IID_array[MPH];
272                if (!memcmp(iid, trial, sizeof(struct SLInterfaceID_)))
273                    return MPH;
274            }
275        }
276    }
277    return -1;
278}
279