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
26 extern const struct SLInterfaceID_ SL_IID_array[MPH_MAX];
27
28 /** \brief Map SLInterfaceID to its minimal perfect hash (MPH), or -1 if unknown */
29
IID_to_MPH(const SLInterfaceID iid)30 int IID_to_MPH(const SLInterfaceID iid)
31 {
32 #define MAX_HASH_VALUE 250
33 static const unsigned char asso_values[] =
34 {
35 251, 22, 251, 87, 251, 251, 0, 251, 37, 17,
36 251, 12, 4, 251, 251, 95, 251, 251, 251, 251,
37 102, 251, 17, 251, 251, 85, 251, 251, 251, 7,
38 251, 115, 251, 251, 251, 251, 251, 251, 7, 2,
39 251, 251, 15, 2, 87, 122, 15, 251, 251, 122,
40 251, 251, 251, 70, 251, 50, 251, 251, 32, 251,
41 251, 7, 251, 47, 2, 251, 52, 12, 47, 2,
42 251, 25, 251, 67, 251, 85, 32, 25, 251, 251,
43 2, 251, 251, 251, 2, 251, 2, 251, 251, 251,
44 2, 251, 251, 2, 251, 251, 251, 12, 105, 125,
45 251, 125, 251, 251, 2, 251, 12, 120, 251, 10,
46 75, 2, 2, 251, 251, 120, 115, 251, 251, 251,
47 110, 120, 10, 110, 251, 251, 251, 105, 15, 251,
48 5, 50, 251, 251, 251, 251, 251, 100, 251, 251,
49 120, 2, 251, 95, 251, 251, 251, 125, 2, 251,
50 251, 90, 251, 251, 90, 251, 0, 251, 90, 251,
51 251, 251, 251, 75, 100, 2, 251, 100, 80, 251,
52 110, 251, 251, 70, 80, 75, 115, 22, 50, 75,
53 90, 251, 251, 251, 65, 65, 251, 60, 65, 251,
54 251, 251, 60, 5, 55, 55, 105, 5, 50, 45,
55 65, 251, 251, 251, 55, 45, 45, 251, 45, 30,
56 40, 251, 65, 55, 251, 75, 251, 30, 75, 45,
57 251, 80, 25, 251, 251, 20, 251, 20, 2, 251,
58 251, 50, 251, 251, 251, 60, 110, 17, 20, 30,
59 251, 45, 0, 85, 20, 251, 120, 251, 251, 251,
60 251, 251, 251, 35, 40, 60
61 };
62 static const signed char hash_to_MPH[] = {
63 MPH_BASSBOOST,
64 -1,
65 MPH_BUFFERQUEUE,
66 -1,
67 MPH_XAVIDEOENCODERCAPABILITIES,
68 MPH_XAIMAGEENCODERCAPABILITIES,
69 -1,
70 MPH_XAOBJECT,
71 -1,
72 MPH_VISUALIZATION,
73 MPH_DYNAMICSOURCE,
74 -1,
75 MPH_XAAUDIOIODEVICECAPABILITIES,
76 -1,
77 MPH_MIDITIME,
78 MPH_RECORD,
79 -1,
80 MPH_3DLOCATION,
81 -1,
82 MPH_VIBRA,
83 MPH_XAEQUALIZER,
84 -1,
85 MPH_ANDROIDEFFECTCAPABILITIES,
86 -1,
87 MPH_EQUALIZER,
88 MPH_XACONFIGEXTENSION,
89 -1,
90 MPH_RATEPITCH,
91 -1,
92 MPH_XAAUDIODECODERCAPABILITIES,
93 MPH_PLAYBACKRATE,
94 -1,
95 MPH_XALED,
96 -1,
97 MPH_VOLUME,
98 MPH_PREFETCHSTATUS,
99 -1,
100 MPH_XAMETADATAEXTRACTION,
101 -1,
102 MPH_XAVOLUME,
103 MPH_XAIMAGECONTROLS,
104 -1,
105 MPH_EFFECTSEND,
106 -1,
107 MPH_XACAMERACAPABILITIES,
108 MPH_DEVICEVOLUME,
109 -1,
110 MPH_XAVIDEOENCODER,
111 -1,
112 -1,
113 MPH_ANDROIDACOUSTICECHOCANCELLATION,
114 -1,
115 MPH_XAOUTPUTMIX,
116 -1,
117 -1,
118 MPH_XASNAPSHOT,
119 -1,
120 MPH_ENGINE,
121 -1,
122 -1,
123 MPH_PLAY,
124 -1,
125 MPH_MUTESOLO,
126 -1,
127 -1,
128 MPH_PITCH,
129 -1,
130 MPH_XADYNAMICSOURCE,
131 -1,
132 -1,
133 MPH_XACAMERA,
134 -1,
135 MPH_XAVIBRA,
136 -1,
137 -1,
138 MPH_AUDIOIODEVICECAPABILITIES,
139 -1,
140 MPH_XADYNAMICINTERFACEMANAGEMENT,
141 -1,
142 -1,
143 MPH_XAVIDEODECODERCAPABILITIES,
144 -1,
145 MPH_3DMACROSCOPIC,
146 -1,
147 -1,
148 MPH_OUTPUTMIXEXT,
149 -1,
150 MPH_XADEVICEVOLUME,
151 -1,
152 -1,
153 MPH_XAIMAGEENCODER,
154 -1,
155 MPH_XAMETADATAINSERTION,
156 -1,
157 -1,
158 MPH_ENGINECAPABILITIES,
159 -1,
160 MPH_XAENGINE,
161 -1,
162 -1,
163 MPH_XAAUDIOENCODERCAPABILITIES,
164 -1,
165 MPH_XAVIDEOPOSTPROCESSING,
166 -1,
167 -1,
168 MPH_XAIMAGEDECODERCAPABILITIES,
169 -1,
170 MPH_3DGROUPING,
171 -1,
172 -1,
173 MPH_ENVIRONMENTALREVERB,
174 -1,
175 MPH_3DSOURCE,
176 -1,
177 -1,
178 MPH_XAPREFETCHSTATUS,
179 -1,
180 MPH_XARDS,
181 -1,
182 -1,
183 MPH_ANDROIDNOISESUPPRESSION,
184 -1,
185 MPH_AUDIODECODERCAPABILITIES,
186 -1,
187 -1,
188 MPH_XAAUDIOENCODER,
189 -1,
190 MPH_XASTREAMINFORMATION,
191 -1,
192 -1,
193 MPH_XAIMAGEEFFECTS,
194 -1,
195 MPH_LED,
196 -1,
197 -1,
198 MPH_SEEK,
199 -1,
200 MPH_VIRTUALIZER,
201 -1,
202 -1,
203 MPH_3DCOMMIT,
204 -1,
205 MPH_XASEEK,
206 -1,
207 -1,
208 MPH_XARADIO,
209 -1,
210 MPH_PRESETREVERB,
211 -1,
212 -1,
213 MPH_AUDIOENCODER,
214 -1,
215 MPH_ANDROIDSIMPLEBUFFERQUEUE,
216 -1,
217 -1,
218 MPH_ANDROIDEFFECT,
219 -1,
220 MPH_XAPLAYBACKRATE,
221 -1,
222 -1,
223 MPH_MIDIMESSAGE,
224 -1,
225 MPH_MIDIMUTESOLO,
226 -1,
227 -1,
228 MPH_ANDROIDAUTOMATICGAINCONTROL,
229 -1,
230 -1,
231 -1,
232 -1,
233 MPH_AUDIOENCODERCAPABILITIES,
234 -1,
235 -1,
236 -1,
237 -1,
238 MPH_XATHREADSYNC,
239 -1,
240 -1,
241 -1,
242 -1,
243 MPH_3DDOPPLER,
244 -1,
245 -1,
246 -1,
247 -1,
248 MPH_OUTPUTMIX,
249 -1,
250 -1,
251 -1,
252 -1,
253 MPH_XAPLAY,
254 -1,
255 -1,
256 -1,
257 -1,
258 MPH_XARECORD,
259 -1,
260 -1,
261 -1,
262 -1,
263 MPH_ANDROIDCONFIGURATION,
264 -1,
265 -1,
266 -1,
267 -1,
268 MPH_ANDROIDBUFFERQUEUESOURCE,
269 -1,
270 -1,
271 -1,
272 -1,
273 MPH_METADATATRAVERSAL,
274 -1,
275 -1,
276 -1,
277 -1,
278 MPH_ANDROIDEFFECTSEND,
279 -1,
280 -1,
281 -1,
282 -1,
283 MPH_NULL,
284 -1,
285 -1,
286 -1,
287 -1,
288 MPH_METADATAEXTRACTION,
289 -1,
290 -1,
291 -1,
292 -1,
293 MPH_MIDITEMPO,
294 -1,
295 -1,
296 -1,
297 -1,
298 MPH_XAMETADATATRAVERSAL,
299 -1,
300 -1,
301 -1,
302 -1,
303 MPH_THREADSYNC,
304 -1,
305 -1,
306 -1,
307 -1,
308 MPH_OBJECT,
309 -1,
310 -1,
311 -1,
312 -1,
313 MPH_DYNAMICINTERFACEMANAGEMENT
314 };
315 if (&SL_IID_array[0] <= iid && &SL_IID_array[MPH_MAX] > iid)
316 return iid - &SL_IID_array[0];
317 if (NULL != iid) {
318 unsigned key = asso_values[((unsigned char *)iid)[3]] +
319 asso_values[((unsigned char *)iid)[1]];
320 if (key <= MAX_HASH_VALUE) {
321 int MPH = hash_to_MPH[key];
322 if (MPH >= 0) {
323 assert(MPH < MPH_MAX);
324 SLInterfaceID trial = &SL_IID_array[MPH];
325 if (!memcmp(iid, trial, sizeof(struct SLInterfaceID_)))
326 return MPH;
327 }
328 }
329 }
330 return -1;
331 }
332