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
21fcd29cb117d8fb08d4e4c15fd3e60caa0a3eddfcGlenn 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{
32fcd29cb117d8fb08d4e4c15fd3e60caa0a3eddfcGlenn Kasten#define MAX_HASH_VALUE 180
3340d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten  static const unsigned char asso_values[] =
3440d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten    {
35fcd29cb117d8fb08d4e4c15fd3e60caa0a3eddfcGlenn Kasten       35,  20,  54,  84, 181, 181,  59, 181, 181, 181,
36fcd29cb117d8fb08d4e4c15fd3e60caa0a3eddfcGlenn Kasten      181, 181, 181, 181,  69, 181,  64,  44, 181, 181,
37fcd29cb117d8fb08d4e4c15fd3e60caa0a3eddfcGlenn Kasten      181, 181,  39, 181,  54,  14, 181, 181,  14, 181,
38fcd29cb117d8fb08d4e4c15fd3e60caa0a3eddfcGlenn Kasten      181, 125,   5, 181, 181, 181, 181, 181, 181, 181,
39fcd29cb117d8fb08d4e4c15fd3e60caa0a3eddfcGlenn Kasten      127, 181, 181, 181,   9, 181, 112, 181, 181, 181,
40fcd29cb117d8fb08d4e4c15fd3e60caa0a3eddfcGlenn Kasten      181, 181, 122, 181, 181, 181, 181, 181,  14, 100,
41fcd29cb117d8fb08d4e4c15fd3e60caa0a3eddfcGlenn Kasten      181,   9,  24, 181,  50, 181, 181, 181, 181, 117,
42fcd29cb117d8fb08d4e4c15fd3e60caa0a3eddfcGlenn Kasten      181, 181,  97,  85, 181, 181, 181, 181, 181, 181,
43fcd29cb117d8fb08d4e4c15fd3e60caa0a3eddfcGlenn Kasten      181, 181, 181, 181, 181, 181, 117, 181,  19, 181,
44fcd29cb117d8fb08d4e4c15fd3e60caa0a3eddfcGlenn Kasten      181, 181,   9, 181, 181, 181,  25, 181,  14, 102,
45fcd29cb117d8fb08d4e4c15fd3e60caa0a3eddfcGlenn Kasten      181, 181, 181, 181, 181, 181, 181,   4, 181,  97,
46fcd29cb117d8fb08d4e4c15fd3e60caa0a3eddfcGlenn Kasten      181, 181,   0, 181,   4,  92, 117, 181,  67,  45,
47fcd29cb117d8fb08d4e4c15fd3e60caa0a3eddfcGlenn Kasten      181, 181, 110, 181, 181, 181,  72, 181,  40, 181,
48fcd29cb117d8fb08d4e4c15fd3e60caa0a3eddfcGlenn Kasten      181, 181, 181, 181, 181, 102,  52, 181, 181, 181,
49fcd29cb117d8fb08d4e4c15fd3e60caa0a3eddfcGlenn Kasten      181, 181,  57,  67, 181,  62, 181, 125, 181, 181,
50fcd29cb117d8fb08d4e4c15fd3e60caa0a3eddfcGlenn Kasten      181, 181, 181,  82, 181, 181,  72, 181, 181,  65,
51fcd29cb117d8fb08d4e4c15fd3e60caa0a3eddfcGlenn Kasten        5, 181,  32, 181, 181,  67, 120, 181, 181,  37,
52fcd29cb117d8fb08d4e4c15fd3e60caa0a3eddfcGlenn Kasten      181,  57,  55, 181, 181,  47, 181,  45, 181, 181,
53fcd29cb117d8fb08d4e4c15fd3e60caa0a3eddfcGlenn Kasten      181, 181,   7, 181,  17,  30, 181, 181, 181, 181,
54fcd29cb117d8fb08d4e4c15fd3e60caa0a3eddfcGlenn Kasten      181, 181,   0, 181, 181, 181, 105,  32, 181, 181,
55fcd29cb117d8fb08d4e4c15fd3e60caa0a3eddfcGlenn Kasten      181, 181, 181, 181, 181, 181, 115, 181, 181, 181,
56fcd29cb117d8fb08d4e4c15fd3e60caa0a3eddfcGlenn Kasten       95,  32, 181, 181, 181,  22, 181, 181,   2, 181,
57fcd29cb117d8fb08d4e4c15fd3e60caa0a3eddfcGlenn Kasten      181, 181, 181,  12,  10, 181, 181,  12, 181, 181,
58fcd29cb117d8fb08d4e4c15fd3e60caa0a3eddfcGlenn Kasten      181, 181, 181, 181,   2, 181,  70, 181, 181, 181,
59fcd29cb117d8fb08d4e4c15fd3e60caa0a3eddfcGlenn Kasten       10,   2, 181, 181,  70, 181, 120, 115, 181, 181,
60fcd29cb117d8fb08d4e4c15fd3e60caa0a3eddfcGlenn Kasten      181,  80, 105, 100, 181, 181
6140d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten    };
6240d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten    static const signed char hash_to_MPH[] = {
63a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_ANDROIDEFFECTSEND,
6440d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
65a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XADYNAMICINTERFACEMANAGEMENT,
6640d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
67a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XAAUDIODECODERCAPABILITIES,
68a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XALED,
6940d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
70a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XATHREADSYNC,
7140d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
72a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XAOUTPUTMIX,
73a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_MIDITIME,
7440d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
75a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XAIMAGECONTROLS,
7640d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
77a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_AUDIOIODEVICECAPABILITIES,
78a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_MUTESOLO,
7994a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten        -1,
80a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XAVOLUME,
8194a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten        -1,
8294a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten        MPH_ANDROIDCONFIGURATION,
83a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XASNAPSHOT,
8440d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
85a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XAPLAY,
8640d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
87a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_SEEK,
88a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_3DLOCATION,
8940d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
90a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XACONFIGEXTENSION,
9140d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
92a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XAIMAGEDECODERCAPABILITIES,
93a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XACAMERACAPABILITIES,
9440d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
95a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_3DMACROSCOPIC,
9640d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
97a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_VIBRA,
98a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XAIMAGEEFFECTS,
9940d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
100a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XAMETADATAEXTRACTION,
10140d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
102a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_PRESETREVERB,
103a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XAOBJECT,
10440d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
105a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_RATEPITCH,
10640d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
107a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_PITCH,
108a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XAVIBRA,
10940d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
110a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XARADIO,
11140d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
112a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_OUTPUTMIXEXT,
113a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_ENGINECAPABILITIES,
11440d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
115a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XAVIDEOPOSTPROCESSING,
116a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        -1,
117a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_3DCOMMIT,
118a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XAVIDEODECODERCAPABILITIES,
119a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        -1,
120a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_METADATATRAVERSAL,
121a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        -1,
122a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XASEEK,
123a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_AUDIODECODERCAPABILITIES,
124a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        -1,
125a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_DEVICEVOLUME,
12640d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
127b0ab2dee391dd2cb257faeaba252ee6ecccc5f03Glenn Kasten        MPH_OBJECT,
128a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_ENVIRONMENTALREVERB,
129a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        -1,
130a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XARDS,
131a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        -1,
132a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XAVIDEOENCODER,
133a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_OUTPUTMIX,
134a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        -1,
135a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XADYNAMICSOURCE,
136a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        -1,
137a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_3DGROUPING,
138a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XASTREAMINFORMATION,
139a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        -1,
140a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XAPREFETCHSTATUS,
141a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        -1,
142a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XAMETADATATRAVERSAL,
143a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_VIRTUALIZER,
144a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        -1,
145a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_BUFFERQUEUE,
146a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        -1,
14760ca9f9ef02f6e486c3338cb811f603dd7825c05Glenn Kasten        MPH_ANDROIDBUFFERQUEUESOURCE,
148a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_PLAY,
149a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        -1,
150a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XAMETADATAINSERTION,
151a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        -1,
152a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XADEVICEVOLUME,
153a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XAVIDEOENCODERCAPABILITIES,
154a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        -1,
155a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_ENGINE,
156a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        -1,
15737dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi        MPH_MIDIMUTESOLO,
158a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XAEQUALIZER,
15940d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
160a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_METADATAEXTRACTION,
16140d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
16240d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
163a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XARECORD,
16440d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
165a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XAIMAGEENCODER,
16640d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
16740d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
168a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_VISUALIZATION,
16940d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
170a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XACAMERA,
17140d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
17240d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
173a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_BASSBOOST,
174a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        -1,
175a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_LED,
17640d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
17740d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
178a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_EFFECTSEND,
179a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        -1,
1808db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten        MPH_XAENGINE,
18140d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
18240d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
183a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_RECORD,
18440d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
185a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_MIDIMESSAGE,
18640d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
18740d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
188a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_ANDROIDEFFECTCAPABILITIES,
189a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        -1,
190a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_3DSOURCE,
19140d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
19240d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
193a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_VOLUME,
194a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        -1,
195a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XAAUDIOENCODERCAPABILITIES,
19640d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
19740d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
1988db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten        MPH_PLAYBACKRATE,
19940d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
200a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XAAUDIOIODEVICECAPABILITIES,
20140d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
20240d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
203a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_NULL,
20440d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
205a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_ANDROIDEFFECT,
20640d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
20740d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
208a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XAIMAGEENCODERCAPABILITIES,
20940d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
210a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XAPLAYBACKRATE,
21140d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
21240d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
213a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_MIDITEMPO,
21440d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
215a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_DYNAMICSOURCE,
21640d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
21740d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
218a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_DYNAMICINTERFACEMANAGEMENT,
219a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        -1,
220a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_EQUALIZER,
22140d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
22240d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
223a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_XAAUDIOENCODER,
22440d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
22540d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        MPH_THREADSYNC,
22640d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
22740d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
228a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_PREFETCHSTATUS,
229a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        -1,
230a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_3DDOPPLER,
231a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        -1,
232a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        -1,
233a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_ANDROIDSIMPLEBUFFERQUEUE,
234a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        -1,
235a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        -1,
236a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        -1,
237a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        -1,
238a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_AUDIOENCODERCAPABILITIES,
239a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        -1,
240a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        -1,
24140d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
24240d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        -1,
243a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten        MPH_AUDIOENCODER
24440d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten    };
24540d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten    if (&SL_IID_array[0] <= iid && &SL_IID_array[MPH_MAX] > iid)
24640d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        return iid - &SL_IID_array[0];
24740d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten    if (NULL != iid) {
248fcd29cb117d8fb08d4e4c15fd3e60caa0a3eddfcGlenn Kasten        unsigned key = asso_values[((unsigned char *)iid)[8]] +
249fcd29cb117d8fb08d4e4c15fd3e60caa0a3eddfcGlenn Kasten            asso_values[((unsigned char *)iid)[0]];
25040d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        if (key <= MAX_HASH_VALUE) {
25140d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten            int MPH = hash_to_MPH[key];
25240d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten            if (MPH >= 0) {
25340d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten                assert(MPH < MPH_MAX);
25440d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten                SLInterfaceID trial = &SL_IID_array[MPH];
25540d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten                if (!memcmp(iid, trial, sizeof(struct SLInterfaceID_)))
25640d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten                    return MPH;
25740d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten            }
25840d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten        }
25940d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten    }
26040d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten    return -1;
26140d1c40832a448e23d0bb37512aee53222575c2eGlenn Kasten}
262