IID_to_MPH.c revision 94a37e8117fb72790882dfb815f99e2365754c74
140d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten/*
240d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten * Copyright (C) 2010 The Android Open Source Project
340d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten *
440d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten * Licensed under the Apache License, Version 2.0 (the "License");
540d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten * you may not use this file except in compliance with the License.
640d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten * You may obtain a copy of the License at
740d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten *
840d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten *      http://www.apache.org/licenses/LICENSE-2.0
940d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten *
1040d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten * Unless required by applicable law or agreed to in writing, software
1140d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten * distributed under the License is distributed on an "AS IS" BASIS,
1240d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1340d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten * See the License for the specific language governing permissions and
1440d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten * limitations under the License.
1540d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten */
1640d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten
17b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten// This file is automagically generated by hashgen, do not edit
18b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten
19369f3138f19f7102bf0f98b890ab84c8df633a93Glenn Kasten/** \file IID_to_MPH.c Interface ID to MPH mapping */
2040d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten
21ee21d26b4b66d0f19b826685b3070497523994d5Glenn Kasten#include "SLES/OpenSLES.h"
2240d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten#include "MPH.h"
2340d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten#include <assert.h>
2440d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten#include <string.h>
2540d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten
2640d1c40832a448e23d0bb37512aee53222575c2eGlenn Kastenextern const struct SLInterfaceID_ SL_IID_array[MPH_MAX];
2740d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten
28369f3138f19f7102bf0f98b890ab84c8df633a93Glenn Kasten/** \brief Map SLInterfaceID to its minimal perfect hash (MPH), or -1 if unknown */
29369f3138f19f7102bf0f98b890ab84c8df633a93Glenn Kasten
3040d1c40832a448e23d0bb37512aee53222575c2eGlenn Kastenint IID_to_MPH(const SLInterfaceID iid)
3140d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten{
3240d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten#define MAX_HASH_VALUE 115
3340d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten  static const unsigned char asso_values[] =
3440d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten    {
3594a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten        5, 116, 116,   2, 116, 116,   7, 116, 116,  12,
3694a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten      116,  17, 116, 116, 116,  51, 116, 116, 116, 116,
378db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten      116, 116,   2, 116, 116,  46, 116, 116, 116, 116,
3894a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten      116,  12,  25, 116, 116, 116, 116, 116, 116, 116,
398db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten      116, 116,  51,  20,  46, 116,  31, 116, 116, 116,
408db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten      116, 116, 116,  36, 116,   2, 116, 116, 116, 116,
4194a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten      116,  61, 116,   2,  55, 116, 116, 116, 116,  16,
4294a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten      116,  26, 116, 116, 116, 116, 116, 116, 116, 116,
4394a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten       16, 116, 116, 116, 116, 116,  26, 116, 116, 116,
4494a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten       11, 116, 116, 116, 116, 116,  40,  21, 116,  60,
4594a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten      116, 116, 116, 116, 116, 116,  16, 116, 116, 116,
4640d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten      116, 116,   1, 116, 116, 116, 116, 116, 116, 116,
4794a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten      116,  11,  55,   1, 116, 116, 116,   6,  45, 116,
48453dd564a81fe98b7a947ae4a9844a53fa957c2bJean-Michel Trivi      116,   1, 116, 116, 116, 116, 116,   1, 116, 116,
4994a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten      116,   1, 116, 116, 116, 116, 116, 116, 116, 116,
50acc29e37cfb74983fe79bb8f968d23cb6851d33aGlenn Kasten      116,  60, 116, 116, 116, 116, 116, 116, 116, 116,
5140d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten       10, 116, 116, 116, 116, 116, 116, 116, 116, 116,
5294a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten       50, 116, 116, 116,  45, 116, 116, 116,  55, 116,
5394a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten       45, 116, 116, 116, 116, 116, 116, 116, 116, 116,
5494a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten      116, 116,  20, 116,  35, 116,  45,  10, 116,  55,
5540d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten      116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
5694a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten      116, 116,  45, 116, 116,  50, 116, 116, 116, 116,
5794a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten      116,  25, 116, 116,  15,  40, 116, 116,  15, 116,
5894a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten      116, 116, 116, 116, 116,  15,   0, 116, 116,  15,
5994a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten       35, 116, 116, 116, 116, 116,  55, 116, 116, 116,
6040d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten      116, 116, 116, 116,   0, 116
6140d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten    };
6240d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten    static const signed char hash_to_MPH[] = {
6340d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        MPH_NULL,
6440d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
6540d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
6640d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
6740d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
6840d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        MPH_OUTPUTMIXEXT,
6940d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        MPH_3DSOURCE,
70acc29e37cfb74983fe79bb8f968d23cb6851d33aGlenn Kasten        MPH_VIRTUALIZER,
7140d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
7240d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
7394a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten        MPH_XAPLAY,
74a438eb1cf1ae602afab00336528dd230bd929206Glenn Kasten        MPH_ENGINECAPABILITIES,
7594a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten        MPH_AUDIODECODERCAPABILITIES,
7694a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten        -1,
7794a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten        -1,
7894a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten        MPH_DYNAMICSOURCE,
7994a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten        MPH_ANDROIDCONFIGURATION,
80acc29e37cfb74983fe79bb8f968d23cb6851d33aGlenn Kasten        MPH_MIDITEMPO,
8140d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
8240d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
8340d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        MPH_RECORD,
8494a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten        MPH_ANDROIDEFFECTSEND,
85acc29e37cfb74983fe79bb8f968d23cb6851d33aGlenn Kasten        MPH_EQUALIZER,
8640d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
8740d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
8840d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        MPH_VISUALIZATION,
8994a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten        MPH_MUTESOLO,
90acc29e37cfb74983fe79bb8f968d23cb6851d33aGlenn Kasten        MPH_VOLUME,
9140d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
9240d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
9340d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        MPH_3DGROUPING,
9494a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten        MPH_EFFECTSEND,
95acc29e37cfb74983fe79bb8f968d23cb6851d33aGlenn Kasten        MPH_BASSBOOST,
9640d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
9740d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
98a438eb1cf1ae602afab00336528dd230bd929206Glenn Kasten        MPH_PLAY,
9994a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten        MPH_3DMACROSCOPIC,
10040d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
10140d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
10240d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
10340d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        MPH_BUFFERQUEUE,
10494a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten        MPH_ENGINE,
10594a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten        MPH_VIBRA,
10640d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
10740d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
10840d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        MPH_3DLOCATION,
109fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        MPH_ANDROIDBUFFERQUEUE,
11094a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten        MPH_MIDIMUTESOLO,
11140d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
11240d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
11340d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        MPH_MIDIMESSAGE,
114b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten        MPH_OBJECT,
11594a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten        -1,
11640d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
11740d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
11840d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        MPH_SEEK,
119b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten        MPH_ANDROIDEFFECTCAPABILITIES,
12040d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
12140d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
12240d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
12340d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        MPH_PITCH,
124b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten        MPH_RATEPITCH,
12540d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
12640d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
12740d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
12840d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        MPH_METADATATRAVERSAL,
129b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten        MPH_PRESETREVERB,
13040d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
13140d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
13240d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
13340d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        MPH_ENVIRONMENTALREVERB,
1348db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten        MPH_XAENGINE,
13540d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
13640d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
13740d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
13840d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        MPH_AUDIOIODEVICECAPABILITIES,
1398db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten        MPH_MIDITIME,
14040d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
14140d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
14240d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
14394a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten        MPH_DEVICEVOLUME,
1448db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten        MPH_3DCOMMIT,
14540d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
14640d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
14740d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
14894a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten        MPH_ANDROIDEFFECT,
1498db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten        MPH_PLAYBACKRATE,
15040d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
15140d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
15240d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
15394a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten        MPH_3DDOPPLER,
1548db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten        MPH_LED,
15540d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
15640d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
15740d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
15894a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten        MPH_METADATAEXTRACTION,
1598db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten        MPH_PREFETCHSTATUS,
16040d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
16140d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
16240d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
16394a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten        MPH_OUTPUTMIX,
1648db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten        MPH_ANDROIDSIMPLEBUFFERQUEUE,
16540d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
16640d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
16740d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
168a438eb1cf1ae602afab00336528dd230bd929206Glenn Kasten        MPH_AUDIOENCODER,
169b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten        MPH_AUDIOENCODERCAPABILITIES,
17040d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
17140d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
17240d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
17340d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        MPH_THREADSYNC,
17440d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
17540d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
17640d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
17740d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
17840d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        MPH_DYNAMICINTERFACEMANAGEMENT
17940d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten    };
18040d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten    if (&SL_IID_array[0] <= iid && &SL_IID_array[MPH_MAX] > iid)
18140d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        return iid - &SL_IID_array[0];
18240d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten    if (NULL != iid) {
18301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten        unsigned key = asso_values[((unsigned char *)iid)[3]] +
18401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten            asso_values[((unsigned char *)iid)[0]];
18540d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        if (key <= MAX_HASH_VALUE) {
18640d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten            int MPH = hash_to_MPH[key];
18740d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten            if (MPH >= 0) {
18840d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten                assert(MPH < MPH_MAX);
18940d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten                SLInterfaceID trial = &SL_IID_array[MPH];
19040d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten                if (!memcmp(iid, trial, sizeof(struct SLInterfaceID_)))
19140d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten                    return MPH;
19240d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten            }
19340d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        }
19440d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten    }
19540d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten    return -1;
19640d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten}
197