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