17e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten/*
27e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten * Copyright (C) 2010 The Android Open Source Project
37e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten *
47e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten * Licensed under the Apache License, Version 2.0 (the "License");
57e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten * you may not use this file except in compliance with the License.
67e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten * You may obtain a copy of the License at
77e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten *
87e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten *      http://www.apache.org/licenses/LICENSE-2.0
97e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten *
107e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten * Unless required by applicable law or agreed to in writing, software
117e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten * distributed under the License is distributed on an "AS IS" BASIS,
127e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten * See the License for the specific language governing permissions and
147e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten * limitations under the License.
157e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten */
167e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten
173be625f40588941aa23e35fed5cb693ddc9718daGlenn Kasten// This file is automagically generated by hashgen, do not edit
183be625f40588941aa23e35fed5cb693ddc9718daGlenn Kasten
1910ee2bc6119445f4339ecef998c40c9cc95057cdGlenn Kasten/** \file IID_to_MPH.c Interface ID to MPH mapping */
207e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten
21b2052cfccffa54e3785d289e379041ed2df328a5Glenn Kasten#include <SLES/OpenSLES.h>
227e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten#include "MPH.h"
237e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten#include <assert.h>
247e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten#include <string.h>
257e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten
267e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kastenextern const struct SLInterfaceID_ SL_IID_array[MPH_MAX];
277e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten
2810ee2bc6119445f4339ecef998c40c9cc95057cdGlenn Kasten/** \brief Map SLInterfaceID to its minimal perfect hash (MPH), or -1 if unknown */
2910ee2bc6119445f4339ecef998c40c9cc95057cdGlenn Kasten
307e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kastenint IID_to_MPH(const SLInterfaceID iid)
317e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten{
32b2052cfccffa54e3785d289e379041ed2df328a5Glenn Kasten#define MAX_HASH_VALUE 180
337e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten  static const unsigned char asso_values[] =
347e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten    {
35b2052cfccffa54e3785d289e379041ed2df328a5Glenn Kasten       35,  20,  54,  84, 181, 181,  59, 181, 181, 181,
36b2052cfccffa54e3785d289e379041ed2df328a5Glenn Kasten      181, 181, 181, 181,  69, 181,  64,  44, 181, 181,
37b2052cfccffa54e3785d289e379041ed2df328a5Glenn Kasten      181, 181,  39, 181,  54,  14, 181, 181,  14, 181,
38b2052cfccffa54e3785d289e379041ed2df328a5Glenn Kasten      181, 125,   5, 181, 181, 181, 181, 181, 181, 181,
39b2052cfccffa54e3785d289e379041ed2df328a5Glenn Kasten      127, 181, 181, 181,   9, 181, 112, 181, 181, 181,
40b2052cfccffa54e3785d289e379041ed2df328a5Glenn Kasten      181, 181, 122, 181, 181, 181, 181, 181,  14, 100,
41b2052cfccffa54e3785d289e379041ed2df328a5Glenn Kasten      181,   9,  24, 181,  50, 181, 181, 181, 181, 117,
42b2052cfccffa54e3785d289e379041ed2df328a5Glenn Kasten      181, 181,  97,  85, 181, 181, 181, 181, 181, 181,
43b2052cfccffa54e3785d289e379041ed2df328a5Glenn Kasten      181, 181, 181, 181, 181, 181, 117, 181,  19, 181,
44b2052cfccffa54e3785d289e379041ed2df328a5Glenn Kasten      181, 181,   9, 181, 181, 181,  25, 181,  14, 102,
45b2052cfccffa54e3785d289e379041ed2df328a5Glenn Kasten      181, 181, 181, 181, 181, 181, 181,   4, 181,  97,
46b2052cfccffa54e3785d289e379041ed2df328a5Glenn Kasten      181, 181,   0, 181,   4,  92, 117, 181,  67,  45,
47b2052cfccffa54e3785d289e379041ed2df328a5Glenn Kasten      181, 181, 110, 181, 181, 181,  72, 181,  40, 181,
48b2052cfccffa54e3785d289e379041ed2df328a5Glenn Kasten      181, 181, 181, 181, 181, 102,  52, 181, 181, 181,
49b2052cfccffa54e3785d289e379041ed2df328a5Glenn Kasten      181, 181,  57,  67, 181,  62, 181, 125, 181, 181,
50b2052cfccffa54e3785d289e379041ed2df328a5Glenn Kasten      181, 181, 181,  82, 181, 181,  72, 181, 181,  65,
51b2052cfccffa54e3785d289e379041ed2df328a5Glenn Kasten        5, 181,  32, 181, 181,  67, 120, 181, 181,  37,
52b2052cfccffa54e3785d289e379041ed2df328a5Glenn Kasten      181,  57,  55, 181, 181,  47, 181,  45, 181, 181,
53b2052cfccffa54e3785d289e379041ed2df328a5Glenn Kasten      181, 181,   7, 181,  17,  30, 181, 181, 181, 181,
54b2052cfccffa54e3785d289e379041ed2df328a5Glenn Kasten      181, 181,   0, 181, 181, 181, 105,  32, 181, 181,
55b2052cfccffa54e3785d289e379041ed2df328a5Glenn Kasten      181, 181, 181, 181, 181, 181, 115, 181, 181, 181,
56b2052cfccffa54e3785d289e379041ed2df328a5Glenn Kasten       95,  32, 181, 181, 181,  22, 181, 181,   2, 181,
57b2052cfccffa54e3785d289e379041ed2df328a5Glenn Kasten      181, 181, 181,  12,  10, 181, 181,  12, 181, 181,
58b2052cfccffa54e3785d289e379041ed2df328a5Glenn Kasten      181, 181, 181, 181,   2, 181,  70, 181, 181, 181,
59b2052cfccffa54e3785d289e379041ed2df328a5Glenn Kasten       10,   2, 181, 181,  70, 181, 120, 115, 181, 181,
60b2052cfccffa54e3785d289e379041ed2df328a5Glenn Kasten      181,  80, 105, 100, 181, 181
617e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten    };
627e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten    static const signed char hash_to_MPH[] = {
63e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_ANDROIDEFFECTSEND,
647e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
65e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XADYNAMICINTERFACEMANAGEMENT,
667e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
67e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XAAUDIODECODERCAPABILITIES,
68e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XALED,
697e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
70e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XATHREADSYNC,
717e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
72e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XAOUTPUTMIX,
73e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_MIDITIME,
747e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
75e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XAIMAGECONTROLS,
767e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
77e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_AUDIOIODEVICECAPABILITIES,
78e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_MUTESOLO,
79da97f083b47fa4442a40ad962ed86a922a537a64Glenn Kasten        -1,
80e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XAVOLUME,
81da97f083b47fa4442a40ad962ed86a922a537a64Glenn Kasten        -1,
82da97f083b47fa4442a40ad962ed86a922a537a64Glenn Kasten        MPH_ANDROIDCONFIGURATION,
83e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XASNAPSHOT,
847e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
85e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XAPLAY,
867e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
87e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_SEEK,
88e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_3DLOCATION,
897e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
90e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XACONFIGEXTENSION,
917e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
92e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XAIMAGEDECODERCAPABILITIES,
93e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XACAMERACAPABILITIES,
947e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
95e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_3DMACROSCOPIC,
967e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
97e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_VIBRA,
98e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XAIMAGEEFFECTS,
997e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
100e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XAMETADATAEXTRACTION,
1017e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
102e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_PRESETREVERB,
103e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XAOBJECT,
1047e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
105e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_RATEPITCH,
1067e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
107e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_PITCH,
108e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XAVIBRA,
1097e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
110e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XARADIO,
1117e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
112e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_OUTPUTMIXEXT,
113e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_ENGINECAPABILITIES,
1147e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
115e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XAVIDEOPOSTPROCESSING,
116e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        -1,
117e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_3DCOMMIT,
118e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XAVIDEODECODERCAPABILITIES,
119e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        -1,
120e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_METADATATRAVERSAL,
121e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        -1,
122e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XASEEK,
123e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_AUDIODECODERCAPABILITIES,
124e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        -1,
125e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_DEVICEVOLUME,
1267e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
1273be625f40588941aa23e35fed5cb693ddc9718daGlenn Kasten        MPH_OBJECT,
128e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_ENVIRONMENTALREVERB,
129e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        -1,
130e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XARDS,
131e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        -1,
132e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XAVIDEOENCODER,
133e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_OUTPUTMIX,
134e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        -1,
135e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XADYNAMICSOURCE,
136e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        -1,
137e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_3DGROUPING,
138e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XASTREAMINFORMATION,
139e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        -1,
140e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XAPREFETCHSTATUS,
141e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        -1,
142e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XAMETADATATRAVERSAL,
143e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_VIRTUALIZER,
144e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        -1,
145e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_BUFFERQUEUE,
146e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        -1,
147c3d6dd225415ac68b1868575e793eb352c7105e2Glenn Kasten        MPH_ANDROIDBUFFERQUEUESOURCE,
148e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_PLAY,
149e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        -1,
150e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XAMETADATAINSERTION,
151e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        -1,
152e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XADEVICEVOLUME,
153e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XAVIDEOENCODERCAPABILITIES,
154e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        -1,
155e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_ENGINE,
156e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        -1,
157fcc996296bdbf6c3949ad4312991fdde4ae2e157Jean-Michel Trivi        MPH_MIDIMUTESOLO,
158e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XAEQUALIZER,
1597e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
160e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_METADATAEXTRACTION,
1617e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
1627e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
163e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XARECORD,
1647e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
165e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XAIMAGEENCODER,
1667e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
1677e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
168e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_VISUALIZATION,
1697e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
170e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XACAMERA,
1717e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
1727e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
173e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_BASSBOOST,
174e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        -1,
175e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_LED,
1767e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
1777e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
178e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_EFFECTSEND,
179e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        -1,
180a930d729ff2249eaa0b45a5e61c70bebad45f698Glenn Kasten        MPH_XAENGINE,
1817e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
1827e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
183e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_RECORD,
1847e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
185e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_MIDIMESSAGE,
1867e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
1877e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
188e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_ANDROIDEFFECTCAPABILITIES,
189e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        -1,
190e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_3DSOURCE,
1917e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
1927e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
193e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_VOLUME,
194e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        -1,
195e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XAAUDIOENCODERCAPABILITIES,
1967e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
1977e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
198a930d729ff2249eaa0b45a5e61c70bebad45f698Glenn Kasten        MPH_PLAYBACKRATE,
1997e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
200e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XAAUDIOIODEVICECAPABILITIES,
2017e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
2027e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
203e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_NULL,
2047e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
205e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_ANDROIDEFFECT,
2067e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
2077e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
208e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XAIMAGEENCODERCAPABILITIES,
2097e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
210e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XAPLAYBACKRATE,
2117e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
2127e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
213e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_MIDITEMPO,
2147e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
215e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_DYNAMICSOURCE,
2167e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
2177e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
218e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_DYNAMICINTERFACEMANAGEMENT,
219e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        -1,
220e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_EQUALIZER,
2217e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
2227e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
223e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_XAAUDIOENCODER,
2247e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
2257e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        MPH_THREADSYNC,
2267e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
2277e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
228e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_PREFETCHSTATUS,
229e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        -1,
230e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_3DDOPPLER,
231e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        -1,
232e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        -1,
233e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_ANDROIDSIMPLEBUFFERQUEUE,
234e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        -1,
235e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        -1,
236e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        -1,
237e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        -1,
238e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_AUDIOENCODERCAPABILITIES,
239e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        -1,
240e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        -1,
2417e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
2427e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        -1,
243e155630f0eb0fc1bb6a8fbe218c517e7bf82eaebGlenn Kasten        MPH_AUDIOENCODER
2447e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten    };
2457e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten    if (&SL_IID_array[0] <= iid && &SL_IID_array[MPH_MAX] > iid)
2467e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        return iid - &SL_IID_array[0];
2477e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten    if (NULL != iid) {
248fcc996296bdbf6c3949ad4312991fdde4ae2e157Jean-Michel Trivi        static const unsigned len = sizeof(struct SLInterfaceID_);
249b2052cfccffa54e3785d289e379041ed2df328a5Glenn Kasten        unsigned key = asso_values[((unsigned char *)iid)[8]] +
250b2052cfccffa54e3785d289e379041ed2df328a5Glenn Kasten            asso_values[((unsigned char *)iid)[0]];
2517e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        if (key <= MAX_HASH_VALUE) {
2527e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten            int MPH = hash_to_MPH[key];
2537e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten            if (MPH >= 0) {
2547e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten                assert(MPH < MPH_MAX);
2557e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten                SLInterfaceID trial = &SL_IID_array[MPH];
2567e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten                if (!memcmp(iid, trial, sizeof(struct SLInterfaceID_)))
2577e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten                    return MPH;
2587e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten            }
2597e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten        }
2607e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten    }
2617e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten    return -1;
2627e5dd9fa6ab032d7eeaac79bee4370a133eda8c2Glenn Kasten}
263