1104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten/* 2104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten * Copyright (C) 2010 The Android Open Source Project 3104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten * 4104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten * Licensed under the Apache License, Version 2.0 (the "License"); 5104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten * you may not use this file except in compliance with the License. 6104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten * You may obtain a copy of the License at 7104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten * 8104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten * http://www.apache.org/licenses/LICENSE-2.0 9104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten * 10104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten * Unless required by applicable law or agreed to in writing, software 11104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten * distributed under the License is distributed on an "AS IS" BASIS, 12104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten * See the License for the specific language governing permissions and 14104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten * limitations under the License. 15104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten */ 16104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten 17104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten// Map minimal perfect hash of an interface ID to its name 18104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten 19b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten#include <assert.h> 20b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten#include <string.h> 21104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten#include "MPH.h" 22104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten 23104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kastenconst char * const interface_names[MPH_MAX] = { 24b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten 25b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten // OpenSL ES 1.0.1 interfaces 26104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "3DCOMMIT", 27104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "3DDOPPLER", 28104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "3DGROUPING", 29104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "3DLOCATION", 30104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "3DMACROSCOPIC", 31104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "3DSOURCE", 32104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "AUDIODECODERCAPABILITIES", 33104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "AUDIOENCODER", 34104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "AUDIOENCODERCAPABILITIES", 35104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "AUDIOIODEVICECAPABILITIES", 36104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "BASSBOOST", 37104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "BUFFERQUEUE", 38104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "DEVICEVOLUME", 39104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "DYNAMICINTERFACEMANAGEMENT", 40104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "DYNAMICSOURCE", 41104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "EFFECTSEND", 42104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "ENGINE", 43104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "ENGINECAPABILITIES", 44104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "ENVIRONMENTALREVERB", 45104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "EQUALIZER", 46104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "LED", 47104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "METADATAEXTRACTION", 48104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "METADATATRAVERSAL", 49104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "MIDIMESSAGE", 50104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "MIDIMUTESOLO", 51104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "MIDITEMPO", 52104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "MIDITIME", 53104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "MUTESOLO", 54104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "NULL", 55104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "OBJECT", 56104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "OUTPUTMIX", 57104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "PITCH", 58104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "PLAY", 59104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "PLAYBACKRATE", 60104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "PREFETCHSTATUS", 61104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "PRESETREVERB", 62104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "RATEPITCH", 63104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "RECORD", 64104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "SEEK", 65104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "THREADSYNC", 66104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "VIBRA", 67104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "VIRTUALIZER", 68104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "VISUALIZATION", 69104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "VOLUME", 70b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten 71b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten // Wilhelm desktop extended interfaces 72104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "OUTPUTMIXEXT", 73b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten 74b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten // Android API level 9 extended interfaces 75104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "ANDROIDEFFECT", 76104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "ANDROIDEFFECTCAPABILITIES", 77104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "ANDROIDEFFECTSEND", 78104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten "ANDROIDCONFIGURATION", 7928bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi "ANDROIDSIMPLEBUFFERQUEUE", 80b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten 81a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten // Android API level 12 extended interfaces 8260ca9f9ef02f6e486c3338cb811f603dd7825c05Glenn Kasten "ANDROIDBUFFERQUEUESOURCE", 838db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten 84a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten // OpenMAX AL 1.0.1 interfaces 85a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XAAUDIODECODERCAPABILITIES", 86a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XAAUDIOENCODER", 87a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XAAUDIOENCODERCAPABILITIES", 88a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XAAUDIOIODEVICECAPABILITIES", 89a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XACAMERA", 90a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XACAMERACAPABILITIES", 91a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XACONFIGEXTENSION", 92a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XADEVICEVOLUME", 93a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XADYNAMICINTERFACEMANAGEMENT", 94a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XADYNAMICSOURCE", 958db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten "XAENGINE", 96a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XAEQUALIZER", 97a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XAIMAGECONTROLS", 98a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XAIMAGEDECODERCAPABILITIES", 99a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XAIMAGEEFFECTS", 100a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XAIMAGEENCODER", 101a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XAIMAGEENCODERCAPABILITIES", 102a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XALED", 103a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XAMETADATAEXTRACTION", 104a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XAMETADATAINSERTION", 105a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XAMETADATATRAVERSAL", 106a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten // "XANULL", 107a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XAOBJECT", 108a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XAOUTPUTMIX", 10994a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten "XAPLAY", 110a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XAPLAYBACKRATE", 111a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XAPREFETCHSTATUS", 112a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XARADIO", 113a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XARDS", 114a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XARECORD", 115a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XASEEK", 116a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XASNAPSHOT", 1178ca039e1f9d95f8b14a59e135426882e3470e9d9Glenn Kasten "XASTREAMINFORMATION", 118a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XATHREADSYNC", 119a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XAVIBRA", 120a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XAVIDEODECODERCAPABILITIES", 121a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XAVIDEOENCODER", 122a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XAVIDEOENCODERCAPABILITIES", 123a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten "XAVIDEOPOSTPROCESSING", 12437dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi "XAVOLUME", 125b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten 126f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean // Android API level 20 extended interfaces 127f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean "ANDROIDACOUSTICECHOCANCELLATION", 128f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean "ANDROIDAUTOMATICGAINCONTROL", 129f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean "ANDROIDNOISESUPPRESSION", 130f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean 131104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten}; 132b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten 133b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten 134b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten/** Convert an MPH value to an MPH identifier */ 135b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten 136b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kastenvoid MPH_to_MPH_string(unsigned MPH, char buffer[40]) 137b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten{ 138b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten assert(MPH_MAX > MPH); 139b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten const char *infix; 140b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten infix = ""; 141b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten strcpy(buffer, "MPH"); 142b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten strcpy(&buffer[3], infix); 143b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten strcat(buffer, "_"); 144b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten strcat(buffer, interface_names[MPH]); 145b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten} 146