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