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 // Map minimal perfect hash of an interface ID to its class index. 18 19 #include "MPH.h" 20 21 // If defined, then compile with C99 such as GNU C, not GNU C++ or non-GNU C. 22 //#define USE_DESIGNATED_INITIALIZERS 23 24 // It is critical that all entries are populated with either a specific index 25 // or -1. Do not let the compiler use a default initializer of zero, because 26 // that actually maps to the IObject index. For non-USE_DESIGNATED_INITIALIZERS 27 // builds, we use the automagically-generated MPH_to_*.h files for this reason. 28 29 // A good test is to use the GNU C compiler with -S option (for assembler output), 30 // and compile both with and without USE_DESIGNATED_INITIALIZERS. The resulting .s 31 // files should be identical for both compilations. 32 33 // Important note: if you add any interfaces here, be sure to also 34 // update the #define for the corresponding INTERFACES_<Class>. 35 36 // IObject is the first interface in a class, so the index for MPH_OBJECT must be zero. 37 // Don't cross streams, otherwise bad things happen. 38 39 40 const signed char MPH_to_3DGroup[MPH_MAX] = { 41 #ifdef USE_DESIGNATED_INITIALIZERS 42 [0 ... MPH_MAX-1] = -1, 43 [MPH_OBJECT] = 0, 44 [MPH_DYNAMICINTERFACEMANAGEMENT] = 1, 45 [MPH_3DLOCATION] = 2, 46 [MPH_3DDOPPLER] = 3, 47 [MPH_3DSOURCE] = 4, 48 [MPH_3DMACROSCOPIC] = 5 49 #else 50 #include "MPH_to_3DGroup.h" 51 #endif 52 }; 53 54 const signed char MPH_to_AudioPlayer[MPH_MAX] = { 55 #ifdef USE_DESIGNATED_INITIALIZERS 56 [0 ... MPH_MAX-1] = -1, 57 [MPH_OBJECT] = 0, 58 [MPH_DYNAMICINTERFACEMANAGEMENT] = 1, 59 [MPH_PLAY] = 2, 60 [MPH_3DDOPPLER] = 3, 61 [MPH_3DGROUPING] = 4, 62 [MPH_3DLOCATION] = 5, 63 [MPH_3DSOURCE] = 6, 64 [MPH_BUFFERQUEUE] = 7, 65 [MPH_EFFECTSEND] = 8, 66 [MPH_MUTESOLO] = 9, 67 [MPH_METADATAEXTRACTION] = 10, 68 [MPH_METADATATRAVERSAL] = 11, 69 [MPH_PREFETCHSTATUS] = 12, 70 [MPH_RATEPITCH] = 13, 71 [MPH_SEEK] = 14, 72 [MPH_VOLUME] = 15, 73 [MPH_3DMACROSCOPIC] = 16, 74 [MPH_BASSBOOST] = 17, 75 [MPH_DYNAMICSOURCE] = 18, 76 [MPH_ENVIRONMENTALREVERB] = 19, 77 [MPH_EQUALIZER] = 20, 78 [MPH_PITCH] = 21, 79 [MPH_PRESETREVERB] = 22, 80 [MPH_PLAYBACKRATE] = 23, 81 [MPH_VIRTUALIZER] = 24, 82 [MPH_VISUALIZATION] = 25, 83 #ifdef ANDROID 84 [MPH_ANDROIDEFFECT] = 26, 85 [MPH_ANDROIDEFFECTSEND] = 27, 86 [MPH_ANDROIDCONFIGURATION] = 28, 87 [MPH_ANDROIDSIMPLEBUFFERQUEUE] = 7, // alias for [MPH_BUFFERQUEUE] 88 [MPH_ANDROIDBUFFERQUEUESOURCE] = 29 89 #endif 90 #else 91 #include "MPH_to_AudioPlayer.h" 92 #endif 93 }; 94 95 const signed char MPH_to_AudioRecorder[MPH_MAX] = { 96 #ifdef USE_DESIGNATED_INITIALIZERS 97 [0 ... MPH_MAX-1] = -1, 98 [MPH_OBJECT] = 0, 99 [MPH_DYNAMICINTERFACEMANAGEMENT] = 1, 100 [MPH_RECORD] = 2, 101 [MPH_AUDIOENCODER] = 3, 102 [MPH_BASSBOOST] = 4, 103 [MPH_DYNAMICSOURCE] = 5, 104 [MPH_EQUALIZER] = 6, 105 [MPH_VISUALIZATION] = 7, 106 [MPH_VOLUME] = 8, 107 #ifdef ANDROID 108 [MPH_ANDROIDSIMPLEBUFFERQUEUE] = 9, // this is not an alias 109 [MPH_ANDROIDCONFIGURATION] = 10, 110 [MPH_ANDROIDACOUSTICECHOCANCELLATION] = 11, 111 [MPH_ANDROIDAUTOMATICGAINCONTROL] = 12, 112 [MPH_ANDROIDNOISESUPPRESSION] = 13, 113 #endif 114 #else 115 #include "MPH_to_AudioRecorder.h" 116 #endif 117 }; 118 119 const signed char MPH_to_Engine[MPH_MAX] = { 120 #ifdef USE_DESIGNATED_INITIALIZERS 121 [0 ... MPH_MAX-1] = -1, 122 [MPH_OBJECT] = 0, 123 [MPH_DYNAMICINTERFACEMANAGEMENT] = 1, 124 [MPH_ENGINE] = 2, 125 [MPH_ENGINECAPABILITIES] = 3, 126 [MPH_THREADSYNC] = 4, 127 [MPH_AUDIOIODEVICECAPABILITIES] = 5, 128 [MPH_AUDIODECODERCAPABILITIES] = 6, 129 [MPH_AUDIOENCODERCAPABILITIES] = 7, 130 [MPH_3DCOMMIT] = 8, 131 [MPH_DEVICEVOLUME] = 9, 132 [MPH_XAENGINE] = 10, 133 #ifdef ANDROID 134 [MPH_ANDROIDEFFECTCAPABILITIES] = 11, 135 #endif 136 [MPH_XAVIDEODECODERCAPABILITIES] = 12 137 #else 138 #include "MPH_to_Engine.h" 139 #endif 140 }; 141 142 const signed char MPH_to_LEDDevice[MPH_MAX] = { 143 #ifdef USE_DESIGNATED_INITIALIZERS 144 [0 ... MPH_MAX-1] = -1, 145 [MPH_OBJECT] = 0, 146 [MPH_DYNAMICINTERFACEMANAGEMENT] = 1, 147 [MPH_LED] = 2 148 #else 149 #include "MPH_to_LEDDevice.h" 150 #endif 151 }; 152 153 const signed char MPH_to_Listener[MPH_MAX] = { 154 #ifdef USE_DESIGNATED_INITIALIZERS 155 [0 ... MPH_MAX-1] = -1, 156 [MPH_OBJECT] = 0, 157 [MPH_DYNAMICINTERFACEMANAGEMENT] = 1, 158 [MPH_3DDOPPLER] = 2, 159 [MPH_3DLOCATION] = 3 160 #else 161 #include "MPH_to_Listener.h" 162 #endif 163 }; 164 165 const signed char MPH_to_MetadataExtractor[MPH_MAX] = { 166 #ifdef USE_DESIGNATED_INITIALIZERS 167 [0 ... MPH_MAX-1] = -1, 168 [MPH_OBJECT] = 0, 169 [MPH_DYNAMICINTERFACEMANAGEMENT] = 1, 170 [MPH_DYNAMICSOURCE] = 2, 171 [MPH_METADATAEXTRACTION] = 3, 172 [MPH_METADATATRAVERSAL] = 4 173 #else 174 #include "MPH_to_MetadataExtractor.h" 175 #endif 176 }; 177 178 const signed char MPH_to_MidiPlayer[MPH_MAX] = { 179 #ifdef USE_DESIGNATED_INITIALIZERS 180 [0 ... MPH_MAX-1] = -1, 181 [MPH_OBJECT] = 0, 182 [MPH_DYNAMICINTERFACEMANAGEMENT] = 1, 183 [MPH_PLAY] = 2, 184 [MPH_3DDOPPLER] = 3, 185 [MPH_3DGROUPING] = 4, 186 [MPH_3DLOCATION] = 5, 187 [MPH_3DSOURCE] = 6, 188 [MPH_BUFFERQUEUE] = 7, 189 [MPH_EFFECTSEND] = 8, 190 [MPH_MUTESOLO] = 9, 191 [MPH_METADATAEXTRACTION] = 10, 192 [MPH_METADATATRAVERSAL] = 11, 193 [MPH_MIDIMESSAGE] = 12, 194 [MPH_MIDITIME] = 13, 195 [MPH_MIDITEMPO] = 14, 196 [MPH_MIDIMUTESOLO] = 15, 197 [MPH_PREFETCHSTATUS] = 16, 198 [MPH_SEEK] = 17, 199 [MPH_VOLUME] = 18, 200 [MPH_3DMACROSCOPIC] = 19, 201 [MPH_BASSBOOST] = 20, 202 [MPH_DYNAMICSOURCE] = 21, 203 [MPH_ENVIRONMENTALREVERB] = 22, 204 [MPH_EQUALIZER] = 23, 205 [MPH_PITCH] = 24, 206 [MPH_PRESETREVERB] = 25, 207 [MPH_PLAYBACKRATE] = 26, 208 [MPH_VIRTUALIZER] = 27, 209 [MPH_VISUALIZATION] = 28, 210 #else 211 #include "MPH_to_MidiPlayer.h" 212 #endif 213 }; 214 215 const signed char MPH_to_OutputMix[MPH_MAX] = { 216 #ifdef USE_DESIGNATED_INITIALIZERS 217 [0 ... MPH_MAX-1] = -1, 218 [MPH_OBJECT] = 0, 219 [MPH_DYNAMICINTERFACEMANAGEMENT] = 1, 220 [MPH_OUTPUTMIX] = 2, 221 #ifdef USE_OUTPUTMIXEXT 222 [MPH_OUTPUTMIXEXT] = 3, 223 #endif 224 [MPH_ENVIRONMENTALREVERB] = 4, 225 [MPH_EQUALIZER] = 5, 226 [MPH_PRESETREVERB] = 6, 227 [MPH_VIRTUALIZER] = 7, 228 [MPH_VOLUME] = 8, 229 [MPH_BASSBOOST] = 9, 230 [MPH_VISUALIZATION] = 10, 231 #ifdef ANDROID 232 [MPH_ANDROIDEFFECT] = 11 233 #endif 234 #else 235 #include "MPH_to_OutputMix.h" 236 #endif 237 }; 238 239 const signed char MPH_to_Vibra[MPH_MAX] = { 240 #ifdef USE_DESIGNATED_INITIALIZERS 241 [0 ... MPH_MAX-1] = -1, 242 [MPH_OBJECT] = 0, 243 [MPH_DYNAMICINTERFACEMANAGEMENT] = 1, 244 [MPH_VIBRA] = 2 245 #else 246 #include "MPH_to_Vibra.h" 247 #endif 248 }; 249 250 const signed char MPH_to_MediaPlayer[MPH_MAX] = { 251 #ifdef USE_DESIGNATED_INITIALIZERS 252 [0 ... MPH_MAX-1] = -1, 253 [MPH_XAOBJECT] = 0, 254 [MPH_XADYNAMICINTERFACEMANAGEMENT] = 1, 255 [MPH_XAPLAY] = 2, 256 [MPH_XASTREAMINFORMATION] = 3, 257 [MPH_XAVOLUME] = 4, 258 [MPH_XASEEK] = 5, 259 [MPH_XAPREFETCHSTATUS] = 6, 260 #ifdef ANDROID 261 [MPH_ANDROIDBUFFERQUEUESOURCE] = 7, 262 #endif 263 #else 264 #include "MPH_to_MediaPlayer.h" 265 #endif 266 }; 267