interfaces.c revision 8db0b106cdce5f5216b1535492de7930ad738aed
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
81b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten    // Android API level 10 extended interfaces
828db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten    "ANDROIDSTREAMSOURCE",
838db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten
848db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten    // OpenMAX AL 1.0.1
858db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten    "XAENGINE",
86b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten
87104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten};
88b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten
89b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten
90b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten/** Convert an MPH value to an MPH identifier */
91b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten
92b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kastenvoid MPH_to_MPH_string(unsigned MPH, char buffer[40])
93b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten{
94b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten    assert(MPH_MAX > MPH);
95b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten    const char *infix;
96b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten    infix = "";
97b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten    strcpy(buffer, "MPH");
98b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten    strcpy(&buffer[3], infix);
99b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten    strcat(buffer, "_");
100b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten    strcat(buffer, interface_names[MPH]);
101b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten}
102