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 180
33 static const unsigned char asso_values[] =
34 {
35 35, 20, 79, 99, 181, 181, 74, 181, 181, 181,
36 181, 181, 181, 181, 84, 181, 79, 59, 181, 181,
37 181, 181, 54, 181, 69, 39, 181, 181, 29, 181,
38 181, 85, 5, 181, 181, 181, 181, 181, 49, 181,
39 24, 181, 181, 181, 14, 181, 117, 181, 181, 181,
40 181, 181, 9, 181, 181, 181, 181, 181, 14, 100,
41 181, 9, 24, 181, 50, 181, 181, 181, 181, 127,
42 181, 181, 107, 85, 181, 181, 181, 181, 181, 181,
43 181, 181, 181, 181, 181, 181, 127, 181, 19, 181,
44 181, 181, 9, 181, 181, 181, 25, 122, 14, 107,
45 181, 181, 181, 181, 181, 181, 181, 4, 181, 102,
46 181, 181, 0, 181, 4, 97, 122, 181, 72, 45,
47 181, 181, 105, 181, 181, 181, 87, 181, 30, 181,
48 181, 181, 181, 181, 181, 107, 125, 181, 181, 181,
49 181, 181, 80, 82, 181, 77, 181, 120, 181, 181,
50 181, 181, 181, 97, 181, 181, 87, 181, 181, 65,
51 5, 181, 57, 181, 181, 82, 115, 181, 181, 52,
52 181, 72, 55, 181, 181, 62, 181, 45, 181, 181,
53 181, 181, 32, 181, 32, 30, 181, 181, 181, 181,
54 181, 181, 0, 181, 181, 181, 110, 47, 181, 181,
55 181, 181, 181, 181, 181, 181, 120, 181, 181, 181,
56 100, 47, 181, 181, 181, 37, 181, 181, 2, 181,
57 181, 181, 181, 27, 10, 181, 181, 27, 181, 181,
58 181, 181, 181, 181, 22, 181, 75, 181, 181, 181,
59 10, 12, 181, 181, 70, 181, 7, 7, 181, 181,
60 181, 105, 2, 125, 181, 181
61 };
62 static const signed char hash_to_MPH[] = {
63 MPH_ANDROIDEFFECTSEND,
64 -1,
65 MPH_XADYNAMICINTERFACEMANAGEMENT,
66 -1,
67 MPH_XAAUDIODECODERCAPABILITIES,
68 MPH_XALED,
69 -1,
70 MPH_BASSBOOST,
71 -1,
72 MPH_XAOUTPUTMIX,
73 MPH_MIDITIME,
74 -1,
75 MPH_RECORD,
76 -1,
77 MPH_AUDIOIODEVICECAPABILITIES,
78 MPH_MUTESOLO,
79 -1,
80 MPH_VOLUME,
81 -1,
82 MPH_ANDROIDCONFIGURATION,
83 MPH_XASNAPSHOT,
84 -1,
85 MPH_XAIMAGECONTROLS,
86 -1,
87 MPH_SEEK,
88 MPH_3DLOCATION,
89 -1,
90 MPH_XATHREADSYNC,
91 -1,
92 MPH_XAIMAGEDECODERCAPABILITIES,
93 MPH_XACAMERACAPABILITIES,
94 -1,
95 MPH_XAVOLUME,
96 -1,
97 MPH_VIBRA,
98 MPH_XAIMAGEEFFECTS,
99 -1,
100 MPH_XAPLAY,
101 -1,
102 MPH_PRESETREVERB,
103 MPH_XAOBJECT,
104 -1,
105 MPH_XACONFIGEXTENSION,
106 -1,
107 MPH_EQUALIZER,
108 MPH_XAVIBRA,
109 -1,
110 MPH_3DMACROSCOPIC,
111 -1,
112 MPH_PITCH,
113 MPH_ENGINECAPABILITIES,
114 -1,
115 MPH_XAMETADATAEXTRACTION,
116 -1,
117 MPH_3DDOPPLER,
118 MPH_XAVIDEODECODERCAPABILITIES,
119 -1,
120 MPH_RATEPITCH,
121 -1,
122 MPH_ANDROIDAUTOMATICGAINCONTROL,
123 MPH_AUDIODECODERCAPABILITIES,
124 -1,
125 MPH_XARADIO,
126 -1,
127 MPH_OUTPUTMIXEXT,
128 MPH_ENVIRONMENTALREVERB,
129 -1,
130 MPH_XAVIDEOPOSTPROCESSING,
131 -1,
132 MPH_3DCOMMIT,
133 MPH_OUTPUTMIX,
134 -1,
135 MPH_METADATATRAVERSAL,
136 -1,
137 MPH_XASEEK,
138 MPH_XASTREAMINFORMATION,
139 -1,
140 MPH_DEVICEVOLUME,
141 -1,
142 MPH_OBJECT,
143 MPH_VIRTUALIZER,
144 -1,
145 MPH_XARDS,
146 -1,
147 MPH_XAVIDEOENCODER,
148 MPH_PLAY,
149 -1,
150 MPH_XADYNAMICSOURCE,
151 -1,
152 MPH_3DGROUPING,
153 MPH_XAVIDEOENCODERCAPABILITIES,
154 -1,
155 MPH_XAPREFETCHSTATUS,
156 -1,
157 MPH_XAMETADATATRAVERSAL,
158 MPH_XAEQUALIZER,
159 -1,
160 MPH_BUFFERQUEUE,
161 -1,
162 MPH_ANDROIDBUFFERQUEUESOURCE,
163 MPH_XARECORD,
164 -1,
165 MPH_XAMETADATAINSERTION,
166 -1,
167 MPH_XADEVICEVOLUME,
168 MPH_ANDROIDNOISESUPPRESSION,
169 -1,
170 MPH_ENGINE,
171 -1,
172 MPH_MIDIMUTESOLO,
173 MPH_METADATAEXTRACTION,
174 -1,
175 MPH_XACAMERA,
176 -1,
177 -1,
178 MPH_PREFETCHSTATUS,
179 -1,
180 MPH_LED,
181 -1,
182 -1,
183 MPH_XAAUDIOENCODER,
184 -1,
185 MPH_XAENGINE,
186 -1,
187 -1,
188 MPH_ANDROIDEFFECTCAPABILITIES,
189 -1,
190 MPH_MIDIMESSAGE,
191 -1,
192 -1,
193 MPH_VISUALIZATION,
194 -1,
195 MPH_3DSOURCE,
196 -1,
197 -1,
198 MPH_PLAYBACKRATE,
199 -1,
200 MPH_XAAUDIOENCODERCAPABILITIES,
201 -1,
202 -1,
203 MPH_EFFECTSEND,
204 -1,
205 MPH_XAAUDIOIODEVICECAPABILITIES,
206 -1,
207 -1,
208 MPH_NULL,
209 -1,
210 MPH_ANDROIDACOUSTICECHOCANCELLATION,
211 -1,
212 -1,
213 MPH_XAIMAGEENCODERCAPABILITIES,
214 -1,
215 MPH_ANDROIDEFFECT,
216 -1,
217 -1,
218 MPH_MIDITEMPO,
219 -1,
220 MPH_XAPLAYBACKRATE,
221 -1,
222 -1,
223 MPH_DYNAMICINTERFACEMANAGEMENT,
224 -1,
225 MPH_DYNAMICSOURCE,
226 -1,
227 -1,
228 MPH_ANDROIDSIMPLEBUFFERQUEUE,
229 -1,
230 MPH_THREADSYNC,
231 -1,
232 -1,
233 MPH_AUDIOENCODERCAPABILITIES,
234 -1,
235 -1,
236 -1,
237 -1,
238 MPH_XAIMAGEENCODER,
239 -1,
240 -1,
241 -1,
242 -1,
243 MPH_AUDIOENCODER
244 };
245 if (&SL_IID_array[0] <= iid && &SL_IID_array[MPH_MAX] > iid)
246 return iid - &SL_IID_array[0];
247 if (NULL != iid) {
248 unsigned key = asso_values[((unsigned char *)iid)[8]] +
249 asso_values[((unsigned char *)iid)[0]];
250 if (key <= MAX_HASH_VALUE) {
251 int MPH = hash_to_MPH[key];
252 if (MPH >= 0) {
253 assert(MPH < MPH_MAX);
254 SLInterfaceID trial = &SL_IID_array[MPH];
255 if (!memcmp(iid, trial, sizeof(struct SLInterfaceID_)))
256 return MPH;
257 }
258 }
259 }
260 return -1;
261 }
262