/*
* Copyright (C) 2010 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// This file is automagically generated by hashgen, do not edit
/** \file IID_to_MPH.c Interface ID to MPH mapping */
#include <SLES/OpenSLES.h>
#include "MPH.h"
#include <assert.h>
#include <string.h>
extern const struct SLInterfaceID_ SL_IID_array[MPH_MAX];
/** \brief Map SLInterfaceID to its minimal perfect hash (MPH), or -1 if unknown */
int IID_to_MPH(const SLInterfaceID iid)
{
#define MAX_HASH_VALUE 250
static const unsigned char asso_values[] =
{
251, 22, 251, 87, 251, 251, 0, 251, 37, 17,
251, 12, 4, 251, 251, 95, 251, 251, 251, 251,
102, 251, 17, 251, 251, 85, 251, 251, 251, 7,
251, 115, 251, 251, 251, 251, 251, 251, 7, 2,
251, 251, 15, 2, 87, 122, 15, 251, 251, 122,
251, 251, 251, 70, 251, 50, 251, 251, 32, 251,
251, 7, 251, 47, 2, 251, 52, 12, 47, 2,
251, 25, 251, 67, 251, 85, 32, 25, 251, 251,
2, 251, 251, 251, 2, 251, 2, 251, 251, 251,
2, 251, 251, 2, 251, 251, 251, 12, 105, 125,
251, 125, 251, 251, 2, 251, 12, 120, 251, 10,
75, 2, 2, 251, 251, 120, 115, 251, 251, 251,
110, 120, 10, 110, 251, 251, 251, 105, 15, 251,
5, 50, 251, 251, 251, 251, 251, 100, 251, 251,
120, 2, 251, 95, 251, 251, 251, 125, 2, 251,
251, 90, 251, 251, 90, 251, 0, 251, 90, 251,
251, 251, 251, 75, 100, 2, 251, 100, 80, 251,
110, 251, 251, 70, 80, 75, 115, 22, 50, 75,
90, 251, 251, 251, 65, 65, 251, 60, 65, 251,
251, 251, 60, 5, 55, 55, 105, 5, 50, 45,
65, 251, 251, 251, 55, 45, 45, 251, 45, 30,
40, 251, 65, 55, 251, 75, 251, 30, 75, 45,
251, 80, 25, 251, 251, 20, 251, 20, 2, 251,
251, 50, 251, 251, 251, 60, 110, 17, 20, 30,
251, 45, 0, 85, 20, 251, 120, 251, 251, 251,
251, 251, 251, 35, 40, 60
};
static const signed char hash_to_MPH[] = {
MPH_BASSBOOST,
-1,
MPH_BUFFERQUEUE,
-1,
MPH_XAVIDEOENCODERCAPABILITIES,
MPH_XAIMAGEENCODERCAPABILITIES,
-1,
MPH_XAOBJECT,
-1,
MPH_VISUALIZATION,
MPH_DYNAMICSOURCE,
-1,
MPH_XAAUDIOIODEVICECAPABILITIES,
-1,
MPH_MIDITIME,
MPH_RECORD,
-1,
MPH_3DLOCATION,
-1,
MPH_VIBRA,
MPH_XAEQUALIZER,
-1,
MPH_ANDROIDEFFECTCAPABILITIES,
-1,
MPH_EQUALIZER,
MPH_XACONFIGEXTENSION,
-1,
MPH_RATEPITCH,
-1,
MPH_XAAUDIODECODERCAPABILITIES,
MPH_PLAYBACKRATE,
-1,
MPH_XALED,
-1,
MPH_VOLUME,
MPH_PREFETCHSTATUS,
-1,
MPH_XAMETADATAEXTRACTION,
-1,
MPH_XAVOLUME,
MPH_XAIMAGECONTROLS,
-1,
MPH_EFFECTSEND,
-1,
MPH_XACAMERACAPABILITIES,
MPH_DEVICEVOLUME,
-1,
MPH_XAVIDEOENCODER,
-1,
-1,
MPH_ANDROIDACOUSTICECHOCANCELLATION,
-1,
MPH_XAOUTPUTMIX,
-1,
-1,
MPH_XASNAPSHOT,
-1,
MPH_ENGINE,
-1,
-1,
MPH_PLAY,
-1,
MPH_MUTESOLO,
-1,
-1,
MPH_PITCH,
-1,
MPH_XADYNAMICSOURCE,
-1,
-1,
MPH_XACAMERA,
-1,
MPH_XAVIBRA,
-1,
-1,
MPH_AUDIOIODEVICECAPABILITIES,
-1,
MPH_XADYNAMICINTERFACEMANAGEMENT,
-1,
-1,
MPH_XAVIDEODECODERCAPABILITIES,
-1,
MPH_3DMACROSCOPIC,
-1,
-1,
MPH_OUTPUTMIXEXT,
-1,
MPH_XADEVICEVOLUME,
-1,
-1,
MPH_XAIMAGEENCODER,
-1,
MPH_XAMETADATAINSERTION,
-1,
-1,
MPH_ENGINECAPABILITIES,
-1,
MPH_XAENGINE,
-1,
-1,
MPH_XAAUDIOENCODERCAPABILITIES,
-1,
MPH_XAVIDEOPOSTPROCESSING,
-1,
-1,
MPH_XAIMAGEDECODERCAPABILITIES,
-1,
MPH_3DGROUPING,
-1,
-1,
MPH_ENVIRONMENTALREVERB,
-1,
MPH_3DSOURCE,
-1,
-1,
MPH_XAPREFETCHSTATUS,
-1,
MPH_XARDS,
-1,
-1,
MPH_ANDROIDNOISESUPPRESSION,
-1,
MPH_AUDIODECODERCAPABILITIES,
-1,
-1,
MPH_XAAUDIOENCODER,
-1,
MPH_XASTREAMINFORMATION,
-1,
-1,
MPH_XAIMAGEEFFECTS,
-1,
MPH_LED,
-1,
-1,
MPH_SEEK,
-1,
MPH_VIRTUALIZER,
-1,
-1,
MPH_3DCOMMIT,
-1,
MPH_XASEEK,
-1,
-1,
MPH_XARADIO,
-1,
MPH_PRESETREVERB,
-1,
-1,
MPH_AUDIOENCODER,
-1,
MPH_ANDROIDSIMPLEBUFFERQUEUE,
-1,
-1,
MPH_ANDROIDEFFECT,
-1,
MPH_XAPLAYBACKRATE,
-1,
-1,
MPH_MIDIMESSAGE,
-1,
MPH_MIDIMUTESOLO,
-1,
-1,
MPH_ANDROIDAUTOMATICGAINCONTROL,
-1,
-1,
-1,
-1,
MPH_AUDIOENCODERCAPABILITIES,
-1,
-1,
-1,
-1,
MPH_XATHREADSYNC,
-1,
-1,
-1,
-1,
MPH_3DDOPPLER,
-1,
-1,
-1,
-1,
MPH_OUTPUTMIX,
-1,
-1,
-1,
-1,
MPH_XAPLAY,
-1,
-1,
-1,
-1,
MPH_XARECORD,
-1,
-1,
-1,
-1,
MPH_ANDROIDCONFIGURATION,
-1,
-1,
-1,
-1,
MPH_ANDROIDBUFFERQUEUESOURCE,
-1,
-1,
-1,
-1,
MPH_METADATATRAVERSAL,
-1,
-1,
-1,
-1,
MPH_ANDROIDEFFECTSEND,
-1,
-1,
-1,
-1,
MPH_NULL,
-1,
-1,
-1,
-1,
MPH_METADATAEXTRACTION,
-1,
-1,
-1,
-1,
MPH_MIDITEMPO,
-1,
-1,
-1,
-1,
MPH_XAMETADATATRAVERSAL,
-1,
-1,
-1,
-1,
MPH_THREADSYNC,
-1,
-1,
-1,
-1,
MPH_OBJECT,
-1,
-1,
-1,
-1,
MPH_DYNAMICINTERFACEMANAGEMENT
};
if (&SL_IID_array[0] <= iid && &SL_IID_array[MPH_MAX] > iid)
return iid - &SL_IID_array[0];
if (NULL != iid) {
unsigned key = asso_values[((unsigned char *)iid)[3]] +
asso_values[((unsigned char *)iid)[1]];
if (key <= MAX_HASH_VALUE) {
int MPH = hash_to_MPH[key];
if (MPH >= 0) {
assert(MPH < MPH_MAX);
SLInterfaceID trial = &SL_IID_array[MPH];
if (!memcmp(iid, trial, sizeof(struct SLInterfaceID_)))
return MPH;
}
}
}
return -1;
}